2

Cortex用のARMアセンブリで定義された2つのセグメントがあります-M4、1つはコード(読み取り専用)、もう1つはデータ(読み取り書き込み)です。読み取り専用メモリはアドレス 0x08000000 で開始し、RW メモリは 0x20000000 で開始するように定義されています。各セグメントは独自のアセンブリ ファイルで定義され、ラベル名は正しくエクスポート/インポートされます。

データ セグメントは次のように記述されます。

    AREA myData, Data, READWRITE
EXPORT myString

    myString DCB "To be or not to be, that is the question"
    END

コードでは、LDR R0, =myString を使用して文字列のアドレスを読み込んでいます

R0 はアドレス 0x20000000 を R0 に正しくロードします。しかし、Keil uVision IDE メモリ ビューを使用すると、そのアドレスのメモリが空になります。代わりに、読み取り専用領域のコードの直後に文字列を見つけました。文字列をメモリ内の正しい場所に配置する方法を教えてください。

ありがとう

4

3 に答える 3

0

コンパイラ オプションでセグメントの開始アドレスを指定した場合、次の出力は

readelf -S

また

nm | grep myData
于 2013-09-18T01:01:27.657 に答える