例如(在C中)......
int main() {
fxn(EXAMPLE_VALUE | EXAMPLE_VAL | EXAMPLE_V);
}
如何用汇编语言做到这一点?
答案 0 :(得分:2)
与C中的方式相同。
global main
main:
mov edi, EXAMPLE_VALUE | EXAMPLE_VAL | EXAMPLE_V
call fxn ; AMD64 SysV ABI: first arg in rdi
xor eax,eax
ret
(如果这不是main
,并且隐含return 0
,则优化对jmp fxn
的尾调用。)
asm语法允许复杂的表达式,只要一切都是汇编时常量。通常还允许向其他常数添加/减去链接时间常数(例如符号地址),例如, [ static_buf + 10 ]
有关NASM文档等的链接,请参阅x86标记wiki。
其他架构的汇编程序类似;这不是特定于x86的。