3
我对X86_64上的NASM程序集完全陌生。我想在一个asm程序中访问我的变量toto并增加它的值。到目前为止,我做了以下内容:NASM X86_64全局变量C
C程序:
#include <stdio.h>
#include <inttypes.h>
int64_t toto;
extern void modifytoto(void);
int main() {
toto=0;
modifytoto();
printf("toto = %d \n",toto);
return 0;
}
和汇编程序如下(在增量是伪代码)。
global modifytoto
global toto
section .text
modifytoto:
mov rax, 1
mov toto, rax
ret
我不能使用托托作为参数传递给modifytoto(),因为这是应该在一个更复杂的程序,其中我不wan't修改参数来使用。
我用下面的CMD
nasm -f elf64 -o mix_asm.o kernel3.asm
assemblying,我得到这个消息:
kernel3.asm:7: error: symbol `toto' undefined
什么是错我的代码?
为什么你认为'mov toto,rax'会增加toto的价值? mov覆盖toto值,其值变为1,但不是一个。尝试添加托托,1 – red0ct
很酷,asm说明只是为了表明我的目的,但你是对的。谢谢 ! –
为什么添加toto,1给我这个信息? 操作码和操作数的无效组合 –