【发布时间】:2024-01-23 19:59:01
【问题描述】:
我刚刚发现 push 指令可以有一个立即数 byte 、 word 、 dword 参数,并且每个参数都有不同的操作码。我正在阅读的书中没有示例,所以我不明白汇编程序如何区分这三种类型。例如,如果我写push 12h,汇编器将如何解释它,堆栈上实际会发生什么?
【问题讨论】:
-
当然,汇编的全部目的是找出与您的输入相对应的操作码序列。给它一些信任。
-
+1 在我之前问过这个!我会给 NASM 一些功劳:-)
-
word 与 dword 推送具有相同的操作码;只有一个操作数大小的前缀选择你得到哪一个。几乎重复:How many bytes does the push instruction push onto the stack when I don't specify the operand size?,它解释了操作数大小与直接宽度是分开的。
标签: assembly x86 callstack machine-code opcode