2017-03-24 9 views
0

addq命令を使用した直後にセグメンテーションフォールトエラーが発生し続けます。命令を実装する前にコードは正常です。x86_64値を追加しようとしたときのアセンブリセグメンテーションフォルト

.data 
insn_count: 
    .long 0 
str: 
    .string "test" 

bubble_sort: 
.LFB2: 
addq $3,insn_count 
.cfi_startproc 
pushq %rbp 
.cfi_def_cfa_offset 16 
.cfi_offset 6, -16 
movq %rsp, %rbp 
.cfi_def_cfa_register 6 
movq %rdi, -24(%rbp) 
movl %esi, -28(%rbp) 
movl $0, -4(%rbp) 
jmp .L2 

これは私のコードのサンプル部分です。問題の内容を特定することはできません。誰も助けることができますか?また、.longディレクティブを使ってinsn_countを定義しようとしましたが、同じエラーが発生します。

+0

あなたが正しいです、私はinsn_countにメモリを割り当てることを意図しました。私はそれを.long 0に置き換え、さらに定義の前に.dataディレクティブを置いた。私はまだ同じエラーを取得し続けます。アセンブリを介して変数を割り当ててテストし、計測コードでそれらを編集しています。 – abagel17

答えて

0

私はこのアセンブリ構文に慣れていませんが、 "addq $ 3、insn_count"がinsn_countのアドレスに3を追加しようとしているようです。そのため、セグメンテーション違反が発生する可能性があります。

関連する問題