计算机的CPU中的寄存器

问题描述 投票:1回答:1

我只是想验证,如果CPU本身支持的“寄存”的名字。我的意思是为arg0 ARG1 ARG2 ...等为末“名字”。是否CPU支持又名?我不要求对自身进行注册,我要问的CPU是否支持,它可以操纵或不登记的名字吗?

cpu cpu-registers
1个回答
4
投票

名字是什么神奇的不是身体

这才是重点。名称纯粹是为了我们人类阅读。该CPU的绝对没有名字的概念。他们处理的唯一的东西是数字。字符是数字,地址是数字,说明数字...所以是寄存器,其也只是在指令本身以某种方式编码的数字

组装完成后,只有在指令流中的数字。连跳的标签,功能...不要在可执行二进制文件不存在。他们相对描述为“在这之后的14日指示”,“指令前48个字节” ......或绝对为“在地址0xFACECAFE功能”。名称,如果有的话,把在不同的章节描述地址代表什么,不然没人知道什么变量0x65DAB3CF或功能在0xFACECAFE是。这些名称用于调试打印变量供人阅读,或接头,装载机......找到正确的位置更换地址。 CPU将完全忽略他们

例如,在MIPS $ra is the register number 31, $t9 is 25, $a3 is 7...和那些将在指令作为它们的二进制值被编码为这样。 ADD $s2, $t5, $a3将被编码为

000000(R型指令操作码) - 01101($ 13 / $ T5) - 00111($ 7 / $ A3) - 10010($ 18 / $ S2) - 00000(偏移量) - 100000(32 - ADD功能),即0x01A79020

同样地,在86寄存器RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8-R15 are mapped to 0-15 respectivelyxor ecx, esi被编码为31 f1 = 00110001 11110001与最后6位存储2个参数。更复杂的指令需要更复杂的规则,例如ADD r9, [rax + 4*r13 + 20]被编码为4e 03 4c a8 14

由于CPU的只关心数字,它实际上可以构建字符串地图寄存器名称寄存器自己的编码。例如R20将被编码为72 32 30(这是字符串“R20”的ASCII值)的指令中,但为什么要浪费在指令这么多宝贵的空间?从R20到20(0×14)的映射是简单和足够清楚

© www.soinside.com 2019 - 2024. All rights reserved.