c - 在c中执行汇编代码

标签 c assembly nasm

我想知道是否有在.c 汇编代码中调用的方法? 我想把这段代码放在我的 .c 文件中

我要在.c文件中执行返回地址的汇编代码

1. mov eax, 0x2d
2. mov ebx, 0
3. int 0x80

我知道答案是 put eax。

这是.c文件的一部分:

1. void function(void)
2. {
3. void *sp;
4. sp = eax;
5. fprintf(stderr, "system break:   %p\n", sp);
6. }

我该怎么做?

最佳答案

执行此操作的能力是特定于编译器的。 Gcc 允许这个 using its asm keyword extension ,而 Visual Studio 实现了一个 different extension .

请注意,除了不可移植到其他架构的明显问题外,包括任何内联汇编都会降低性能,因为编译器无法分析汇编以确定它是否无副作用、内联是否安全、是否访问全局资源等。

关于c - 在c中执行汇编代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13207459/

相关文章:

c - WinDbg c 级调试?

c - 如何在 Visual C++ Express 中运行 .lib 项目中的单个 .c 文件?

c - 结构数组末尾的空大括号 '{ }' 需要什么?

assembly - 在 ARM Arch64 寄存器中移动 32 位常量

performance - 功能对齐在现代处理器上究竟有多重要?

assembly - 为什么 `cmpsb`似乎没有比较寄存器的值?

c++ - NASM 64 位中的段错误

c - 为什么线程局部堆内存在线程退出时没有被释放?

c - 在 GNU C 内联汇编中与推送/分配/弹出交换?

linux - 使用 x86 程序集 (GNU/Linux) 读取和打印用户输入