use*_*346 6 c assembly x86-64 calling-convention
我想将参数从 C 传递给汇编函数。
在类 UNIX 系统上,前六个参数为 rdi、rsi、rdx、rcx、r8 和 r9。
在 Windows 上,前四个参数为 rcx、rdx、r8 和 r9。
现在,我的问题是:在 BIOS 或 DOS 编程级别上,哪些寄存器接收这些参数?如果参数数量超过6个,如何编写程序集来处理这些参数?
如果我理解你问题的第一部分,那么实际上并不支持在 16 位模式下使用 C(因为 16 位模式使用分段来获取超过 16 位的寻址)。
参考第二部分,这取决于编译器,但是 Windows 和 Unix 的 IIRC 都会在堆栈上传递附加参数(有关参数传递的更多信息,请参阅http://en.wikipedia.org/wiki/X86_calling_conventions )。