O executável compilado em assembly no Bash no Ubuntu no Windows não produz saída
Estou estudando um tutorial para montagem e estou tentando obter um programa hello world para execução. Estou usando o Bash no Ubuntu no Windows.
Aqui está a montagem:
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
Estou usando esses comandos para criar o executável:
nasm -f elf64 hello.asm -o hello.o
ld -o hello hello.o -m elf_x86_64
E eu corro usando:
./hello
O programa parece funcionar sem falha ou erro de segmentação, mas não produz saída.
C, não entendo por que o código não produz uma saída, mas me pergunto se o uso do Bash no Ubuntu no Windows tem alguma coisa a ver com isso? Por que não produz saída e como posso corrigi-la?