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

退役军人事务部网站建设他达那非片能延时多久

退役军人事务部网站建设,他达那非片能延时多久,企业网站建设实训心得,模仿wordpress主题文章目录 前提RISC-V汇编语言入门RISC-V汇编指令总览汇编指令操作对象汇编指令编码格式add指令介绍无符号数 练习参考链接 目标#xff1a;通过这一个系列课程的学习#xff0c;开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提 这个系列的大部分文章和知识来自于… 文章目录 前提RISC-V汇编语言入门RISC-V汇编指令总览汇编指令操作对象汇编指令编码格式add指令介绍无符号数 练习参考链接 目标通过这一个系列课程的学习开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提 这个系列的大部分文章和知识来自于[完结] 循序渐进学习开发一个RISC-V上的操作系统 - 汪辰 - 2021春以及相关的github地址。 在这个过程中这个系列相当于是我的学习笔记做个记录。 RISC-V汇编语言入门 能手写汇编代码的在我的心目中都是巨佬。只有明白底层硬件的人才有可能去写汇编。 一个完整的RISC-V汇编程序有多条语句(statement)组成。一个典型的RISC-V汇编语句由3部分组成 [label:] [operation] [comment] label任何以冒号结尾的标识符都被认为是一个标号。operation可以有多种类型 instruction直接对应二进制机器指令的字符串pseudo-instruction为了提高编写代码的效率可以用一条伪指令指示汇编器产生多条实际的指令directive通过类似指令的形式(以.开头)通知汇编器如何控制代码的产生不对应具体的指令macro采用.macro/.endm自定义的宏 comment注释以#开始到当前行结束 RISC-V汇编指令总览 汇编指令操作对象 寄存器在这个系列中我们只有32个通用寄存器x0~x31这个在之前我们已经展示过了。在RISC-V中Hart在执行算数逻辑运算时所操作的数据必须直接来自寄存器。 内存Hart可以执行在寄存器和内存之间的数据读写操作读写操作使用字节位基本单位进行寻址RV32最多可以访问 2 32 2^{32} 232个字节的内存空间。 汇编指令编码格式 RV32由6种指令编码格式。每一条指令有32bitsfunct7/funct3和opcode一起决定最终的指令类型。指令在内存中按照小端序排列。rs2rs1rd都是指的是寄存器(register)imm指的是立即数。 大端序高字节存放在内存的低地址小端序低字节存放在内存的低地址。 下面这张表指出了opcode是如何与指令对应的。 opcode总共7bits第0和第1位都是11第2到第四位和第5到第6位不同则代表着指令类型不同使用add和sub指令举例。 先看opcode0110011在表中对应着OPadd和sub都应该属于OP然后funct3也相同但是funct7不同代表着它们一个是add一个是sub。 这里介绍的只是一个概貌更多信息还要自己学习。 add指令介绍 通过上面的图片就可以明白一条汇编指令是如何到二进制代码的。同时这一块视频中也有详细地讲解。 无符号数 我们知道有符号数在计算机中都是使用二进制补码的形式保存的最高位为符号位0代表正数1代表负数。正数的补码不变负数的补码反码1。 练习 这里我们带大家做一个add2的练习。 汇编源码为 # Add # Format: # ADD RD, RS1, RS2 # Description: # The contents of RS1 is added to the contents of RS2 and the result is # placed in RD..text # Define beginning of text section.global _start # Define entry _start_start:li x6, 1 # x6 1li x7, -2 # x7 -2add x5, x6, x7 # x5 x6 x7stop:j stop # Infinite loop to stop execution.end # End of file make 以后我们使用make code查看这个程序的二进制代码然后逐行进行分析如下 test.elf: file format elf32-littleriscvDisassembly of section .text:80000000 _start:.text # Define beginning of text section.global _start # Define entry _start_start:li x6, 1 # x6 1 80000000: 00100313 li t1,1li x7, -2 # x7 -2 80000004: ffe00393 li t2,-2add x5, x6, x7 # x5 x6 x7 80000008: 007302b3 add t0,t1,t28000000c stop:stop:j stop # Infinite loop to stop execution 8000000c: 0000006f j 8000000c stop其他都没什么好说的主要就是这个li指令以及add这个指令。add x5,x6,x7这个我们在上面展示过了这里主要解释下li这个伪指令。 这里我们先从其他博客那里拿过来一个结论 li伪指令把一个立即数imm加载到rd寄存器中。当imm在 [ − 2 11 , 2 11 − 1 ] [-2^{11} , 2^{11-1}] [−211,211−1]范围内也就是[-2048~2047)的时候li被转化成下面这条实际指令 addi rd, x0,imm #rdimm0 x0是一个特殊的寄存器值为0且永远不会改变 所以add x7, x0, -2 对应的二进制为111111111110 00000 000 00111 0010011前面的111111111110代表了-2它是以二进制补码存储的00000代表了寄存器x0000是funct00111代表了寄存器x7最后的0010011则是opcode。和我们输出的hex一样。 那么当立即数imm不在这个范围但在32位有符号数的范围内也就是[-2147482648-2048以及20472147482647]的时候一条addi指令显然是不够了。 这时候就需要lui指令。 假设我们有这样的一条语句add x7, -3000那么它对应的二进制是多少呢先看它的二进制如下图 在立即数为-3000的情况下一条li伪指令被分为了两条汇编指令lui和addiaddi我们已经在上面介绍过了下面给出lui指令的说明。 看这个似乎有点懵我们直接说怎么将-3000写入到x7寄存器的。 -3000的32位二进制反码为1111 1111 1111 1111 1111 0100 0100 1000先取第12到第31位(通过右移12位就可以得到第12到第31位)也就是1111 1111 1111 1111 1111共20位构成lui这条指令1111 1111 1111 1111 1111 00111 0110111 fffff3b7。对应的操作就是将20位左移12位并将低12位置0写入到x7中。 再取-3000的第0到第11位0100 0100 1000加到x7寄存器中(x7 x7 imm[0:11])对应的二进制指令就是0100 0100 1000 00111 000 00111 0010011 44838393可以看到和程序的结果一样。这样大家阶对li伪指令有了进一步的了解。 参考链接 https://zhuanlan.zhihu.com/p/367085156
http://www.pierceye.com/news/463353/

