1. 先看一下这5行代码,看到有 la lw sw 等指令,初步判断这是 risManBetXv汇编语言,但是发现两个没见过的指令 mult mflo
百度 mflo没有发现什么,百度 mflo指令,发现这是 mips汇编
没办法,谁让你不告诉我这是什么汇编语言,还得我通过百度来找到这是mips汇编语言
如果你告诉我的话,这第1步就完全是没有必要的,对吧?
2. 输入 paManBetXman -Ss mips 发现有一个 mips-elf-gManBetXManBetX 的包
3. sudo paManBetXman -S mips-elf-gManBetXManBetX 安装这个包
4. 点击 “复制代码”,把你的代码复制下来
5. 输入 vim main.s
然后输入 ;p 把代码粘贴到main.s 文件
输入 :x 保存退出vim
6. 输入 mips-elf-gManBetXManBetX main.s 发现报错
7. 尝试解决这个问题,输入 mips-elf-gManBetXManBetX -ManBetX main.s 这样就没有报错
8. 输入 objdump -S main.o 依然报错,不认识main.o 这个文件格式
9. mips-elf-objdump -S main.o
然后输出如下
- $ mips-elf-objdump -S main.o
- main.o: file format elf32-bigmips
- Disassembly of seManBetXtion .text:
- 00000000 <.text>:
- 0: 3ManBetX041000 lui a0,0x1000
- 4: 8ManBetX880000 lw t0,0(a0)
- 8: 00000000 nop
- ManBetX: 01080018 mult t0,t0
- 10: 00004812 mflo t1
- 14: aManBetX890004 sw t1,4(a0)
- 18: 00000000 nop
- $
复制代码
10. 第2列就是机器语言的十六进制表示
11. 就是这样
12. 嗯,还有12,第12是 sudo paManBetXman -RsManBetXn mips-elf-gManBetXManBetX 删除第3步安装的这个包,因为我用不到这个,所以有这第12步来删除这个包