问题标签 [opcode]

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 回答
949 浏览

opcode - 解码特定 x87 FPU 指令的歧义

关于解码 x87 FPU 指令,我面临一个模棱两可的情况。查看以下指令,取自第 2A 卷英特尔指令集手册 [1] 的第 3-380 页。

这两条指令都具有相同的单字节基本操作码0xD9。第一条指令的扩展操作码为0x00. 扩展操作码将在 ModR/M 字节的“reg”字段中指定。但第二条指令是一个 2 字节的操作码,具有“添加以获取寄存器”功能。这意味着:

关于区分这两个指令,我有一个小问题。一个小例子是:

现在,假设我得到了操作码序列"D9 C1"。如果我需要检查它是否是指令"FLD m32fp",那么我必须检查 ModR/M 字节的“reg”字段是否为 0x00。如果是这样,那么它确实是"FLD m32fp"正在使用的指令。

的二进制表示C1"1100 0001"。假设 bit0 为 LSB,则 bit3-bit5(含)构成 ModR/M 字节的“reg”字段"C1"。我们看到它确实是0x00(3 个零)。

所以我将操作码序列映射"D9 C1""FLD m32fp"指令。进一步解码,我们看到操作数实际上变成"ecx"了这种情况。但是我们看到它"FLD ST1"也有操作码序列"D9 C1",这是用于该操作码序列的实际指令。

本质上,我如何确定操作码序列"D9 C1"对应于指令"FLD ST1"而不是"FLD ecx"

指令也出现了非常相似的问题"FMUL",因为使用操作数的方式与"FLD"此处相同。

[1] http://www.intel.com/design/intarch/manuals/243191.HTM

谢谢和问候,
Hrishikesh Murali

0 投票
2 回答
2281 浏览

php - 编写 PHP 操作码并执行。怎么做?

如何编写PHP 操作码,将其保存在文件中并让 Zend 引擎执行它?任何方法或黑客都是受欢迎的,只要它能解决问题。

0 投票
2 回答
1815 浏览

assembly - 汇编语言符号操作码

我对将十六进制机器指令转换为符号操作码感到很困惑。我在本节中有一些复习问题:

我不知道如何处理这些问题,而且我似乎无法理解这些概念。有人可以用更简单的方式向我解释吗?

0 投票
2 回答
1700 浏览

.net - 在 VB.NET 的动态方法中调用方法

所以在过去的一个小时里,我一直在尝试使用 VB.NET 中的动态方法来调用调用类中的子类。

我有几件事没有运气。首先,在尝试遵循 MSDN (http://msdn.microsoft.com/en-us/library/ms228971.aspx) 中的示例时,我无法将该方法设为 Sub 并且根本不返回任何内容,因为我只想调用另一个方法。

例如。

问题是,我不希望它返回任何东西,我只希望它调用 OtherMethod() 并且我想要一种在我的代码中调用动态方法的方法(通过委托)。MSDN 根本没有真正的帮助,我找不到任何东西甚至试图解释一种方法来做我想做的事。

任何帮助是极大的赞赏。

0 投票
1 回答
1119 浏览

c - 用 ida pro 打补丁

我有这样的程序

我正在尝试修补它以用 diff 函数替换 somma 函数的调用。在 E8 79 FF FF FF 和 diff 函数有 op E8 70 FF FF FF 所以我试图做的是:用 diff 替换 somma 函数的 op。所以我的 somma op 变成了 E8 70 FF FF FF 但是当我尝试执行它时,我收到了一个分段错误。为什么?我的错误是什么?

编辑这是我工作的屏幕。 伊达亲

0 投票
1 回答
563 浏览

php - 源代码更改时Xcache无法重新加载php操作码

当 php 源代码发生更改时,Xcache 或其他 php opcode 缓存器能否自动重新加载 php opcode?

0 投票
2 回答
3097 浏览

dalvik - 带有操作数详细信息的 dalvik 操作码列表

在哪里可以找到 dalvik 操作码列表以及相应的允许操作数及其大小(8 位/16 位/32 位/62 位)

0 投票
1 回答
424 浏览

dalvik - 解析 dalvik 指令时如何解析可变长度参数?

两者都move vA, vB涉及move-wide vA, vB相同的操作和相同的操作数。除了操作码,一切都是一样的。我处于需要打印应用程序中指令使用的操作数的情况。所以当我看到move vA, vB我应该打印的指令时move va(*contents of va*), vb(*contents of vb*)
这在 4 字节寄存器的情况下工作正常。但是遇到move-wide指令时,应该打印vA的内容和下一个虚拟寄存器的内容,vB的内容和下一个虚拟寄存器的内容。
解析这些的标准方法是什么?

0 投票
1 回答
4342 浏览

java - Java 类文件上的 ACC_SUPER 访问标志的目的是什么?

invokespecialJVM 指令用于在创建新对象时调用初始化方法 ( ) <init>。该指令的描述表明(但没有澄清)关于是调用超类的构造函数还是当前类的构造函数的决定取决于文件中ACC_SUPER设置的标志的状态class

来自 Sun JVM 规范:

接下来,除非以下所有条件都为真,否则选择已解析的方法进行调用:

  • 为当前类设置了 ACC_SUPER 标志(参见表 4.1,“类访问和属性修饰符”)。

--invokespecial操作码定义)

ACC_SUPER 标志的设置指示 Java 虚拟机要表达其 invokespecial 指令的两种替代语义中的哪一种;ACC_SUPER 标志的存在是为了向后兼容 Sun 的旧编译器为 Java 编程语言编译的代码。Java 虚拟机的所有新实现都应该实现本规范中记录的 invokespecial 语义。Java 虚拟机指令集的所有新编译器都应设置 ACC_SUPER 标志。Sun 的旧编译器生成了未设置 ACC_SUPER 的 ClassFile 标志。如果已设置,Sun 的旧 Java 虚拟机实现会忽略该标志。

--来源ClassFile格式)

该定义指出该标志是为了与旧编译器向后兼容。然而,它继续与Sun's older Java virtual machine implementations ignore the flag if it is set.

该标志是否仍与invokespecial操作码一起使用?据我所知,它似乎没有任何意义,而且我找不到任何资源来暗示它曾经做过。

谢谢。

0 投票
1 回答
1602 浏览

php - 如何检查操作码缓存是否在服务器上运行?

是否可以在没有 SSH 访问服务器的情况下检查是否在服务器上安装并运行 PHP 操作码缓存?我检查了 phpinfo() 并且看不到对 APC 或 eAccelerator 的引用,但我知道还有其他操作码缓存系统,并且我不完全确定检查 phpinfo() 是否足以让我知道一种或另一种方式。