[英]how to pass to printf more than 8 floating point values in assembly
正在閱讀有關匯編的內容,有關匯編中調用例程的約定的部分內容(尤其是Linux)。
據說前8個浮點參數是通過xmm0
- xmm15
傳遞的,而其他參數是在寄存器rdi
, rsi
, rdx
, rcx
, r8
, r9
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和x86標簽Wiki。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.