現在、Cortex-MコアのARMアセンブリを理解しようとしています。Cortex M4 Thumbアセンブリ関数のアドレス
Thumbモード(コアでサポートされている唯一のモード)にある関数は、そのアドレスによって呼び出され、アドレスのLSBが高く、宛先がThumbコードであることを示しています。
アセンブリで私はラベルのデータが実行可能であるアセンブラに指示する機能「Reset_Handler」の前に、次の書き込み/機能:
.type Reset_Handler, %function
Reset_Handler:
MOV R0, R0 # just do something
私は今、ラベル
のアドレスをロードする場合LDR R0, =Reset_Handler
R0のLSBが設定されています。
この.typeディレクティブを間接呼び出しの関数として使用するすべてのラベルの前に配置する必要がありますか?
また、アセンブラに正しいアドレスを自動的に決定させる方法がありますか?
関数のコードをRAMにコピーしてこの関数のアドレスをロードする場合は、データが格納されている「実際の」アドレスを取得するために自分でLSBをクリアする必要があります。
この場合、.type指令が必要ですか?私は、これがLSBを設定する必要があるので、私がベクトルテーブルにアドレスを入れたいと思うとすぐに必要であることを知っています。
どのアセンブラを使用していますか(アセンブリ言語はアセンブラで定義されていますが、これは一般的ではありません) –