问题标签 [opcodes]

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.

0 投票
1 回答
592 浏览

lua - 普通操作码和带有 MSB 集的操作码有什么区别?

普通操作码和设置了 MSB(最高有效位)的操作码有什么区别?

例子:

第一个操作码 (0x5E/1011110) 设置了 MSB,而第二个操作码 (0x1E/0011110) 没有。

编辑:将“字节”更正为“位”,呵呵。

0 投票
2 回答
1913 浏览

assembly - 将 i386 操作码解码为指令

我正在尝试是否有任何好的资源可用于学习i386 操作码的“解码” ?大多数网站都在讨论如何对指令进行编码,但我在任何地方都找不到关于如何将操作码解码为指令的内容。

我查看了一些反汇编程序的源代码,但我想要一些关于如何将操作码解码为指令的文档。

谢谢和问候,
Hrishikesh Murali

0 投票
5 回答
1990 浏览

assembly - 为什么多个指令具有相同的操作码并且可以工作?

我正在查看指令及其相应的操作码。“je”和“jz”等指令的操作码相同:

为什么我们有这样多余的指令?

是因为它使汇编编码更容易吗?也就是说,在某些情况下更容易理解“相等时跳转”,而在其他情况下更容易理解“在零上跳转”。但是这些天我们并没有真正在汇编中编码,所以它有帮助吗?

0 投票
2 回答
9786 浏览

assembly - 是否有用于将立即字节移动到直接内存位置(不使用寄存器)的 x86 操作码?

有没有办法将特定的立即字节大小数字“移动”到直接内存位置?IE

将值16写入内存地址65535?如果是这样,那是哪个操作码,还是我必须先将内存地址存储到寄存器中?

0 投票
4 回答
3182 浏览

fetch - Z80内存刷新寄存器

我再次提出另一个无害的 Z80 问题 :-) 我的仿真器内核当前的结构方式,每次从内存中获取操作码字节时,我都会递增内存刷新寄存器的低 7 位 - 这意味着多字节指令,例如作为开始 DD 或 FD 的那些,我将寄存器增加两次 - 或者在 RLC (IX+d) 等指令的实例中增加三次(因为它的布局是 opcode1-opcode2-d-opcode3)。

它是否正确?我不确定 - Z80 手册对此有点不清楚,因为它说 CPDR(一个两字节指令)将其递增两次,但是“内存刷新寄存器”部分仅表示它在每次指令获取后递增。我注意到 J80(我检查过的一个模拟器,因为我不确定)只在指令的第一个操作码字节之后递增。

哪个是对的?我想这在任何情况下都不是很重要,但很高兴知道:-) 非常感谢。

问候,菲尔·波特

0 投票
1 回答
749 浏览

c# - “Calli”一词的语义推断或含义是什么?

我在代码中的各个地方都看到了这个术语,例如在图形编程示例中。它似乎是 C++ 语义,但显然有一个名为EmitCalli的 C# / .NET 托管实现,它似乎与OpCodes.Calli相关。我认为这是机器语言指令。对这个术语有没有某种接近外行术语的解释?

0 投票
1 回答
1099 浏览

c# - 使用 C# OpCodes 发出返回对象的方法

我正在创建一个动态类型,它有一个我想返回一个对象的方法。我无法理解如何实现这一目标。这是我到目前为止所拥有的:

我相信,如果我正确阅读了 msdn,我需要在堆栈上获取 myObjectIdLikeToReturn 的引用——但是我没有运气。谁能指出我正确的方向?

编辑:为了更清楚。我正在尝试在 IL 中编写等效项:

0 投票
1 回答
1756 浏览

c - Zilog Z80 OP-Code 实现

我目前正在为老式的 GameBoy 开发一个模拟器,但我在理解一些基本操作代码必须如何实现时遇到了一些问题。

现在我正在实施 AND 操作;前几个(0xA0 -> 0xA3;0xA6 和 0xA7)非常简单,但寄存器 H、L 的 AND 操作有点不同。

您可以在此链接下下载 z80 的文档: um0080.pdf(第 172 页)

这里有一些例子来说明我的意思(使用伪代码)以及我所做的基本上是什么:

AND A,H(注意位移)

AND A,L(注意位掩码)

我知道所有的位操作,也知道它们的作用,但似乎我无法弄清楚为什么需要这样做。我有一些理论(如果我错了,请纠正我:-)):

我已经了解的是,寄存器 H 和 L 基本上是寄存器 HL,它是一个 16 位寄存器。由于 CPU/Bus 只能处理 8-Bit 操作,所以需要拆分;或更逻辑的建议:由于它只有一个寄存器,因此 H 和 L 的值在寄存器中被屏蔽,它们只需要彼此分开(高/低半字节?)。

如果有人能让我更清楚这一点,我将不胜感激,因为我只想拥有更多的背景知识(所有这些东西在内部是​​如何工作的),所以我知道自己在做什么对我来说非常重要。

0 投票
2 回答
898 浏览

assembly - 来自 FS (MASM) 的 LODS

我希望使用 LODS 操作码将双字节从 FS 加载到 eax。与 LODS 一起使用的默认段是 DS,我希望用 FS 覆盖它。如何使用 MASM 操作码来做到这一点?

来自这里http://www.ragestorm.net/blogs/?p=369

非常感谢,迈克尔·恩斯特勒

0 投票
3 回答
54740 浏览

assembly - 将非常简单的 ARM 指令转换为二进制/十六进制

我一直在尝试使用此页面以及其他各种指南来弄清楚如何将非常简单的 ARM 指令表示为二进制和十六进制。对我来说这似乎应该是一个简单的过程,但我仍然不明白。这里有几个例子。

基本 NOP:

其他人的基本问题相同。

比较两个寄存器:

添加立即数到寄存器值:

所有这些在线教程都很好地描述了如何使用这些指令,但没有一个我能够真正找到如何将 ARM 指令转换为二进制/十六进制/机器代码的方法。

在此先感谢您的帮助。