编程高手箴言(梁肇新 编著)重点摘录二

gooooodstock 2017-08-11
1.开放性思维非常重要,你必须从最低层到最上层都要清楚。
2.如果你局限在一个封闭的思维里,做系统就很难。
3.8086/8088与6502之间最大的不同在于指令的体系结构。
4.随着CISC(复杂指令体系)工作频率的提高和技术的发展,RISC(精简指令体系)现在已经黯然失色了。
5.8086CPU有20根地址线,可直接寻址的物理地址空间为1MB。
6.中断可以认为是一种函数的调用,不过,这个函数是随时都可能调用的,这样,中断就很好理解了。
7.按Intel的定义,0-32个中断是CPU出错的,称为异常。
8.现在64位的CPU中,中断扩充成16位,则理论上可有64KB个中断。
9.到了386才算有真正的改革,操作系统才真正进一步发挥作用,从16位真正跨入32位程序。
10.1995年的奔腾Pro能力上再进了一步,产生动态执行技术,使CPU可有乱序执行。
11.在进入保护模式(CRO成为1)后,如果段寄存器不发生变化的话,则一切和实模式一样。所以CPU的保护位为1时,后面的代码依然可有执行,而不是死机状态。
12.地址的形成总是从“ 不可看见部分”取出基址值与偏移相加形成地址。
13.对于CPU在形成地址时,是没有实模式与保护模式之分的,它只管用基址(不可见部分)加上偏移量。
14.CPU的地址形成与"看得见部分“的当前值毫无关系。这也解释...
1.开放性思维非常重要,你必须从最低层到最上层都要清楚。
2.如果你局限在一个封闭的思维里,做系统就很难。
3.8086/8088与6502之间最大的不同在于指令的体系结构。
4.随着CISC(复杂指令体系)工作频率的提高和技术的发展,RISC(精简指令体系)现在已经黯然失色了。
5.8086CPU有20根地址线,可直接寻址的物理地址空间为1MB。
6.中断可以认为是一种函数的调用,不过,这个函数是随时都可能调用的,这样,中断就很好理解了。
7.按Intel的定义,0-32个中断是CPU出错的,称为异常。
8.现在64位的CPU中,中断扩充成16位,则理论上可有64KB个中断。
9.到了386才算有真正的改革,操作系统才真正进一步发挥作用,从16位真正跨入32位程序。
10.1995年的奔腾Pro能力上再进了一步,产生动态执行技术,使CPU可有乱序执行。
11.在进入保护模式(CRO成为1)后,如果段寄存器不发生变化的话,则一切和实模式一样。所以CPU的保护位为1时,后面的代码依然可有执行,而不是死机状态。
12.地址的形成总是从“ 不可看见部分”取出基址值与偏移相加形成地址。
13.对于CPU在形成地址时,是没有实模式与保护模式之分的,它只管用基址(不可见部分)加上偏移量。
14.CPU的地址形成与"看得见部分“的当前值毫无关系。这也解释了为什么在刚进入保护模式时,后面的代码依然被正确运行,而这时代码段寄存器CS的值却还是进入保护模式前的实模式值,或者从保护模式回到实模式时,代码段CS被改变之前程序是正常地工作,而不会“突变”到CS左移4位的地址上去。
15.windows95使用INT 20H 来进行功能调用。
16.如果在线程内作画,程序就会很容易出错。
17.有一条原则,即程序中的恶线程一概不直接操作线程部分中的GDI。它只要发一个消息给主程序,让主程序来绘制图形,就不会出现任何的问题了。
18.内存泄漏?因为当线程的函数用到C的标准库的时候,很容易导致冲突,所以在创建VC的工程时,系统提示是用单线程还是用多线程的库,因为在C的内部有很多的全局变量。例如,出错号、文件句柄等全局变量。
19.当用beginThread来创建,而用CloseHandle来关闭线程时,这时复制的全局结构就不会被释放了,这就有了内存的泄漏。这就是很多资料所说的内存泄漏问题的真正的原因。
20.要正常运行,可以让线程完全结束以后,再调用CloseHandle来释放资源。
21.C++有一个好处,就是针对不同的对象去做实例化,这就是所谓的对象化。
22.任何的程序编译出来都和平台有关。如果脱离平台,任何语言都没有什么意义。
23.如果要求效率,那还不如传递一个指针,这样会比较快。
24.很多做程序的人并不知道平台的作用,其实平台才是最重要的。有些人认为自己懂了VC,就懂了计算机了,实际上离计算机还有十万八千里。
25.重载是相同的函数名用不同的参数来进行区分。
26.连接器的原理是通过符号的不同来区别的。
27.重载事实上是同名函数在编译器编译时被换名了。
28.所有类中的函数是不能取地址的。
29.不要用全局变量,这样会导致程序互相冲突。其实,如果用的是不同的动态库,那么是不会出问题的。
30.解释程序就是一个字符串的解释器。
31.一个代码是不是完全正确的,一定要在汇编指令中看一看。
32.汇编最大的好处就是可以直接地控制CPU的运算。
33.汇编可以确定程序出错的真正原因。
34.很多人遇到不能解决的问题时,总是一遍一遍地试用各种方法,而不是从代码编译结果出发去解决问题,这样就很容易掉进漩涡中出不来。
35.如果希望用一两个月就成为高数的人永远成为不了高手,一定要有踏实的根底,一步一步地磨炼。
36.对COM的挂钩要比函数的挂钩简单很多。
37.编写程序甚至就像写诗一样,能给人以美感。
38.在你开发商用软件的任何一个程序时,都不要使用Debug进行编译调试,一定要用Release进行工作,否则后患无穷。
39.变量的上下排列顺序遵照上宽下窄的倒三角排列方式进行排列。
40.大括号内的内容实际是下一个层次的内容,所以应该放在下一TAB列的位置。
41.当有一段代码需要理解时,可以不必急急忙忙就去从头到尾进行阅读,最好按规定的规则规范先阅读,然后再分块阅读。
42.程序时刻要保持一种正确的可运行状态。
显示全文

查看更多主题的豆瓣日记和相册

gooooodstock
作者gooooodstock
56日记 5相册

全部回应 0 条

添加回应

gooooodstock的热门日记

值得一读

    豆瓣
    我们的精神角落
    免费下载 iOS / Android 版客户端