assembly 汇编指令集转换为16位数

sigwle7e  于 2023-02-04  发布在  其他
关注(0)|答案(1)|浏览(145)

下面我有一个问题,我得到了,但我正在努力找出如何去做。任何建议或帮助是非常感谢。
以下是机器的指令集:
0x 00 halt --终止程序
0x 01 nop --不执行任何操作
0x 02 li -立即加载:li R1 0x 00000000将0x 00000000加载到R1中
0x 03 lw --加载字:lw R1 R2将R2指向的内存位置的内容加载到R1
0x 04 sw --存储字:sw R1 R2将R2的内容存储到R1指向的内存位置
0x 05添加--添加:添加R3 R1 R2将R1添加到R2并将结果存储到R3
0x 06减--减:sub R3 R1 R2从R1中减去R2并将结果存储到R3
0x 07多--乘:mult R3 R1 R2将R1乘以R2并将结果存储到R3
0x 08格--除:div R3 R1 R2将R1除以R2并将结果存储到R3
0x 09 j --无条件跳转:j 0x 00000000跳转至存储器位置0x 00000000
0x 0A jr -无条件跳转(寄存器):jr R1跳转到R1中存储的存储器位置
0x 0 B beq -相等时分支:bne R1 R2 R3如果R1和R2相等,则分支到存储在R3中的存储器位置
0x 0 C bne -不相等时分支:beq R1 R2 R3如果R1和R2不相等,则分支到R3中存储的存储器位置
0x 0 D inc-增量寄存器:递增R1增量R1
0x 0 E dec --递减寄存器:递减R1递减R1
它在32位地址空间0x 0000000 - 0x 0000 FFFF中有5个寄存器和64 K内存,这5个寄存器包括3个通用寄存器(R1、R2、R3);以及两个专用寄存器,程序计数器(指令指针)寄存器(PC)和存储条件标志的条件寄存器(COND),条件标志提供关于最近执行的计算的信息,允许程序检查逻辑条件。
每条指令都以小端序编码为半字(16位)。前4位(半字节)包含指令编号,可以是0x 0到0xE之间的任何值,而第二、第三和第四个半字节(4位部分)包含寄存器编号。(注:对于像li这样的指令,指令号和寄存器号之后的8位的剩余部分包含一个8位立即数。)为指令集编写一个汇编程序,该程序接受为上述指令集编写的文本汇编程序,并将程序生成为一组16位数。基本上,任务是将汇编程序的文本编码为字节码格式。
为机器编写一个模拟器,它将接受汇编程序的输出并正确地执行它。例如,你应该能够运行下面的程序:

; a simple counter program.
li R1 0x00000000
; end
li R2 0x0000FFFF
; memory location of loop start
li R3 loop
loop:
 ; store the contents of R1 at the memory location pointed by R1
 sw R1 R1
 ; increment the counter
 inc R1
 ; loop if the counter hasn't yet reached the end
 bne R1 R2 R3
 ; end program
 halt

程序应该从0x 0000 CFFF加载到存储器的末尾,以便程序员可以使用之前的任何存储器。模拟器应该在每个周期后(执行每条指令时)记录寄存器值。
我没怎么试过,因为我从来没遇到过这样的问题。

exdqitrt

exdqitrt1#

你所看到的通常被称为位域,这有助于你把给定的数字用二进制来表示,让我们以li R3, 0x000000FF为例。
从表中可以看出,li的编码是02,在二进制中,它是0010(我使用了四位数,因为指令大小总共是16位,分为4位部分)。

opcode   register   immediate
0010     ????       ????     ????

由于我们使用的是R3,接下来的4位有自己的编码。(奇怪的是,我们没有从R0开始,但好吧。)我假设R1编码为0001R2编码为0010R3编码为0011

opcode   register   immediate
0010     0011       ????     ????

现在是立即数。0xFF的二进制值是11111111,因此我们将其放在最后8位。

opcode   register   immediate
0010     0011       1111     1111

因此,我们得到以下2个字节00100011 11111111,或者十六进制的23FF
(P.S.我假设你所说的“前四位”指的是最重要(最左边)的位。)

相关问题