CPU工作原理-张孝祥java就业培训教程(带完整目录高清扫描版)

时间:2024-06-27 18:04:23
【文件属性】:

文件名称:CPU工作原理-张孝祥java就业培训教程(带完整目录高清扫描版)

文件大小:1007KB

文件格式:PDF

更新时间:2024-06-27 18:04:23

单片机 操作系统

8.1 CPU工作原理 本节讨论 CPU执行指令的过程,通过这个过程来分析一个任务有哪些东西是它特有的, 即在任务切换时需要保存和恢复的内容有哪些。 【CPU 对指令的执行】 C 编译器把 C 语言源代码编译为一条条指令,这些指令也是以一个个数字代码的形式保 存的。不管它保存在什么地方(ROM 也好,RAM 也好),CPU 中总有一个寄存器 PC 指向下 一条要运行的指令。CPU 在每执行一条新指令时,会从 PC 指针所指的地方取出指令,然后 PC 指针会自动增加,指向下一条指令。 所以修改 PC 指针也就能够控制 CPU 执行代码的位置。C 编译器中的分支结构、循环结 构还有函数的调用,这些过程中的一个很重要的一点就是对 PC 指针的修改。比如调用一个 子函数实际上就是修改 PC 指针,使其指向子函数所在的代码空间,然后就会直接从子函数 处取指令执行;子函数返回时也是修改 PC 指针,使其指向父函数在调用子函数处的下一条 指令,使父函数能够接着运行。(注意在函数调用时除了修改 PC 指针还有其他事情要做,这 里暂不考虑) C 编译器会安排好 PC 指针的修改,它会根据具体函数调用的情况让程序在各个代码空 间之间跳转,也就是在各个函数之间跳转。在同一个函数调用链里的函数都有可能得到执行, 但是函数调用链之外的函数却得不到执行。此时就要手动修改 PC 指针,让 CPU 从一个函数 调用链跳转到另一个函数调用链,也就是从一个进程跳转到另一个进程执行。 【全局变量】 在 C 中申请的全局变量将会始终占用一段内存,它们的地址在程序执行的过程中固定不 变,并且 C 编译器会保证这段地址不会再次分配给其他地方。 【堆栈和 SP 指针】 在一条函数调用链(一个进程)中还有一个重要概念——堆栈。堆栈的数据结构简单表 示如下(取自*): 堆栈在逻辑上有栈顶和栈底之分,栈底保存的是先入栈的元素,栈顶保存的是后入栈的 元素。有新数据存入时,会把数据保存在栈顶,要取出数据时也会从栈顶取出。所以它是一 种“先入后出”的方式。 此外,堆栈的使用需要一个栈顶指针(SP),它标识着栈顶的位置(但是不一定直接指 向栈顶的元素,参看后面堆栈的分类)。CPU 寄存器中有一个专门的 SP 指针。 36


网友评论