问题标签 [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 投票
2 回答
7174 浏览

c# - 动态对象属性填充器(无反射)

我想以类似于CodeProject 上的 DynamicBuilder的方式填充对象的属性而不使用反射。CodeProject 示例专为使用 DataReader 或 DataRecord 填充实体而设计。我在几个 DAL 中使用它以获得良好的效果。现在我想修改它以使用字典或其他与数据无关的对象,以便我可以在非 DAL 代码中使用它——我目前使用反射的地方。我对 OpCodes 和 IL 几乎一无所知。我只知道它运作良好并且比反射更快。

我试图修改 CodeProject 示例,但由于我对 IL 的无知,我被困在了两条线上。

  • 其中一个处理 dbnulls,我很确定我可以丢失它,但我不知道它之前和之后的行是否相关以及它们中的哪些也需要删除。
  • 我认为,另一个是以前从数据记录中提取值的那个,现在需要将其从字典中提取出来。我想我可以用我的“property.Value”替换“getValueMethod”,但我不确定。

我也愿意为这只猫剥皮的替代/更好的方法。

这是到目前为止的代码(注释掉的行是我坚持的行):

编辑:

使用 Marc Gravell 的 PropertyDescriptor 实现(使用 HyperDescriptor),代码被简化了一百倍。我现在有以下测试:

欢迎对 TypeDescriptor.GetProperties() 和 PropertyDescriptor.SetValue() 的性能注意事项发表任何评论...

0 投票
2 回答
849 浏览

.net - 我们可以构造一个 `OpCode` 的实例吗?

.NET Framework 4.0 为反射 API 引入了几个项目,这些项目从非常有用到对我的工作至关重要。其中包括AssemblyModuleMethodBodyLocalVariableInfo以及新CustomAttributeData类的受保护构造函数。我仍然需要一些很难解决的项目。我相信它们很容易适用于需要扩展我刚刚列出的类型的同一 [小] 群体。

这一次:我正在寻找一种方法来System.Reflection.Emit.OpCode用我自己的参数构造一个结构实例。我目前调用内部构造函数来创建实例。这对性能没有不利影响,因为我将构建的项目公开为public static readonly类的成员以供重用,但正如您可以想象的那样,这是一个非常次优的场景。

是否有任何理由无法通过OpCode说明用户构造OpCode的 s 不能与ILGenerator.

编辑:这是一个例子。通过创建以下自定义操作码,我可以在一些中间指令列表之间的字节码转换中使用它,而无需创建临时局部变量。如果我发出 IL,我会将剩余的swap指令转换为有效的 IL 表示,但在我的情况下,下一步是理解自定义swap指令的 JIT。我正在使用Prefix2prefix 0xFD,它被任何有效的 IL 操作码保留和使用。

我还将将此用于没有简单/通用托管代码表示但在各种本机代码生成器中可用的简单平台相关表示的 JIT 内在函数。其中之一是ldthread(加载对当前托管线程RuntimeThread表示的引用)。

0 投票
4 回答
6014 浏览

zend-framework - 操作码 (APC/XCache)、Zend、Doctrine 和自动加载器

我正在尝试使用 APC 或 XCache 作为操作码来缓存我的 php 页面。我将它与 Zend 和 Doctrine 一起使用,它的自动加载器有问题。

如果我尝试使用 APC,我会得到以下信息:

如果我尝试使用 XCache,我会得到以下信息:

我在 windows 盒子上运行 Zend 1.9.1,Doctrine 1.1。

我的引导程序如下:

根据我的阅读,使用 APC 或 xcache 几乎是提高性能的必要条件,但我似乎无法让它工作。有任何想法吗?

0 投票
2 回答
1083 浏览

linux - 寻找一种捕获 CPUID 指令的方法

我正在寻找一种巧妙的方法来捕获和摆弄 Linux 进程的 CPUID 指令。玩弄 ptrace() 并修补由进程创建的所有可执行 mmap'ed 区域中的所有 cpuid 操作码,用 int3 替换它们。由于 CPUID 操作码字节经常作为其他较长操作码的一部分出现,因此效果不佳。

所以基本上我正在寻找一种方法,允许我不在特定的内存地址上设置断点,而是在每次调用操作码时设置断点。任何人都知道如何做到这一点?

0 投票
3 回答
36595 浏览

assembly - JMP 到绝对地址(操作码)

我正在尝试编写一个 exe 打包程序/保护程序,以此来了解更多关于汇编程序、c++ 以及 PE 文件如何工作的信息。我目前已经让它工作了,所以包含 EP 的部分与一个密钥进行异或,并创建了一个包含我的解密代码的新部分。一切都很好,除非我在解密后尝试 JMP 到原始 EP。

基本上我这样做:

但 ollydbg 并没有跳转到入口点,而是显示这段代码反汇编为:

当我尝试在 olly 中手动更改它时,新的操作码显示为

0xCBCFFFFF 是从哪里来的?我将如何从 C++ 端生成它?

0 投票
3 回答
2081 浏览

php - APC 缓存可以在以 fastcgi/fcgid 运行的多个 PHP 进程之间共享吗?

我正在运行一个 LAMP 盒子,其中 PHP 作为 fcgid 运行。APC 已安装并且运行良好。但是,每个 PHP 进程都有自己的缓存。这是一个问题,因为有 10 个 PHP 进程和 300MB 共享 APC 缓存比 10 个 PHP 进程更有意义,每个 PHP 进程都有一个冗余的 30MB 非共享 APC 缓存。

8 个月前有一个关于这个主题的先前线程(如何在 FastCGI 下运行时在多个 PHP 进程之间共享 APC 缓存?),我想知道从那时起这个领域是否有任何发展。

0 投票
2 回答
13276 浏览

php - 如何获取 PHP 的操作码?

它的操作码是:

0 投票
2 回答
959 浏览

php - 编写适用于 OpCode 缓存器的 PHP 程序时要避免的事情

如果我想支持 PHP OpCode Caches,我应该避免哪些事情?静电电话是邪恶的吗?__autoload 呢?

0 投票
1 回答
708 浏览

php - apc_compile_file() 是否使特定文件的内存缓存无效?

如果我运行以下 PHP 代码:

它会使用于此特定文件的内存缓存无效吗?

也就是说,如果我首先访问/path/to/file,APC 会对其进行编译,并将 OpCode 缓存在内存中。现在,如果我再次访问 /path/to/file,APC 将只使用缓存的 OpCode。但是,如果我修改此文件并将 apc.stat 设置为 0(关闭),它将使用内存中的 OpCode,尽管文件已被修改(因为 apc.stat 已关闭)。我的问题是,如果我在更新文件后运行 apc_compile_file() ,内存缓存会更新吗?

0 投票
2 回答
996 浏览

assembly - x86 指令集路线图

经过长时间的高级编程,我只是接触了 x86 指令集的表面。大约 20 年来,我第一次阅读 x86 汇编编程,从我的谷歌搜索中,我迷失了无数的指令集参考;从混合新一代处理器(286、386、486...)的处理器到添加更新的 x86 指令的处理器。更不用说 AMD 的变体了。

由于我计划构建一个引导加载程序,我的第一个想法是完全符合“标准 x86”,但我不知道它在哪里,甚至它是否存在于任何地方。

甚至英特尔文档似乎也遵循相同的路径,就像另一个人所说,“我们需要 x86 指令集标准化,操作码的演变是混乱的”。

高举标准化大旗不是我的主意。我只是想看看路,了解哪里是安全的步行地点。如果有人可以提供帮助,我将不胜感激!