动态二进制代码翻译[1][VM Versatile platforms for systems and process]
来源:互联网 发布:windows 源地址 ping 编辑:程序博客网 时间:2024/06/07 05:02
这本书很不错,拣几个我认为关键的章节翻译一下,一方面加深自己理解,一方面方便大家安虹老师已经翻译了这本书,chinapub应该有卖
在预解码(Predecoding)过程中, 所有同类型的源指令都被相同的目标平台解释函数执行,例如 所有的 load word and zero 指令 不管其所操作的寄存器是什么,都将被图2.9中的代码段解释执行(注:指一个解释函数专门用来解释执行 lwaz指令)。如果将每个源二进制指令映射到其专属的目标二进制指令,性能将得到大幅提升。这个过程被称为是二进制翻译(注:分静态,动态2种 性能提升的原因第一章已经解释)
例如IA-32 的的寄存器组状态被保存在一个源寄存器上下文数据结构中,并且地址被读入到目标平台的寄存器中。 一些目标平台的寄存器将被永久指定用来保存一些常用的和重要的源平台资源。例如 r1 用来保存源寄存器组映像, r2指向源平台的内存映像,r3保存源平台的pc指针
- 翻译后的PowerPC指令
- 翻译后的addl
- lwz r4,0(rl) ;从源寄存器组数据结构中首先取出eax,r1--> 源寄存器组映像
- addi r5,r4,4 ;加上偏移量4
- lwzx r5, r2, r5 ;从源平台内存的映像地址+r5的偏移取出其中内容 r2--> 指向源平台的内存映像
- lwz r4,12 (rl) ;再从源寄存器组数据结构中取出edx, edx需从r1起偏移12, eax,ebx,ecx,
- add r5,r4,r5 ;执行加法
- stw r5,12(r1) ;结果保存至edx
- addi r3,r3,3 ;pc 指针前进3 r3-->源平台的pc指针 (注:感觉应该是前进4位)
- 翻译后的movl4
- lwz r 4 , 0 ( r l ) ;取 eax
- addi r5,r4,4 ;eax + 4
- lwz r4,12 ( r l ) ;取 edx
- stwx r4, r2, r5 ;向r2始偏移eax+4的地址保存edx
- addi r3,r3,3 ;pc 指针前进3
- 翻译后的add
- lwz r 4 , 0 ( r l ) ;取eax
- addi r4, r4,4 ;eax+4
- stw r4,0(r1) ;保存至eax
- addi r3,r3,3 ;pc 跳3
预解码与二进制翻译的比较
预解码始终要用到解释函数,二进制翻译直接映射至可以执行的代码二进制翻译将寄存器尽可能直接映射,免去保存中间状态的问题。 在翻译过程中 目标寄存器可以直接映射一些源寄存器,翻译结束后目标寄存器将恢复到翻译前的状态,以便继续执行模拟器代码 (详细过程见2.19, 2.8.1, 4) 纯粹的静态二进制翻译将会带来很多的问题,为了克服这些困难,引入动态二进制翻译
[待续]
- 动态二进制代码翻译[1][VM Versatile platforms for systems and process]
- 动态二进制代码翻译[2][VM Versatile platforms for systems and process]
- Creating INF Files for Multiple Platforms and Operating Systems
- 翻译:ORB-SLAM: a Versatile and Accurate Monocular SLAM System
- 翻译:ORB-SLAM: a Versatile and Accurate Monocular SLAM System
- 翻译:ORB-SLAM: a Versatile and Accurate Monocular SLAM System
- Font Configuration and Customization for Open Source Systems - 白皮书翻译和深入
- Encoding Data for HTM Systems翻译
- zombie and orphan process in Linux-Unix systems
- Interference Analysis and Reduction for Wireless Systems
- 总结:Distributed systems for fun and profit
- A Versatile TreeView for WPF
- Live long and process (#LLAP) 翻译
- jpcsp源码解读13:动态二进制翻译1
- Process Aware Information Systems: Bridging People and Software Through Process Technology
- A Design Framework for Highly Concurrent Systems (待翻译)
- Proficy Process Systems简介
- TrustZone Example for Versatile Express Cortex-A9x4 and VE-A9x4 FVP model - ARM®DS-5™
- 不让自己显示在彩虹QQ的隐身列表中
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(3) 最大子序列和问题
- 为什么人总是那么现实?有些东西真不会做,可真没有人愿意帮忙。发了也无人问津呢?
- 老紫竹JAVA提高教程(5)-认识Set集合之EnumSet
- Adobe Flex resources
- 动态二进制代码翻译[1][VM Versatile platforms for systems and process]
- NET 4.0中的泛型协变和反变
- 简单IE浏览器的VB实现
- 用VHDL设置引脚刚上电的状态
- quartus中output enable signals不够用的解决方法
- pb自定义事件详细解释
- ERP理论的形成
- SHGetSpecialFolderPath 一个很有用的API
- 业务流程优化设计之思想和原则