liuqinh2s' blog

Do something cool!

阅读这篇文章必须要对汇编码有足够的了解,如果你对 IA32 汇编码还不够了解,可以先看看这篇文章:程序的机器级表示

Y86 指令集体系结构

Y86 指令集基本上是 IA32 指令集的一个子集。这个指令集就是我们处理器实现的目标。如下图:

阅读全文 »

从编译 C 语言文件说起

1
$ gcc -01 -o p p1.c p2.c

使用了 gcc 命令来编译,也可以简单写作:cc

优化层级为 1,1 级是最低的,层级越高程序优化越好,但增加了编译时间,也使调试变得更难,且跟源程序差异很大不便于理解。

编译的流程是:

  1. 预处理器(preprocessor)把诸如:#include#define#if#else#elif#ifdef#endif等预编译指令替换掉。
  2. 编译器(compiler)把.c源文件编译成.s的汇编代码文件。
  3. 汇编器(assembler)把汇编代码文件转换成相应的二进制目标文件.o,目标文件已经是机器码了,只是没有填入全局变量的地址。
  4. 链接器(linker),把多目标文件和库函数链接在一起,形成可执行文件。
阅读全文 »

浮点数的作用:区别于整形数,用来表示小数。可以用来表示很大的数,或者非常接近 0 的小数,或者近似的做实数计算,浮点数的一般形式: x×2y

IEEE(pronounced “Eye-Triple-Eee”)浮点数标准 是行业内公认的标准。

rounding:when a number cannot be represented exactly in the format and hence must be adjusted upward or downward。可以翻译为:舍入

十进制的小数表示: dmdm1d1d0.d1d2dn ,写成数学表达式:

d=i=nm10i×di

相应的,二进制也可以写成这种形式:

b=i=nm2i×bi
阅读全文 »

使用 windows subsystem for linux (简称:WSL) 的时候,遇到一个小问题,在文件管理器中右键,唤出 bash,发现图标不对:

截图1

阅读全文 »
0%