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