问题标签 [instruction-set]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - ARM指令SWI和SVC完全一样吗?
ARM 程序集具有用于进入“主管模式”的 SWI 和 SVC 指令。
令我困惑的是,为什么有两个?据说SVC以前是SWI 。这是否意味着他们基本上改变了助记词?它们是一样的吗?我可以互换使用它们吗?它们中的一个是否存在于架构之前,而另一个存在于架构之后?
data-structures - 大于字的数据类型添加
大数据类型(双精度/浮点数)如何加载到算术运算的寄存器中?寄存器可以保存超过一个字大小的数据吗?如果只能添加 2 个寄存器来将结果加载到第三个寄存器,那么大于单个寄存器的数据类型会发生什么?
arm - 不同的 ARM 制造商是否提供不同的指令集?
我第一次接触 ARM 指令集是在 80 年代,从那以后就没有使用过。出于好奇,我查看了平板电脑和其他 ARM 设备,并注意到 CPU 是由不同的制造商生产的。
我进行了快速搜索,但找不到关于不同 ARM 芯片是否具有不同指令集的明确声明。
我会假设它们基本上是相同的。
assembly - 汇编语言指令实现
是否有一些信息源或技术草案(类似于网络的 RFC)描述了架构的特定指令(例如mov
, jmp
, je
, jle
, inc
, ...)的实现?Intel
维基百科上有一些一般性的谈话,但我想完全了解幕后发生的事情。
谢谢
mips - MIPS 向右移动(但添加 1 而不是 0)
无论如何要将寄存器值向右移动,而不是添加 0(像 srl 那样),而是添加 1。如果这是不可能的,任何其他实现相同目标的建议将不胜感激。
assembly - 任何汇编语言被认为有用所需的最低指令集是多少?
我正在学习一般的汇编编程,所以我决定尝试在软件中实现一个“虚拟微处理器”,它有寄存器、标志和 RAM 可以使用,用变量和数组实现。但是由于我只想模拟任何微处理器的最基本行为,我想创建一种只有基本指令的汇编语言,只有那些没有它就无法使用的指令。我的意思是,有些汇编语言可以进行乘法和交换寄存器值等操作,但这些操作不是基本的,因为您可以使用更简单的指令来实现它们。我不想执行这样的指令。
我可以想象一些指令(我相信)必须始终存在于任何汇编语言中,例如MOV移动字节和JP将指令指针发送到另一个地址。
你能推荐一套最基本和最基本的组装说明吗?谢谢!
architecture - 计算机体系结构作业 - 指令操作数
数字计算机有一个每字 32 位的存储单元。指令集由 150 种不同的操作组成。所有指令都有一个操作码部分(操作码)、一个寄存器操作数部分(指定 10 个不同的寄存器之一)和一个内存操作数地址部分。每条指令都存储在一个内存字中。
(d) 这台计算机的指令可以使用 (i) 两个内存操作数和 (ii) 两个寄存器操作数吗?如果可以,请说明方法;如果不能,请解释为什么不能。
我真的不确定这个问题。我认为第一部分的答案是,如果指定的寄存器包含内存地址并且指令类似于 ADD,则指令将使用两个内存操作数?还是我不明白这个问题?
至于(ii),我觉得答案一定是可以,但是不知道是怎么做到的,也不知道怎么去寻找答案。编辑:答案仅仅是可以将寄存器操作数放在指令的内存操作数部分吗?
assembly - Intel 8080 指令...“DAD”指令助记符的词源是什么?
我正在 Charles Petzold 的优秀书籍Code中了解 Intel 8080 处理器。DAD 指令被解释为它完成了什么,但我对这样的字母代码有一个奇怪的事情,我必须知道它们代表什么。例如 ADC 代表带有进位的 ADd。或 SBB 用于带借的减法。
但是爸爸呢?我知道这是一个愚蠢的问题,但我想知道是否有人知道答案。谷歌一无所获……
c# - 用 C# 编写解释器:实现指令的最佳方式?
我正在使用 C# 编写一个 PLC 语言解释器。该 PLC 语言包含 20 多种数据类型和 25 条左右的指令。一旦我开始生成代码,我就会平衡两种不同的方式来编写指令:
1) 每种指令都表示在一个类中,该类包含一个 bigswitch
以便选择数据类型。例子:
2) 每个类代表具有单一数据类型的单一指令。这种方式避免了大的switch
。例子:
我正在使用 COMMAND 设计模式 ( Exec()
) 来编写指令。我认为第二个选择更好,因为避免了大开关,但该选择涉及编写超过 400 条指令。
请始终牢记,在这种情况下,执行性能比翻译性能更重要。
所以,我的确切问题如下:有没有其他方法来分解指令和数据类型?我正在寻找在不影响性能的情况下编写较少量的指令。
编辑:
这张图片显示了我的类型层次结构:
这是 INT 类实现:
有些类更复杂(结构、数组、...)。
操作 Push 和 Pop 定义如下:
最后,在内存中进行读写操作。
我希望这些信息有所帮助。谢谢你。
assembly - 按功能划分的 x86 指令参考
我正在寻找有关 x86 指令集“演变”的参考资料。主要是,哪些较新的命令使旧命令变得多余和不可用,并且根据它们的功能而不是根据它们添加的时间/处理器来分解指令。
另外,有没有关于近年来软件开发中x86命令的使用百分比的参考资料(意思是现代程序中不再使用哪些命令)?