1
这是我试图转换为gcc样式asm内联汇编代码的实际代码。错误编译用gcc内联汇编,“shl”
#include<iostream>
using namespace std;
int reverse(int num);
int main(){
int num;
cout << "enter number: ";
cin >> num;
cout << endl;
cout << reverse(num);
return 0;
}
int reverse(int num){
if(num == 0 || num == 1){
return num;
}
__asm
{
xor eax, eax
xor ecx, ecx
mov ebx, num
clc ; clear carry
not_found:
inc ecx
shl ebx, 1
jnc not_found
rcr eax, 1
mov edx, ecx
again:
shl ebx, 1
rcr eax, 1
inc ecx
cmp ecx, 32
jne again
dec edx
again2:
shr eax, 1
dec edx
cmp edx, 0
jne again2
}
}
正如我无法编译GCC上面的代码中,我试图将其转换为一些事情可能成功一个gcc编译器编译,但到目前为止,我无法管理产生任何有意义的结果。
你可以给这个片段更多的上下文(temp,num声明)。它编译罚款给我,。 – cmh
不是一个程序集向导,但我在'shll'中看到两个'l',这可能意味着这是'long int'版本,'num' **完全**的类型是什么? –
也给你的架构可能会有所帮助。 – cmh