使用野牛为一个简单的计算器生成汇编代码,但我无法弄清楚我的错误到底是什么,所有的答案似乎都是一个乘法......
global intpow
intpow:
push ebp
mov ebp,esp
mov ecx,[ebp+8]
mov eax,[ebp+12]
loop:
cmp eax,1
jle finish
dec eax
imul ecx,ecx
jmp loop
finish:
mov eax,ecx
mov esp,ebp
pop ebp
ret
当我识别指数调用时,这是我的 .y 文件中的代码:
exp '^' exp { $$ = pow ($1, $3);
printf("call\tintpow\n");
printf("push\tDWORD eax\n");
}
组装错了吗?他们?两个都?