我对此完全不了解,但在课堂上,老师给我们提供了一个文件,供我们运行。当时它可以正常工作,但回到家后(我使用VirtualBox中的Linux),我尝试运行它,使用以下命令:
nasm -f elf64 hello.asm -o hello.o
gcc hello.o -o hello
我遇到了一个错误:“在制作共享对象时不能使用重定位R_X86_64_32S,因为它针对`.bss';请使用-fPIC重新编译”。请问有人能解释一下如何使其正常工作吗?
global main
extern printf
section .data
napis: db ' Hello world! - po raz %ld',10,0
liczba_iteracji: equ 5
section .bss
licznik: resb 1
section .text
main:
push rbp
mov rbp,rsp
mov byte [licznik],0
petla: ;naiwna!
inc byte [licznik]
mov rdi, qword napis
mov rsi, qword [licznik]
mov rax, 0
call printf
cmp byte [licznik],liczba_iteracji
jnz petla
mov rsp,rbp
pop rbp
mov rax,1 ;SYS_EXIT
mov rbx,0
int 80h