
ARM学习
文章平均质量分 61
crazy_koala
这个作者很懒,什么都没留下…
展开
-
ARM的异常响应
ARM模式: 异常处理流程:四大步三小步(CPU自动处理) 因为在异常中断处理程序人口的一些指令是ARM指令,然后根据需要,程序可以切换到 Thumb 工作状态, 在异常中断处理程序返回前,程序在切换到 ARM 工作状态。 用ARM结构手册中的代码描述如下: R14_ = return link SPSR_ = CPSR CPSR原创 2017-02-27 21:09:29 · 771 阅读 · 0 评论 -
ARM—工作状态,工作模式
ARM32位 ARM指令集 Thumb指令集(一个不完整的) 区别:Thumb指令集是ARM指令集的空间压缩的子集,Thumb指令集不能替代ARM指令集 由于Thumb指令的长度为16位,即只用ARM指令一半的位数来实现同样的功能,所以,要实现特定的程序功能,所需的Thumb指令的条数较ARM指令多。 在一般的情况下,Thumb指令与ARM指令的时间效率和原创 2017-02-27 21:18:03 · 547 阅读 · 0 评论 -
汇编C语言混合编程
ARM汇编语言和C语言混合编程 ATPCS规则体现了一种模块化设计的思想,其基本内容是C模块(函数)和汇编模块(函数)相互调用的一套规则(C51中也有类似的一套规则)。我感觉比在线汇编功能强大(不用有很多忌讳),条理更清楚(很简单的几条规则)。 ATPCS规则内容: 1)寄存器的使用规则 1、子程序之间通过寄存器r0~r3来传递参数,当参数个数多于4个时,使用堆栈来传递参数。此时r0~r原创 2017-03-04 15:31:04 · 916 阅读 · 0 评论 -
关于立即数
在汇编时,我们常会用到立即数。 但是立即数是有条件限定的: 当一个数小于255不用判断,它是立即数。 当大于255时: 把数据转换成二进制形式,从低位到高位写成4位1组的形式。 if(count of 1 > 8) isNotImmediate; else { if(数据中间有连续的大于等于24个0) { 循环左移4的倍数,使高位全为0; 找到最高位的1原创 2017-03-04 15:32:38 · 4067 阅读 · 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 · 3034 阅读 · 0 评论 -
ARM的中断
Exynos4412采用GIC中断控制器,主要是因为Contex-A9 是多核处理器,GIC(Generic Interrupt Controller)通用中断控制器用来选择使用哪个CPU接口,具体主要有两个功能: 1)分配器:设置一个开关,是否接收外部中断源;为该中断源选择CPU接口; 2)CPU接口:设置一个开发,是否接受该中断源请求;原创 2017-03-13 22:12:12 · 826 阅读 · 0 评论