motorola 68000 マイクロプロセッサ用の組み込み C を使用しています。ポインターアドレスを uint16 変数に格納してから、変数の mod を実行したいと考えています。これを行う主な理由は、EEPROM のセクターが正しく割り当てられていることを確認することです。
例->
uint16 a, c;
uint16 *b;
b=&a;
c=b%4;
このようなもの。明らかに、私はこのようにすることはできません。
ありがとう
16 ビットのアドレス空間、つまり 64 KB の RAM に制限されていますか? これは、68k システムとしては非常に小さい値です。
とにかく、ポインタを算術演算するには、ポインタを整数型に変換する必要があります。
#include <stdint.h>
uint16 a, *b = &a;
intptr_t c = (intptr_t) b;
if( (c % 4) != 0 )
{
/* bad address! */
}
上記はアドレスを 16 ビット変数に保存しないことに注意してください。これは正しい方法ではないからです。代わりにintptr_t
、ポインターを整数として保持するために使用します。
b = (uint16*)(((uint16)(&a)) % 4);