出于某种原因,我无法编写nasm程序。如果我尝试在.data部分放置一些内容,则会出错:
error: comma expected after operand 1
(如果我声明了signle变量),或者
如果声明了数组,则error: parser: instruction expected
。
我的代码(包括libs,声明数据,返回0和ret):
%include "../asm64_io/asm64_io.inc"
segment .data
label dw 1000 ; word labeled L2 with initial value 1000
segment .bss
segment .text
global asm_main
asm_main:
enter 0,0
;
mov rax, 0 ; return 0
leave
ret
然后我用
编译 nasm -f elf64 prog.asm -o prog.o
gcc -o prog prog.o ../asm64_io/driver64.o ../asm64_io/asm64_io.o
我可以声明我是否不使用asm64并使用_start标签作为入口点。
asm64_io.inc:
extern read_int, read_string, read_char
extern print_int, print_string, print_char
extern println_int, println_string, println_char, print_nl
extern sub_dump_regs, sub_dump_mem, sub_dump_math, sub_dump_stack
%macro dump_regs 1
push qword %1
call sub_dump_regs
%endmacro
答案 0 :(得分:3)
我发现我从手册中复制的文本中有一些不可见的Unicode字符,这些字符混淆了编译器。