Кажется, это работает в Microsoft (R) Macro Assembler (x64) версии 14.37.32822.0.
push byte ptr 42
push word ptr 42
push dword ptr 42
push 42
Сгенерированные коды операций:
6a2a push 2Ah
66682a00 push 2Ah
682a000000 push 2Ah
6a2a push 2Ah
Компоновка стека
000000da`eb36fbf6 000000000000002a
000000da`eb36fbfe 000000000000002a
000000da`eb36fc06 00000000002a002a
Удивлен, увидев, что MASM допускает такое безумное неправильное использование ptr
, когда операнд является просто немедленной ссылкой, а не ссылкой на память. Как будто мне нужна была еще одна причина не любить МАСМ...
Кажется, это работает в MASM 5.00 (с предупреждением) и в MASM 6.00B (без предупреждений).
Большинство других ассемблеров не так хорошо, как NASM, позволяют вам выбирать кодировку. Не сильно удивлюсь, если ответ окажется
db 68h 2ah 00h 00h 00h
.