ABI просто не поддерживается, даже для 32-битных исполняемых файлов. Так что это как ядро ​​Linux, построенное без

ал учебник по сборке, и я пытаюсь заставить программу hello world работать. Я использую Bash на Ubuntu в Windows.

Вот сборка:

section .text
    global _start     ;must be declared for linker (ld)

_start:             ;tells linker entry point
    mov edx,len     ;message length
    mov ecx,msg     ;message to write
    mov ebx,1       ;file descriptor (stdout)
    mov eax,4       ;system call number (sys_write)
    int 0x80        ;call kernel

    mov eax,1       ;system call number (sys_exit)
    int 0x80        ;call kernel

section .data
    msg db 'Hello, world!', 0xa  ;string to be printed
    len equ $ - msg     ;length of the string

Я использую эти команды для создания исполняемого файла:

nasm -f elf64 hello.asm -o hello.o
ld -o hello hello.o -m elf_x86_64

И я запускаю его, используя:

./hello

Кажется, что программа работает без ошибки или ошибки сегментации, но не выдает никаких результатов.

Я не могу понять, почему код не будет выводить данные, но мне интересно, имеет ли отношение к этому использование Bash в Ubuntu в Windows? Почему он не производит вывод и как я могу это исправить?

Ответы на вопрос(1)

Ваш ответ на вопрос