我正在编写一些x86_64程序集来调用C函数.我的C函数接受1个参数,因此程序集将参数放入%rdi.ABI pdf(下面链接)表示其他6个参数寄存器(rsi,rdx,rcx,r8,r9)不会在函数调用中保留.但是,由于我的C函数只接受一个long参数,我是否可以保证C函数是否会破坏其他5个寄存器?我的假设是,如果参数的值发生了变化,那么参数寄存器只会被破坏:
void foo(int a, int b) {
    a++; /* %rdi will be changed, but %rsi won't be changed when control returns. */
}
我问,因为我想在我的C函数调用中保留其他5个参数寄存器的值(无需手动显式地从堆栈中推送/弹出它们).
x86_64 ABI - http://www.x86-64.org/documentation/abi-0.99.pdf