2017-10-12 8 views
0

my personal projectを実際のハードウェアで動作させる際に問題があります。ハードウェアが動作するために、イメージは16ビットで整列する必要があります。'AS' align plus incbinが期待通りの位置合わせをしていません

私は「.ALIGN」ディレクティブによってアライメントを指定しようとしました:

.text 
.align 2 

.globl _vg_lecturehall 
.globl _vg_sylvie_giggle 
.globl _vg_club 

_vg_lecturehall: 
.align 2 
.incbin "build/lecturehall.apg" 

_vg_sylvie_giggle: 
.align 2 
.incbin "build/sylvie_giggle.apg" 

_vg_club: 
.align 2 
.incbin "build/club.apg" 

しかし、メモリマップによって思えることができるよう、データはまだ奇数アドレスに配置されています

.text   0x000000000200aa00 0x12aac build/generated_images.o 
       0x000000000200aa00    _vg_lecturehall 
       0x0000000002012d11    _vg_sylvie_giggle 
       0x0000000002014f2b    _vg_club 

誰かが間違っていることを知っていますか? 含まれているバイナリが偶数アドレスに配置されていることを確認する方法はありますか?

+2

問題はあなたが '.align'ディレクティブの前にラベルを置いたことですが、' .align'と '.incbin'の間に置くべきです。 – Jester

答えて

3

.alignディレクティブの前にラベルを配置しています。その時点で、特定のアライメントは事実上ありません。前の.incbinが奇数か偶数バイトを生成したかによって異なります。ラベルを1行下に移動すると、実際に含まれているデータにラベルを付けることができます。

関連する問題