![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ARM学习
文章平均质量分 61
crazy_koala
这个作者很懒,什么都没留下…
展开
-
ARM的异常响应
ARM模式:异常处理流程:四大步三小步(CPU自动处理)因为在异常中断处理程序人口的一些指令是ARM指令,然后根据需要,程序可以切换到 Thumb 工作状态,在异常中断处理程序返回前,程序在切换到 ARM 工作状态。用ARM结构手册中的代码描述如下:R14_ = return link SPSR_ = CPSRCPSR原创 2017-02-27 21:09:29 · 731 阅读 · 0 评论 -
ARM—工作状态,工作模式
ARM32位ARM指令集Thumb指令集(一个不完整的)区别:Thumb指令集是ARM指令集的空间压缩的子集,Thumb指令集不能替代ARM指令集由于Thumb指令的长度为16位,即只用ARM指令一半的位数来实现同样的功能,所以,要实现特定的程序功能,所需的Thumb指令的条数较ARM指令多。在一般的情况下,Thumb指令与ARM指令的时间效率和原创 2017-02-27 21:18:03 · 496 阅读 · 0 评论 -
汇编C语言混合编程
ARM汇编语言和C语言混合编程 ATPCS规则体现了一种模块化设计的思想,其基本内容是C模块(函数)和汇编模块(函数)相互调用的一套规则(C51中也有类似的一套规则)。我感觉比在线汇编功能强大(不用有很多忌讳),条理更清楚(很简单的几条规则)。ATPCS规则内容:1)寄存器的使用规则1、子程序之间通过寄存器r0~r3来传递参数,当参数个数多于4个时,使用堆栈来传递参数。此时r0~r原创 2017-03-04 15:31:04 · 864 阅读 · 0 评论 -
关于立即数
在汇编时,我们常会用到立即数。但是立即数是有条件限定的:当一个数小于255不用判断,它是立即数。当大于255时:把数据转换成二进制形式,从低位到高位写成4位1组的形式。if(count of 1 > 8)isNotImmediate;else{if(数据中间有连续的大于等于24个0){循环左移4的倍数,使高位全为0;找到最高位的1原创 2017-03-04 15:32:38 · 3852 阅读 · 0 评论 -
可移植的单片机printf(print by format)函数实现
一个有趣的实验: 说明%号一出现要么被”吃掉”要么他会终止与f,d,s。 那么再加以大胆猜想: 假设 int sprintf(const char *format, …); 当然我们需要可变参数标准库的支持因为调用的可变参数的方法。当读取到了一个%号,就开始匹配fds中的任意一个,每种的处理方式都不一样。分别是: char *itoc(int value); char *ftoc(原创 2017-03-08 13:37:42 · 2884 阅读 · 0 评论 -
ARM的中断
Exynos4412采用GIC中断控制器,主要是因为Contex-A9 是多核处理器,GIC(Generic Interrupt Controller)通用中断控制器用来选择使用哪个CPU接口,具体主要有两个功能: 1)分配器:设置一个开关,是否接收外部中断源;为该中断源选择CPU接口; 2)CPU接口:设置一个开发,是否接受该中断源请求;原创 2017-03-13 22:12:12 · 716 阅读 · 0 评论