“机器码”和“计算机指令”到底是怎么回事? |
您所在的位置:网站首页 › 机器码的定义和特点 › “机器码”和“计算机指令”到底是怎么回事? |
“机器码”和“计算机指令”到底是怎么回事?
从硬件角度讲,CPU就是超大的集成电路,通过电路实现加法、乘法或者其他逻辑 从软件角度讲,CPU就是执行指令的机器,指令可以理解成机器能看懂的语言。 不同的CPU,听懂的语言也不太一样,是不同的计算机指令集。其实也是认为定义的而不同。 现在的mac m1 能执行手机系统ios上的app,也是应为他俩的指令集相同,可以理解成都是说英语的,能交流上。 一般的程序,有成千上万个指令,一般都是存储在存储器里面的,需要执行的时候再取出来放进CPU里计算,这种称为存储程序型计算机。 编译到汇编,代码怎么变成机器码的?以上c语言编译成汇编语言,再由汇编语言翻译成机器码,也就是0和1的机器语言。一条条的16进制数字,就是机器能读懂的计算机指令
汇编代码和机器码是一一对应的,一条汇编对应一条机器码。 有汇编代码主要是未来方便人看,要不然都是0110的数字,谁也看不懂啊,汇编代码可以说是给“程序员看的机器码”。 指令和机器码的分类我们来了解一下指令和机器码,到底是什么意思呢?一般来说指令分为5类: 算数类指令。加减乘除 rgba(46,29,92,.6)数据传输类指令。变量赋值、在内存里读写数据 逻辑类指令。是与非 条件分类指令。if/else 无条件跳转指令。一般指函数,闭包之类的,直接跳转内存地址 汇编代码怎么转换成机器码的?我们简单实用MIPS指令集来看一看,MIPS的指令是一个32位的整数,高6位叫**操作码,**代表这条指令具体是一条什么样的指令,剩下26位对应R、I、J三种格式。 R指令,一般是算术逻辑操作,里面有读取和写入数据寄存器的地址。如果是逻辑位移的操作,还有位移量,最后的功能码,是在操作码不够用来扩展的。 rs寄存器,rt寄存器,rd存放结果的目的寄存器,shamt是位移量,funct是前面操作码不够的补充。 I指令,通常是数据传输、条件分支,以及运算时候不是变量,而是常数的时候。没有位移量,没有操作码,也没有寄存器,三个部分直接合并成地址或一个常数 rs寄存器,rt存放操作结果的寄存器,是个常数 J指令,是一个跳转指令,26位都是一个跳转的地址举个🌰: add $t0,$s2,$s1 复制代码add这里是一个计算逻辑,是R指令,rs是寄存器17,rt是寄存器18,rd是存放结果的寄存器8,无偏移量,功能码是32代表加法。把十进制转换成二进制就好吗 附: 汇编指令:::开头的是表示寄存器 PC:Project Count 程序计数器 Memeory[num]: 表示内存地址的位置,num表示的是字节,并非字。 reg表示寄存器(0~31), address表示16位地址 n. a. (not applicable)表示这个字段在该指令格式中不出现 这里也可以看出,add,sub的区分是依靠funct功能字段的。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |