IA-64代码翻译中的跳转表恢复技术
计算机硬件系统设计--(5)Instruction System-指令系统

机型 EDSAC IBM 701 CDC 6600 IBM S/360 DEC PDP-8 DEC PDP-11 Intel 8008 Motorola 6800 DEC VAX Intel 8086 Motorola 68000 Intel 80386 MIPS HP PA-RISC SUN SPARC IBM PowerPC DEC Alpha
加快经常性事件
Make the common case fast
好的设计需要适度的折衷
Good design demands good compromises
MIPS指令概述
MIPS (Microprocessor without Interlocked Pipeline Stages)
编译后的变量映射:
g
h
i
j
A[0]
$s1
$s2
$s3
$s4
$s5
循环结构
最后编译的MIPS代码:
Loop: sll $t1,$s3,2 addu $t1,$t1,$s5 lw $t1,0($t1) addu $s1,$s1,$t1 addu $s3,$s3,$s4 bne $s3,$s2,Loop
释义 固定值为0 硬件置位 汇编器保留,临时变量 函数调用返回值 4个函数调用参数 暂存寄存器,调用者按需保存 save寄存器,被调用者按需保存 暂存寄存器,同上 操作系统保留,中断异常处理 全局指针 (Global Pointer) 堆栈指针 (Stack Pointer) 帧指针 (Frame Pointer) 函数返回地址 (Return Address)
(in C) (in MIPS)
(in MIPS)
加立即数
常数相加指令
return-oriented programming详解 -回复

return-oriented programming详解-回复什么是返回导向编程(Return-Oriented Programming)?返回导向编程(Return-Oriented Programming,ROP)是一种计算机程序攻击技术,目的是利用程序中已存在的代码片段(即“gadgets”)来完成攻击者所需的功能,而不是通过插入恶意代码来执行恶意操作。
ROP 的基本思想是利用现有代码片段的返回指令(return instruction),通过一系列的返回导向技术将控制流引导至攻击者的预定位置。
本文将逐步解释返回导向编程的原理和应对措施。
第一步:了解代码片段(Gadgets)在ROP中,程序中的代码段被称为“gadgets”。
一个“gadget”是一个连续的指令序列,通常由基本指令(如add,sub,mov等)构成,以及一个用于返回的指令。
这些返回指令的目的是将控制流返回到调用该代码段的位置,完成所需的功能。
攻击者通过将多个gadgets串联起来,可以实现复杂的功能和攻击。
第二步:构建ROP链ROP链是由一系列的gadgets构成,形成一个有效的攻击载荷。
攻击者通过查找程序中的gadgets,选择适合其目的的代码片段,并将这些片段连接在一起,构成一个ROP链。
ROP链的最后一个gadget通常是一个返回指令,将控制流返回到攻击者指定的位置,例如堆栈中的某个恶意代码。
第三步:理解ROP的攻击原理ROP的攻击原理是通过欺骗程序的控制流,使其执行攻击者所期望的指令序列。
攻击者通过利用程序中已存在的gadgets,控制堆栈和寄存器的状态,来构造ROP链,实现对程序的攻击。
通过仔细选择合适的gadgets,并正确设置堆栈和寄存器中的值,攻击者可以绕过程序的安全防护机制,执行任意的恶意操作。
第四步:了解ROP的应对措施由于ROP利用了程序中已存在的代码片段,且避免了插入恶意代码的检测,因此它是一种十分隐蔽的攻击技术。
计算机系统课件-第8章 异常控制流 L1异常与进程

用户级上下文地址空间和系统级上下文地址空 间一起构成了一个进程的整个存储器映像
进程的存储器映像
20
进程的地址空间
Linux平台下, 每个(用户)进 程具有独立的私 有地址空间(虚 拟地址空间)
每个进程的地址 空间划分(即存 储映像)布局相 同(如右图)
movl
Exception: page fault Detect invalid address Signal process
OS发送 SIGSEGV 信号给用户进程(不尝试恢复) 用户进程以“段错误”(segmentation fault)退出
17
主要内容
异常控制流(Exceptional Control Flow) 异常(Exceptions) 进程(Processes) 进程控制(Processes Control)
进程的物理实体(代码和数据等)和支持进程 运行的环境合称为进程的上下文。
由进程的程序块、数据块、运行时的堆和用户 栈(两者通称为用户堆栈)等组成的用户空间 信息被称为用户级上下文;
由进程标识信息、进程现场信息、进程控制信 息和系统内核栈等组成的内核空间信息被称为 系统级上下文;
处理器中各寄存器的内容被称为寄存器上下文 (也称硬件上下文),即进程的现场信息。
Memory
Stack
Heap Data
…
Code
Saved
registers
CPU Registers
单处理器在并发地执行多个进程
▪ 进程交错执行(multitasking) ▪ 地址空间由虚拟内存系统管理 (later in course) ▪ 未执行进程的寄存器值保存在内存中
VBA中的数据逆向工程与恢复技巧

