本文是对ARM处理器架构的学习,针对S3C2440型号。参考了Samsung官方的技术文档S3C2440.pdf中的PROGRAMMER’S MODEL一节的内容。
ARM和THUMB指令模式
S3C2440采用了armv4t指令集,同时支持arm指令集和thumb指令集。arm指令是32位的,而thumb指令是16位的。之所以存在thumb指令是为了降低代码的存储空间。
两个指令集之间的切换
手动切换
因为不管是arm指令集还是thumb指令集,代码地址的最低位都是多余的,因为thumb是16位对齐的,arm是32位对齐的。所以最后一位可以用来作为切换的参考。当执行BX指令时,若地址的最后一位置位,则接下来的指令使用thumb指令集来解释,跳转时,最后一位清零,则使用arm指令集。自动切换
在特权模式下只能使用arm指令集,所以当在用户模式下执行thumb指令时,若跳转到特权模式时,将会自动切换到arm指令模式。当从特权模式切换回用户模式时,如果进入之前是thumb指令集,那么就是自动切换回thumb指令集。
数据存储格式
S3C2440同时支持大小端数据存储格式,默认情况下采用小端格式储存。
大端储存
高字节存储在低地址中,低字节存储在高地址中。小端存储
高字节存储在高地址中,低字节存储在低地址中。
操作模式
ARM920T支持七种操作模式:
用户模式
快中断模式
中断模式
管理者模式
中止模式
系统模式
未定义模式
模式转换可以通过软件的形式,也可以自动