cpu的微指令集是用二进制cpu机器码码写成的 吗

查看: 7989|回复: 12
汇编指令是如何转换成二进制代码的?
主题帖子积分
王道论坛实习道友, 积分 10, 距离下一级还需 10 积分
王道论坛实习道友, 积分 10, 距离下一级还需 10 积分
考研年份2012
报考学校上海交通大学
本科学校武汉科大
我在书上看到 00对应汇编 mov ax,[3]& &&&而11000对应汇编mov ax,bx 。我想问下二进制代码与汇编指令的是如何转换的?计算机是如何识别哪些二进制代码是表示mov指令还是寄存器还是数据的?:dizzy:
主题帖子积分
考研年份2010
报考学校SJTU
本科学校HNU
没有学过计算机组成原理?
已经归隐,微信加公众号「靖难」或 扫描头像二维码可以找到我.
主题帖子积分
王道论坛初级道友, 积分 34, 距离下一级还需 166 积分
王道论坛初级道友, 积分 34, 距离下一级还需 166 积分
考研年份2013
报考学校安徽大学
本科学校洛阳师院
汇编说白就是 指令助记符&&规定的&&例如:让01001代表add
主题帖子积分
考研年份2013
报考学校电子科大
本科学校郑州大学
LZ没把问题意思说明白,我想是每条指令执行后IP加几的问题,有的指令像mov ax,1是IP加3,有的指令mov ax,bx是IP加2,有的如inc bx是IP加1,那么CPU是如何正确判断一条完整的指令是几个字节的,这个也是一直困扰我的问题,今天看到有人提出来了,同求高人解答!!
主题帖子积分
考研年份2013
报考学校电子科大
本科学校郑州大学
你用debug找个程序看一下,有的机器码多读或少读一个字节的话容易产生歧义,尤其是mov指令,如mov ax,bx,如果我多读一个字节,就可以理解为一个立即数,这样就产生歧义了,cpu是如何判断该读两个字节而不是三个字节作为一条指令的?
主题帖子积分
考研年份2013
报考学校合肥工大
本科学校合肥师范学院
考试应该不会考这么底层
主题帖子积分
考研年份2013
报考学校华南理工大学
本科学校福建卫生职业技术学院
你用debug找个程序看一下,有的机器码多读或少读一个字节的话容易产生歧义,尤其是mov指令,如mov ...
hillxyz 发表于
& & 这个你读一读csapp。
Practice is the sole criterion for testing truth.
主题帖子积分
王道论坛实习道友, 积分 10, 距离下一级还需 10 积分
王道论坛实习道友, 积分 10, 距离下一级还需 10 积分
考研年份2012
报考学校上海交通大学
本科学校武汉科大
& &这本书买了,还没看 现在再看《汇编语言》
主题帖子积分
王道论坛实习道友, 积分 10, 距离下一级还需 10 积分
王道论坛实习道友, 积分 10, 距离下一级还需 10 积分
考研年份2012
报考学校上海交通大学
本科学校武汉科大
& &跨专业 知识结构不健全,想学下汇编语言
主题帖子积分
王道论坛初级道友, 积分 30, 距离下一级还需 170 积分
王道论坛初级道友, 积分 30, 距离下一级还需 170 积分
考研年份2012
报考学校安徽艺术职业学院
本科学校云南热带作物职业学院
汇编语言不用看了,直接看csapp第三章
主题帖子积分
王道论坛实习道友, 积分 10, 距离下一级还需 10 积分
王道论坛实习道友, 积分 10, 距离下一级还需 10 积分
考研年份2013
报考学校华南理工大学
本科学校西北工大
2楼已经说了,汇编指令是助记符,有特定的机器码与之一一对应;mov ax,[3]是直接寻址,mov ax,bx 是寄存器寻址(如果我没记错),虽然同样是mov指令,但是直接寻址和间接寻址对应的机器码就不一样。至于如何区分指令或数据,跟指令系统的设计有关,操作码,操作数地址位数是定长的还是不定长的,计算机取指和执行都不一样,建议看看:
主题帖子积分
王道论坛实习道友, 积分 10, 距离下一级还需 10 积分
王道论坛实习道友, 积分 10, 距离下一级还需 10 积分
考研年份2012
报考学校上海交通大学
本科学校武汉科大
主题帖子积分
考研年份2013
报考学校电子科大
本科学校郑州大学
这本书一直躺书架里睡觉呢,看来有必要好好看看了,谢谢!
|||王道论坛基于C-SKY v2指令集的二进制工具集设计方法
专利名称基于C-SKY v2指令集的二进制工具集设计方法
技术领域本发明涉及计算机的汇编器、链接器、反汇编器等ニ进制工具集,尤其是基于杭州中天微公司C-SKY v2指令集的ニ进制工具集。
背景技术CSKY800系列嵌入式处理器(型号包括801,810等)使用CSKYv2指令级,该指令系统是CK-Core的第二代自主知识产权指令系统,汇编级兼容CSKY Vl指令系统,具有高性能、低代码密度、低功耗和可扩展等特点。CSKY V2指令系统面向未来高性能和低功耗嵌入式应用的不同需求而设计,采用32/16混合指令编码技术,其中32位指令功能完善用于提升指令集的综合性能;16位指令是32位指令的子集,功能相对简单用于提升指令代码密度和降低功耗。CSKY V2指令系统的主要特点如下32/16指令以混合编码方式实现,指令切 换过程中不产生性能损失;32位指令是ー套完整的指令体系,功能完善性能优异;16位指令是32位指令的子集,实现32位指令中频率最高的指令;32位指令采用32个通用寄存器和三操作数寻址模式;16位指令采用16个通用寄存器和两操作数寻址模式。CSKY V2的32位指令集按照指令实现的功能来划分,可以分为数据运算指令;分支跳转指令;内存存取指令;协处理器指令;特权指令;特殊功能指令CSKY V2的16位指令集按照指令实现的功能来划分,可以分为数据运算指令;分支跳转指令;内存存取指令;数据运算指令CSKY V2包含如下32位指令,其中大部分有其对应的16位指令ADDC、ADDI、SUBU、SUBC, SUBI、RSUB, IXH、IXff, INCF, INCT、DECF、DECT、DECGT、DECLT、DECNE、AND、ANDI、ANDN、ANDNI、OR、ORI、XOR、XORI、NOR、NOT、LSL、LSLI、LSLC、LSR、LSRI、LSRC, ASR、ASRI、ASRC、ROTL, ROTLI、XSR、CMPNE, CMPNEI、CMPHS、CMPHSI、CMPLT、CMPLTI、TST、TSTNBZ, MOV、MOVF,MOVT, MOVI、MOVIH、MTHI、MTL0、MFHI、MFL0、MVCV, MVC, CLRF, CLRT, BCLRI、BSETI、BTSTI、ZEXT、SEXT、INS、ZEXTB, ZEXTH、SEXTB, SEXTH、XTRBO, XTRBl、XTRB2、XTRB3、BREV、REVB,REVH、MULU、MULS、MULUA、MULSA, MULUS、MULSS、MULT、MULSH、DIVU、DIVS、ABS、FFl、BMASKI、BGENR、BGENIBTBF、BE、BNE、BEZ、BNEZ、BHZ、BLSZ、BLZ、BHSZ、BR、BSR、JMPI、JSRI、JMP、JSR、RTS、LD. B、LD. BS、LD. H、LD. HS、LD. W、ST. B、ST. H、ST. W、LDR. B、LDR. BS、LDR. H、LDR. HS、LDR.W、STR. B、STR. H、STR. W、LDQ, LDM、STQ、STM、LDEX. W、STEX. W、CPRGR、CPWGR、CPRCR、CPWCR、CPRC, LDCPR、STCPR、CPOP, MFCR、MTCR、PSRSET, PSRCLR、WAIT、DOZE、STOP、RTE, RFI、SYNC、BKPT、TRAP、PLDR、PLDW、WE、SE该(嵌入式)处理器需要操作系统、编译工具链等计算机软件才能工作,编译工具链中的编译器、汇编器、链接器等都是必不可少的。已经存在的工具都不能使用在新的硬件设备上,需要开发新的工具。
针对上述技术缺陷,本发明提出一种基于C-SKY v2指令集的ニ进制工具集设计方法。为了解决上述技术问题,本发明的技术方案如下基于C-SKY v2指令集的ニ进制工具集设计方法,包括汇编器设计和反汇编器设计,所述汇编器设计包括CSKY系列CPU的目标体系识别、CSKYV2指令集汇编文件的识别和处理、以及正确生成目标文件;所述CSKYv2指令集包括伪指令、一般指令和分支跳转指令;所述CSKYv2指令集汇编文件的识别和处理步骤为读取汇编源文件,当扫描到标号时调用colon函数处理标号,当扫描到伪指令时调用相应的伪指令处理函数,当扫描到宏指令时调用对应的宏指令处理函数,当扫描到机器指令时调用mcLassemble函数进行汇编处理;最后调用若干第二阶段的处理函数处理剩余信息;所述伪指令的处理包括如下步骤 (I)查询伪指令表,调用相应处理函数;(2)若是CSKYv2指令集特有的伪指令,则进行识别转化,根据不同指令以及该汇编语句的具体写法,将这条伪指令转化为一般指令或跳转指令,继续处理;所述md_assemble函数的处理包括如下步骤(11)将CSKY V2的32位指令按以下三种类型对进行分类,跳转类型编码指令寻址方式、立即数类型编码指令寻址方式和寄存器类型编码指令寻址方式,将CSKY V2的16位指令按跳转类型、立即数类型和寄存器类型进行分类;(12)匹配待处理的汇编文本,解析该段文本所对应的指令,获取该指令的处理函数组;(13)根据该指令的操作数选择合适的处理函数;(14)进入不同种类的指令的处理函数即一般指令或跳转指令急需处理;(15)若指令中包含常量,将该常量放入常量池;所述一般指令的处理包括如下步骤(16)解析操作数,若操作数不能解析则生成具有相应重定位信息的修补信息;(17)生成新的目标文件片段,写入操作码和操作数;所述分支跳转指令的处理包括如下步骤(18)解析操作数,若操作数不能解析则生成具有相应重定位信息的修补信息;(19)生成新的目标文件片段,写入操作码和操作数的初始值;(20)进入汇编第二阶段,利用relax方式处理重定位信息和修补信息;所述relax方式的处理包括如下步骤(21)将CSKYv2中的伪跳转指令和分支跳转指令归纳,分成不同的组,生成数据表;(22)根据该数据表,从同组指令中,选择合适的一条指令;(23)解析修补信息,得到修补后的值;若修补信息不能解析,则作为重定位信息项写入目标文件,修补后的值规定为O ;(24)将选定的指令编码,和修补后的值,写入目标文件;所述常量池的处理包括如下步骤(25)在md_assemble函数的末尾检查常量池;
(26)如果常量池大小为0,则创建新的变量池;如果不为O则在常量池查找表达式,创建对常量池的引用;如果不能找到,则在常量池中创建新的ー项。进ー步的,所述反汇编器设计包括如下步骤判断文件类型、解析数据、反汇编CSKY v2 指令;所述反汇编CSKY v2指令的处理包括如下步骤(27)根据CSKY v2指令编码表編制ニ进制“先大类后小类“的查询方案;(28)根据该查询方案进行查询,找到反汇编处理信息,进行反汇编格式化打印;(29)编译该反汇编器时需要打开跳转表优化。本发明的有益效果在于通过重新设计汇编器和反汇编器,使其能在杭州中天微 公司CSKY800系列嵌入式处理器工作。
图I为汇编器流程;图2为伪指令的识别与处理;图3为伪指令的fix信息生成归类;图4为调用fix_new_exp进行fix信息的生成;图5为调用frag_var函数进行fix信息的生成;图6为汇编后端的工作流程;图7为fix信息的处理;图8为重定位信息的生成;图9 为 md_assemble 流程;图10 为 check_literals 函数说明;图11为剩余信息处理流程;图12为objdump的函数主流程;图13为display_bfd函数流程图;图14 为 disassemble_data 函数流程图;图15 为 disassemble_bytes 函数流程图;图16 为 print_insn_csky 函数流程图;图17为32/16指令混编模式;图18为CSKY V2指令集编码表。
具体实施例方式下面将根据附图和具体实施例对本发明做进ー步的说明。本发明包括汇编器处理汇编程序的若干方法,和反汇编器处理目标文件中的若干方法。用户书写的汇编程序通过汇编器(本发明的实体)转化为目标文件(可执行程序和库的基本単元)。该汇编器通过多种技术(本发明的技术,蕴含于实体之中)完成这写转化任务。为了使使计算机程序最終能够运行在杭州中天微系统有限公司CK800体系结构的CPU之上,该汇编器是必不可少的工具。该汇编器除了能够处理汇编程序的一般特点以夕卜,还必须支持CSKY V2指令集,该指令集共包括400余条16位或32位的指令,具有多种编码格式和寻址模式,需要使用若干技术构造该汇编器。以下文中没详细解释的函数,均属于现有技术,本领域的技术人员都了解这些函数的意义,并且这些函数也可以轻易的从现有公开的技术资料、教课书中查到,在这里不再进行详述。反汇编器是汇编器的反向工具,是编程人员观察目标文件、调试目标程序等工作的必需工具。汇编器的设计I.如何让汇编器通过參数识别不同的体系结构
因为汇编器需要支持两种不同的目标体系(也叫target,包括CSKYv2和CSKYvl),因此需要对target进行区分。可以采用汇编參数进行target的区分,如-cpu =ck800 代表 target 是 CK800、-cpu = ck610 代表 target 是 CK610。混编指令集包括CK800的32位指令和16位指令两套指令集,在汇编过程中需要对特殊的指令进行区分。理论上可以在编写汇编语言时通过(.32或.16)前缀进行区分(此方案不予采用)。混编过程中需要对如下情况的指令进行区分同名不同參(名称相同,參数个数不同);同名同參(名称相同,參数个数相同,意思相同);指令功能可选(jbsr);另外,在指令优化时,如遇到32位立即数加法指令addi rz, rx, imml6,如果rz =rx时会优化成16位立即数加法指令,指令优化会涉及到relax的处理。2.汇编器如何完成整个汇编工作汇编器从命令行參数指定的源代码文件中读取源文件,解析到汇编器建立的fixup (或称fix,是relax技术相关数据结构之一)和frag (relax技术相关数据结构之一)结果中,对源文件只执行一遍扫描,具体流程如附图I。3.如何处理汇编语言中的宏指令注本章讲述的伪指令处理方式实际也是宏指令的处理方式。这写指令不属于CSKYv2指令集,但是对于生成一个正确的程序是相当有用的,所以也是我们的汇编器的重要功能。汇编器支持非常多的伪指令,例如macro、if、rept、struct、include等,这些伪指令对于汇编器处理能力的扩充十分重要,且可以减少编程的工作量。从前面列出的伪指令可以看出汇编器支持宏汇编,条件汇编,以及循环、结构和文件包含等重要功能。伪指令的数据结构如下struct pseudotype{
const char *poc_/* 伪指令的名字 */
void (*poc_hand I er) (
nt) ; /* 伪指令的处理函数 */int poc_va I ;/*传递给伪指令处理函数的参数*/
typedef struct pseudotype pseudotypeS;
根据伪指令的数据结构可以定义CK800的伪指令表,如下
const pseudotypeS md_pseudo_tabIe[]= {
{ "Irw",csky_lrw,0 },
{ "rsub I, csky_rsbi,0 },
{ "neg",csky_neg,0 },
};伪指令初始化完毕后,在读取(read_a_source_file)汇编源文件时需要先识别一条指令是否为伪指令,如果是伪指令则调用相应的函数进行处理,下面介绍伪指令的识别与处理过程,如附图2。4.分支跳转指令的处理方法汇编器的整个汇编过程可以分为一遍扫描和剰余信息处理两部分,后者对分支条转指令的处理最为关键。非分支跳转指令也可以利用如下所述的技术进行操作,但一般这样是过于繁琐的。所以,下面所述的方法针对分支跳转指令。一遍扫描主要是根据不同的指令分类生成不同的fix信息,这些信息都是在输出目标文件时进行处理。下面介绍fix信息的生成过程。根据指令的相关属性把CK800的分支跳转指令和伪指令(斜体)分成如附图3。根据指令分类生成fix或relax信息由于LJ、JL指令分类的fix信息生成方式已经包含了 BL、BK、BJ、BR、BE、BZ、MI指令分类的fix信息生成方式,因此这里以LJ指令分类为例介绍fix信息的生成流程,如附图4。JC JU指令分类的relax信息生成流程,如图5。C.处理一般剰余信息处理剰余信息处理主要负责目标文件输出涉及的一些信息处理,如relax和fix。图6可以看到汇编后端的工作流程(write_object_file)。处理fix信息,如图7生成重定位信息,如图86. 一般指令的处理方式这里的一般指令即CSKYv2指令集中除了分支跳转指令的其他指令。与分支跳转指令相比,他们的特点是几乎不需要经过第二阶段的剰余信息处理。为了处理这写指令,我们先要对这写指令进行分类。根据多种因素的考虑,我们采用如下的分类方式。CSKY V2的32位指令集总体遵循三种指令编码方式,每种编码方式都有自己特有的操数寻址模式,分别为跳转类型编码指令寻址方式、立即数类型编码指令寻址方式、寄存器类型编码指令寻址方式。具体32指令分类如下
类名指令类型格式掩码类型说明
00bkpt、doze、 无操作数OXFFFF
jmplr、 rfi、 FFFF
stop、 sync、 wait、 we、 cIrc、 rts、 setc
BR br, bsr0x7C00 ^丨由当前程序PC加
:” {0000 上左移1位的26位相对
::偏移量有符号扩展到32
位后的值得到。
OPSR psrclr、0x7FFF psrclr #imm5
psrsetFFEO
01一 1 mfhi、mflo、0x7C1F mfhi rz
mvc、 mvcvFFFF
01 一2 mthi、mtIo、 賈一一濯一—…麗—百一:''i'「一'飞丨' 0x7FE0 mthi rx
1、、..................... I .
jmp、 jsr、 tstle、
tstlt& tstne
LJ jmpi、jsri*;;;0x7FFF jmpi label
—P—..................................................................____ 0000 程序跳转到label所在
j * η H. j I} - ' V *的位置,I abe I 由存储
in “f…T….器加载得到。存储器地
LJ=::ニ:址根据PC加上左移两位
的16位相对偏移量有 符号扩展到32位后, 再经最低两位强制清
1.基于C-SKYv2指令集的二进制工具集设计方法,包括汇编器设计和反汇编器设计,其特征在于,所述汇编器设计包括CSKY系列CPU的目标体系识别、
CSKYv2指令集汇编文件的识别和处理、以及正确生成目标文件;
所述CSKYv2指令集包括伪指令、一般指令和分支跳转指令;
所述CSKYv2指令集汇编文件的识别和处理步骤为读取汇编源文件,当扫描到标号时调用colon函数处理标号,当扫描到伪指令时调用相应的伪指令处理函数,当扫描到宏指令时调用对应的宏指令处理函数,当扫描到机器指令时调用mcLassemble函数进行汇编处理;最后调用若干第二阶段的处理函数处理剩余信息;
所述伪指令的处理包括如下步骤
(1)查询伪指令表,调用相应处理函数;
(2)若是CSKYv2指令集特有的伪指令,则进行识别转化,根据不同指令以及该汇编语句的具体写法,将这条伪指令转化为一般指令或跳转指令,继续处理;
所述md_assemble函数的处理包括如下步骤
(11)将CSKYV2的32位指令按以下三种类型对进行分类,跳转类型编码指令寻址方式、立即数类型编码指令寻址方式和寄存器类型编码指令寻址方式,将CSKY V2的16位指令按跳转类型、立即数类型和寄存器类型进行分类;
(12)匹配待处理的汇编文本,解析该段文本所对应的指令,获取该指令的处理函数组;
(13)根据该指令的操作数选择合适的处理函数;
(14)进入不同种类的指令的处理函数即一般指令或跳转指令急需处理;
(15)若指令中包含常量,将该常量放入常量池;所述一般指令的处理包括如下步骤
(16)解析操作数,若操作数不能解析则生成具有相应重定位信息的修补信息;
(17)生成新的目标文件片段,写入操作码和操作数;
所述分支跳转指令的处理包括如下步骤
(18)解析操作数,若操作数不能解析则生成具有相应重定位信息的修补信息;
(19)生成新的目标文件片段,写入操作码和操作数的初始值;
(20)进入汇编第二阶段,利用relax方式处理重定位信息和修补信息;
所述relax方式的处理包括如下步骤
(21)将CSKYv2中的伪跳转指令和分支跳转指令归纳,分成不同的组,生成数据表;
(22)根据该数据表,从同组指令中,选择合适的一条指令;
(23)解析修补信息,得到修补后的值;若修补信息不能解析,则作为重定位信息项写入目标文件,修补后的值规定为0 ;
(24)将选定的指令编码,和修补后的值,写入目标文件;
所述常量池的处理包括如下步骤
(25)在md_assemble函数的末尾检查常量池;
(26)如果常量池大小为0,则创建新的变量池;如果不为0则在常量池查找表达式,创建对常量池的引用;如果不能找到,则在常量池中创建新的一项。
2.根据权利要求I所述的基于C-SKYv2指令集的二进制工具集设计方法,其特征在于,所述反汇编器设计包括如下步骤判断文件类型、解析数据、反汇编CSKY v2指令;所述反汇编CSKY v2指令的处理包括如下步骤 (27)根据CSKYv2指令编码表编制二进制“先大类后小类“的查询方案;(28)根据该查询方案进行查询,找到反汇编处理信息,进行反汇编格式化打印;(29)编译该反汇编器时需要打开跳转表优化。
本发明公开了基于C-SKYv2指令集的二进制工具集设计方法,包括汇编器设计和反汇编器设计,所述汇编器设计包括CSKY系列CPU的目标体系识别、CSKYv2指令集汇编文件的识别和处理、以及正确生成目标文件;通过重新设计汇编器和反汇编器,使其能在杭州中天微公司CSKY800系列嵌入式处理器工作。
文档编号G06F9/30GKSQ
公开日日 申请日期日 优先权日日
发明者吴健, 吴朝晖, 尹建伟, 尹茸, 李莹, 邓水光 申请人:浙江大学指令机器码
在电子工程世界为您找到如下关于“指令机器码”的新闻
指令机器码资料下载
机器码?答:&机器码是只包含二进制数 (0彧1)的指令,亦是计算机唯一能够理解的语言。每计算机系统均有独立机器指令,但基本的格式相同。分为两部份:操作码和操作数。操作码&操作数11.&说出一个8位机器指令最多可做多少项不同的工作及最多可有多少个数据地址?12答:&一个8位机器指令应有下列的结构:答1212. &甚么是汇编语言?试列举例子?答:&nbsp...
AVR机器码和汇编指令AVR机器码和汇编指令...
单片机应用编程技巧100问1.C语言和汇编语言在开发单片机时各有哪些优缺点?答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。对于目前普遍使用的...
机器码指令格式,分析二进制指令确定intel指令长度...
单片机应用技巧百问百答单片机应用编程技巧 100 问 1.C 语言和汇编语言在开发单片机时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码 的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的 CPU, 其汇编语言可能有所差异,所以不易移植。 C 语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使...
单片机应用编程技巧
单片机应用编程技巧
文章来自:电子工程专辑
1. C语言和汇编语言在开发单片机时各有哪些优缺点?答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行...
汇编指令与机器码对照表,学习汇编和反汇编时很可能会用到...
1.C语言和汇编语言在开发单片机时各有哪些优缺点?答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。对于目前普遍使用的RISC架构的...
Z80指令机器码对照表...
51单片机指令小计,汇编代码 机器码1 机器码2...
指令机器码相关帖子
1、指令的格式
我们已知,要让计算机做事,就得给计算机以指令,并且我们已知,计算机很“笨”,只能懂得数字,如前面我们写进机器的75H,90H,00H等等,所以指令的第一种格式就是机器码格式,也说是数字的形式。但这种形式实在是为难我们人了,太难记了,于是有另一种格式,助记符格式,如MOV P1,#0FFH,这样就好记了。 这两种格式之间的关系呢,我们不难理解,本质上它们完全等价...
;&● 指令执行时间为 1~4 个时钟周期,执行性能优于标准 8051 微控制器 8 倍左右
& &&&● 用户可选择定时器/计数器、串行接口单元的数量
& &&&● 新增了特殊功能寄存器用于选择不同的定时器/计数器、串行接口单元
& &&&● 可选择是否使用乘法器...
判断一下。而要跳转的位置的指令需要在PC更新之后的下一拍才能够被读入opr,这就是转移指令比普通指令要多花一个时钟周期的原因(这个CPU是两级流水线)。
写测试程序了,没有编译器,汇编程序都得自己写呢。先就手写机器码吧
module coderom(addr, data);
input [9:0]
output reg [7:0]
always @(addr...
形式表达,到最后成为汇编。
我的意思是只做一层或二层的编译,产生的代码其本就是BIN文件。但又不是CPU机器码。单片机读取后,不用做认别的工作,直接读二进制指令工作。而不是读文体再识别。这个二进制指令,不是指CPU的机器码,而是解译器内部定义的。
对了,可能跟你说的tcc的思路有点像。
你说的tcc,是怎么搞的?
[quote][size=2][url=forum.php?mod...
位置开始存放中断向量, 所以单片机程序一般开头就是:
& &ORG 0000H
& &AJMP MAIN
& &ORG 0030H
这里的ORG 0000H指令,使得程序链接成HEX文件时,AJMP MAIN这条指令的机器码就在HEX文件的0x0位置。这是链接器的工作。 至于x86 dos和win32 exe,ORG的实现就...
6.2.3 取指执行周期 166
6.2.4 嵌入式处理器的寄存器分配 166
6.2.5 基本指令集 167
6.2.6 结构级还是行为级 168
6.2.7 机器码指令集 168
6.2.8 微处理器的结构单元 169
6.2.9 处理器函数包 169
6.2.10 程序计数器 170
6.2.11 指令寄存器 171
6.2.12 算术逻辑单元 172...
函数调用方式改成类似C语言的
& &B&&以PC指针作为相对寻址,类似 goto,不需要用到栈,速度快,所以可能某些代码被-O3方式优化成& &B&&指令
& &BL 将当前PC指针保存到 LR寄存器,压栈SP指针,运行函数代码,需要用到栈
找不到明显的读ID指令也是可以破解的,方法就是仿真跟踪,仿真跟踪前需要反汇编,THUMB2的文档中每条指令生成的机器码有详细的说明,随便都可以找个做上位机的写个自动反汇编工具,之后再人工修改下就可以了,其实还有一种更简单的方法,就是将机器码定义成DCI XXXXH这样的格式,导入KEIL编译能通过,然后仿真,KEIL会自动的帮你反汇编,接下来就是单步执行,延时类函数跳过,这时候要密切注视R0到...
(“HelloWorld”);是一个很简单的程序。
现在转身,发现有好多的东西,都在它自身的背后隐藏着。
C 是我认识的第一门语言。编程,个人理解语言并不重要,而是第一门语言,如何培养一个思维方式,将问题转化为计算机所能执行的指令。
编程是一种思维方式,而代码只是一种表现形式。
现在的我,不得不对人类的智慧感到敬畏,如此复杂的程序,被转变成机器用的机器码,给CPU执行。而CPU所能执行的指令也是...
,当年的条件没有电脑,汇编只能手工在纸上编译为机器码,再一条条键入板子运行....再麻烦的是修改指令后的跳转偏移量计算,所以这个板买来也就照着无线电上的例子程序做了几个简单的实验就搁置了(前几天还看到板子还在)!
也就是在同期pic单片机进入中国, PIC16C54这个小小的芯片很了不起呵,是真正的单片机了,但还是没条件使用! 直到94年单位要上一个项目,花1200多大洋买了个PIC编程器(插在...
指令机器码视频
指令机器码创意
你可能感兴趣的标签
热门资源推荐

我要回帖

更多关于 cpu机器码 的文章

 

随机推荐