做pc端网站渠道,一个人可以做网站吗,贴吧推广400一个月,华为软件开发工程师文章目录 上一篇嵌入式系统概述ARM技术概述ARM指令Thumb指令集ARM程序设计 上一篇
嵌入式系统复习–基于ARM的嵌入式程序设计
嵌入式系统概述 嵌入式系统中常用的通信接口包括哪些#xff1f; RS-232C串行通信接口#xff0c;RS-422串行通信接口#xff0c;RS-485串行通信… 文章目录 上一篇嵌入式系统概述ARM技术概述ARM指令Thumb指令集ARM程序设计 上一篇
嵌入式系统复习–基于ARM的嵌入式程序设计
嵌入式系统概述 嵌入式系统中常用的通信接口包括哪些 RS-232C串行通信接口RS-422串行通信接口RS-485串行通信接口USB接口以太网接口IEEE1394接口IEEE802.11接口JTAG接口蓝牙接口 大端存储与小端存储有什么异同 大端存储是将数据的低字节存入低地址高字节存入低地址小端存储是将数据的高字节存入低地址低字节存入高地址
ARM技术概述 RISC的主要特点 数据通道中只保留有用的指令确保通道能够快速执行每个指令确保CPU硬件设计的足够简单 简述ARM处理器的数据类型 有符号/无符号字节B有符号/无符号半字H有符号/无符号字(D) 简述哈佛结构和冯诺依曼结构的主要区别 简述ARM体系结构的版本情况。 v6 增加了Thumb-2 提高了代码密度增加了SIMD 提高了数字和媒体处理能力TrustZone增加了安全性能力IEM增强了功耗管理能力 v7 A型号提供了应用处理能力支持复杂的操作系统R型号提供了实时操作系统M型号提供了成本敏感的系统 v8 支持64位的处理器架构64位的通用寄存器和PC, SP支持64位AArch64, 和32位AArch32两种指令 简述ARM处理器异常处理情况。 进入异常 将CPSR中的内容拷贝到SPSR中改变CPSR中的中断标志位将指令的下一条指令拷贝到链接寄存器LR中强制改变PC中的值进入异常状态 异常返回 将异常改变的寄存器保护存入栈中将SPSR_mode中的值拷贝到CPSR中将PC恢复到指令异常前的指令流中修改CPSR中的中断标志位 ARM处理器支持哪几种工作模式 用户模式快速中断fiq模式普通中断irq模式软件中断模式svc中止模式abt未定义模式und 系统模式 ARM处理器共有多少个寄存器ARM状态下通用寄存器可以分为几类 37个寄存器可以分为31个通用寄存器不分组寄存器、分组寄存器、程序计数器6个状态寄存器 简述ARM指令中12位压缩的立即数是如何构成的 由8位常数及4位循环移位位构成及 将8位立即数循环右移2 * 循环移位位后得到对应的立即数
ARM指令 用ARM汇编指令实现下面列出的几种操作 R0 16MOV R0, #16R0 R1 / 16MOV R0, R1, LSR #4R1 R3 * 4MOV R1, R3, LSL #2R1 -R1MVN R1, R1下面的ARM指令完成什么功能 LDRH R0, [R1, #6] 以前变址的方式将R1中的内容作为地址加上偏移量6后以半字的方式载入R0中LDR R0, 0x999 伪指令编译时通过多条指令运算得到32位的0x999并将它载入到R0中 BX指令与BL指令有什么不同请说明之 BX指令是在ARM与Thumb两个状态间的切换当寄存器的第0位是1则切换到Thumb状态如果是0则切换到ARM状态BL指令是跳转链接指令在调到对应指令前会将当前指令的地址拷贝到链接寄存器LR中然后在进行跳转。 请指出MOV指令与LDR指令的区别和用途 MOV是完成寄存器与寄存器之间或与立即数之间的数据移动 而LDR是寄存器与存储器之间的数据传输 调用子程序使用B还是BL指令写出返回子程序的指令 调用子程序使用BL指令因为需要返回到主程序所以要将下一条的指令地址链接到LR中 没有嵌套的返回指令 BL LABEL
LABELMOV PC LR有嵌套的返回指令 STMFD SP! {R0-R7, LR}BL SUBPROGRAMSUBPROGRAM从子程序返回LDMFD SP! {R0-R7, PC}编写一个子程序从存储器某处拷贝一个字符串到存储器另一处。源字符串的开始地址放入R1, 长度以字节为单位放入R2, 目的字符串的开始地址在R3 AREA COPYSTRING, CODE, READONLY
ENTRY
CODE32
startBL SUBCOPY
stopMOV R0, #0x18LDR R1, 0x20026SWI 0x123456
;子程序
SUBCOPYCMP R2, #0BEQ ENDCOPY
LOOPLDRB R4, [R1], #1; 后变址 mem32R1 - R4, R1 1 - R1STRB R4, [R3], #1SUBS R2, R2, #1BNE LOOPENDCOPYMOV PC, LR ; 子程序返回END请将下面C语言代码转换成汇编语言 if (a 10 a 100)b b 1
elseb b - 1汇编语言为 假设R0中存入a的内容 R1中存入b的内容CMP R0, #10BLS SECONDCMP R0, #100BCS SECONDADD R1, R1, #1
SECONDSUB R1, R1, #1ARM寻址方式有哪几种 立即数寻址寄存器寻址基址加偏址寻址寄存器间接寻址块拷贝寻址堆栈寻址相对寻址方式
Thumb指令集 ARM指令集与Thumb指令集中移位操作是如何实现的有什么异同点 移位通过移位寄存器进行一个移位类型一个移位量字段前者决定移位方式后者决定移位步数 异同 ARM可以同时进行移位和逻辑运算而Thumb只能单独进行移位运算ARM可以进行循环移位但是Thumb不行 用语言描述ARM处理器如何进入和退出Thumb指令模式 ARM通过使用BX指令寄存器第0位为1进入Thumb模式或者通过异常返回进入Thumb模式 通过BX指令寄存器第0位为0推出Thumb模式或者通过发生异常推出Thumb 编写一个子程序从存储器某处拷贝一个字符串到存储器另一处。源字符串的开始地址放入R1, 长度以字节为单位放入R2, 目的字符串的开始地址在R3 AREA TCOPY, CODE, READONLY
ENTRY
CODE 16
startBL SUBCOPY
stopMOV R0, #0x18LDR R1, 0x20026SWI 0x123456
SUBCOPYCMP R2, #0BEQ ENDCOPY
LOOPLDRB R4, [R1], #1STRB R4, [R3], #1SUBS R2, #1BNE LOOP
ENDCOPYMOV PC, LR
END异同Thumb在使用寄存器时需要使用R0~R7, 低位寄存器使用受到限制 Thumb指令大多是二地址指令CMP,MOV,LDR,STR等用法还和ARM类似 多了移位指令
ARM程序设计
简述IRQ/FIQ异常中断处理程序中所使用的的_fiq/_irq的作用 标记对应函数为中断函数编译器会自动在函数内部增加中断现场保护代码简述#include头文件.h与 #include 头文件.h的区别 带的是直接在标准路径下搜索相应文件而带“”的是先在标准路径下搜索相应文件如果找不到则在对应工程目录下搜索对应文件 变量的存储类型有几种各自的作用是什么 全局变量:在整个程序的生命周期内都可访问其存储空间在程序启动时分配在程序结束时释放。局部变量仅在被声明的函数或代码块内可见器存储空间在声明该变量的函数或代码块时分配在退出时释放静态变量静态变量的生命周期延长到整个程序执行期间但其作用域仍限定在声明它的函数或代码块内部寄存器变量将变量存储在寄存器中以提高访问速度。 函数的参数传递方式有几种分别是什么 2中寄存器传递和栈传递 ATPCS包含那些规则分别是什么 寄存器使用规则R0-R3是用来传递参数的R4-R11是用来保存局部变量的栈的使用规则使用FD满递减堆栈采用字对齐方式参数传递规则当参数个数是固定的第一个参数使用R0-R3传递其余使用数据栈传递当参数不是固定的时候前4个参数使用R0-R3传递超过4个的使用数据栈传递 在完成以下操作后R0的内容是什么 MOV R1, #5
ADD R0, R1, R1, LSL #3R1 5, R0 - R1 R1 * 8 R0 5 5 * 8 45 请将下面C语言代码转换成汇编语言 if (a 0 || b 1)c d e AREA EXAMPLE, CODE, READONLY
GBLA a, b, c, d, e
ENTRY
CODE 32
startMOV R4, aMOV R5, bMOV R6, cMOV R7, dMOV R8, eCMP R4, #0CMP R5, #1BNE COMPAREENDADD R6, R7, R8
COMPAREEND
stopMOV R0, #0x18LDR R1, #0x20026SWI 0x123456
END编写一段汇编语言程序实现ARM到Thumb状态的转换 AREA SWITCH, CODE, READONLY
ENTRY
start
CODE 32MOV R0, into_ThumbADD R0, R0, #1 BX R0
CODE 16
into_ Thumb
END编写一段汇编程序利用跳转表实现子程序的跳转。跳转条件在R2中R2的值为0,1,2,3,4…,子程序分别为SUB0, SUB1, SUB2…
AREA JUMPTAB, CODE, READONLY
ENTRY
CODE 32
start BL JUMPTABJUMPTABADR R0, SUBTABCMP R2, #SUBMAXLDRS PC, [R2, R0, LSL 2]MOV PC, LRSUBTABDCD SUB1DCD SUB2...
SUBMAXSUB1...
SUB2...
END