VBA中的数据逆向工程与恢复技巧VBA(Visual Basic for Applications)是一种强大的编程语言,用于开发Microsoft Office应用程序。
它能够帮助用户自动化任务、提高工作效率,并在数据分析、处理和恢复等方面发挥重要作用。
本文将介绍一些VBA中的数据逆向工程与恢复技巧,以帮助读者更好地利用VBA进行数据处理。
1. 逆向工程技巧数据逆向工程是指从已有的数据中获取有用的信息或恢复数据的过程。
在VBA中,可以使用以下技巧进行数据逆向工程:1.1. 数据导入和解析VBA提供了多种方法将外部数据导入到工作表中,比如使用`Workbooks.Open`方法打开其他文件,并使用`Range`对象对数据进行解析和处理。
通过分析数据的结构和规律,可以提取出所需的信息,例如从CSV文件中导入数据并将其分列到不同的单元格中。
1.2. 数据清洗和转换在数据逆向工程过程中,数据清洗和转换是必不可少的步骤。
VBA提供了许多内置函数和方法,如`Trim`、`Replace`、`Split`等,可以帮助我们清洗和转换数据。
例如,使用`Trim`函数去除字符串中的空格或使用`Replace`函数替换字符串中的特定字符。
1.3. 数据筛选和排序在大量数据中筛选出特定条件下的数据是数据逆向工程的一个常见需求。
VBA中的`AutoFilter`方法可以帮助我们根据条件筛选数据,并使用`Sort`方法对数据进行排序。
通过正确设置筛选条件和排序规则,可以快速获得符合要求的数据。
1.4. 数据提取和汇总VBA中的数据逆向工程还包括数据提取和汇总的过程。
通过使用`Find`和`FindNext`方法,可以搜索特定的数据并提取所需信息。
此外,可以使用适当的循环和条件语句来汇总数据,并将结果输出到相应的位置。
2. 数据恢复技巧数据恢复是指从受损、丢失或不可读的数据源中恢复数据的过程。
在VBA中,可以使用以下技巧进行数据恢复:2.1. 错误处理和异常处理在数据恢复过程中,可能会遇到各种错误和异常情况,如文件不存在、无法打开、格式错误等。
IA-64二进制翻译中优化代码消除技术

Abtat I 6 rhtcu es p o t u b ro d a cd ac i cu a e t rsd sg e e r u dlw e d e- sr c A一 4ac i t r u p rsan m e fa v n e rht tr l au e e in dt g tao n e e f O o lv p r f r a c o te e k n rv e fr n e u hfa u e n ld x l i isr cin lv lp rl l m ,isrcin o r n eb tln c sa d i o ep ro ma c .S c e t r sicu ee p i t n tu t - e aal i n mp c o e es n tu to p e iain n p c lt ela sfo me r .Th s e tr sa ee p s d t h o plr o v r h tc mplr r dc t ,a ds eu ai o d r m mo y o v e efau e r x o e Ot ecm i ,h we e ,t a o i e e o t z t n O tk d a tg fs c rhtcu a e t rsc n p oo n l etu t r h r g a ’ o e p i ai st a ea v n a eo u h ac ie tr l au e a r f u dyrsr cu etep o rm Sc d ,ma ig i mi o f kn t p tnil i iut or c n tu t h rgn l r g a lgefo a p i z de e u a l.Thsp p rd srb ss v rl o e t l df c l t e o src eo iia o r m i rm n o tmie x c tbe ay f t p o i a e ec ie e ea tc iu st n o s meo h fe t fs c pi zto sa d t ee yi rv h u l ya def in yo A一 4 b— ehnq e Ou d o fteefcso u ho t mia in n h r b mp o et eq ai n fi e c fI 6 i t c
ia-32处理器的条件转移指令

