soft3-kadai:20081006


ADD #4, R2 のC言語表現について

 long *R2;
 R2 = R2 + 4; //または、R2 += 4;
と書いている人が何人かいました。

long * (long型へのポインタ)は、+1で4バイト進むので、
 R2 = R2 + 1; //または、R2 += 1;
が正解です(long型を記憶するための領域は4バイト必要)。

また、
 *R2 += 4;
のようにしている人もいましたが、これは、
 ADD #4, (R2)
の意味になり、R2の値は変化しません。()や@の意味は次の項を参照してください。


ADD (R2), R1 について

(R2) や @R2は、レジスタR2の保持している値をアドレスと解釈して、 そのメモリアドレス(番地)に記憶されている値をメモリから読み出します。 (又は、そのアドレスへ書き込みます)

例えば、次の2行のコードは、メモリの0x123456番地に、987という数値を書き込みます。
 MOV #x123456, R2
 MOV #987, (R2)
C言語では、次のように書けます。
 long *p;  /* longでなくintやshortでもOK */
 p=0x123456;
 *p=987;

Last modified: Wed Oct 15 14:57:48 JST 2008