所以是的,我正在修補程序集編程...NASM你好世界分割故障
這是我到目前爲止。
global _start
section .text
_start:
mov eax, 4 ; write
mov ebx, 1 ; stdout
mov ecx, msg
mov edx, msg.len
int 0x80 ; system call
mov eax, 1 ; exit
mov ebx, 0 ; exit code
int 0x80 ; system call
section .data
msg: db "Hello world!", 10 ; Defines the string "Hello world!\n"
.len equ $-msg
陳述.len equ $-msg
如何工作?我明白這是字符串的長度。我也知道equ是類似於C中的#define
。所以這個變量不存在於內存中,它由彙編器放置。 (nasm)
$符號的作用是什麼,並且之後會發生減法?
我的輸出導致段錯誤,我希望我能理解我修復了這個錯誤,但仍然不理解$概念。.len equ $-msg
語法時自己解決這個問題。
編輯 Segfault引起的這是一個畸形的程序。固定
您可以添加您的修復程序的分段錯誤? – lurker
@mbratch完成! (: – user3728501