我正在尝试访问stdin
C FILE* 类型,以便我可以调用 fgets 来获取输入并将其回显。我可以使用 plt 部分来访问 C 函数,但不能.got
以相同的方式使用部分(如果我理解正确,就像 plt 但用于数据),stdin
因为分段错误总是由mov
之后的指令引起lea
section .bss
BUFFERLEN equ 100
BUFFER: resb BUFFERLEN
section .text
global main
extern stdin, fgets
main:
default rel
push rbp
mov rbp, rsp
; First get input to print
mov rdi, [rel BUFFER]
mov rsi, BUFFERLEN
mov rdx, [rel stdin wrt ..gotpc]
call fgets wrt ..plt
pop rbp
ret ; return back to caller
构建并与 makefile 链接为
proj13: proj13.o
gcc -pie -fpie -o proj13 proj13.o
proj13.o: proj13.asm
nasm -g -F DWARF -f elf64 -o proj13.o proj13.asm