在克++,揍爲ASM列表可以指定,例如:C++:ASM撞列表
asm ("somecode" : : "r1", "r2", "r3");
這意味着彙編代碼改變寄存器r1,R2,R3。
現在,我改變了寄存器依賴模板參數n
(該asm
塊是一個模板函數中),和寄存器R1,...,RN將被改變。我該如何表達?
在克++,揍爲ASM列表可以指定,例如:C++:ASM撞列表
asm ("somecode" : : "r1", "r2", "r3");
這意味着彙編代碼改變寄存器r1,R2,R3。
現在,我改變了寄存器依賴模板參數n
(該asm
塊是一個模板函數中),和寄存器R1,...,RN將被改變。我該如何表達?
你面臨着多少個不同的寄存器星座?如果不是太多,你可以爲每個提供一個特定的實現。 (模板專業化)
因爲我認爲沒有可能創建「模板化語句」。
您可以設置可在clobber列表中使用的所有寄存器,因此編譯器不會使用它們來存儲變量的值;我知道這有點慢,但如果你不需要非常高的優化,它就會工作。
爲什麼你需要這樣做?有了那麼多寄存器的架構,你不能只選擇幾個使用並且總是使用那些特定的寄存器嗎? – bdonlan 2011-01-17 11:55:51