深入理解计算机系统笔记
2013-06-22 18:38
225 查看
第一章
用了一个小时看 《深入理解计算机系统》第一章。虽然通过之前的逆向,汇编等底层知识的学习,这些知识大部分都是掌握之中了,但是读了之后还是有一种
豁然开朗的感觉,觉得之前积累的零零散散的知识被梳理了一遍,这是本好书,继续学习!
第二章
浮点运算有完全不同的数学属性。虽然溢出会产生特殊的值+∞,但是一组正数的乘积总是正的。
自己写个小程序
用printf输出flow就会显示字符串1.#INF00,大概就是所说的 特殊的值+∞ 了吧
后面有一段文字被译者翻译得有点傻逼,我觉得他翻译的傻B,当然你也可以觉得我翻译得更傻逼。。
当值x是2的非负整数幂时,也就是...(方便后人搜索)
大概就是说二进制和十六进制之间的窍门,如一个十六进制数等于2的5次方,那么写成二进制就是1后面跟5个0,即100000B(二进制)=20H(十六进制)=32D(十进制)
就是说2的n次方,写成二进制就是2后面跟n个0,书上还说如果将n表示为i+4j (0<=i<=3), 转换起来更方便,如2的11次方 中的11=3+2*4,那么它的十六进制形式就是
2的三次方的2*4次方,也就是8的8次方,就是8后面要跟8个0(二进制的0),那么十六进制上就要跟2个0,所以十六进制表示为800H
后面讲到十六进制与十进制的互转。
十进制转十进制是不断地用商除16,直到商为0,然后余数按最后一次除法到第一次除法的顺序念就是十六进制了
十六进制转十进制就是,例:7AF=7*16的2次方 + 10* 16的1一次方 + 15*16的0次方 = 1967
后面说大小端,一般Intel用的是小端,IBM和Sun用的是大端,不过也不一定全是啦。考虑一个数0x12345678, 12那个位置叫最高有效位 78那个位置在最低有效位
小端方式的存储会将低有效位放在前面,高有效位放在后面,所以我们在用OD逆向的时候看到一个句柄如此存放在0x403000的时候(9A2C321F),其实真正的句柄值是1F322C9A. 为什么字节存储方式要叫做大端小端(respectively big endian and little endian)这么奇怪, 其中故事比较傻逼, 这里就不引用了。。
用了一个小时看 《深入理解计算机系统》第一章。虽然通过之前的逆向,汇编等底层知识的学习,这些知识大部分都是掌握之中了,但是读了之后还是有一种
豁然开朗的感觉,觉得之前积累的零零散散的知识被梳理了一遍,这是本好书,继续学习!
第二章
浮点运算有完全不同的数学属性。虽然溢出会产生特殊的值+∞,但是一组正数的乘积总是正的。
自己写个小程序
#include <Stdio.h> int main() { float flow; float normal=999.999*888.888; scanf("%f",&flow); flow=flow*normal; printf("you never get here %f",flow); printf("\n"); return 0; }在scanf执行时输入一个超大的浮点数,flow的值变为7F800000
用printf输出flow就会显示字符串1.#INF00,大概就是所说的 特殊的值+∞ 了吧
后面有一段文字被译者翻译得有点傻逼,我觉得他翻译的傻B,当然你也可以觉得我翻译得更傻逼。。
当值x是2的非负整数幂时,也就是...(方便后人搜索)
大概就是说二进制和十六进制之间的窍门,如一个十六进制数等于2的5次方,那么写成二进制就是1后面跟5个0,即100000B(二进制)=20H(十六进制)=32D(十进制)
就是说2的n次方,写成二进制就是2后面跟n个0,书上还说如果将n表示为i+4j (0<=i<=3), 转换起来更方便,如2的11次方 中的11=3+2*4,那么它的十六进制形式就是
2的三次方的2*4次方,也就是8的8次方,就是8后面要跟8个0(二进制的0),那么十六进制上就要跟2个0,所以十六进制表示为800H
后面讲到十六进制与十进制的互转。
十进制转十进制是不断地用商除16,直到商为0,然后余数按最后一次除法到第一次除法的顺序念就是十六进制了
十六进制转十进制就是,例:7AF=7*16的2次方 + 10* 16的1一次方 + 15*16的0次方 = 1967
后面说大小端,一般Intel用的是小端,IBM和Sun用的是大端,不过也不一定全是啦。考虑一个数0x12345678, 12那个位置叫最高有效位 78那个位置在最低有效位
小端方式的存储会将低有效位放在前面,高有效位放在后面,所以我们在用OD逆向的时候看到一个句柄如此存放在0x403000的时候(9A2C321F),其实真正的句柄值是1F322C9A. 为什么字节存储方式要叫做大端小端(respectively big endian and little endian)这么奇怪, 其中故事比较傻逼, 这里就不引用了。。
相关文章推荐
- 深入理解计算机系统阅读笔记-优化程序性能
- 深入理解计算机系统 笔记1 计算机系统漫游
- 1、深入理解计算机系统 笔记,系统综述
- 深入理解计算机系统笔记1
- 20、深入理解计算机系统笔记,虚拟存储器,基本原理(2)
- 深入理解计算机系统-笔记
- 学习笔记——深入理解计算机系统——启动
- 28、深入理解计算机系统笔记,Web服务器简介
- 【深入理解计算机系统笔记】Linux 下 程序的链接过程
- 深入理解计算机系统9个重点笔记
- 【笔记】深入理解计算机系统
- 深入理解计算机系统-笔记-CH 1 并发与并行
- 深入理解计算机系统------->对齐限制笔记
- 深入理解计算机系统-笔记1
- 深入理解计算机系统笔记
- CSAPP深入理解计算机系统第二章学习笔记(1)
- 深入理解计算机系统(笔记):计算机系统漫游
- 深入理解计算机系统之笔记
- 深入理解计算机系统笔记
- 深入理解计算机系统之笔记