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給我這個信息? 操作碼和操作數的無效組合 –