当前位置: 首页 > news >正文

秦皇岛昌黎县建设局网站网络服务器无响应改进措施或应对策略

秦皇岛昌黎县建设局网站,网络服务器无响应改进措施或应对策略,做电子商务的网站,深圳公司广告牌制作目录 汇编指令代码框架 汇编指令语法格式 数据处理指令 数据搬移指令 mov 示例 立即数的本质 立即数的特点 立即数的使用 算术运算指令 指令格式 add 普通的加法指令 adc 带进位的加法指令 跳转指令 Load/Store指令 状态寄存器指令 基础概念 C 语言与汇编指令的关… 目录 汇编指令代码框架 汇编指令语法格式 数据处理指令 数据搬移指令 mov 示例 立即数的本质 立即数的特点 立即数的使用 算术运算指令 指令格式 add 普通的加法指令 adc 带进位的加法指令 跳转指令 Load/Store指令 状态寄存器指令 基础概念 C 语言与汇编指令的关系 语句带有分号 (;) 的 C 语言语句可以被编译成汇编指令。预处理指令以井号 (#) 开头的行称为预处理指令它们告诉编译器如何处理源代码。 汇编语言的整体分类 指令编译后生成一条机器码存储在内存中供 CPU 执行。伪操作不生成机器码也不占用内存用于控制汇编过程。 (相当于c中的’#‘的内容)告诉编译器怎么编译 伪指令在编译时被替换为一系列等效的指令用于实现某些高级功能。 (如cpu中没有乘法器对应没有乘法指令3*3 ---》用加法器实现333替换实现) 注释 单行注释使用  符号开始。多行注释使用 /**/ 包围。 指令分类 数据处理指令对数据进行逻辑和算术运算。跳转指令改变程序流程即修改程序计数器 PC。Load/Store 指令读取和写入内存。状态寄存器传送指令读写 CPSR当前程序状态寄存器。异常中断产生指令触发软件中断SWI用于系统调用。协处理器指令操作协处理器比如浮点运算单元 FPU。 汇编指令代码框架 .text .global _start _start:; 汇编代码段 .end 汇编指令语法格式 opcodecode{s} Rd, Rn, operand2 opcode指令名称。code条件码可选默认无条件执行。s是否更新 CPSR 的标志位。Rd目标寄存器。Rn第一个操作寄存器。operand2第二个操作数可以是寄存器或立即数。 注指令的名字条件码s连到一起写指令名和目标寄存器之间使用空格寄存器和数据之间使用逗号隔开指令中的字符不区分大小写 数据处理指令 数据搬移指令 mov 格式opcodecode{s} Rd, operand2立即数形式mov{code}{s} Rd, #immediate 示例 在这个示例中我们首先声明了一个 .text 段然后定义了一个全局符号 _start这是程序的入口点。接下来我们初始化寄存器 R0 为 0x1234然后将 R0 的值复制给 R1。最后通过 bx lr 返回到调用者 .text .global _start_start:; 初始化寄存器 R0 为 0x1234mov r0, #0x1234; 将 R0 的值移动到 R1mov r1, r0; 结束程序bx lr.end 1》数据搬移指令 mov 格式opcodecode{s} Rd, oprand2如果是立即数前边必须加# PC寄存器详细讲解 指令的执行三步取指译码执行PC永远指向当前正在取指指令的地址。 立即数在 ARM 汇编语言中是一个重要的概念。立即数是直接编码在指令中的数值它与普通变量不同后者通常存储在内存中。下面是关于立即数的一些详细说明和优化后的格式 立即数的本质 立即数是直接嵌入在指令中的数据作为指令的一部分。这意味着当指令被加载到处理器中时立即数也会同时被加载。 立即数的特点 优点 快速访问因为立即数是与指令一同加载的所以不需要额外的时间去内存中获取。节省空间如果立即数足够小那么可以减少对寄存器的需求从而节省空间。缺点 数量有限立即数的大小受到指令格式的限制ARM 架构中立即数通常被限制在一定范围内。表达能力受限由于立即数大小的限制有时候无法直接表示较大的数值。 立即数的使用 在 ARM 汇编语言中立即数通常用于简单的数值操作例如赋值或者与寄存器进行逻辑运算。立即数只能是某些特定的值并且这些值通常被限制为可以由指令直接处理的形式。 如MOV ,#0x12345678 报错不合法 对于 mov 指令而言立即数必须是一个可以通过位移得到的 8 位值。这意味着立即数必须是 2 的幂次方的倍数并且最大不超过 255。例如 0x1234 是一个有效的立即数因为它可以通过位移得到。但是 0x12345678 则不是一个有效的立即数因为它超过了 8 位的限制并且不能通过简单的位移得到。 注使用mov 给寄存器里面存放值的时候#号后面需是有效数1立即数2取反之后是立即数如果不是立即数需要用ldr指令进行存放。 算术运算指令 常见的算术运算指令包括 add加法adc带进位的加法sub减法sbc带借位的减法mul乘法 指令格式 算术运算指令的一般格式如下 opcode{code}{s} Rd, Rn, operand2 其中 opcode 是指令名称。code 是条件码可选。{s} 表示是否更新 CPSR 的标志位。Rd 是目标寄存器。Rn 是第一个操作寄存器。operand2 是第二个操作数可以是寄存器或立即数。 add 普通的加法指令 adc 带进位的加法指令 假设2个64位的数相加 第一个64位的数R0存放低32位R1存放高32位,第二个64位的数R2存放低32位R3存放高32位结果R4存放低32位R5存放高32位 add和ADC的区别例如是64位的字符如果低位大小满足进1的话用ADD只会显示在C进1但是存储的地址并不进1ADC的话则会将存储的地址进1 注意mul r2, r0, #0x4 错误 乘法指令的第二个操作数只能是一个寄存器 mul r2, r1,r0 跳转指令 1》修改PC,不建议使用,因为需要查询指令的地址 2》 b bl 指令跳转 格式b/bl Label Label: 指令相当C语言的函数调用 B指令(不带返回的跳转) 不保存返回地址的跳转返回地址不保存到lr中 BL指令(带返回的跳转指令),将LR的值修改成跳转指令下一条指令的地址,再将PC的值修改成跳转标识符下指令的地址 补充了解 RM指令条件码表可跟的判断条件成立跳转(NZCV在用于判断两者之间关系使用比较多) 如c代码如下 练习实现以下逻辑unsigned int r1 9;unsigned int r2 15;while(1){if(r1 r2)goto stop;if(r1 r2)r1 r1 - r2;if(r1 r2)r2 r2 - r1;}stop:while(1);汇编指令练习答案如下mov r1,#9mov r2,#15 loop:cmp r1,r2 cmp 比较指令beq stopsubhi r1,r1,r2subcc r2,r2,r1b loop stop:b stop Load/Store指令 对内存的读写操作//如 a 读a的值将运算结果从cpu写道内存 可用地址查找我们不用查找脚本文件中配置了内存空间的分配 查看内存中内容 1单寄存器操作指令 ldr/str 格式ldr/str Rm, [Rn]Rm: 存储是数据 Rn存储的数据地址 将CPU中r1寄存器中的数据存储到内存中r0地址的空间中 将r0指向的地址空间中的内容读到r2寄存器中ldr r2, [r0] 将r1中的值存储到r04指向的地址空间中,R0中的值不变str r1, [r0, #4] 将r2中的值存储到r0指向的地址空间中,r0 r0 4str r2, [r0], #4 将R3中的值存储到R04指向的地址空间中并且r0 r0 4str r3, [r0, #4]! 2多寄存器操作指令 stm ldm将r1到r4中的值存储到r0指向地址空间中连续16个字节的地址空间stm r0, {r1-r4} 将r0指向的地址空间中连续的16个字节的数据读到r5-r8寄存器中ldm r0, {r5-r8} 如果寄存器列表中的寄存器编号既有连续又有不连续连续的使用“-”隔开不连续的使用“,” stm r0, {r1-r3,r4} 2. 不管寄存器列表中的寄存器编号顺序如何变化都是小地址对应小编号的寄存器高地址对应大编号的寄存器stm r0, {r4,r3,r2,r1}ldm r0, {r8,r7,r6,r5} 3栈的操作指令 stmfd ldmfd栈的种类 空栈(Empty) 栈指针指向的地址是空的在栈中存储数据时可以直接存储存储完成之后需要将栈指针再次指向空的位置。 满栈(Full) 栈指针指向的地址有数据在栈中存储数据时需要先将栈指针指向一个空的位置然后在存储数据。 增栈(Ascending) 栈指针向高地址方向移动 减栈(Descending) 栈指针向低地址方向移动 操作栈的方式有四种 满增栈 满减栈 空增栈 空减栈FA:Full Ascending 满增(FA)FD:Full Descending 满减(FD)EA:Empty Ascending 空增(EA)ED空减ARM默认采用的是满减栈 stmfd/ldmfdcode sp!, {寄存器列表}stmfd sp!, {r1-r5}写 压栈 更新栈指针指向的地址空间 ldmfd sp!, {r6-r10}读 (出栈) 特殊 stmfd sp!, {r1-r5,lr}写 压栈 ldmfd sp!, {r6-r10,pc}读 (出栈) //r1-r5出栈给r6-r10, 将lr的值出栈给pc 状态寄存器指令 对CPSR进行读写操作//其他都不能动CPSR SWI 指令是linux内核有所以arm为了匹配才有的指令CPSR保存cpu的状态、模式、中断中断开关、运算状态非常重要不能任意更改只有一类指令能操作这个寄存器 1》读cpsr 指令mrs 2》写cpsr 指令 msr 一般情况不能修改cpsr只能用msr命令修改user模式下不能切换到其他模式。 注修改CPSR的控制域(bit[7:0]),修改CPSR时必须指定修改哪个区域 USER模式下不能修改CPSR的值,防止应用程序修改CPU状态,保护操作系统 CPSR_C修改的是CPSR的低八位ctrl(控制)域一般都只修改C域 OK就分享到这如果帮到你那就点个关注吧~
http://www.w-s-a.com/news/729937/

相关文章:

  • 厦门公司注册网站dw做简单小说网站
  • 网站建好以后每年都续费么wordpress 仿聚划算
  • 单位网站建设收费标准网上开店铺需要多少钱
  • 灯饰网站需要这么做申请域名的流程
  • 软件下载网站怎么赚钱wordpress减少数据库查询
  • 什么兼职网站可以做视频剪辑常见的推广平台有哪些
  • 网站开发是用html还是jsp设迹官网
  • 查公司信息的网站怎么学wordpress
  • 白银做网站长春一般建一个网站需要多少钱
  • 帮人做钓鱼网站的人网络推广培训职业学校
  • 淘宝客有必须做网站吗网站开发的形式有( )
  • 网站建设:上海珍岛网页版qq空间登录
  • 网站服务器ipteahouse wordpress主题
  • 深州市住房保障和城乡建设局网站做网站公司叫什么
  • 织梦网站转跳手机站注册公司代理记账费用
  • wordpress建站Pdf亚马逊aws在线观看
  • 做网站的外包公司有哪些WordPress调用json数据
  • 做网站网站怎么赚钱网站的建设及维护报告
  • 可以做效果图的网站东莞网站优化什么方法
  • 网站和软件的区别怎么做招生网站
  • 雄安免费网站建设电话如何做网站推广 求指点
  • 十大免费cad网站入口软件北京做网站建设价格
  • 建设一个公司网站要具备什么网页制作的专业
  • 东莞seo建站排名全包网站
  • 网站建设的基本步骤有哪些软件商店下载官方
  • 网站建设开发报告论文hao123上网从这里开始官方
  • 阿里云建网站费用徐州房产网
  • 网站统计分析平台做企业礼品的网站
  • 做可视化图表的网站wordpress批量导入tag
  • txt怎么做网站网站的链接结构包括