我有一个用NASM语法编写的代码,运行良好。然后,我使用intel2gas将我的NASM代码转换为GAS。(使用-i,默认为at&t格式的英特尔)。
我以前从来没有用过煤气,只是在我所有的装配需要中使用纯的NASM。我用intel2gas来学习气体代码格式。现在,我在转换后的GAS代码中有一些行,它有来自intel2gas的警告,并附加了一个“失配:”前缀。
我已经像在.data和.bss部分一样管理了其他部分,但我仍然拥有以下内容:
MISMATCH: "lea ecx, [array + esi]"
MISMATCH: "lea ebx, [array + esi + 1]"
MISMATCH: "mov al, [array + esi]"
MISMATCH: "mov cl, [array + esi + 1]"以上NASM行的等效气体语法是什么?
为什么intel2gas没有完全转换我的代码并且留下了几条不匹配的行?
帮帮忙,谢谢!
使用Ubuntu 13 x86
发布于 2013-09-16 12:47:56
lea ecx, [array + esi]
lea ebx, [array + esi + 1]
mov al, [array + esi]
mov cl, [array + esi + 1]所有这些行都不使用存储在寄存器中的地址的常量偏移量。从语法翻译的角度来看,标签地址是未知的,它不能确定目标编译器使用什么配置。
翻译:
lea array(%esi), %ecx
lea array+1(%esi), %ebx
movb array(%esi), %al
movb array+1(%esi), %clhttps://stackoverflow.com/questions/18827554
复制相似问题