我坚持这个。我自学习装配和翻译一些基本指令。但我不能用这个。
有人可以帮助我吗?
int
secuencia ( int n, EXPRESION * * o )
{
int a, i;
for ( i = 0; i < n; i++ ){
a = evaluarExpresion( *o );
// Im trying to do this: o++;
__asm {
mov eax,dword ptr [o]
mov ecx,dword ptr [eax]
inc [ecx]
}
}
return a ;
}
我写了内部并且工作,但仍然不知道如何增加O
int
secuencia ( int n, EXPRESION * * o )
{
int a, i;
for ( i = 0; i < n; i++ ){
__asm {
mov eax,dword ptr [o]
mov ecx,dword ptr [eax]
push ebp
mov ebp, esp
push ecx
call evaluarExpresion
mov esp, ebp
pop ebp
mov a, eax
}
o++;
}
return a ;
}
答案 0 :(得分:1)
有两种选择:
或者:
o
的值从内存移动到寄存器(例如eax)或
尝试使用这两种方法。
答案 1 :(得分:1)
mov esi, o
add esi, 4 //increment is here
第1行:我们将o指针移动到esi寄存器。 第2行:我们增加你的o指针
或
mov eax, o
mov esi, [eax]
add esi, 4
我完全不明白你想要做什么,但我希望它有所帮助!