问题标签 [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.
erlang - Erlang 操作码及其含义
Erlang VM 使用的一些操作码具有明显的含义,但其他一些则是神秘的,它们之间似乎存在细微差别。
举个例子:
call_ext
和操作码有什么区别call_ext_only
?allocate
和操作码有什么区别allocate_zero
?- 操作码是做什么
test_heap
用的?是某种检查还是实际上在堆中分配了一些空间?它在某种程度上与元组和列表的使用有关,但在哪些方面呢? - 代表的论点是什么
allocate
?
如果有人可以向我指出任何可用于 Erlang VM 使用的操作码的文档,或者他至少可以在上述几点上启发我,我将不胜感激。
c++ - C ++将字节转换为操作码?
我不知道如何表达这个问题,但是我很想知道汇编程序和其他工具如何显示某些字节的操作码?
c++ - x86 EXE 中是否有分配 winapi 调用?
在 C++ 编译的 EXE 中如何处理分配?如果您没有代码,分配管理器是否已融入应用程序,从而无法跟踪分配/取消分配?或者是否有 WinAPI 调用或类似的内存分配?
java - 使用 ASM4 在运行时读取类文件的操作码
有没有人有任何文件,可以向我展示 ASM 框架的端到端实现以显示类文件的操作码?或者有没有人帮我打招呼,世界!ASM 框架实现的程序示例?我想在 ASM 框架的帮助下显示任何类文件的操作码,就像我们使用 JAVAP 命令一样。
string - 如何将 ASM 代码(操作码)转换为字符串
如何在 PHP 中将汇编代码转换为这样的字符串:
我猜这是用 HEX 编写的 asm 代码的操作码。但如果是这样,我怎样才能转换像这些字符串这样的 asm 代码?
c# - .NET 中用于 Windows 应用商店应用 API 的 Emit.OpCodes 的用途?
我正在考虑将第三方库移植到.NET for Windows Store 应用程序。该库通过调用ILGenerator.Emit方法重载来过度使用System.Reflection.Emit.OpCodes 。
在.NET for Windows Store Apps API 中,包含OpCode
结构和OpCodes
类,但没有ILGenerator
类,据我所知也没有替代品。
我显然遗漏了一些东西,但是:没有这个类,在.NET for Windows Store 应用程序APIILGenerator
中包含的目的是什么?System.Reflection.Emit.OpCode
OpCodes
c++ - 获取可变长度操作码和 CPU 时序
我目前正在尝试用 C++ 编写一个 NES 模拟器作为暑期编程项目,为下一学年的秋季学期做好准备(我有一段时间没有编码了)。我已经编写了一个 Chip8 模拟器,所以我想下一步是尝试编写一个 NES 模拟器。
无论如何,我被卡住了。我正在将此网站用于我的操作码表,但遇到了障碍。在 Chip8 上,所有操作码都是两个字节长,因此很容易获取。但是,NES 似乎有 2 个或 3 个字节的操作码,具体取决于 CPU 所处的寻址模式。我想不出任何简单的方法来确定每个操作码需要读取多少字节(我唯一的想法是创建非常长的 if 语句来检查操作码的第一个字节以查看要读取的字节数)。
我也很难弄清楚如何计算周期。如何在编程语言中创建时钟以使一切同步?
在不相关的旁注中,由于 NES 是 little-endian,我是否需要读取 programCounter + 1 然后读取 programCounter 以获得正确的操作码?
php - PHP操作码指令说明
我找到了 PHP 操作码列表,这有助于我了解 PHP 的内部结构。但是我仍然无法准确理解用于在此页面上显示所有操作码信息的方案。例如,查看PHP 操作码部分下的此处。我已经想出了一个“!” 表示变量,“->”表示代码行,“~”表示“用于内部计算结果的内存”,例如echo 2 + 3
必须先计算 2 + 3,因此结果将被临时存储。
我非常感谢对操作码解释中使用的字符以及“fetch”和“ext”列的含义的详细解释。此外,数字 116-131 和 137 没有操作码。这有意义吗?
c# - 调用刚刚创建的方法。计算最大堆栈值时出错
所以我最近在玩 DNLIB,我试图向 .net 文件添加方法。我从以前编译的文件中获得了方法,所以基本上,我试图模仿该方法。
有 3 种方法:GetTheTypes、InvokeIt 和 InvokeCall。
首先,我必须创建方法 GetTheTypes 和 InvokeIt,因为 InvokeCall 调用 GetTheTypes 方法和 InvokeIt 方法。所以我添加了这些方法,它们被完美地添加了。它编译并保存,我能够在反射器/ILSpy 中毫无问题地看到它们。注意:当我添加方法时,我会检查它们是静态的还是非静态的,所以这不是问题。它们也是公共方法。
然后,我想添加 InvokeCall 方法。所以我对其他方法做了同样的事情,打开我想要在 ILSpy 中模仿的方法,然后基本上将所有指令和局部变量复制到一个新的 CilBody 中,这些 CilBody 添加到我正在模仿的 InvokeCall 方法中。唯一的问题是它抛出了一个错误,说"Error Calculating Max Stack Value"。奇怪的是,如果我将 OPCode 从 Call 更改为 NewObj,它编译得很好。但这不是我想做的。我想做的会引发上述错误。
这是我用来添加指令的代码:
_getThetypesMethod变量被定义为MethodDefUser并包含我之前创建并编译得很好的方法。我也试过这个:
那也没有用。我也尝试获取该方法的DeclaringType,然后找到这样的方法:
那也没有用。
因此,如果有人对如何调用刚刚创建的方法有任何建议,请告诉我。我一直试图找出如何解决这个问题的最后一天左右,没有占上风。谢谢。
c - 一个shellcode例子的理解
在 shellcode 教程中,我看到了以下示例:
这个想法是创建一个 exit()-系统调用。所以,然后他们生产程序集:
我明白这一点。0 是我们存储在 ebx 中的 exit() 的参数,1 是退出系统调用的编号,使用 0x80 我们将 CPU 更改为内核模式并执行系统调用。
之后,他们让生成的操作码是:
然后,他们将其翻译成 C 语言,如下所示:
所以,我的理解是他们将操作码放在一个 char 数组中,但我不明白他们在 main() 方法中做了什么。第一行没问题。但是他们想用第 2 行和第 3 行来表达什么?
此致,