From Nand To Tetris 从与非门到俄罗斯方块

40、P1 W6 U6.3 翻译A、C指令

2019-09-27  本文已影响0人  shazizm

视频:
如果本次课程对应的 Coursera 的视频打不开,可以点击下面链接
P1W6U6.3 -The Assembly Process-Handling Instruction

这节具体讲 A指令 和 C指令。符号(Symbols)推后再讲。

翻译 A 指令

如果不考虑符号的话( 例如 @Var,之后再讲 ),A指令就剩 @常数 这种情况。

常数转成对应的 二进制,左边补零填满15位。
然后最左边一位(如下图红色)设置0。

指令最左边为0,代表是A指令。1则为C指令

翻译 C 指令

例如 MD = D + 1 ,如下图(给出了comp示意,dest和jump以此类推)

D + 1 是 comp :对应下图comp表,0011111
MD 是 dest:对应下图dest表,011
没有jump:对应下图jump表,000

A指令 左边前三 都是 “111”,最后结果111 0011111 011 000

翻译流程

把左边汇编程序:

一行一行翻译
把每行指令分成一块一块
如果是A指令,按A指令翻译
如果是C指令,按C指令翻译
然后组合每一块成一个16位机器语言
最后输出一行行16位机器语言二进制文件

无符号的汇编程序翻译流程

关于 带符号 的汇编程序 如何处理,后面课程会提到。

上一篇下一篇

猜你喜欢

热点阅读