我想知道是否有办法调用.c汇编代码?
我想将此代码放入我的 .c 文件中
我想在 .c 文件中执行的汇编代码以返回地址
1. mov eax, 0x2d
2. mov ebx, 0
3. int 0x80
我知道答案是放eax。
这是 .c 文件的一部分:
1. void function(void)
2. {
3. void *sp;
4. sp = eax;
5. fprintf(stderr, "system break: %p\n", sp);
6. }
我该怎么做?
执行此操作的能力是特定于编译器的。 Gcc 允许这样做使用它的asm关键词扩展 http://www.ibm.com/developerworks/linux/library/l-ia/index.html,而 Visual studio 实现了不同的扩展名 http://msdn.microsoft.com/en-us/library/4ks26t93%28v=vs.80%29.aspx.
请注意,除了不可移植到其他体系结构的明显问题之外,包括任何内联汇编都会降低性能,因为编译器无法分析汇编以确定它是否无副作用、内联是否安全、是否访问全局资源, 等等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)