我用汇编语言写了一个简单的" Hello World "程序:
global _main
extern _printf
section .text
_main:
push offset message
call _printf
add esp, 4
ret
section .data
message db 'Hello, World2', 10, 0
我已经在Ghidra工具(免费软件IDA替代)中打开了编译好的。exe,当我查看生成的汇编代码清单时,有这样的东西:
push message
call _printf
add esp,0x4
我的问题是:为什么没有offset
关键字在那里(像在源)?这是可选的吗?此外,当我想修补指令时,该工具不允许我输入offset
关键字…
汇编程序属于两种信仰之一。
需要方括号来读写内存的汇编程序不需要offset
标签来引用标签的偏移量。这是NASM的风格。
这些汇编程序可以允许或禁止使用offset
。
不需要方括号来读写内存的汇编程序将需要offset
标签来引用标签的偏移量。这是MASM风格。