簡體   English   中英

如何在裝配體中傳遞給printf超過8個浮點值

[英]how to pass to printf more than 8 floating point values in assembly

正在閱讀有關匯編的內容,有關匯編中調用例程的約定的部分內容(尤其是Linux)。

據說前8個浮點參數是通過xmm0 - xmm15傳遞的,而其他參數是在寄存器rdirsirdxrcxr8r9 rcx ,其他其余參數應按相反的順序推入堆棧。

如果我有8個以上的浮點參數和6個以上的其他參數,應該以什么順序將它們推入堆棧怎么辦? 第一浮點值不適合8 fp。 寄存器或其他不適合6個寄存器的參數?

ABI文檔的哪一部分不清楚( https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI )?

您是在問如果將int和fp args混合使用,而又用完了兩種arg傳遞寄存器,會發生什么情況?

IIRC,它們只是以相反的順序進入堆棧,最后一個arg在最高地址,而第一個非寄存器arg在返回地址上方。 就像在32位代碼中,args總是在堆棧上傳遞一樣。

另請參見http://wiki.osdev.org/System_V_ABI標簽Wiki。

暫無
暫無

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

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