MEEP :
난 그냥 리눅스에서 조립 64을 사용하여 / 학습을 시작했습니다, 그리고 전화를 시도하고 getcwd()
와 call
. 부르는 시도 후 getcwd()
기능을, 나 또한 출력으로 작동하지 않는 결과를하려하고 그 이유를 이해하지 않습니다. 모든 포인터 / 도움말 정말 감사하겠습니다. 죄송합니다 그 바보 같은 질문 경우. 나는 예 온라인 보았다했지만 구체적으로 어떤 것을 도와 저를 발견하지 않았습니다. 많은 감사합니다. 여기에 코드입니다 :
section .text
global _start
extern getcwd
_start:
mov rdi,rbx
mov rsi,128
call getcwd wrt ..plt
mov rax,1
mov rdi,1
mov rsi,rbx
mov rdx,128
syscall
mov rax,60
mov rdi,0
syscall
나는 컴파일 :
nasm -f elf64 -o file.o file.asm
gcc -nostdlib -v -o file file.o -lc
./file
그리고 아무것도 표시되지 않습니다
광대 :
여기서 스택 가능한 구현이 할당 공간이다. 또한 전환 main
과 puts
:
global main
extern getcwd
extern puts
main:
sub rsp, 128+8 ; buffer + alignment
mov rdi, rsp
mov rsi, 128
call getcwd wrt ..plt
call puts wrt ..plt
add rsp, 128+8
ret