如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第十二章目标代码生成参考书:ComputerArchitecture:AQuantitativeApproach,3rdversion,ByJohnL.HennessyandDavidA.Patterson中文版:计算机体系结构量化研究方法,清华郑维民等译Compilers:Principles,Techniques,andTools.ByAlfredV.AHO,MonicaS.Lam,RaviSethiandJeffreyD.ULLMAN中文版:(龙3)编译原理,赵建华等译,机械工业出版社AdvancedCompilerDesignandImplementation.ByStevenS.Muchnick.中文版:高级编译器设计与实现,赵克佳,沈志宇译,机械工业出版社代码生成器在编译系统中的位置代码生成器的主要任务教学编译器架构代码生成器的输入代码生成器对输入的要求目标程序的种类12.1现代微处理器体系结构简介指令集InstructionSet流水线和指令级并行PipelineandInstructionLevelParallelism存储结构和I/OMemoryHierarchyandI/OSystems多处理器和线程级并行MultiprocessorandThreadLevelParallelism12.1.1指令集架构Accumulator-basedArchitectureUNIVAC-I,EDSAC,IAS,1950sStackArchitectureB5000,B6500,1960sALGOLJVM(1990s),PL/0High-LevelLanguageComputerArchitectureVAX-11/780,1970s~1980sComplexInstructionSetComputer80x86,1980s~ReducedInstructionSetComputerCRAY-1,MIPS,SPARC,IntelP6core,1980s~D=(A*B)+(B*C)寄存器、缓存、内存、硬盘的存储访问特性虚拟内存、物理内存和磁盘1980~2000年,CPU性能和内存访问性能的提高多级缓存中缓存大小和访问未命中比率之间的关系通过循环交换(LoopInterchange)优化提高缓存命中率提高数据局部性!XScalecoreRISC超流水线流水线1Multiple-issuedprocessorIntelPIII/P4VeryLongInstructionWord(VLIW)i860ExplicitlyParallelInstructionComputers(EPIC)IA64Acentralizedshared-memorymultiprocessor多核协处理器GPU,GPGPU在100个处理器上想要达到80倍的加速比,串行部分的运行只能占原计算的0.25%!12.2地址空间以MS-WIN下的应用程序为例,从高地址到低地址,自上而下的是:静态数据区全局和静态量表代码区程序运行栈动态内存区内存堆1//C12P1.cpp2#include"stdafx.h"3intglobal_val=0;4intfoo(intn){5staticintstatic_val=0;6inti;7for(i=0;i<100;i++){8n=n*i+global_val+static_val;9}10static_val=n/2;11printf("static_valis%x\n",static_val);12returnn;13}14intmain(intargc,char*argv[]){15global_val=99;16intn=foo(100);17printf("foo(100)is%x\n",n);18return0;19}12.2.2程序运行栈的设计1PUBLIC?foo@@YAHH@Z;foo2PUBLIC??_C@_0BC@BPOF@static_val?5is?5?$CFd?6?$AA@;`string'3EXTRN_printf:NEAR4_DATASEGMENT5??_C@_0BC@BPOF@static_val?5is?5?$CFd?6?$AA@DB'static_valis%x',0aH,00H;`string'6_DATAENDS7_TEXTSEGMENT8_n$=89?foo@@YAHH@ZPROCNEAR;foo10movecx,DWORDPTR?global_val@@3HA;global_val1