如何解决使用参数从 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 举报,一经查实,本站将立刻删除。