我正在使用Code :: Blocks来编码,但我引用的代码之一来自Visual C ++,所以我在差异上遇到了困难...... :(
完整代码在这里
NAKED void ijlWrite()
{
__asm {
PUSH EBP
MOV EBP, ESP
MOV EAX, DWORD PTR SS:[EBP+8h]
MOV ECX, ssQuality
MOV DWORD PTR DS:[EAX+50h], ECX
MOV EDX, DWORD PTR SS:[EBP+0Ch]
PUSH EDX
MOV EAX, DWORD PTR SS:[EBP+08h]
PUSH EAX
CALL lpfnIJLWrite //a global variable
POP EBP
RETN
}
}
如果你翻译它们,我将非常感激。
P.S。我也不知道如何翻译RETN。怎么做?备忘单没有这样的东西:(
答案 0 :(得分:4)
你不能只用C ++编写这个函数吗?多一点类型信息会有所帮助,但是这个怎么样?
void ijlWrite(int* p, int i)
{
p[80] = ssQuality;
lpfnIJLWrite(p, i);
}
答案 1 :(得分:3)
MOV EAX, DWORD PTR SS:[EBP+8h]
相当于
movl %ss:8(%ebp), %eax
您只需交换来源和目的地的顺序,DWORD
会转换为l
后缀。 %ss:
前缀是绝对不必要的,它是使用基于EBP
的内存访问时的默认设置。
答案 2 :(得分:1)