はじめに
タイトルの通りです。
問題のアセンブラコード
.section "test","ax" > 0x44000
nop
.align 0x8000
hexにして、逆アセンブルすると、0x44000番地に命令が置かれていてほしい!
が...
0x00048000 nop
0x48000番地に命令が置かれています。
原因
原因は、.align 0x8000です。
.alignはバイト境界を揃える記述です。
0x44000から0x48000にバイト境界を揃えたため、0x48000番地に命令が格納されています。
まとめ
はまらないように気を付けましょう!
#前任者のいない、ノウハウもない、ローカルラベルを多用している1万行のアセンブラコードの中にひっそりとありました。