首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想知道在计算机系统中如何计算给定虚拟机命令的跳转指令

我想知道在计算机系统中如何计算给定虚拟机命令的跳转指令
EN

Stack Overflow用户
提问于 2020-09-16 20:55:45
回答 1查看 123关注 0票数 0

我正在学习Hack汇编语言和跳转指令。谁能给我详细的解释,你如何计算一个给定的虚拟机代码的跳转指令。如果我有虚拟机命令,例如,push constant 0,我想知道如何找到跳转指令。

请给我详细的解释,这样我才能学习!

示例:虚拟机命令为'push constant 0‘。

如何从该命令转到以下编写的跳转指令:

代码语言:javascript
复制
@SP

A = M

M = 0

@SP

M=M+1

上面的跳转指令只是一个例子,而不是答案。

EN

回答 1

Stack Overflow用户

发布于 2020-09-17 00:54:29

跳转是用C型指令编码的。

C类型指令具有以下编码:

代码语言:javascript
复制
size (in bits):     1    2     7      3      3
                 +-----+----+------+------+------+
field            | A/C | XX | comp | dest | jump |
                 +-----+----+------+------+------+

为了区分A型和C型,对于A型,A/C0,对于C型,A/C1

如果C型指令的jump字段具有二进制值000,则不编码跳转。

否则,jump字段中的任何其他二进制值编码某种类型的分支。如果分支的条件为真,它将把控制转移到A寄存器中的值(有效地执行pc := A),因此,通常在分支指令之前有@指令,以便用标签的地址加载A寄存器,但也可以采用其他方法。如果分支的条件为假,则它将简单地前进到下一连续指令(pc := pc + 1而不是pc := A)。

参见下面的演示文稿:https://www.coursera.org/lecture/nand2tetris2/unit-0-4-hack-language-specification-MXyAQ,时间7:57,获取C型指令编码表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63920539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档