cpu执行指令的过程: 由指令计数器PC通过地址总线去访问目标地址, 目标地址的数据通过数据总线存放到指令寄存器里面; 再通过指令译码器把数据转换成机器码; 再传输到相应的运算器进行运算. 运算后把结果返回存储的内存当中(应该存在内存的栈区) pc+4(thumb状态+2),继续读取下一条指令;
2.(指令集) RISC:经典指令集处理器,(去除复杂的运算器,只留下约百分之20的简单运输器,复杂操作,利用简单运算器的多种组合实现) 体积小,功耗低 性能不好,运算慢 应用于嵌入式移动终端比如单片机. CISC:复杂指令集,性能好,价格贵,体积大 应用于pc机上. 3. 指令集:处理器能够识别的指令的集合(程序译码之后的指令(机器码010101)) ARM支持的数据类型: 字节(byte):8 bits 半字(halfword):16 bits 字(word):32bits 4. cpu: 内存: 硬盘: 5. arm的8种模式: user : 普通用户模式,执行应用程序的状态下处于这种用户模式. FIQ: 当一个高优先级的(硬件)中断产生后arm处与快速中断模式. IRQ:当一个低优先级的(硬件)中断产生后arm处与普通(外部)中断模式 SVC: 当复位或程序进行软中断(软件中断(中断程序))的时候处于SVC(超级用户)模式. Abort : 当产生存取异常的时候arm进入Abort(终止)模式 Undef :当执行未定义的指令时候进入Undef(指令未定义)模式 System :使用和User模式相同寄存器时处于特权(系统)模式 Monitor: 监控模式 6. 寄存器组织:(处理器内部的存储器)作用:暂时存放运算数据和结果. arm A 9共40个寄存器 17个通用寄存器(R0~R15和CPSR) stm32里面只有37 个 没有监控模式下的三个专用寄存器 R15 程序计数器,用于存放当前取址指令的地址 R14 链接寄存器 用于跳转时保存下一条指令的地址 用于中断时保存跳转前(中断处理完成后)的地址 R14=3 栈指针呢个,用于存储当前模式下的栈顶地址 CPSR 为当前程序状态寄存器 是一个32位寄存器 分为四个区域: 07:04模式位 控制在八(1000)下的那种工作模式 5:状态位 0:arm 1:thumb 6:FIQ 0:开启 1:禁止 7:IRQ 0:开启 1:禁止 28~31: 运算器结果位: 31位:1:产生负数 else :0 30:1 :结果为 0 else 0 29, 进位借位 加法进位置1 减法借位置0 28:溢出标志位 加法进位置1 减法借位置0
|