Пользовательский список параметров автозаполнения в IOS, используя Monotouch

В MASM BYTE PTR [ecx] обращается к памяти по адресу ecx. BYTE [ecx] - синтаксическая ошибка («синтаксическая ошибка встроенного ассемблера в« первом операнде »; найдена« ['»).

В NASM или YASM BYTE [ecx] обращается к памяти по адресу ecx. BYTE PTR [ecx] - синтаксическая ошибка («ошибка: запятая, двоеточие или конец строки») в NASM, «неопределенный символ« PTR »в YASM).

В TASM, BYTE PTR [ecx ] и BYTE [ecx] эквивалентны - как память доступа по адресу ecx.

Однако, в ассемблерном Gnu-газе при использовании синтаксиса intel BYTE PTR [ecx] обращается к памяти в ecx, но BYTE [ ecx] фактически обращается к памяти по адресу ecx + 1. То есть, BYTE [ecx] эквивалентен BYTE PTR [ecx + 1], который, как представляется, не является нормальным или документированным.

Ассемблер Gnu версии 2.18, 2.24 или 2.26.1:

cat > foo.S << EOF
.intel_syntax noprefix
 movb BYTE [ecx], 0 
 movb BYTE PTR [ecx], 0 
.att_syntax prefix
EOF

as foo.S
objdump -dM intel a.out

0:  67 c6 41 01 00          mov    BYTE PTR [ecx+0x1],0x0
5:  67 c6 01 00             mov    BYTE PTR [ecx],0x0
7
задан Lucas 14 August 2012 в 01:26
поделиться