far はコンパイラ固有であることは理解していますが、ポインターを本当に理解している人にとっては far 指定子の配置が意味を成すはずだと期待しています。
したがって、プロセッサのメモリ空間全体を共有する 2 つのアプリケーションがあります。
アプリ A は、アプリ B に存在する関数 foo を呼び出す必要があります。
関数 foo のメモリ位置はわかっています。
したがって、これはアプリ A で機能するはずです。
typedef int (* __far MYFP)(int input);
void somefunc(void)
{
int returnvalue;
MYFP foo;
foo = (MYFP) 0xFFFFFA;
returnvalue = foo(39);
}
- __far は typedef の適切な場所にありますか?
- (MYFP) キャストに __far を追加する必要がありますか?
- いくつかの情報は、foo への呼び出しを逆参照する必要がないことを示唆しています。あなたの経験は何ですか?
これについて他に何が間違っているように見えますか、またはこれを達成しようとする可能性がありますか?
これを行うより良い方法はありますか?
編集:
これは、Code Warrior を使用する組み込みデバイス (Freescale S12XEQ デバイス) にあります。これは 24 ビットのメモリ空間を持つ 16 ビット デバイスなので、セグメント化/バンク化されています。
-アダム