由于某种原因我无法编译 nasm 程序。如果我尝试在 .data 部分中放入某些内容,则会出错:error: comma expected after operand 1
(如果我声明单个变量),或者error: parser: instruction expected
如果声明了数组。
我的代码(包括库、声明数据、返回 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