数据和指令是分开区域存放的,存放指令区域的地方称为「正文段」
- 编译器会把 a = 1 + 2 翻译成 4 条指令,存放到正文段中。如图,这 4 条指令被存放到了 0x200 ~ 0x20c 的区域中:
- 0x200 的内容是 load 指令将 0x100 地址中的数据 1 装入到寄存器 R0;
- 0x204 的内容是 load 指令将 0x104 地址中的数据 2 装入到寄存器 R1;
- 0x208 的内容是 add 指令将寄存器 R0 和 R1 的数据相加,并把结果存放到寄存器 R2;
- 40x20c 的内容是 store 指令将寄存器 R2 中的数据存回数据段中的 0x108 地址中,这个地址也就是变量 a 内存中的地址;
编译完成后,具体执行程序的时候,程序计数器会被设置为 0x200 地址,然后依次执行这 4 条指令。
上面的例子中,由于是在 32 位 CPU 执行的,因此一条指令是占 32 位大小,所以你会发现每条指令间隔 4 个字节。
而数据的大小是根据你在程序中指定的变量类型,比如 int 类型的数据则占 4 个字节,char 类型的数据则占 1 个字节。
标签:day1,学习,地址,指令,存放,寄存器,数据,0x200 From: https://www.cnblogs.com/shenxiaodou/p/16609593.html