机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。
机器码一般用作软件能够唯一识别的机器,注册软件时会自动根据硬件配置产生一串序号,这串序号叫机器码,软件提供商一般根据用户所提供的机器码来产生唯一的注册码,这样所使用的软件就可以正常工作了。
机器码也是磁盘加锁专家所在电脑的硬件特征码,每台电脑的机器码都是不一样的,不更换电脑和硬件机器码是不会变的。
机器码的优点是一般存储较小,便于单片机识别,缺点也很明显就是人无法读懂和直接进行功能修改。机器码是由电脑硬件信息产生,不会改变,如果格式化硬盘可能会导致机器码发生变化,中了病毒可能也会改变。也存在虚拟码,虚拟码的话可能重装系统就会改变,真实的机器码重装系统是不会发生变化的。
1,点开始->运行,输入cmd。
2,在DOS提示符下输入以下命令: ipconfig /all ,按回车。
3,就可以看到Physical Address(物理地址),这个就是机器码,即Mac地址。
不同的CPU类型机器码不同,有的CPU机器码支持动态长度,动态扩展,如Inter系列,它有时候可以一条指令中有多个操作码,有的CPU的机器码长度是固定的,如ARM,我们可以分析大多数的机器码,大多数的机器码占一个字(32位或64位),一般超过一个字的机器码不多,可能只有Inter系列会有,一般用不到
1、三地址机器码格式
三地址机器码格式主要在RISC CPU中用到,例如下边ARM一条汇编指令
ADD r1,r2,r3
上述代码表示将r2寄存器中的值加上r3寄存器中的值,写入达到r1寄存器
2、双地址机器码格式
双地址机器码格式主要在CISC CPU中用到,例如下边Inter Pentium的一条汇编指令
ADD AX BX
上述代码讲过BX寄存器的内容与AX相加后,写入到AX中,双地址机器码的坏处也很明显了,例如AX寄存器的值执行命令后就被覆盖了,不能够重用了。
3、单地址机器码格式
单地址机器码格式在RISC,CISC CPU都会用到,例如下边ARM一条汇编指令
LDA r1
上述代码表示将r1寄存器的值加到累加器(一种寄存器,用于存储中间结果),单地址机器码其实也是有两个操作数,一个是r1,另一个就是累加器,因为LDA r1已经意味着追加累加器的意思,所有不需要指定。
4、零地址机器码格式
零地址机器码格式一般操作栈顶的数据,不需要寄存器参与,零地址机器码格式不会用到地址,对于单操作数运算,例如递增,递减,取负,清零等一元运算,直接用栈顶的数据,对于双操作数从栈顶陆续出栈两个数,然后运算,下边举例子,例如下边的表达式
Z=(A+B).(C-D)
PUSH A ;A入栈PUSH B ;B入栈ADD
什么时候使用机器码?一般情况下,您不需要使用也没有必要知道此机器码,因为所有的操作都是自动完成的,没有必要知道它。只有在技术支持时,如果我们需要您提供机器码,这时您才能用到它。
即使在当您无法完成在线注册时,一般也不需要手工提供机器码,程序自动生成的邮件中就包括了这些信息,万一您需要手工书写申请注册、申请撤销、申请续订、同步续订期限等邮件时才需要手工提供这些机器码信息。
总结:机器码是电脑CPU可直接读取运行的机器指令,并且执行速度最快的代码,一般用作软件能够唯一识别的机器。一般情况下,我们并不需要知道计算机的机器码,除非是需要技术支持的时候,才需要我们提供机器码。