IA-32处理器是Intel推出的一系列32位处理器架构,它在计算机硬件中起着至关重要的作用。
IA-32处理器的条件转移指令是其中一个重要的组成部分,它们为计算机程序的流程控制提供了必要的支持。
本文将重点介绍IA-32处理器的条件转移指令,包括其功能、操作方法以及相关注意事项。
一、IA-32处理器的条件转移指令概述条件转移指令是一类用于根据特定条件改变程序执行流程的指令,它们根据条件标志寄存器的状态来决定是否执行跳转。
在IA-32处理器中,条件转移指令通常以"J"开头,后跟特定的条件代码,比如JE (Jump if Equal)、JNE(Jump if Not Equal)等。
这些条件代码根据不同的情况来判断是否进行跳转,从而实现程序流程的灵活控制。
二、IA-32处理器条件转移指令的功能IA-32处理器的条件转移指令主要用于实现程序中的条件分支结构,使程序可以根据不同的条件选择不同的执行路径。
它们可以用于实现循环结构、条件判断、函数调用等,是程序中不可或缺的重要部分。
通过条件转移指令,程序可以实现复杂的逻辑判断和控制流程,从而实现各种不同的功能和算法。
三、IA-32处理器条件转移指令的操作方法条件转移指令的操作方法相对简单直接,它们通常涉及到两个部分:条件判断和跳转目标。
条件判断部分会根据条件标志寄存器(如ZF、SF、CF等)的状态来确定是否满足跳转条件。
根据条件判断的结果,程序将会跳转到特定的跳转目标位置区域执行相应的指令。
在汇编语言中,条件转移指令的语法通常如下:```JE label ; 如果相等则跳转到标号label处执行JNE label ; 如果不相等则跳转到标号label处执行JZ label ; 如果为零则跳转到标号label处执行JG label ; 如果大于则跳转到标号label处执行JMP label ; 无条件跳转到标号label处执行```通过这些简单的指令的组合,程序可以实现复杂的条件控制和跳转逻辑。
计算机专用术语英文及中文翻译
计算机术语大全1、CPU3DNow!(3D no waiting,无须等待的3D处理)AAM(AMD Analyst Meeting,AMD分析家会议)ABP(Advanced Branch Prediction,高级分支预测)ACG(Aggressive Clock Gating,主动时钟选择)AIS(Alternate Instruction Set,交替指令集)ALA T(advanced load table,高级载入表)ALU(Arithmetic Logic Unit,算术逻辑单元)Aluminum(铝)AGU(Address Generation Units,地址产成单元)APC(Advanced Power Control,高级能源控制)APIC(Advanced rogrammable Interrupt Controller,高级可编程中断控制器)APS(Alternate Phase Shifting,交替相位跳转)ASB(Advanced System Buffering,高级系统缓冲)A TC(Advanced Transfer Cache,高级转移缓存)A TD(Assembly Technology Development,装配技术发展)BBUL(Bumpless Build-Up Layer,内建非凹凸层)BGA(Ball Grid Array,球状网阵排列)BHT(branch prediction table,分支预测表)Bops(Billion Operations Per Second,10亿操作秒)BPU(Branch Processing Unit,分支处理单元)BP(Brach Pediction,分支预测)BSP(Boot Strap Processor,启动捆绑处理器)BTAC(Branch Target Address Calculator,分支目标寻址计算器)CBGA (Ceramic Ball Grid Array,陶瓷球状网阵排列)CDIP (Ceramic Dual-In-Line,陶瓷双重直线)Center Processing Unit Utilization,中央处理器占用率CFM(cubic feet per minute,立方英尺秒)CMT(course-grained multithreading,过程消除多线程)CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)CMOV(conditional move instruction,条件移动指令)CISC(Complex Instruction Set Computing,复杂指令集计算机)CLK(Clock Cycle,时钟周期)CMP(on-chip multiprocessor,片内多重处理)CMS(Code Morphing Software,代码变形软件)co-CPU(cooperative CPU,协处理器)COB(Cache on board,板上集成缓存,做在CPU卡上的二级缓存,通常是内核的一半速度))COD(Cache on Die,芯片内核集成缓存)Copper(铜)CPGA(Ceramic Pin Grid Array,陶瓷针型栅格阵列)CPI(cycles per instruction,周期指令)CPLD(Complex Programmable Logic Device,複雜可程式化邏輯元件)CPU(Center Processing Unit,中央处理器)CRT(Cooperative Redundant Threads,协同多余线程)CSP(Chip Scale Package,芯片比例封装)CXT(Chooper eXTend,增强形K6-2内核,即K6-3)Data Forwarding(数据前送)dB(decibel,分贝)DCLK(Dot Clock,点时钟)DCT(DRAM Controller,DRAM控制器)DDT(Dynamic Deferred Transaction,动态延期处理)Decode(指令解码)DIB(Dual Independent Bus,双重独立总线)DMT(Dynamic Multithreading Architecture,动态多线程结构)DP(Dual Processor,双处理器)DSM(Dedicated Stack Manager,专门堆栈管理)DSMT(Dynamic Simultaneous Multithreading,动态同步多线程)DST(Depleted Substrate Transistor,衰竭型底层晶体管)DTV(Dual Threshold V oltage,双重极限电压)DUV(Deep Ultra-Violet,纵深紫外光)EBGA(Enhanced Ball Grid Array,增强形球状网阵排列)EBL(electron beam lithography,电子束平版印刷)EC(Embedded Controller,嵌入式控制器)EDB(Execute Disable Bit,执行禁止位)EDEC(Early Decode,早期解码)Embedded Chips(嵌入式)EM64T(Extended Memory 64 Technology,扩展内存64技术)EPA(edge pin array,边缘针脚阵列)EPF(Embedded Processor Forum,嵌入式处理器论坛)EPL(electron projection lithography,电子发射平版印刷)EPM(Enhanced Power Management,增强形能源管理)EPIC(explicitly parallel instruction code,并行指令代码)EUV(Extreme Ultra Violet,紫外光)EUV(extreme ultraviolet lithography,极端紫外平版印刷)FADD(Floationg Point Addition,浮点加)FBGA(Fine-Pitch Ball Grid Array,精细倾斜球状网阵包装)FBGA(flipchip BGA,轻型芯片BGA)FC-BGA(Flip-Chip Ball Grid Array,翻转芯片球形网阵包装)FC-LGA(Flip-Chip Land Grid Array,翻转接点网阵包装)FC-PGA(Flip-Chip Pin Grid Array,翻转芯片球状网阵包装)FDIV(Floationg Point Divide,浮点除)FEMMS:Fast EntryExit Multimedia State,快速进入退出多媒体状态FFT(fast Fourier transform,快速热欧姆转换)FGM(Fine-Grained Multithreading,高级多线程)FID(FID:Frequency identify,频率鉴别号码)FIFO(First Input First Output,先入先出队列)FISC(Fast Instruction Set Computer,快速指令集计算机)flip-chip(芯片反转)FLOPs(Floating Point Operations Per Second,浮点操作秒)FMT(fine-grained multithreading,纯消除多线程)FMUL(Floationg Point Multiplication,浮点乘)FPRs(floating-point registers,浮点寄存器)FPU(Float Point Unit,浮点运算单元)FSUB(Floationg Point Subtraction,浮点减)GFD(Gold finger Device,金手指超频设备)GHC(Global History Counter,通用历史计数器)GTL(Gunning Transceiver Logic,射电收发逻辑电路)GVPP(Generic Visual Perception Processor,常规视觉处理器)HL-PBGA表面黏著,高耐热、轻薄型塑胶球状网阵封装HTT(Hyper-Threading Technology,超级线程技术)Hz(hertz,赫兹,频率单位)IA(Intel Architecture,英特尔架构)IAA(Intel Application Accelerator,英特尔应用程序加速器)IA TM(Intel Advanced Thermal Manager,英特尔高级热量管理指令集)ICU(Instruction Control Unit,指令控制单元)ID(identify,鉴别号码)IDF(Intel Developer Forum,英特尔开发者论坛)IDMB(Intel Digital Media Boost,英特尔数字媒体推进指令集)IDPC(Intel Dynamic Power Coordination,英特尔动态能源调和指令集)IEU(Integer Execution Units,整数执行单元)IHS(Integrated Heat Spreader,完整热量扩展)ILP(Instruction Level Parallelism,指令级平行运算)IMM Intel Mobile Module, 英特尔移动模块Instructions Cache,指令缓存Instruction Coloring(指令分类)IOPs(Integer Operations Per Second,整数操作秒)IPC(Instructions Per Clock Cycle,指令时钟周期)ISA(instruction set architecture,指令集架构)ISD(inbuilt speed-throttling device,内藏速度控制设备)ITC(Instruction Trace Cache,指令追踪缓存)ITRS(International Technology Roadmap for Semiconductors,国际半导体技术发展蓝图)KNI(Katmai New Instructions,Katmai新指令集,即SSE)Latency(潜伏期)LDT(Lightning Data Transport,闪电数据传输总线)LFU(Legacy Function Unit,传统功能单元)LGA(land grid array,接点栅格阵列)LN2(Liquid Nitrogen,液氮)Local Interconnect(局域互连)MAC(multiply-accumulate,累积乘法)mBGA (Micro Ball Grid Array,微型球状网阵排列)nm(namometer,十亿分之一米毫微米)MCA(Machine Check Architecture,机器检查架构)MCU(Micro-Controller Unit,微控制器单元)MCT(Memory Controller,内存控制器)MESI(Modified, Exclusive, Shared, Invalid:修改、排除、共享、废弃)MF(MicroOps Fusion,微指令合并)mm(micron metric,微米)MMX(MultiMedia Extensions,多媒体扩展指令集)MMU(Multimedia Unit,多媒体单元)MMU(Memory Management Unit,内存管理单元)MN(model numbers,型号数字)MFLOPS(Million Floationg PointSecond,每秒百万个浮点操作)MHz(megahertz,兆赫)mil(PCB 或晶片佈局的長度單位,1 mil = 千分之一英寸)MIMD(Multi Instruction Multiple Data,多指令多数据流)MIPS(Million Instruction Per Second,百万条指令秒)MOESI(Modified, Owned, Exclusive, Shared or Invalid,修改、自有、排除、共享或无效)MOF(Micro Ops Fusion,微操作熔合)Mops(Million Operations Per Second,百万次操作秒)MP(Multi-Processing,多重处理器架构)MPF(Micro processor Forum,微处理器论坛)MPU(Microprocessor Unit,微处理器)MPS(MultiProcessor Specification,多重处理器规范)MSRs(Model-Specific Registers,特别模块寄存器)MSV(Multiprocessor Specification V ersion,多处理器规范版本)MVP(Mobile V oltage Positioning,移动电压定位)IVNAOC(no-account OverClock,无效超频)NI(Non-Intel,非英特尔)NOP(no operation,非操作指令)NRE(Non-Recurring Engineering charge,非重複性工程費用)OBGA(Organic Ball Grid Arral,有机球状网阵排列)OCPL(Off Center Parting Line,远离中心部分线队列)OLGA(Organic Land Grid Array,有机平面网阵包装)OoO(Out of Order,乱序执行)OPC(Optical Proximity Correction,光学临近修正)OPGA(Organic Pin Grid Array,有机塑料针型栅格阵列)OPN(Ordering Part Number,分类零件号码)PA T(Performance Acceleration Technology,性能加速技术)PBGA(Plastic Pin Ball Grid Array,塑胶球状网阵排列)PDIP (Plastic Dual-In-Line,塑料双重直线)PDP(Parallel Data Processing,并行数据处理)PGA(Pin-Grid Array,引脚网格阵列),耗电大PLCC (Plastic Leaded Chip Carriers,塑料行间芯片运载)Post-RISC(加速RISC,或后RISC)PPE(Power Processor Element,Power处理器元件)PPU(Physics Processing Unit,物理处理单元)PR(Performance Rate,性能比率)PIB(Processor In a Box,盒装处理器)PM(Pseudo-Multithreading,假多线程)PPGA(Plastic Pin Grid Array,塑胶针状网阵封装)PQFP(Plastic Quad Flat Package,塑料方块平面封装)PSN(Processor Serial numbers,处理器序列号)QFP(Quad Flat Package,方块平面封装)QSPS(Quick Start Power State,快速启动能源状态)RAS(Return Address Stack,返回地址堆栈)RAW(Read after Write,写后读)REE(Rapid Execution Engine,快速执行引擎)Register Contention(抢占寄存器)Register Pressure(寄存器不足)Register Renaming(寄存器重命名)Remark(芯片频率重标识)Resource contention(资源冲突)Retirement(指令引退)RISC(Reduced Instruction Set Computing,精简指令集计算机)ROB(Re-Order Buffer,重排序缓冲区)RSE(register stack engine,寄存器堆栈引擎)RTL(Register Transfer Level,暫存器轉換層。
Lab1 介绍
如何进入保护模式
boot/boot.s
lgdt gdtdesc 重新加载gdt表 movl %cr0, %eax orl $CR0_PE_ON, %eax movl %eax, %cr0 设置cr0寄存器,开启保护模式 ljmp $PROT_MODE_CSEG, $protcseg 进入32位模式 .code32 protcseg: # Assemble for 32-bit mode
8个16-bit寄存器( 8个32-bit寄存器的低16位)
8个8-bit寄存器(%ax ~%dx的高8位和低8位)
6个段寄存器
3个控制寄存器
AT&T汇编语法(2)——立即数
使用立即数,要在数前面加符号$
$0x04 \lab1\boot\boot.S
(1)
testb$0x2,%al .set CR0_PE_ON,0x1 orl $CR0_PE_ON, %eax
ELF文件结构
如何在ELF中找到某一段
重要的数据结构 ELF文件头: struct Elf{} 程序头表相对于文件开头的偏 移: Elf->e_phoff 程序头表中段个数: Elf->e_phnum 程序头表中的段: struct Proghdr 段相对于文件开头的偏移: Proghdr->p_offset
AT&T汇编语法(5)——内存寻址
寻址方式
AT&T: displacement(base,index,scale) Intel: [base+index*scale+displacement] -4(%ebp)
g代码跳转指令 -回复
g代码跳转指令-回复关于[g代码跳转指令]的详细解析概述:在计算机编程中,G代码是一种用于控制数控机床进行加工的指令集。
G 代码中有许多不同的指令,其中之一就是跳转指令。
跳转指令用于控制程序的流程,通过在不同的位置之间跳转,实现对代码的灵活控制。
本文将详细解析G代码中的跳转指令,并提供具体的实例来帮助读者更好地理解。
1. 什么是跳转指令?跳转指令是一种G代码指令,用于在程序执行过程中转移到指定的位置。
通过跳转指令,程序可以跳过某些代码,或者重复执行某一段代码,提高程序的执行效率和灵活性。
2. 常见的跳转指令有哪些?在G代码中,常见的跳转指令包括GOTO、IF、GOSUB等。
每个指令都有不同的功能和用途。
- GOTO指令:GOTO指令用于无条件地跳转到指定的位置。
例如,如果需要在程序执行过程中立即跳转到第50行,可以使用"GOTO 50"的格式。
- IF指令:IF指令用于根据条件结果决定是否跳转到指定的位置。
例如,如果需要在某个条件满足时跳转到第50行,可以使用"IF 条件GOTO 50"的格式。
- GOSUB指令:GOSUB指令用于调用子程序,并在子程序执行完毕后返回到指定位置继续执行。
例如,如果需要在程序执行过程中调用子程序,可以使用"GOSUB 100"的格式。
子程序的结束处需要使用"RETURN"指令指定返回的位置。
3. 跳转指令的应用场景有哪些?跳转指令在编程中有广泛的应用场景,以下是一些常见的应用场景:- 循环控制:使用跳转指令可以轻松实现循环控制结构,如for循环、while 循环等。
通过在循环体的结尾处使用跳转指令,可以将程序跳转回循环的开始位置,实现程序的重复执行。
例如,在G代码中使用GOTO指令来实现一个简单的循环控制结构,如下所示:GOTO 10...10...GOTO 10上述代码将无限循环地执行位于标签10处代码。
反编译中IA-64指令语义抽象技术的研究
பைடு நூலகம்
摘
要: 反编译技术可 以将二进制可执行 程序 转换 为等价 的高级语言形式代码 , 它是软件逆 向工程研 究的一个 重要 方向。对机器
指 令 进 行 语 义抽 象 以 产 生 中间代 码 表 示 是 反 编 译 程 序 的 一 个 关 键 环 节 。介 绍 了在 反 编译 过 程 中通 过 语 义描 述 由 I 一 4汇 编 代 码 A6
生成更高级的 中间表示的实现技术 。 将语 义描 述技 术与 I一 4体 系结构的 E I 性结合起 来 , A6 PC特 有效地解决 了 E I PC机 器指令的语
t e e ae a ne e i t o e r p e e t t n s k y f r a d c mp lr h s a e r s n s t e e al o e e ai g h g e — e e o g n r t n i tr d ae c d e r s n ai i e o e o i . i m o e T p p r p e e t h d ti f g n r t ih r l v l s n
义 抽 象问题 。
关 键 词 : 编 译 ; 义 描 述 ; 间表 示 ; 一 4 E I 反 语 中 I 6 ;PC A
文 章 编 号 :0 2 8 3 (0 70 — 0 4 0 文 献标 识 码 : 中 图分 类 号 :P 1 10 — 3 12 0 )3 0 5 — 4 A T 39
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
维普资讯
ห้องสมุดไป่ตู้
第 3 卷 第 2 期 2 3
圮3 2
・
计  ̄ q, ll 1
算
机
工
程
20 0 6年 l 2月
De e e O 6 c mb r2 0
No2 .3
Co p trEn i e rn m u e gn e i g
软件技术与数据库 ・
● 化形 式,给出了 跳转表分支 目 地址恢复方法 ,从而可将包含跳转表 的 I 一4 标 A 6 二进制代码恢 复为高级 s ih 句 。该技术 已经在 二进 制翻 wt 语 c
译框 架 IA上进行 了测试 ,可 以处 理编译器 gc . 2 c 9 2 6及 ge .3 多种优 化级别下 生成的 I 一4 e 3 .在 2 A 6 代码 。
p o l t d t m n h r t j m b ct , r oe a to c v r t re a d s s fu p al Us g u h cn u , ep e i w eeh u p a l il a d po ss h dt r o e e a t d r s j m b . i c t h i e i a eo e r e e t eso e p me Oe y tg e e o h t e n s ae q tn C
中 分 号tP1 啊 娄 3 T 4
I 6 A.4代码 翻译 中的跳转表 恢 复技 术
齐
●
宁,赵荣彩
( 放军信息工程大学计算机 系 。郑州 4Oo ) 解 5o2
■ 蔓:在对 I 一 二进制代码进行翻译的过程中,一个重要的问题就是识别和恢复通过跳转表实现的 s ih A6 4 wt 语句 。分析了编译器生成跳 c 转表 时采 用的策 略, 出了前向预取 同反 向切片及表达 式置换相结合 以识别 和恢复 s ih 提 wt 语句 的技术 , c 归纳 了用于获 取跳转表地址 的规格
s thsae nSb o bn t n o o wadprfth a d b c wad lcn u x e so u tut n e c st or l r c l wi ttmc l yc m i a o ff r r e ec n a k rssiigplse prsi ns bs t i ,rdu e O an ma f m whih a ows c i i o o l
关t词 :I-4 A 6 ;跳转表 ;切 片 ;表达式置换
J mp‘ b eRe o e yT c nq ei A-4B n r d r n lt n u l l c v r e h iu I 6 i a yCo eT a sai  ̄ a n o
Ql n , HA R n c i g Z O o ga Ni
o t z t no in . pi a o pt s mi i o
I e o d !I 一 ;u b ; l i ; x rs o bt t n K yw r ̄ A 6 Jmp l Si n E p s n u st i 4 a t e cg e i s i o u
在冯・ 曼体系结构下 ,指令和数据均采用相 同的方式 诺依
fa e r 2A.Th e ts ws ta e tc nq e i ui bl r I 6 ia y c d e e ae y c mplr g e 2. n e .. t ut rm wok I e ts ho h tt h iu ss t e f A- 4 bn r o e g n rt b o ie e 96 a d g e 323 wi m l h e a o d h i
( p r n f mp tr P A f r t na dE g n ei gUnv ri , h n z o 5 0 2 De at me t o Co ue , L I oma o n n i e r ie s y Z e g h u 0 0 ) n i n t 4
I bt c|I t a s t no 一4b a oe 0 e f e m o at rb m a o c g i n e w t t e e t i p m n d v A s a t n h t l o f A 6 i r cd . n p r n po l s st t f eo n i t i h a m ns m l e t a r er a n i I ny ot i t h e ih r zg h s c st e e i jm b . h ae f s a a z s h o pl ’ saei hncet g u pt l te r et at h i ef c g i n d e o e n u pt l T e p r r l e e m ir t e w e r i m b 。 npe ns cnq r eo n i a c vr g a e p t y t c i n eSt g s r an j aeh s e u or z gn r i