WEB开发网
开发学院软件开发汇编语言 简明x86汇编语言教程(4) 阅读

简明x86汇编语言教程(4)

 2010-01-10 09:37:41 来源:WEB开发网   
核心提示:更进一步,我们甚至希望编译器能够直接把这个函数变成一个符号常量,简明x86汇编语言教程(4)(4),这样连操作堆栈的过程也省掉了,第三种结果属于“等效”代码,书归正传,我们来说说保护模式的内存模型,而不是“等价”代码,作为用户

更进一步,我们甚至希望编译器能够直接把这个函数变成一个符号常量,这样连操作堆栈的过程也省掉了。

第三种结果属于“等效”代码,而不是“等价”代码。作为用户,很多时候是希望编译器这样做的,然而由于目前的技术尚不成熟,有时这种做法会造成一些问题(gcc和g++的顶级优化可以造成编译出的FreeBSD内核行为异常,这是我在FreeBSD上遇到的唯一一次软件原因的kernel panic),因此,并不是所有的编译器都这样做(另一方面的原因是,如果编译器在这方面做的太过火,例如自动求解全部“固定”问题,那么如果你的程序是解决固定的问题“很大”,如求解迷宫,那么在编译过程中你就会找锤子来砸计算机了)。然而,作为编译器制造商,为了提高自己的产品的竞争力,往往会使用第三种代码来做函数库。正如前面所提到的那样,这种优化往往不是编译器本身的作用,尽管现代编译程序拥有编译执行、循环代码外提、无用代码去除等诸多优化功能,但它都不能保证程序最优。最后一种代码恐怕很少有编译器能够做到,不信你可以用自己常用的编译器加上各种优化选项试试:)

发现什么了吗?三种代码中,对于内存的访问一个比一个少。这样做的理由是,尽可能地利用寄存器并减少对内存的访问,可以提高代码性能。在某些情况下,使代码既小又快是可能的。

书归正传,我们来说说保护模式的内存模型。保护模式的内存和实模式有很多共同之处。

上一页  1 2 3 4 5  下一页

Tags:简明 汇编语言 教程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接