[英]Comparing Intel vs Arm Registers with Swift / lldb
如果您只是在查看調用約定並在函數的進入/退出處注冊(不在中間),那么可以,對於x86-64 System V調用約定而言,它們是正確的。
有關函數調用約定的摘要,請參見在i386和x86-64上UNIX和Linux系統調用的調用約定是什么(請參見https://github.com/hjl-tools/x86-psABI/wiki/X86- psABI ,了解ABI的全部詳細信息,包括按大小傳遞/返回大小結構的大小,以及FP值的大小。)
根據https://en.wikipedia.org/wiki/Calling_convention#ARM_(A64),AArch64的標准調用約定在x0..x7
傳遞args,並在x0
返回。 (從該超簡短摘要中尚不清楚可以在寄存器中返回多大的arg,是否可以在x1:x0中返回16字節的結構。)
但是在函數內部 ,這完全取決於編譯器,甚至沒有嘗試類似的代碼生成。
您正在為單獨的體系結構編譯單獨的二進制文件。 在針對x86-64進行編譯時,編譯器甚至可能甚至沒有嘗試使asm看起來像AArch64一樣,只是應用“按條件”規則並使asm為x86-64盡可能高效地實現了該功能。
不同的調整試探法將導致不同的內聯和其他代碼生成決策。
AArch64比x86-64具有更多的體系結構寄存器。 顯然,即使您使用的x86-64編譯器試圖使x86-64 asm看起來像AArch64 asm一樣,也無法實現1:1映射。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.