【发布时间】:2019-04-26 13:39:03
【问题描述】:
我有 64 位 MacOS 汇编代码,它对数组执行二进制搜索。标准 C 库中的二进制搜索是:
void* bsearch (const void* key, const void* base,
size_t num, size_t size,
int (*compar)(const void*,const void*));
我的程序集看起来像
mov %edi,0x2(%rsp)
mov $0x2010,%r8d
mov $0x4,%ecx
lea 0x2(%rsp),%rdi
callq <bsearch@plt>
我想知道bsearch 采用的参数是否有任何确定的顺序,即有没有办法知道rdi, ecx, r8d 在这里对应的是什么?是key、base、compar吗?
【问题讨论】:
-
谢谢。我正在使用 OSX。
-
是的,OSX 使用 AMD64 System V ABI,所以我提供的链接应该适用。
-
链接副本涵盖了正常的函数调用约定以及系统调用调用约定。