cpu输出指令的时候,为什么不要把它翻译成机器码?CPU内不就是机器码吗?

1个回答
展开全部
摘要 亲亲,您好啊!答案来了哦!首先操作系统同cpu打交道用的是机器码,但是对我们来说他用的是自然语言即所说的高级语言,编译器是的程序就是我们用高级语言写的,要执行的时候还需要把他翻译回机器码,这个过程就是编译。
咨询记录 · 回答于2022-07-03
cpu输出指令的时候,为什么不要把它翻译成机器码?CPU内不就是机器码吗?
亲亲,您好啊!答案来了哦!首先操作系统同cpu打交道用的是机器码,但是对我们来说他用的是自然语言即所说的高级语言,编译器是的程序就是我们用高级语言写的,要执行的时候还需要把他翻译回机器码,这个过程就是编译。
然后由于操作系统自身不带有这种翻译的功能,因此不能直接翻译成机器码,而且高级语言也分好多种,每种语言对应的翻译方式也不一样。
最后的话,是的,CPU指令系统中的指令就是机器码,也就是二进制表示的。
cpu输出指令的时候,不能把它翻译成机器码,CPU内是机器码吗
CPU向北桥。发送指令要转化成什么格式?为什么要转?
亲亲,正是因为不同的 CPU 能够听懂的语言不太一样。比如,我们的个人电脑用的是 Intel 的 CPU,苹果手机用的是 ARM 的 CPU。这两者能听懂的语言就不太一样。类似这样两种 CPU 各自支持的语言,就是两组不同的计算机指令集,英文叫 Instruction Set。这里面的“Set”,其实就是数学上的集合,代表不同的单词、语法。不同的 CPU 有不同的指令集,也就对应着不同的汇编语言和不同的机器码。为了方便你快速理解这个机器码的计算方式,
最后,MIPS 的指令是一个 32 位的整数,高 6 位叫操作码(Opcode),也就是代表这条指令具体是一条什么样的指令,剩下的 26 位有三种格式,分别是 R、I 和 J。R 指令是一般用来做算术和逻辑操作,里面有读取和写入数据的寄存器的地址。如果是逻辑位移操作,后面还有位移操作的位移量,而最后的功能码,则是在前面的操作码不够的时候,扩展操作码表示对应的具体指令的。I 指令,则通常是用在数据传输、条件分支,以及在运算的时候使用的并非变量还是常数的时候。这个时候,没有了位移量和操作码,也没有了第三个寄存器,而是把这三部分直接合并成了一个地址值或者一个常数。J 指令就是一个跳转指令,高 6 位之外的 26 位都是一个跳转后的地址。
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消