push
命令のコメントを解除すると、実行可能ファイルを実行中にエラーSegmentation fault (core dumped)
が表示されます。エラーの原因を特定しようとしましたが、その原因はまだ見つかりませんでした。プッシュ命令を実行すると、次のようなメッセージが表示されます。セグメンテーションフォルト(コアダンプ)
section .data
; Message contains app purpose
msg db 'This app calculates 2^3+5^2',0x0a
mlen equ $-msg
msg1 db 'Computation is done',0x0a
lmsg1 equ $-msg1
num1 dd 2
lnum1 equ $-num1
pow1 dd 3
lpow1 equ $-pow1
num2 dd 5
lnum2 equ $-num2
pow2 dd 2
lpow2 equ $-pow2
section .text
global _start
_start:
xor edx, edx ; clear registers
xor ecx, ecx
xor ebx, ebx
xor eax, eax
xor esi, esi
xor edi, edi
xor esp, esp
xor ebp, ebp
mov edx, mlen
mov ecx, msg
mov ebx, 1
mov eax, 4
int 0x80 ; print message
mov edx, dword [pow2]
mov ecx, dword [num2]
mov ebx, dword [pow1]
mov eax, dword [num1]
;push edx
;push ecx ; --> When I un-comment any push command,
;push ebx ; --> I receive: Segmentation fault (core dumped)
;push eax ;
jmp end
end:
mov edx, lmsg1 ; length
mov ecx, msg1 ; memory location
mov ebx, 1
mov eax, 4
int 0x80 ; print a newline i.e. 0x0a
mov ebx, 0
mov eax, 1
int 0x80
「押された」とは、「ポップ」されているか、スタックのアンバランスです。これはsegフォルトの一般的な原因です。とにかく、 'プッシュ'命令の目的は何ですか?あなたは何をしようとしているのですか?また、あなたは 'imp end'を必要としません。とにかくそこに実行が落ちる! –
@CodyGrayこのコードは、数学を計算する関数を開発するちょうど始まりです。 'push'コマンドは、開発する関数 – user3405291
の' xor esp、esp'の引数を準備しています。スタックポインタ、duhをゼロにします。もしあなたがスタックを使いたいのであれば、それはちょっと気になりますね。 – Jester