7

Keil を使用して ARM 7 のアセンブリを記述しています。

次の実行時エラーがあります。

Non-aligned Access: ARM Instruction at 000000F8H, Memory Access at 7F7F7F7FH
Data Abort: ARM Instruction at 000000F8H, Memory Access at 7F7F7F7FH

「非整列アクセス」が何であるかがわからないため(明らかなこと以外ですが、それが何を意味するのかよくわかりません)、アクセス(保存)しようとしているため、これは本当に役に立ちません0x7F7F7F7F、問題は何ですか?

検索すると、C を使用しており、コードに非常に固有の何らかの手段で解決され、この問題とは関係のない同様の問題がいくつか見つかりました。

私がやっている:

LDR R0, =0x7F7F7F7F
LDR R1, LABEL
STR R1, [R0]

次に、別のラベルと のオフセットで同様のことを行いますが、R0最初にここで失敗します。

4

5 に答える 5

0

上記のすべては正しいですが、あなたが示したコードがあなたが本当に望むことをするかどうかはわかりません.ワードアラインされたLABELを正しく定義していると思います.なぜ16進アドレスを保存したい場所としてロードするのですか. おそらく、値 x'7F7F7F7F' をメモリー場所 LABEL に格納したいだけかもしれません。この場合、STR R0, [R1] と書く必要があります。

于 2014-03-03T17:38:05.273 に答える
-1

データ型を確認してください。

たとえば、配列を as として宣言し、それを as としてunsigned int V1[25][25]; 持っているとします。externextern int (*V1)[22];

これを次のように返す関数を使用しているとします。

unsigned long func()
   {`unsigned long k;
      return (V1[0][0]+k);   //you will get an error.'

   }

これを避けるには、同じデータ型externextern unsigned int V1[25][25].

于 2014-03-19T06:30:41.303 に答える