/**
* 计算机体系结构 (11)
* SLO 服务级目标——?
* SLA 服务级等级——?
*
* @控制流的变化
* 条件分支
* 无条件跳转
* 过程调用
* 返回调用
*
* @编译器角色
* 一个事实就是现代大多数高级语言的编写程序都是最终由编译器生成很多指令执行
* 编译器则是现在计算机架构的 @TODO 重要角色
* 正确编写编译器是一个复杂度问题,所有完成优化的过程都会受限制与这一个角色的复杂度。
*
* @编译器优化分类 —————— TODO 自上而下的方法
* 高级优化
* 对源代码进行执行,将输出结果传送给下一个优化扫描器
*
* 本地优化
* 对直行代码段——基本块进行优化
*
* 全局优化
* 将本地优化扩展到分支范围,引入一组专门优化的循环范围
*
* 寄存器分配
* 将寄存器和操作数关联起
* @TODO 利用图形着色技术构造一张图,用来表示可能执行的寄存器分配方案,然后利用这个图分配寄存器。
*
* 与处理器相关
* 尝试充分利用专业的具体的体系结构知识进行专项优化程序
*
* @编译器技术对于架构师的影响——程序逐渐庞大——全局互通非常复杂
* 保存数据的三个独立区域
* @栈
* 用于分配本地变量
* 栈会在进程的调用与返回时增大或者缩小
* 栈内的对象是相对于栈指针进行寻址的,这些对象主要是标量(单独的变量)而不是数组
* 栈用于活动的记录而不是具体的表达式求值,所以不会出现从栈中压入或弹出某个值的情况
*
* @全局数据区
* 用于静态分配所声明的对象,比如全局变量或者常量
*
* @堆
* 用于分配哪些不适特别符合栈规则的数据结构的动态对象
* 堆中的对象用指针访问,通常不是标量。
*
* @架构师如何帮助编译器人员编写程序
* @提供正则性——指令的三要素——操作,数据类型,寻址方式就应当是正交的。
*
* @提供原型而非解决方案
* 提供机制而非方法
* 这样的原型能够帮助各种高级语言完成他们的具体解决方法提供思路
*
* @简化候选项之间的权衡
* @对于编译器人员来说,最艰巨的任务就是能够针对任意一段代码指出那种指令序列是最合适的!----对指令深刻的直觉能力
*
* @提供一些已知指令,将编译时的已知量绑定为常量
* 有些只能能够在编译器就确定的就不要在运行时再去分析!这是以上原则的基本。
*
*/
计算机体系结构 (11)——编译器角色
最新推荐文章于 2024-07-04 23:35:14 发布