相关文章:

  • 做一个网站需要什么网络营销方式分析论文
  • 可以做3d电影网站企业网站优化应该怎么做
  • 中山做网站联系电话app客户端开发公司
  • 秦皇岛网站推广价钱南京建设网站制作
  • 2018钓鱼网站建设邢台seo公司
  • 深圳建设交易中心网站域名网站建设
  • 做网站色弱可以吗一个网址多少钱
  • 如何查询网站接入信息产品营销网站
  • 常用博客建站程序遂溪网站开发公司
  • 网站开发软件系统安徽通皖建设工程有限公司网站
  • 意派网站开发新手篇做平面常用的网站
  • 广州网站设计费用深圳室内设计师网
  • 有什么可以做兼职的网站吗建设网站的需求分析
  • 专门做进口产品的网站6wordpress赚钱方法
  • 长兴网站建设公司郫县城乡规划建设管理局网站
  • 天津建设工程信息网站搜索引擎推广是什么工作
  • 网站的系统建设方式网站建设报价表格
  • 商城展示网站建设我劝大家不要学android
  • 官网的建站过程云南网站建设营销
  • 那个网站上有打码的任务做台州做网站的公司
  • 做公司网站 需要注意什么汕尾市住房和城建设局网站
  • 建立音乐网站网络媒体设计是什么
  • html网站怎么进入后台网站建设完成之后要索取哪些
  • 做炭化料的网站国外可以做非法网站吗
  • 厦门 网站建设 网站开发 未来网络做百科专用参考链接的网站
  • 手机网站友情链接怎么做网站轮播图
  • 网站做支付宝花呗分期设计师联盟网是谁创建的
  • 辽宁手机版建站系统开发高平市规建设局网站
  • 免费电子商务网站建设个人网站心得
  • 2003 iis网站发布网站c2g的代表性电商平台