簡體   English   中英

我可以將輸出操作數用作ARM內聯匯編中的輸入嗎?

[英]Can I use output operand as an input inside ARM inline assembly?

我有一個帶有兩行小的內聯匯編代碼。 我想使用從第一行檢索的輸出操作數作為第二行的輸入操作數。 我想知道是否有可能。 這是我的代碼:

asm volatile(   "umull          %0, %1, %3, %4; \n\t"
                "adds           %2, %5, %0;     \n\t"
                :"=r"(mullo2), "=r"(mulhi2), "=r"(temp)
                :"r"(A), "r"(B->uint32[6]), "r"(mulhi1)
                :"cc");

如您在這里看到的,我需要mullo2操作數成為第二條指令中的輸入之一。 編譯器沒有抱怨,但是以某種方式我沒有得到正確的結果。

除非您使用Early-Clobber,否則輸出操作數可能會分配給與輸入相同的寄存器。 在您的情況下, %5可能與%0%1相同,並且由於它們被第一條指令銷毀,因此您的第二條指令將使用錯誤的值。 因此,您應該在這兩個輸出操作數上使用Early-Clobber修飾符,例如"=&r"(mullo2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM