收官:写出一条指令的完整说明
给一条陌生指令,交出一份完整说明:格式怎么切、属于哪一类、读什么写什么、走向变不变。四段用 | 隔开。
阅读更多 →
⚠️ 同一串位,两份合同两种语义
同一串位,分别按 2+1+5 和 3+2+3 两份合同去译,各自执行一遍。⚠️ 两边都是算术指令、都不报错,结果却完全不同。
阅读更多 →
两套指令序列的等价性验收
用全部 256 个初值验一遍:「加两次 4」和「加一次 8」在这台机器上是不是永远等价。
阅读更多 →
同一条指令,换个寄存器值
同一条指令,喂两组不同的寄存器初值,看语义描述有什么不同。
阅读更多 →
自己写:语义描述器
补全 semantics:对任意一条指令,交出「读了什么 / 写了什么 / 走向变没变」。
阅读更多 →
把一条指令的语义摊开
运行下面这段程序,填写它打印出来的结果。 def decode_a(w): return (w >> 6) & 3, (w >> 5) & 1, w &
阅读更多 →
两条指令等价的判据
说两条指令序列「等价」,判据是【0】。
阅读更多 →
说清一条指令的语义要说哪几样
要把一条指令的语义讲清楚,至少得说明【0】。
阅读更多 →
⚠️ 变长指令从中间开始译
变长指令集里,如果从一条指令的中间开始译,⚠️ 译出来的照样是「合法」的指令。把正着译和错位译的结果都打出来。
阅读更多 →
算一算两种编码的密度比
同一段程序,定长要 20 字节、变长要 14 字节。算出两者的比值(保留两位小数)。
阅读更多 →