下面是『杂谈』,以前的我不重视基本概念。现在就需要恶补了。
认识CPU
中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。
基本组成:
中央处理器主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。
核心:算术逻辑运算单元,也就是一个指令执行电路。就ALU而言,不存在什么进程、线程、栈(更加别说堆了)等高级概念,CPU的指令数量相对较少。他处理流程就是,执行PC寄存器给的指令(实际情况肯定比这个复杂的多,还有各种异常等)。
从上面可以得知:
- 程序的运行错误绝大部分是系统给出的,如:段错误,资源受限等
- 任何层次的*程切换/调度都是需要额外资源的;
编译杂谈
程序编译运行流程是:把代码按照一定规则(APCS或者其他)编译成机器指令,APCS规定了栈等信息。 逆向过程就是:把那些机器指令按照APCS协议用汇编的形式表示出来。高级的甚至用伪C代码表示(这个过程就是汇编与C直接的转换协议)。
PS:APCS:ARM过程调用标准。
- 寄存器命名;
- 设计关键:函数调用,快,小,易于优化;
- 函数应当可以妥善处理栈;