关于linxu系统下的汇编问题??? 请教!!
以下是我在linxi (Red Hat Linux release 7.3 (Valhalla) Kernel 2.4.18-3 on an i686 )上的一段c语言的内嵌汇编程序,功能是对指定的数作移位:
*********************************************
unsigned char des=0;
if( shiftbitcount<0 )
{
shiftbitcount=-shiftbitcount;
__asm__ __volatile__("movw %1,%%bx; \n\t"
"movw %2,%%cx; \n\t"
"shiftbit: shl $1,%%bx\n\t"
"subw $1,%%cx; \n\t"
"orw %%cx,%%cx; \n\t"
"jnz shiftbit; \n\t"
"movw %%bx,%0"
:"=r"(des)
:"r"(srcdata),"r"(shiftbitcount)
:"%eax","%ebx","%ecx","%edx"
}
else
__asm__ __volatile__("movw %1,%%bx; \n\t"
"movw %2,%%cx; \n\t"
"shiftbit0: shr $1,%%bx\n\t"
"subw $1,%%cx; \n\t"
"orw %%cx,%%cx; \n\t"
"jnz shiftbit0; \n\t"
"movw %%bx,%0"
:"=r"(des)
:"r"(srcdata),"r"(shiftbitcount)
:"%eax","%ebx","%ecx","%edx"
return des;
************************************
在该机器上可以顺利编译通过,生成可执行文件,并得到想要的结果。
但是将这段代码放到另一个安装linux 9.0的机器上编译出错,错误信息如下:
***************************************
/tmp/cc3zMK4c.s: Assembler messages:
/tmp/cc3zMK4c.s:24: Error: bad register name `%dil'
/tmp/cc3zMK4c.s:25: Error: bad register name `%sil'
/tmp/cc3zMK4c.s:30: Error: bad register name `%sil'
/tmp/cc3zMK4c.s:39: Error: bad register name `%dil'
/tmp/cc3zMK4c.s:40: Error: bad register name `%sil'
/tmp/cc3zMK4c.s:45: Error: bad register name `%sil'
***************************************
不知这是什么问题???望高手点化!不胜感激!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请高手点化!!不胜感激!!
我顶