我最近一直在尝试学习汇编,我有一个开始的汇编文件:
global _start
_start:
尝试链接时会抛出错误:
ld -o assemblyCode assembly.o -g
错误是:
ld:警告:找不到输入符号_start;
我还尝试在asm文件的开头添加一些其他命令,例如:
section .text
segment .text
所有产生相同的结果。我想知道我做错了什么,以至于链接器看不到_start:命令?
这是在Ubuntu上运行的,使用nasm来构建程序集文件。
答案 0 :(得分:1)
很难在没有看到整个代码的情况下告诉
这是一个非常小的程序,你可以用作骨架:
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov edx, len ;message length
mov ecx, msg ;message to write
mov ebx, 1 ;fd to use is stdout
mov eax, 4 ;sys_write
int 0x80 ;call kernel
mov eax, 1 ;sys_exit
int 0x80 ;call kernel
section .data
msg db 'Hello, stack overflow!',0xa ; say hello to the guys
len equ $ - msg ;length of the string
汇编(到目标文件中)使用nasm -g -f elf sample.s
链接ld -o sample sample.o