我必須編寫內聯彙編代碼來執行我已集成到我的硬件中的定製指令。
根據在實際芯片上找到什麼硬件,指令的行爲會有所不同。我的裝配如下所示:替換內聯彙編代碼
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 2011-01-28 12:25:09