首页 > 解决方案 > 警告:找不到入口符号_start;默认为 0000000008048060

问题描述

我使用 NASM 不断收到错误消息,我正在使用在线编译器:compileonline.com 这是我的代码。(注意这是来自另一个来源)

    segment .text

    global main
main:

    xor     edx, edx
    mov     eax, 15
    mov     ecx, 3
    div     ecx
    xor     ecx, ecx
    mov     cx, ax
    mov ebx,1       ; arg1, where to write, screen
    mov eax,4       ; write sysout command to int 80 hex
    int 0x80        ; interrupt 80 hex, call kernel



exit:   mov eax, 1
    xor ebx, ebx 
    int 0x80

请解释我做错了什么,以及我理解的位置。这是我的输出:

$nasm -f elf *.asm; ld -m elf_i386 -s -o demo *.o
ld: warning: cannot find entry symbol _start; defaulting to 0000000008048060
$demo

标签: assemblyx86nasm

解决方案


实际上只有在 C(和 C++)中,起点被命名为main.

默认链接描述文件通常使用start_start作为实际入口点。如果您重命名或添加正确的符号,那么链接器不应该抱怨这一点。


推荐阅读