C 语言这种高级语言很大程度地提高了通用性和移植性。也提高了生产效率,虽然着并不意味着汇编就过时了,但确实没有必要把汇编看得太强。
只会 x86 这一种架构下的汇编语言,就意味着你根本无法在其它架构下工作。当今的大型机,很多根本不用 intel 的东西。
另外一个版主说了保护模式之类的东西,这也是 intel 特有的。在 windows 下,有很多东西根本研究不出来,会以为本身就是这样的。这是因为 windows 根本没考虑过可移植性。
比如大家知道在 intel 架构下怎么刷 TLB 吗?它没有直接的机器指令能做,要用一个其它指令产生的副作用来完成。
Linux 的内核中关于这个部分有很多代码写得很憋脚,就是因为 intel 在这里对 linux 内核要求的内存模型没有提供到位的支持。
(当然我这并不是说 linux 的内核在 intel 的机子上跑得不好,也不是说 intel 的指令体系不行,因为它靠那些副作用可以很好地完成相关的任务。但是它也做了一些无用功,Linux 为了那些提供这些功能的架构,留了优化的余地。)
保护模式,实模式等等,很多都是受兼容性影响才产生的补救办法。很多架构压根就不受这些限制。
C 语言就不一样了,比较用 C 代码测大小尾就有意义。写的怎么样不说,确实用位移是一种实现测大小尾的方法。
至于那个用强转的,是一种很优雅的写法。但研究过这方面的人都知道这么写,我也会。只是 hahayezhe 给了这种方法,我就没说而已。就不知道他是自己现想的呢,还是以前就会。
我觉得以一种更高的认知水平去取笑初学者是没有什么意义的。最起码和孔子说的“闻道有先后,术业有专攻”不一致。
BlueGuy 不会这写法,只是说他没研究过相关的主题而已,并不能说明人的水平就不行。
C 语言就不一样了,比较用 C 代码测大小尾就有意义。写的怎么样不说,确实用位移是一种实现测大小尾的方法。
至于那个用强转的,是一种很优雅的写法。但研究过这方面的人都知道这么写,我也会。只是 hahayezhe 给了这种方法,我就没说而已。就不知道他是自己现想的呢,还是以前就会。
我觉得以一种更高的认知水平去取笑初学者是没有什么意义的。最起码和孔子说的“闻道有先后,术业有专攻”不一致。
BlueGuy 不会这写法,只是说他没研究过相关的主题而已,并不能说明人的水平就不行。