linux 硬件 arm架构 汇编语言

1.cortex
       1. Cortex-A 低功耗 消费类
        ARM Cortex-A 系列处理器是一种广泛应用于 移动设备、嵌入式系统和物联网的高效能处理器,因其低功耗和高性能的特点而受到青睐。
       2. Cortex-R 实时性
        Cortex-R处理器针对高性能实时应用,例如硬盘控制器(或固态驱动控制器)、企业中的网络设备和打印机、消费电子设备(例如 蓝光播放器和媒体播放器)、以及汽车应用(例如安全气囊、制动系统和发动机管理)。
        3.Cortex-M 高性能,偏控制
        面向各类嵌入式应用的 微控制器内核
2.ARM9
        指令集架构(版本): armV4
         程序执行的过程: 预取 译码 执行
3.处理器工作模式
        1.User:非特权模式,大部分任务执行在这种模式    用户模式
        2.FIQ:当一个高优先级(fast)中断产生时会进入这种模式。 快中断
        3.IRQ:当一个低优先级(normal)中断产生时会进入这种模式。 慢中断
        4.Supervisor:当复位或软中断指令执行时会进入这种模式。 SVC模式  管理模式
        5.Abort:当存取异常时将会进入这种模式。 中止模式
        6.Undef:当执行未定义指令时会进入这种模式。 未定义
        7.System:使用和User模式相同寄存器集的特权模式。 系统模式
        Cortex-A特有模式
                Monitor:是为了安全而扩展出的用于执行安全监控代码的模式,也是一种特权模式。                                                                                                                                          监护模式
4.CPSR 程序状态寄存器
        条件位:
                 N = Negative result from ALU
                 Z = Zero result from ALU
                 C = ALU operation Carried out or borrow
                 V = ALU operation oVerflowed
        Q 位:
                仅ARM v5TE-J架构支持
                指示饱和状态
        J
                仅ARM v5TE-J架构支持
                  T=0;J = 1 处理器处于 Jazelle 状态
                也可以和其他位组合
        DNM Do Not Modify
                GE[3:0] 大于或等于( 当执行 SIMD 指令时有效 )
                IT[7:2] IF….THEN….指令执行状态位
        E 位: 大小端控制位
        A位: A=1 禁止不精确的数据异常
        中断禁止位:
                I = 1: 禁止 IRQ.
                F = 1: 禁止 FIQ
        T Bit
                T = 0;J=0; 处理器处于 ARM 状态
                T = 1;J=0 处理器处于 Thumb 状态
                T = 1;J=1 处理器处于 ThumbEE 状态
        Mode 位:
                处理器模式位
                00000 User mode; 10001 FIQ mode; 10011 SVC mode;
                10111 Abort mode; 11011 Undfined mode; 11111 System;
                10110 Monitor mode;10010 IRQ
5.异常处理
        当异常产生时, ARM core:
                拷贝 CPSR 到 SPSR_<mode>
                设置适当的 CPSR 位:
                        改变处理器状态进入 ARM 态
                        改变处理器模式进入相应的异常模式
                        设置中断禁止位禁止相应中断 (如果需要)
                保存返回地址到 LR_<mode>
                设置 PC 为相应的异常向量
        返回时, 异常处理需要:
                从 SPSR_<mode>恢复 CPSR
                从LR_<mode>恢复 PC
                Note:这些操作只能在 ARM 态执行
6.ARM汇编语言程序格式      
        ARM汇编语言是以 (section) 为单位来组织源文件的。段是相对独立
的、具有特定名称的、不可分割的指令或者数据序列。
        段又可以分为代码段和数据段,代码段存放执行代码,数据段存放代
码运行时需要用到的数据。一个 ARM 源程序至少需要一个代码段,大的程
序可以包含多个代码段和数据段。
        ARM指令集可以分为六大类
                1.分别为数据处理指令 ( 完成 CPU 内部的计算)
                2. Load/Store指令 ( 完成 CPU 与内存 IO 外设之间的数据传输)
                3. 跳转指令 ( 完成程序的跳转)
                4. 程序状态寄存器处理指令 ( 完成 CPSR 的管理 )
                5. 协处理器指令 ( 完成 CPU 扩展功能的实现 )
                6. 异常产生指令 ( 用户程序异常触发 )
        函数传参规则:
                4个以内:r0~r3
                大于4个的使用栈传递
                返回值: r0
         立即数: 一个数(或其按位取反后)循环右移偶数位后所有的1能放进低8位中
	preserve8
	area reset, code, readonly
	code32
	entry

start

	ldr sp, =0x40001000

	mov r0, #1
	mov r1, #2
	mov r2, #3
	mov r3, #4

	import c_add
	bl c_add

	nop
	b start

	export asm_add
asm_add
	stmfd sp!, {r4-r12, lr}   ; 保护现场
	add r0, r0, r1
	ldmfd sp!, {r4-r12, pc}   ; 恢复现场

	end

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值