假设我这样声明:
void foo(uint64_t);
而这个函数是在一个外部汇编文件中定义的。现在我从 C 代码中这样称呼它:
uint32_t x = 42;
foo(x);
什么时候x
转换为 a uint64_t
?我是否可以依靠我的汇编代码始终uint64_t
在相关目标的 ABI 要求的任何寄存器/堆栈位置接收 a,或者我必须自己进行转换?
换句话说,当函数定义对编译器不可用时,它们是等价的吗foo(x)
?foo((uint64_t)x)
这可能是一个愚蠢的问题,但我不确定这里到底发生了什么。