一般情况我们不会将一个捕鼠器比作电脑,但不管你信不信,它确实与你正在使用的设备(手机或电脑)的 CPU 有一些相似之处。经典的捕鼠器(我说的不是 ?)有两种状态:打开或者释放。你可以认为 打开是将捕鼠器设置好准备捕获老鼠,以及释放是捕鼠器被老鼠触发。某种意义上来说,捕鼠器就像是一台有鼠标的电脑。你可以想象一下这个代码,用一种虚构的语言来描述这个过程:
if mousetrap == 0 then There's a mouse!else There's no mouse yet.end
换句话说,你可以基于捕鼠器的状态发现是否有老鼠(数据)。当然,捕鼠器不是万无一失的,有可能有一只老鼠在捕鼠器旁边,由于老鼠还没有触发捕鼠器,所以它的状态还是 打开的。因此该程序可以进行改进,这都是非常典型的。
带有宏定义的 C 源代码 .c文件,用cpp预处理为.i文件。扩展了宏定义的 C 源代码 .i文件,会被gcc转译成.s文件。以汇编语言写的文本文件 .s文件被汇编为目标.o文件。带有 CPU 指令的二进制目标代码,以及其他目标文件和库 *.o文件,以内存区域无关的偏移量,使用ld链接以生成可执行文件。最终的二进制文件要么包含所有需要的目标,要么设置以动态链接库 *.so文件加载。