-
Пытаюсь написать постфикс h после шестнадцатиричного значения:
asm mov eax, 437F0000h //<- Компилятор принимает h movd xmm1, eax shufps xmm1, xmm1, 00b mov eax, $C0000408 //<- Компилятор НЕ принимает h !!! end;
Как такое может быть?
-
Так а доллар принимает? Вы пытаетесь поставить и $, и h? Для обозначения шестнадцатеричной системы Дельфи допускает один из этих символов, но не оба сразу.
-
В первом случае компилятор принял h, а во втором нет. Мне больше h нравится вместо доллара, но компилятор чего то через 3 строчки заупрямился. Пишет: [dcc64 Error] LightModels.pas(115): E2003 Undeclared identifier: 'C0000408h'. А с долларом норм. Это же просто число. Странно.
-
Так принимает: mov eax, 3221226504 Так принимает: mov eax, $C0000408 Так не принимает: mov eax, C0000408h
-
Numeric constants must start with one of the digits 0 through 9 or the $ character. When you write a hexadecimal constant using the H suffix, an extra zero is required in front of the number if the first significant digit is one of the digits A through F. For example, 0BAD4H and $BAD4 are hexadecimal constants, but BAD4H is an identifier because it starts with a letter. http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Assembly_Expressions
-
-
Все принимает в обоих видах
-
> Так не принимает: > ? > 1 > > mov eax, C0000408h
А так принимает? mov eax, 0C0000408h
-
Это случай из [4].
>А так принимает? >mov eax, 0C0000408h Угу. Так принимает.
-
Rouse_ © (06.02.18 02:30) [6] На чем пишите?
-
Угу. Так принимает. Что и требовалось доказать. Любое число в (любом, имею наглость заявить) intell'овском ассемблере не может начинаться с символа отличного от цифр. И не важно что это число представляет собой. Значение или адрес.
-
>intell'овском ассемблере Это Embarcadero/Borland ассемблер. Думаю на другом такой вариант вполне прокатит.
-
> И не важно что это число представляет собой. Значение или адрес.
адрес - это значение ) то есть, число - это число. остальное - лишнее.
|