问题标签 [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 回答
427 浏览

mips - 寻找一种定义反编译器规则的好方法,需要建议

我正在为 MIPS 架构开发一个非常简单的反编译器,随着我的进步,我必须为代码分析定义许多规则,例如“如果这个操作码是lui并且下一个操作码是addiu然后返回var = value ”或“如果这个操作码是bne,它指的是当前地址之前的地址 - 创建循环解析树中的定义”。问题 - 有很多这样的规则,我找不到定义它们的好方法。我尝试为每个规则编写单独的函数,定义好的 OOP 基础逻辑类并将它们扩展以创建规则,甚至尝试在 disasmed 代码上使用正则表达式(令我惊讶的是,这比预期的效果更好)但无论我尝试了什么,我的代码很快变得很大并且很难阅读,无论我尝试记录和构建的效果如何它。

这让我得出结论,我试图通过使用错误的工具来解决这个任务(更不用说对于如此复杂的任务来说太愚蠢了:)),但我不知道我应该尝试什么。目前我有两个未经测试的想法,一个是使用某种 DSL(我完全没有这方面的经验,所以我可能完全错了),另一个是编写某种类似于二进制正则表达式的工具来进行操作码匹配。

我希望有人能指出我正确的方向,谢谢。

0 投票
2 回答
768 浏览

.net - CLR 4.0 中引入了哪些操作码?

与 3.5 相比,.NET 4.0 中是否有任何新的 IL 操作码,如果有,我在哪里可以找到它们的列表?

0 投票
3 回答
2371 浏览

python - Python 没有操作码缓存器?

我目前正在使用 PHP。我计划在我的下一个项目中开始使用 Django。

但我对 Python 没有任何经验。经过一番搜索,我仍然找不到 Python 操作码缓存器。

(有很多用于 PHP 的操作码缓存器:APC、eAccelerator、Xcache...)

0 投票
1 回答
1915 浏览

c# - Reflection.Emit 中的短格式操作码错误

我正在制作一种与像素着色器非常相似hlsl但仅支持像素着色器的小语言。该语言用于reflection.emit构建实现相同功能的 .NET 程序集。我目前正在测试分支指令的实现,if并且在我的一个单元测试(if带有内部if/elses 的大)中失败并显示以下错误消息:

System.NotSupportedException:位置非法的一字节分支:32。请求的分支是:132。

我已经将问题追溯到在我的案例中使用短格式指令OpCodes.Br_S。解决方案很简单,我已经替换OpCodes.Br_SOpCodes.Br但是我对此解决方案有几个问题:

这个解决方案对生成代码的性能有影响吗?

如果我想正确生成Br_S单字节和Br其他情况,我该怎么做?这里的问题是我正在使用访问者模式并且对于像if我必须输出BrBr_s首先输出的分支指令,那时,我无法知道剩余的代码是否需要超过一个字节才能跳转到标签。为了更好地说明我的问题,这是我为以下语句生成的代码:

我的语言:

伊利诺伊:

在这种情况下,我使用两个简短的指令ble.s并像 .NET 编译器一样br.s实现s。if但是 .NET 编译器可以根据情况进行选择br.sbr我的问题是我该如何做类似的事情?

Tnks

0 投票
3 回答
88 浏览

assembly - 我在哪里可以找到机器指令的代码

我的意思是……nop 是 90,push 是 55……其他人?任何链接?我用谷歌搜索,但没有任何结果……

0 投票
3 回答
16302 浏览

wordpress - 优化 APC 缓存

这是我的 APC 运行方式的链接:[已删除]

正如你所看到的,它很快就被填满了,我的 Cache Full Count 有时会超过 1000

我的网站使用 Wordpress。

我注意到每次我发布新帖子或编辑帖子时,都会发生两件事。

1) APC 内存“已使用”重置 2) 我得到了很多碎片

我尝试为 APC (512 mb) 提供更多内存,但有时它会崩溃,似乎 384 是最好的。我还有一个 Cron 作业,它每 4 小时重新启动 apache,清除所有 APC 的碎片和已用内存。同样,如果 APC 长时间运行,我的 apache 会崩溃,我认为是由于碎片堆积。

我应该使用 apc.Filters 并过滤掉一些不应该被缓存的东西吗?

我真的是这类东西的初学者,所以如果有人能用完整的说明解释,非常感谢!!!

0 投票
1 回答
3781 浏览

assembly - 为什么这是一个无效的操作数?

我有以下由我正在编写的编译器生成的 ASM 文件:

当我尝试编译它时,我收到以下错误:

test.asm:16:错误:操作码和操作数的无效组合
test.asm:19:错误:操作码和操作数的无效组合
test.asm:29:错误:操作码和操作数的无效组合

这真的没有意义,因为根据 NASM 文档,我可以:

MOV mem_offs, reg_eax 386

为什么我不能执行这个操作?

0 投票
5 回答
7692 浏览

gcc - 如何在 gcc 中获得完整的汇编程序输出?

我知道我可以使用以下方法获取编译器生成的汇编代码:

即使这很烦人并没有给我一个目标文件作为过程的一部分。

但是我怎样才能得到关于编译代码的所有信息呢?我的意思是地址,生成的字节等等。

输出的指令gcc -S没有告诉我任何关于指令长度或编码的信息,这是我想看到的。

0 投票
2 回答
8225 浏览

assembly - ia-32 汇编中的 3 个操作数 imul 指令究竟做了什么?

我正在阅读说明

我对它到底在做什么感到困惑。我知道 imul 会成倍增加,但我无法弄清楚语法。

0 投票
3 回答
1972 浏览

x86 - x86 英特尔操作码汇编

有没有办法使用纯 x86 英特尔操作码而不是汇编助记符和指令编写程序,然后使用 ML 和 LINK 编译它。例如,如果我尝试写一个 55 而不是 push ebp ML 认为它是一个整数。它是否需要特殊的编译器,或者您将如何编写操作码程序并编译它。