14.3异常与中断_Thumb指令集程序示例
在上节视频里说ARMCPU有两种状态
ARM State 每条指令会占据4byte
Thumb State 每条指令占据2byte
我们说过Thumb指令集并不重要,本节演示把一个程序使用Thumb指令集来编译它
使用上一章节的重定位代码,打开Makefile和Start.S
Makefile文件

对于使用Thumb指令集

改进

对start.S需要修改代码
原重定位章节Start.S文件



使用thumb指令集的Start.S文件




上传代码编译测试
出现错误,如下

发现是init,o里sdram_init2使用的了memcpy函数
查看init.c




文章说没有什么方法禁用memecpy但是可以修改这些变量
比如说将其修改为静态变量,这些数据就会放在数据段中,最终重定位时会把数据类拷贝到对应的arr地址里面去


拷贝进行实验
得出bin文件有1.4k左右

查看之前的文件使用ARM指令集是2K左右

查看反汇编代码



如果你的flash很小的话可以考虑使用Thumb指令集
烧写进去看是否可以运行
测试结果没有任何问题
Thumb指令集后面没有任何作用,只是简单作为介绍