机器代码怎么译码
1. 计算机编译就是指编码和译码两个过程吗
在微指令的控制字段中,每一位代表一个微命令,在设计微指令时,是否发出某个微命令,只要将控制字段中相应位置成"1"或"0",这样就可打开或关闭某个控制门,这就是直接控制法.
在6.3节中所讲的就是这种方法.但在某些复杂的计算机中,微命令甚至可多达三四百个,这使微指令字长达到难以接受的地步,并要求机器有大容量控制存储器,为了改进设计出现了以下各种编译法.
6.4.1 微指令的编译法(编码译码方法)(2)
2.字段直接编译法
在计算机中的各个控制门,在任一微周期内,不可能同时被打开,而且大部分是关闭的(相应的控制位为"0").所谓微周期,指的是一条微指令所需的执行时间.如果有若干个(一组)微命令,在每次选择使用它们的微周期内,只有一个微命令起作用,那么这若干个微命令是互斥的.
例如,向主存储器发出的读命令和写命令是互斥的;又如在ALU部件中,送往ALU两个输入端的数据来源往往不是唯一的,而每个输入端在任一微周期中只能输入一个数据,因此控制该输人门的微命令是互斥的.
选出互斥的微命令,并将这些微命令编成一组,成为微指令字的一个字段,用二进制编码来表示, 就是字段直接编译法.
6.4.1 微指令的编译法(编码译码方法)(3)
例如,将7个互斥的微命令编成一组,用三位二进制码分别表示每个微命令,那么在微指令中,该字段就从7位减成3位,缩短了微指令长度.而在微指令寄存器的输出端,为该字段增加一个译码器,该译码器的输出即为原来的微命令.
6.4.1 微指令的编译法(编码译码方法)(4)
字段长度与所能表示的微命令数的关系如下:
字段长度 微命令数
2位 2~3
3位 4~7
4位 8~15
一般每个字段要留出一个代码,表示本段不发出任何微命令,因此当字段长度为3位时,最多只能表示7个互斥的微命令,通常代码000表示不发微命令.
6.4.1 微指令的编译法(编码译码方法)(5)
3.字段间接编译法
字段间接编译法是在字段直接编译法的基础上,进一步缩短微指令字长的一种编译法.
如果在字段直接编译法中,还规定一个字段的某些微命令,要兼由另一字段中的某些微命令来解释,称为字段间接编译法.
本方法进一步减少了指令长度,但很可能会削弱微指令的并行控制能力,因此通常只作为直接编译法的一种辅助手段.
6.4.1 微指令的编译法(编码译码方法)(6)
字段A(3位)的微命令还受字段B控制,当字段B发出b1微命令时,字段A发出a1,1,a1,2,…,a1,7中的一个微命令;而当字段B发出b2微命令时,字段A发出a2,1,a2,2,…,a2,7中的一个微命令,仅当A为000时例外,此时什么控制命令都不产生.
6.4.1 微指令的编译法(编码译码方法)(7)
4.常数源字段E
在微指令中,一般设有一个常数源字段E就如指令中的直接操作数一样.E字段一般仅有几位,用来给某些部件发送常数,故有时称为发射字段.
该常数有时作为操作数送入ALU运算;有时作为计算器初值,用来控制微程序的循环次数等.
6.4.2 微程序流的控制 (1)
当前正在执行的微指令,称为现行微指令,现行微指令所在的控制存储器单元的地址称现行微地址,现行微指令执行完毕后,下一条要执行的微指令称为后继微指令,后继微指令所在的控存单元地址称为后继微地址.
所谓微程序流的控制是指当前微指令执行完毕后,怎样控制产生后继微指令的微地址.
与程序设计相似,在微程序设计中除了顺序执行微程序外还存在转移功能和微循环程和微子程序等,这将影响下址的形成.
下面介绍几种常见的产生后继微指令地址的方法.
6.4.2 微程序流的控制 (2)
(1)以增量方式产生后继微地址.
在顺序执行微指令时,后继微地址由现行微地址加上一个增量(通常为1)形成的;而在非顺序执行时则要产生一个转移微地址.
机器加电后执行的第一条微指令地址(微程序入口)来自专门的硬件电路,控制实现取令操作,然后由指令操作码产生后继微地址.接下去,若顺序执行微指令,则将现行微地址主微程序计数器( PC中)+1产生后继微地址;若遇到转移类微指令,则由 PC与形成转移微地址的逻辑电路组合成后继微地址.
6.4.2 微程序流的控制 (3)
6.4.2 微程序流的控制 (4)
(2)增量与下址字段结合产生后继微地址
将微指令的下址字段分成两部分:转移控制字段BCF和转移地址字段BAF,当微程序实现转移时,将BAF送 PC,否则顺序执行下一条微指令( PC+1).
执行微程序条件转移时,决定转移与否的硬件条件有好几种.例如,"运算结果为零","溢出","已完成指定的循环次数"等.
我们假设有八种转移情况,定义了八个微命令(BCF取3位),在图中设置计数器CT用来控制循环次数.如在执行乘(或除)法指令时,经常采用循环执行"加,移位"(或减,移位)的方法,指令开始执行时,在CT中置循环次数)每执行一次循环,计数器减1,当计数器为零时结束循环.又考虑到执行微子程序时,要保留返回微地址,因此图中设置了一个返回寄存器RR.
2. 单片机的机器码是怎么定义的
不同的cpu都有自己的指抄令集所以不同的cpu机器码都不一样。cpu本身只是取指令-分析指令-执行指令,所以指令的机器码可以定义的很随意,只要能和cpu分析指令的硬件符合就行了,当然机器码是越容易译码越好了。
你如果有那款单片机的汇编指令集,一般那里也会有相应指令对应的机器码。
不知道我说的是不是你的意思
3. 怎样把汇编语言编译成机器指令
机器指令?!不太明白你的意思,你是说想把它编译成可执行文件吧。亦或是想把它转化为二进制的机器指令?!你要是有能力可以手工翻译,不过和其他编程语言一样,汇编语言有编译器、连接器、和debug。对应的三个文件是:MASM.EXE LINK.EXE DEBUG.EXE这三个小软件网上都有。你可以下载下来,既然你会汇编语言我觉得这些应该都会的吧,如果找不到我可以用邮件发给你,使用很简单的,可能调试时需要自己去熟悉各种调试指令,如果想看你的汇编程序的机器指令也可以在DEBUG时用D命令查看内存中的内容,这样就可以看到指令对应的十六进制数,也就是机器代码。具体的可以搜索DEBUG使用方法。(不知道我回答的是不是你想要的,呵呵)
4. CPU是怎样对指令进行译码
cpu就是中央处理器,英文为central processing unit。cpu是电脑中的核心配件,只有火柴盒那么大,几十张纸那么厚,但它却是一台计算机的运算核心和控制核心。电脑中所有操作都由cpu负责读取指令,对指令译码并执行指令的核心部件。cpu的结构:中央处理器cpu包括运算逻辑部件、寄存器部件和控制部件。中央处理器从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码。它把指令分解成一系列的微操作,然后发出各种控制命令,执行微操作系列,从而完成一条指令的执行。指令是计算机规定执行操作的类型和操作数的基本命令。指令是由一个字节或者多个字节组成,其中包括操作码字段、一个或多个有关操作数地址的字段以及一些表征机器状态的状态字和特征码。有的指令中也直接包含操作数本身。①运算逻辑部件。可以执行定点或浮点的算术运算操作、移位操作以及逻辑操作,也可执行地址的运算和转换。②寄存器部件。包括通用寄存器、专用寄存器和控制寄存器。通用寄存器又可分定点数和浮点数两类,它们用来保存指令中的寄存器操作数和操作结果。通用寄存器是中央处理器的重要组成部分 ,大多 数 指令都要访问到通用寄存器。通用寄存器的宽度决定计算机内部的数据通路宽度,其端口数目往往可影响内部操作的并行性。专用寄存器是为了执行一些特殊操作所需用的寄存器。控制寄存器通常用来指示机器执行的状态,或者保持某些指针,有处理状态寄存器、地址转换目录的基地址寄存器、特权状态寄存器、条件码寄存器、处理异常事故寄存器以及检错寄存器等。有的时候,中央处理器cpu中还有一些缓存,用来暂时存放一些数据指令,缓存越大,说明中央处理器cpu的运算速度越快,目前市场上的中高端中央处理器cpu都有2M左右的二级缓存。③控制部件。主要负责对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。其结构有两种:一种是以微存储为核心的微程序控制方式;一种是以逻辑硬布线结构为主的控制方式。微存储中保持微码,每一个微码对应于一个最基本的微操作,又称微指令;各条指令是由不同序列的微码组成,这种微码序列构成微程序。中央处理器在对指令译码以后,即发出一定时序的控制信号,按给定序列的顺序以微周期为节拍执行由这些微码确定的若干个微操作,即可完成某条指令的执行。简单指令是由(3~5)个微操作组成,复杂指令则要由几十个微操作甚至几百个微操作组成。逻辑硬布线控制器 则完全是由随 机逻辑组成 。 指令译码后,控制器通过不同的逻辑门的组合,发出不同序列的控制时序信号,直接去执行一条指令中的各个操作。应用 大型、小型和微型计算机的中央处理器的规模和实现方式很不相同,工作速度也变化较大。中央处理器可以由几块电路块甚至由整个机架组成。如果中央处理器的电路集成在一片或少数几片大规模集成电路芯片上,则称为微处理器(见微型机)。中央处理器的工作速度与工作主频和体系结构都有关系。中央处理器的速度一般都在几个MIPS(每秒执行100万条指令)以上。有的已经达到几百 MIPS 。速度最快的中央处理器的电路已采用砷化镓工艺。在提高速度方面,流水线结构是几乎所有现代中央处理器设计中都已采用的重要措施。未来,中央处理器工作频率的提高已逐渐受到物理上的限制,而内部执行性(指利用中央处理器内部的硬件资源)的进一步改进是提高中央处理器工作速度而维持软件兼容的一个重要方向
5. 数控机床M代码译码原理
这个是商业机密,各个系统不一样。就和走拐点的时候 三菱 ,FANUC 等都不一样的
6. 机器码是如何在计算机中运行的
机器码就是诸如0101010100......的二进制数,这是机器唯一能识别的代码,所有计算机高级语言,最后都要转换成二进制代码机器才能执行。
7. cpu是怎么读入指令代码的是怎么译码的又是怎么把它变成一系列的电信号的呢
如果你是计算机专业的孩纸,这些都是最入门的基础知识,教材上都有,自己看去。
如果你是普通群众,这些东西是不需要懂的。实在吃饱了没事儿干,可以自己网络相关教程了解,搜索关键词就是你的问题。
不要啥东西都来这里提问浪费大家的精力,很多问题,网上早有详尽的说法,在发问之前自己先搜一下。。。
8. C语言编译到机器码的过程求详细解说,不胜感激
从编码到生成可执行的binary文件是有好几个过程的:(默认已完成编码)
1, 预编译(预处理), 也就是替换工作, 先把代码中的宏做替换, 条件编译等会做处理,为编译做作准备;
2,编译,包括了语法的检查,汇编代码等中间代码的生成,代码优化,obj文件(也算是目标代码)的生成,已经是有机器码了;
3.库的合成,这个不一定有,不是必须的;
4.链接, 连接器会按照一定的规则,比如根据连接脚步,把code组织起来,生成elf文件(elf可能不是一个所有通用的格式),这个时候已经可以执行了,里面的可以执行的机器码;
5,裁剪, 可以把elf文件中的非必需的段 strip,生成一个更精简的elf文件;
6,binary的生成,obj命令可以把elf文件转换成binary文件,binary文件烧录到存储器中可以直击运行。