ハードウェアに組み込んだカスタム命令を実行するインラインアセンブリコードを記述する必要があります。
実際のチップ上でどのハードウェアを見つけるかによって、命令の動作が異なります。インラインアセンブリコードの置換
asm volatile (
" instr_generic %1, %2, %0 \n\t"
: "=r" (c)
: "r" (a), "r" (b)
: "%g0"
);
このinstr_generic
は現在のハードウェア上にあるものに応じて、例えば加算または減算のいずれかを実行することができ、次のように私のアセンブリが見えます。
instr_generic
の代わりに、cust_add
またはcust_sub
と書く必要があります。これをinstr_generic
に置き換えてください。言い換えれば、それはここでは、このよう
#define cust_add instr_generic
...
asm volatile (
" cust_add %1, %2, %0 \n\t"
: "=r" (c)
: "r" (a), "r" (b)
: "%g0"
);
になります。しかし、私は、インラインassemlyを置き換えるために、この文脈でプリプロセッサを使用することはできません推測するという権利でありますか?それを簡単に行う別の方法はありますか?
実行時にハードウェア機能を決定するまでに、アセンブリ言語はコンパイル時*にコンパイルされます*。 – Lazarus