【发布时间】:2022-12-20 10:40:09
【问题描述】:
首先...我完全是个菜鸟。我几乎什么都不懂。但是您将在下面看到的这段代码在 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
");
【问题讨论】:
-
C 还是 C++? C++ 具有标准化的内联汇编。 C 没有。
-
我更喜欢C++
-
试试
((void (*)(char *, char *))decode5a)(srcbuf, dstbuf)。这里不需要使用内联汇编。 -
@fuz 你能确切地告诉我应该如何将它附加到我的代码中吗?我不知道这段代码的作用:/
-
“你能确切地告诉我应该如何将它附加到我的代码中吗?”你应该用它来完全替换内联组件.它执行您显然打算让程序集执行的操作,但在 C++ 中。
标签: c++ c assembly inline-assembly