学习 day1 --2.1 CPU 是如何执行程序的?

数据和指令是分开区域存放的,存放指令区域的地方称为「正文段」

  1. 编译器会把 a = 1 + 2 翻译成 4 条指令,存放到正文段中。如图,这 4 条指令被存放到了 0x200 ~ 0x20c 的区域中:
  2. 0x200 的内容是 load 指令将 0x100 地址中的数据 1 装入到寄存器 R0;
  3. 0x204 的内容是 load 指令将 0x104 地址中的数据 2 装入到寄存器 R1;
  4. 0x208 的内容是 add 指令将寄存器 R0 和 R1 的数据相加,并把结果存放到寄存器 R2;
  5. 40x20c 的内容是 store 指令将寄存器 R2 中的数据存回数据段中的 0x108 地址中,这个地址也就是变量 a 内存中的地址;

编译完成后,具体执行程序的时候,程序计数器会被设置为 0x200 地址,然后依次执行这 4 条指令。

上面的例子中,由于是在 32 位 CPU 执行的,因此一条指令是占 32 位大小,所以你会发现每条指令间隔 4 个字节。

而数据的大小是根据你在程序中指定的变量类型,比如 int 类型的数据则占 4 个字节,char 类型的数据则占 1 个字节。

posted @ 2022-08-21 10:39  小申同学  阅读(49)  评论(0编辑  收藏  举报