实例介绍
将源码写入mycode.txt中,放在文件夹“汇编exe”下,双击assembler.exe,再双击bin2hex.exe。 得到的instruct.txt是二进制机器码,new_inst.txt是十六进制机器码,可在quartus下直接复制入mif中。 若new_inst.txt中有空行,说明代码不符合如下要求,这时请打开instruct.txt查看错误原因。 对于mycode.txt的书写有以下要求: 1 标号语句单独成行 2 一行只写一条语句 3 只支持“#”形式的注释,注释能出现在行尾也能单独成行 4 间隔符支持空格和制表符两种形式 5 除nop外,不支持伪码;浮点指令只支持lwc1,add.s,sub.s三条指令,如有其它代码还请自行译码。 6 不支持十六进制表示立即数 7 不保证能够查出语句的语法错误 8 汇编流程:(1) mycode.txt经Analyze得ir_txt //预编译阶段,去掉tab字符和注释 (2) ir_txt经Main.cpp的assembler得instruct.txt,由MIPS汇编文件得二进制代码文件 (3) instruct.txt与manual.txt经Check.cpp比较判断汇编结果是否正确,其中manual.txt为人工汇编结果文件, 若需要运行此步,去掉Main.cpp中main函数对check()的注释即可,此时需提供manual.txt文件。
【实例截图】
【核心代码】
4744302543320382124.zip
├── assembler
│ ├── Analyze.cpp
│ ├── assembler.cpp
│ ├── assembler.dsp
│ ├── assembler.dsw
│ ├── assembler.h
│ ├── assembler.ncb
│ ├── assembler.opt
│ ├── assembler.plg
│ ├── assembler.sln
│ ├── assembler.suo
│ ├── assembler.vcproj
│ ├── assembler.vcproj.cc-PC.cc.user
│ ├── assembler.vcproj.nq-PC.nq.user
│ ├── Break.cpp
│ ├── B_type_1reg.cpp
│ ├── B_type_2reg.cpp
│ ├── Check.cpp
│ ├── check.h
│ ├── code.txt
│ ├── Debug
│ │ ├── Analyze.obj
│ │ ├── assembler.exe
│ │ ├── assembler.exe.embed.manifest
│ │ ├── assembler.exe.embed.manifest.res
│ │ ├── assembler.exe.intermediate.manifest
│ │ ├── assembler.ilk
│ │ ├── assembler.pdb
│ │ ├── beq.obj
│ │ ├── Break.obj
│ │ ├── B_type_1reg.obj
│ │ ├── B_type_2reg.obj
│ │ ├── BuildLog.htm
│ │ ├── Check.obj
│ │ ├── Get_imm_5bit.obj
│ │ ├── Get_imm.obj
│ │ ├── Get_ir_name.obj
│ │ ├── Get_ir_serial.obj
│ │ ├── Get_label_locate.obj
│ │ ├── Get_reg_value.obj
│ │ ├── I_type_1reg.obj
│ │ ├── I_type_2reg.obj
│ │ ├── I_type.obj
│ │ ├── jr.obj
│ │ ├── J_type.obj
│ │ ├── Label_count.obj
│ │ ├── lw_sw.obj
│ │ ├── Main.obj
│ │ ├── mt.dep
│ │ ├── Offset_type.obj
│ │ ├── Print_label.obj
│ │ ├── R_type_1reg.obj
│ │ ├── R_type_2reg.obj
│ │ ├── R_type.obj
│ │ ├── vc60.idb
│ │ ├── vc60.pdb
│ │ ├── vc90.idb
│ │ └── vc90.pdb
│ ├── Get_imm_5bit.cpp
│ ├── Get_imm.cpp
│ ├── Get_ir_name.cpp
│ ├── Get_ir_serial.cpp
│ ├── Get_label_locate.cpp
│ ├── Get_reg_value.cpp
│ ├── Get_reg_value.h
│ ├── instruct.txt
│ ├── Ir_define.h
│ ├── ir.h
│ ├── ir.txt
│ ├── I_type_1reg.cpp
│ ├── I_type_2reg.cpp
│ ├── jr.cpp
│ ├── J_type.cpp
│ ├── Label_count.cpp
│ ├── label_count.h
│ ├── label.h
│ ├── Main.cpp
│ ├── manual.txt
│ ├── mycode.txt
│ ├── Offset_type.cpp
│ ├── Print_label.cpp
│ ├── reg.txt
│ ├── Release
│ │ ├── Analyze.obj
│ │ ├── assembler.exe
│ │ ├── assembler.exe.intermediate.manifest
│ │ ├── B_type_1reg.obj
│ │ ├── B_type_2reg.obj
│ │ ├── BuildLog.htm
│ │ ├── Check.obj
│ │ ├── Get_imm_5bit.obj
│ │ ├── Get_imm.obj
│ │ ├── Get_ir_name.obj
│ │ ├── Get_ir_serial.obj
│ │ ├── Get_label_locate.obj
│ │ ├── Get_reg_value.obj
│ │ ├── ir.txt
│ │ ├── I_type_1reg.obj
│ │ ├── I_type_2reg.obj
│ │ ├── J_type.obj
│ │ ├── Label_count.obj
│ │ ├── Main.obj
│ │ ├── mt.dep
│ │ ├── Offset_type.obj
│ │ ├── Print_label.obj
│ │ ├── R_type_1reg.obj
│ │ ├── R_type_2reg.obj
│ │ ├── R_type.obj
│ │ └── vc90.idb
│ ├── R_type_1reg.cpp
│ ├── R_type_2reg.cpp
│ └── R_type.cpp
└── readme.txt
3 directories, 110 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论