以下の2番目の値のアドレスをレジスタにロードしたいと思います。
Unix構文の私のコードは次のとおりです。
.data
Lz7:
.long 24
.long 34
.long 80
.long 108
.long 101
.long 97
.long 115
.long 101
.long 32
.long 105
.long 110
...etc...
私はこのコードを使おうとしています:
movl Lz7, %eax /* %g14 */
movl $4, %ebx /* %g15 */
addl %ebx /* %g15 */ , %eax /* %g16 */
しかし、gccは実行時のバスエラーについて文句を言います。GDBでは、GCCがラベルLz7
を16進値0x2068に変換していることがわかります。これは小さすぎるようです。私も4(Lz7)を試しましたが、GCCが文句を言います。プログラム内のバスエラーの場所を特定するにはどうすればよいですか?このコードが正しくない場合、代わりに何を書くべきですか?