我正在努力记住 Linux 系统调用的顺序,以便我可以更轻松地识别这一点。然后我在这里找到了这篇论文,它说,
要在32位Linux系统调用,将系统中的电话号码eax
,然后它的参数,以便在ebx
,ecx
,edx
,esi
,edi
,和ebp
,然后调用INT 0x80的。
进而,
要在64位Linux系统调用,将系统中的电话号码rax
,然后它的参数,以便在rdi
,rsi
,rdx
,r10
,r8
,和r9
,然后调用系统调用。
为什么订单在 64 位和 32 位之间变得如此残缺?我知道这个问题可能是历史问题而不是技术问题。
这完全由内核决定,对吧?是否有技术原因支持较新的约定?