Assembly LPC2103中的ARM7是否不支持CLZ?

Assembly LPC2103中的ARM7是否不支持CLZ?,assembly,embedded,arm,gnu-toolchain,Assembly,Embedded,Arm,Gnu Toolchain,我只在谷歌上搜索了几个小时左右,但如果有人能快速回答这个问题,我想回到编程上来。这是我的错误: jcomeau@intrepid:~/rentacoder/jcomeau/armmite$ make /usr/local/bin/preasm.tcl minimal.asm minimal.s "/usr/arm-linux-gnueabi/bin/as" -mcpu=arm7tdmi-s -mapcs-32 \ -gstabs -ahls=minimal.lst -o minim

我只在谷歌上搜索了几个小时左右,但如果有人能快速回答这个问题,我想回到编程上来。这是我的错误:

jcomeau@intrepid:~/rentacoder/jcomeau/armmite$ make
/usr/local/bin/preasm.tcl minimal.asm minimal.s 
"/usr/arm-linux-gnueabi/bin/as" -mcpu=arm7tdmi-s -mapcs-32 \
     -gstabs -ahls=minimal.lst  -o minimal.o minimal.s
minimal.s: Assembler messages:
minimal.s:183: Error: selected processor does not support `clz r0,r0'
make: *** [minimal.o] Error 1
rm minimal.s
我也尝试过使用-mcpu=arm7tdmi,这就是Coridium在ARMmite v.2的代码中使用的,我正在使用的板。但他们的代码中显然没有任何clz指令。我的问题是,它应该工作吗?只是我的汇编程序没有意识到它,还是这个芯片真的没有实现CLZ

[更新:根据,arm7tdmi-s是正确的体系结构规范]


[进一步更新:我用
.word 0xe16f0f10
手动对指令进行编码,得到的不是预期的未定义指令错误,而是数据中止。奇怪。]

ARMv5中引入了
CLZ
指令。ARM7TDMI和ARM9没有此说明。

好的,谢谢。我的错误假设是,ARM7意味着ARMv7。这是一个常见的混淆源,是的。ARM“家族”名称和ARM“体系结构”版本号没有直接关系:从ARM7TDMI的技术参考手册:ARM7TDMI处理器是ARMv4T体系结构的实现。有关ARM和Thumb指令集的详细信息,请参阅ARM架构参考手册。然后,CLZ下的ARM说明:架构版本:版本5及以上。如果查看AND指令,例如(ands),可以设置或清除Z标志(假定其他标志也受影响)。