為什么我得到一個分段故障?
我正在使用 nasm -f elf64 t.asm -o t.o ld t.o -o t 在 linux 上進行編譯。
我已經做了我能想到的所有事情。
我已經做了我能想到的所有事情。
section .data:
variable_int db 1
variable_string db "yaaaaa", 10
section .text:
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, variable_string
mov rdx, 14
syscall
mov rax, 60
mov rdi, 0
系統呼叫
uj5u.com熱心網友回復:
section .data:
section .text:
省略冒號。 一個section指令不是一個標簽,冒號會被決議為section名稱的一部分。 這將導致你的資料被放在一個叫做.data:的部分,而聯結器期望的是一個沒有冒號的叫做.data的部分。 這可能會導致該部分被賦予錯誤的權限(例如,一個不能執行的.text:部分)。
另外:
mov rdx, 14
這個引數是要寫入的資料的長度,而你的字串不是14個位元組,它只有6個。這可能會導致額外的垃圾被寫入(可能是也可能不是可見的字符),或者有可能導致系統呼叫的失敗,如果這運行到未映射的記憶體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331321.html
標籤:
