两套指令,同一个结果

运行下面这段程序,填写它打印出来的结果。 def seq_a(x): x = x + x x = x + x return x & 255 def seq_b(x): return (x * 4)

开始练习 →

条数不同,字节数也不同

运行下面这段程序,填写它打印出来的结果。 a_count, a_each = 2, 4 b_count, b_each = 1, 4 print(str(a_count) + "/" + str(b_count) + &

开始练习 →

把一个表达式编成指令序列

把 (a + b) * 2 编成本机指令序列。本机没有乘法指令,乘 2 只能用加法做。

开始练习 →

换一套合同,重编一次

换到一个有乘法指令的指令集上,重编同一个表达式。把两套的指令条数和结果都打出来。

开始练习 →

两套编译结果对一遍账

用四组输入,检查「没有乘法」和「有乘法」两套编译出来的结果是不是永远一致。

开始练习 →

三家在指令长度上的区别

x86 的指令是变长的,ARM 和 RISC-V 的主体指令是定长的。这个差别带来的是【0】。

开始练习 →

RISC-V 最特别的地方

RISC-V 和 x86、ARM 最不一样的一点是【0】。

开始练习 →

同一段程序,三种编码各占多少字节

运行下面这段程序,填写它打印出来的结果。 progs = [("定长四字节", 5, 4), ("定长两字节", 5, 2)] for name, n, each in progs: prin

开始练习 →

定长下,地址一算就出来

运行下面这段程序,填写它打印出来的结果。 for i in range(5): print(i * 4, end="/")

开始练习 →

自己写:定长下的地址表

每条指令 4 字节,算出前 5 条各自的起始地址。

开始练习 →