簡體   English   中英

NASM - 循環中的分段錯誤

[英]NASM - Segmentation fault in loop

我有兩個類似的循環,在其中我寫一個地址到eax然后從eax寫入數據段。 第一個循環正在工作,第二個循環返回段錯誤。 為什么第二個循環錯誤而第一個循環錯誤!?

section .data
n1: db 1
n2: db 1

[...]

n_1_1:
mov eax,one
mov [n1],eax
jmp DIG2

 n_2_1:
 mov eax,one
 mov [n2],eax        ; segfault
 jmp DISP2

db聲明一個字節 (8位),這不足以容納eax (32位)。 聲明每個變量,使其有足夠的空間來容納您嘗試寫入/讀取的最大值。

例如:

; declare n1 and n2 as doublewords with initial values of 1
n1: dd 1
n2: dd 1   

至於為什么其中一個崩潰而另一個沒有崩潰; 很難從您展示的代碼中說出來並且不了解執行環境。 但是第二次寫入會將1個字節進一步覆蓋到未分配的空間(通過它的外觀),這可能足以使它崩潰,即使第一次寫入沒有導致崩潰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM