lsj1998 发表于 2022-4-11 21:36:20

将下列汇编程序段翻译成机器语言,并写出完整的翻译过程将下列汇编程序段翻译成机...

LA $a0,0x10000000
lw $t0,($a0)
mult $t0,$t0
mflo $t1
sw $t1,4($a0)

人造人 发表于 2022-4-11 22:33:16

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步来删除这个包

人造人 发表于 2022-4-11 22:54:55

嗯,不对,翻译出来的指令不对
你这是32位的mips汇编语言 ?

人造人 发表于 2022-4-11 22:59:18

嗯,应该是没问题,
lui      a0,0x1000

LA $a0,0x10000000
应该是等价的
大概

lsj1998 发表于 2022-4-12 22:42:11

人造人 发表于 2022-4-11 22:54
嗯,不对,翻译出来的指令不对
你这是32位的mips汇编语言 ?

对,32位mips汇编语言

hg870827 发表于 2022-4-13 21:49:11

人造人 发表于 2022-4-11 22:59
嗯,应该是没问题,
lui      a0,0x1000



大佬,能帮我看看我的帖子第36题么?谢谢

人造人 发表于 2022-4-14 00:49:37

hg870827 发表于 2022-4-13 21:49
大佬,能帮我看看我的帖子第36题么?谢谢

嗯,我抽时间帮你看看
今天是不行了,明天有时间的话

沮授 发表于 2022-4-14 14:57:51

人造人 发表于 2022-4-11 22:59
嗯,应该是没问题,
lui      a0,0x1000



大佬太强了
页: [1]
查看完整版本: 将下列汇编程序段翻译成机器语言,并写出完整的翻译过程将下列汇编程序段翻译成机...