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

专业做消防工程师的正规网站做网站百度推广多少钱

专业做消防工程师的正规网站,做网站百度推广多少钱,设计方案英文,新闻头条最新消息国家大事根据前面关于aarch64架构下的编码解释可知,在src\hotspot\cpu\架构文件夹下, assembler_xx.hpp assembler_xx.cpp register_xx.hpp register_xx.cpp register_definitions_xx.cpp这些文件是有关寄存器定义以及汇编编码函数实现的文件。 对于前述的ope…

根据前面关于aarch64架构下的编码解释可知,在src\hotspot\cpu\架构文件夹下,

assembler_xx.hpp 
assembler_xx.cpp
register_xx.hpp
register_xx.cpp
register_definitions_xx.cpp

这些文件是有关寄存器定义以及汇编编码函数实现的文件。

对于前述的openjdk底层汇编指令调用,我们只涉及了单纯寄存器调用,对于计算机而言,还有一种调用方式是寄存器和内存之间的互相访问。即,数据从内存到寄存器,或者寄存器到内存

在这里插入图片描述

x86的访存模型

这里不再使用aarch64讲述访存,因为该方式下的访存模型比较复杂,有兴趣的朋友可以访问我以前有关AArch64指令的翻译 AArch64教程_阿达King哥的博客-CSDN博客 。

相比而言,x86的访存理解起来简单得多。回到x86架构下的内存访问方式,

在这里插入图片描述

下面以具体的例子说明上述表格的内容

假设rbp寄存器内保存的值是内存中的某个地址,且x86指令采用AT&T格式,即

opcode src, dst

opcode为操作码,src为源,dst为目的

movl %rdi, (%rbp)  //将rdi寄存器中的值放入rbp寄存器所值的内存地址中

这里的括号表示访问的是内存,而不是寄存器本身。当然,可以直接把括号内的名称直接换成内存地址

movl %rdi, (0x55)

可以加上偏移

movl	%rdi, -4(%rbp)   // 寄存器 -> 内存
movl	-8(%rbp), %rsi   // 内存 <- 寄存器

这里表示将rdi寄存器中的值放入指定的内存地址中,该地址为(rbp内的值减去4)

除此之外,还有一种方式为

mov %rax, (%rbx,%rcx)  //R[rax] -> M(R[rbx] + R[rcx])

上述指令的意思是将rax的值放入指定内存地址中,该地址是M(R[rbx] + R[rcx])

也可以结合偏移

mov %rax, -4(%rbx,%rcx)  //R[rax] -> M(R[rbx] + R[rcx]-4)

最后一种方式是乘以系数的方式

mov %rax, (%rbx,%rcx,8)  //R[rax] -> M(R[rbx] + R[rcx]*8 )
mov %rax, -4(%rbx,%rcx,8)  //R[rax] -> M(R[rbx] + R[rcx]*8 -4)

可以发现如果以最后一条指令说明,我们可以将访存格式的各个部分进行如下定义

mov Ra, Imm(Rb,Ri,S)

其中,Rb部分被称为基地址(base),Ri部分被称为变址或索引(index), S部分被称为比例因子(scale),其中比例因子被强制规定只可使用1,2,4,8

hotspot的x86访存模型

结合上述指令特点,在x86文件夹的assembler_x86.hpp文件中定义了Address类,该类用于物理内存访问时调用。

在这里插入图片描述

对照原始的汇编指令,我们可以看出Address类的各个属性都对应着操作数中的相应部分。以下面的例子说明

mov %eax, -4(%ebx,%ecx,8)
Address类属性汇编
_baserbx
_indexrcx
_scale8
_disp-4

hotspot访存指令编码

assembler_x86.hpp中定义上述指令

void movl(Address dst, Register src);

该函数的实现如下

void Assembler::movl(Register dst, Address src) {InstructionMark im(this);prefix(src, dst);emit_int8((unsigned char)0x8B);emit_operand(dst, src);
}

实现中将参数进行x86编码 并发送到内存。

http://www.dtcms.com/a/406595.html

相关文章:

  • mysql的 启动 与 客户端连接
  • 【星海出品】rabbitMQ队列处理深入研究
  • Mysql常见八股文
  • 社交类网站开发需求怎么做个人网页
  • 解析01背包
  • WitTkChart:基于Python tkinter Canvas的开源图表可视化库
  • NIST公布后量子加密标准的第五种算法HQC
  • NetCore+Web客户端实现gRPC实时推送
  • Bugku-想蹭网先解开密码
  • 房屋管理系统开发流程
  • 新浪云怎么做淘宝客网站科技与狠活是什么意思
  • Vue3 v-slot 详解与示例
  • Agno 架构介绍:高性 Multi-agent 系统框架深度解析
  • 哪里有南宁网站建设天河区建设和水务局网站
  • Cadence Allegro 电子设计 快问快答--03.OrCAD颜色在哪里设置?
  • 自己做的网站怎么上排行榜设计广告专业制作
  • 网站页面下沉的特效代码山西seo推广系统
  • S7-200 SMART GET/PUT 指令深度解析:从参数到故障排查(S7 协议的客户端 - 服务器通信)下
  • 做国外网站翻译中国小说赚钱外贸推广软件有哪些
  • 二次封装科技风大屏element-ui弹窗
  • 【JavaScript 性能优化实战】第六篇:性能监控与自动化优化
  • 沃地泰双奖加冕2025农机大奖,以创新科技赋能智慧农业
  • Spring + Spring MVC + MyBatis
  • 酒店 深圳 网站制作如何找外包网站来做
  • 雪碧图动画实例
  • 总结之webpack
  • 义乌市建设局网站河南建设工程信息网官网洛阳至信阳省道
  • 实时云渲染云推流平台配置Redis、MySQL端口,解决中间件端口冲突
  • 网站建设会议记录增城住房和建设局网站
  • shell编程:sed - 流编辑器(6)