前段时间完整的看完了《ARM体系结构与编程》,看的过程中发现了里面的有不少的错误,有的甚至严重影响理解.在下不自量力,打算花点时间,把我发现的错误提出来并改正.也欢迎大家一起来完善.
原创文章,后续可能会编辑更新,转载注明出处。flyriz 2012-10-16
(1)P27
最后一句有问题,应改为:当shift_imm!=0时,循环器的进位值为操作数<shifter_operand>最后被移出的位。
依据:ARM Architecture reference manual P225 : the carry out from the shifter is the last bit shifted out......
(2)P52
事后应为:事先
(3)P56
事先更新改为:事后更新
图片中划红线部分删除。依据:ARM Architecture reference manual P278
(4)P61
在指令的编码格式表格中,本页中的两处都写成:应为0 。根据ARM Architecture reference manual,这里应为SBO,SBO的含义是:Should-Be-One,我这不知道这里怎么就变成了“应为0”,实在错的离谱。
(5)P71
12 BIC位清除指令
BIC 指令将<shifter_operand>表示的数值与寄存器<Rn>的值的反码按位做逻辑与操作。。。
这一句应为:BIC 指令将寄存器<Rn>的值与<shifter_operand>表示的数值的反码按位做逻辑与操作。。。
(6)P72
第2、3行这里,前后有两句一模一样的话:将某一位与1做BIC操作。。。把后面的那一句中的1改成0.
(7)P84
将第一句话改成:......字节数据存放在目标寄存器的bits[31:24](寻址方式确定的地址bit[0]为0)或者bits[15:8](寻址方式确定的地址bit[0]为1)。这里是括号打错了,否则,实在无法理解。同理,P88页 LDRT的介绍中也有同样的错误。