我正在處理涉及SSE內部函數和XMM寄存器的項目,並且我想使用提供的所有16個寄存器。我試圖明確告訴編譯器這樣做,但似乎沒有工作。舉例來說,我可能會寫這樣一行:C:試圖將變量存儲在特定的XMM寄存器中
register __m128 foo __asm__("xmm12") = _mm_setzero_ps();
凡foo
將被存儲在寄存器xmm12
,和(我以後會增加FOO等)
的事情是被初始化爲零,當我查看彙編代碼時,即使在代碼中實際需要xmm12
,但我仍然告訴編譯器使用該寄存器。
我很難搞清楚我做錯了什麼。我的語法不正確?編譯器是否忽略了我在說什麼,如果是這樣,爲什麼?
任何幫助將非常感謝!
對不起,不熟悉這個主題,但我相信你應該告訴你正在使用哪個編譯器 - 「asm」語法往往取決於這一點。 – Mat 2011-03-19 16:42:08
您正在編譯64位代碼,我想?對於32位代碼,只有8個XMM寄存器。無論哪種方式,可能沒有理由指定特定的XMM寄存器 - 只需使用內在函數並讓編譯器爲您執行寄存器分配即可。 – 2011-03-19 16:43:50
gcc?如果是,那麼你怎麼稱呼它? – fazo 2011-03-19 16:44:15