我看到了两种不同的方式在assmbler中传递整数:一个是[eax],第二个是eax。 我举个例子:
section .rodata
print_int_str: "%d"
%macro print_int 1
push %1
push print_int_str
call printf
add esp, 8
%endmacro
据我了解,我们可以使用print_int eax
,也可以使用print_int [eax]
。
他们之间有什么不同?
答案 0 :(得分:2)
print_int eax
会打印出eax
print_int [eax]
将使用eax
的值作为地址,并将打印存储在此地址的值
所以您可以将整数放入eax
并使用(任何其他reg也可以使用)
print_int eax
或者如果你有变量可以做
print_int [var]; or
print_int [reg]; with regs value = address of var