c++ 如何将{}键入的汇编代码转换为()

t9aqgxwy  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(87)

首先......我对汇编完全是个菜鸟。我几乎什么都不懂。但是你将在下面看到的这段代码在Visual Studio中工作得很好。我只需要用一个简单的g++命令将它编译成.o文件。

g++ -o fileName.o filename.cpp

我需要将方括号{}内的汇编代码转换为方括号()内的汇编代码。当我试图编译下面的代码时,它崩溃了。编译器建议使用(而不是{

unsigned char decode5a[0x0dac];
unsigned char* srcbuf = new unsigned char[4000];
m_image = new unsigned char[4000];
unsigned char* dstbuf = m_image;

__asm
{
     lea eax, decode5a
     push srcbuf
     push dstbuf
     call eax
     add esp, 8
}

我尝试了类似的东西,但它也崩溃了。我想我传递变量不正确。

__asm__(
     "lea eax, decode5a \n
     push srcbuf \n
     push dstbuf \n
     call eax \n
     add esp, 8 \n
");
00jrzges

00jrzges1#

下面是在gcc扩展内联汇编中编写该函数的方法,但这仍然可能不起作用,具体取决于函数的作用。

__asm__(
     "push %1\n"
     "push %2\n"
     "call *%0\n"
     "add esp, 8 \n"
     : : "r"(decode5a), "r"(srcbuf), "r"(dstbuf)
     : "eax", "memory");

相关问题