C++ 代码中的汇编代码

Hoo*_*och 3 c++ assembly gcc g++ inline-assembly

如何将 Intel asm 代码放入我的 C++ 应用程序中?我正在使用 Dev-C++。

我想做这样的事情:

int temp = 0;
int usernb = 3;

pusha
mov eax, temp
inc eax
xor usernb, usernb
mov eax, usernb
popa
Run Code Online (Sandbox Code Playgroud)

这只是示例。我怎么能这样?

更新:它在 Visual Studio 中的外观如何?

Dip*_*tch 5

您可以在此处找到完整的操作方法http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html

#include <stdlib.h>

int main()
{
     int temp = 0;
     int usernb = 3;

     __asm__ volatile (
          "pusha \n"
          "mov eax, %0 \n"
          "inc eax \n"
          "mov ecx, %1 \n"
          "xor ecx, %1 \n"
          "mov %1, ecx \n"
          "mov eax, %1 \n"
          "popa \n"
          : // no output
          : "m" (temp), "m" (usernb) ); // input
     exit(0);
}
Run Code Online (Sandbox Code Playgroud)

之后,您需要使用以下内容进行编译:

gcc -m32 -std=c99 -Wall -Wextra -masm=intel -o casm casmt.c && ./casm && echo $?
output:
0
Run Code Online (Sandbox Code Playgroud)

您需要使用 -masm=intel 标志进行编译,因为您需要英特尔程序集语法:)