我该如何将Intel汇编代码嵌入到我的C++应用程序中? 我正在使用Dev-C++。
我想要做类似于以下的事情:
int temp = 0;
int usernb = 3;
pusha
mov eax, temp
inc eax
xor usernb, usernb
mov eax, usernb
popa
这只是一个例子。 那我该如何做类似的事情呢?
更新: 在Visual Studio中该怎么做呢?
我该如何将Intel汇编代码嵌入到我的C++应用程序中? 我正在使用Dev-C++。
我想要做类似于以下的事情:
int temp = 0;
int usernb = 3;
pusha
mov eax, temp
inc eax
xor usernb, usernb
mov eax, usernb
popa
这只是一个例子。 那我该如何做类似的事情呢?
更新: 在Visual Studio中该怎么做呢?
您可以在这里找到完整的操作指南:http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
以上内容涉及IT技术,提供一个完整的操作指南链接。请点击链接获取更多相关信息。#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);
}
之后你需要使用类似以下的命令进行编译:
gcc -m32 -std=c99 -Wall -Wextra -masm=intel -o casm casmt.c && ./casm && echo $?
output:
0
您需要使用-masm=intel标志进行编译,因为您想要英特尔汇编语法 :)
这是一个简单的示例,展示了GCC/Dev-C++的语法:
int main(void)
{
int x = 10, y;
asm ("movl %1, %%eax;"
"movl %%eax, %0;"
:"=r"(y) /* y is output operand */
:"r"(x) /* x is input operand */
:"%eax"); /* %eax is clobbered register */
}
gcc
和 g++
也可以编译 Intel 语法汇编,你只需要添加 -masm=intel
标志即可 :) - DipSwitch__asm
进行嵌入。
Bloodshed Dev-C++是一款完整的C/C++编程语言集成开发环境(IDE)。它使用Mingw端口的GCC(GNU编译器集合)作为编译器。Dev-C++也可以与Cygwin或任何其他基于GCC的编译器结合使用
。 - sehe