你如何'或者'汇编语言中的参数?

时间:2016-03-14 17:55:31

标签: c assembly

例如(在C中)......

int main() {
    fxn(EXAMPLE_VALUE | EXAMPLE_VAL | EXAMPLE_V);
}

如何用汇编语言做到这一点?

1 个答案:

答案 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文档等的链接,请参阅标记wiki。

其他架构的汇编程序类似;这不是特定于x86的。