问题标签 [dynamic-execution]

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 投票
5 回答
934 浏览

.net - 有没有办法欺骗 .NET JIT 编译器运行另一种方法?

好的,假设我的应用程序正在将(x86)指令发送到内存中,使页面可执行等。有没有办法改变非 JIT 方法的方法存根以指向我发出的指令流?

例如:

假设我在内存中创建了一个 x86 指令流,它可以做一些任意的事情。现在,进一步假设我有一个方法'int Target()'。我还没有调用它,所以它还没有编译。有没有办法:

  1. 获取指向 Target 存根的指针
  2. 让它指向我发出的指令流。

我意识到.NET 的几乎每一个安全特性都是为了防止这样的劫持而设计的。但是可以通过托管 API 来实现吗?

0 投票
4 回答
782 浏览

c# - how to run some code in memory?

I have a compiler which compiles assembly language to machine language (in memory). My project is in C# .net. Is there any way to run the memory on a thread? How can DEP prevent it?

0 投票
2 回答
426 浏览

c# - 当它的所有者进程退出时,你如何让一个 DLL 被删除?

我有一个 .NET 程序集 DLL,它是从数据库中的预编译代码动态创建的。有没有办法创建 DLL 文件,将数据放入其中,将其与Assembly类一起加载,然后当进程退出时,是否删除了该 DLL?

我的第一个想法是用FILE_SHARE_DELETE标志打开它,加载它Assembly.LoadFrom,并自动删除它。

尽管 LoadLibrary 确实打开带有该FILE_SHARE_DELETE标志的文件,但当 DLL 仍映射到内存中时,操作系统不会删除该文件。

那么,如何在进程退出而不使用AppDomains或启动外部“在目标进程退出后删除此文件”可执行文件时删除 DLL(在运行时加载的 .NET DLL 取决于用户输入,因此这样做会涉及某种进程沟通,我想避免)。

0 投票
2 回答
875 浏览

python - Python:如何动态设置函数闭包环境

我想动态声明一个函数,并且我想包装对全局变量的任何访问,或者定义哪些变量是免费的并包装对自由变量的任何访问。

我正在玩这样的代码:

这将产生输出:

我想要的是以某种方式x使用我的 dict-like wrapper获取访问权限D。我怎样才能做到这一点?

我不想预定义所有全局变量(在这种情况下x),因为我希望能够懒惰地加载它们。

0 投票
1 回答
56 浏览

java - 获取java文件的动态执行结果

我正在使用下面的方法来执行一个名为 NewFile.java 的文件。

thisMethod.invoke(instance,(Object)m); 自动运行 NewFile.java 并在控制台中打印结果[如果存在],无论如何我可以在字符串中获得执行结果

NB 类型转换为 (String) thisMethod.invoke(instance,(Object)m); 没用..它给出了null。

0 投票
2 回答
70 浏览

java - 找不到动态执行的文件

我正在使用动态执行,但它告诉我找不到该类,尽管我仔细检查了路径并且它是正确的

这是我正在使用的方法

这打印

这里 1

这里 2

这里 3

在这里 4

找不到类

这里 5

方法中是否缺少任何东西

0 投票
1 回答
19 浏览

java - 安装插件时动态执行不起作用

我正在开发一个运行当前活动文件的 Eclipse 插件。我正在使用这种方法

但是当我“启动 Eclipse 应用程序”[在另一个 Eclipse 窗口中运行插件]时它可以工作,但是当我在 Eclipse 中安装插件时它不再工作了。问题出在这一行

类 thisClass = classLoader.loadClass("NewFile"); 它找不到要执行的类

0 投票
3 回答
5567 浏览

c++ - 编译包含动态并行性的代码失败

我正在使用 CUDA 5.5 和计算能力为 3.5 的 NVDIA GeForce GTX 780 进行动态并行编程。我在内核函数中调用内核函数,但它给了我一个错误:

错误:从 __global__ 函数("kernel_5") 调用 __global__ 函数("kernel_6") 只允许在 compute_35 架构或更高版本上

我究竟做错了什么?

0 投票
1 回答
144 浏览

azure - 如何在 exe 文件中添加用户特定信息

我在服务器端(应用程序)上有一个与客户端(应用程序)链接的代码。用户注册以下载 exe(客户端应用程序)。必须有一种独特的方式来使用从注册中获得的信息来识别用户(客户端应用程序 exe)。

因此,下载过程中必须将其中一项信息附加到 exe 文件中。

我发现的一种方法是使用“便携式可执行文件”。

是否可以将字符串数据添加到 exe 并稍后检索它?

是否有任何其他可能的方式使 exe 用户特定?或者是否可以将用户信息与下载的 exe 一起添加?

0 投票
1 回答
2980 浏览

cpu - 乱序指令执行:提交顺序是否保留?

一方面,维基百科写了乱序执行的步骤:

  1. 取指令。
  2. 将指令分派到指令队列(也称为指令缓冲区或保留站)。
  3. 指令在队列中等待,直到其输入操作数可用。然后允许该指令在较早的较旧指令之前离开队列。
  4. 该指令被发布到适当的功能单元并由该单元执行。
  5. 结果排队。
  6. 只有在所有旧指令的结果都写回寄存器文件之后,才会将该结果写回寄存器文件。这称为毕业或退休阶段。

类似的信息可以在《计算机组织与设计》一书中找到:

为了使程序表现得好像它们在一个简单的有序流水线上运行,指令获取和解码单元需要按顺序发出指令,这允许跟踪依赖关系,并且提交单元需要将结果写入寄存器和程序获取顺序中的内存。这种保守的模式被称为按序提交……今天,所有动态调度的管道都使用按序提交。

因此,据我了解,即使指令执行是以乱序方式完成的,它们的执行结果也会保存在重新排序缓冲区中,然后以确定的顺序提交到内存/寄存器。

另一方面,众所周知,现代 CPU 可以重新排序内存操作以提高性能(例如,可以重新排序两个相邻的独立加载指令)。维基百科在这里写到。

您能否解释一下这种差异?