使用参数从 C 调用汇编函数

问题描述

我的一个朋友给我发了一个汇编函数,描述如下:

函数 Foo
参数:
EAX -> 无符号 32 位整数
CL -> 无符号 16 位整数
RDI -> 无符号 64 位整数

现在我需要从我的 C 程序中调用这个函数,我通过这样做解决了这个问题:

asm volatile ("         \n\t\
    mov eax,0          \n\t\
    mov cl,1           \n\t\
    mov rdi,0x120000   \n\t\
    call foo            \n\t\
");

这行得通,但有点丑陋和不方便。我想过将这个内联 asm 包装在一个函数中,但我不喜欢它作为解决方案。我试图将该函数声明为 extern:

extern foo(uint32_t eax,uint16_t cl,uint64_t rdi);

有了这一行,编译器根本没有抱怨,但参数都搞砸了。有没有办法用extern简化这个函数的调用?如果不是,我该如何修改参数以使其适用于这种技术?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...