Tag: 程序集

如何确定.NET程序集是为x86还是x64构建的?

我有一个.NET程序集的任意列表。 我需要以编程方式检查每个DLL是否为x86构建(而不是x64或任何CPU)。 这可能吗?

使用GCC生成可读的程序集?

我想知道如何在我的C源文件上使用GCC来转储机器代码的助记符版本,这样我就可以看到我的代码被编译进了什么程序。 你可以用Java来做到这一点,但是我一直无法找到GCC的方法。 我正在尝试在汇编中重新编写一个C方法,并且看看GCC是如何提供帮助的。

如何在运行时在.NET中添加文件夹到程序集搜索路径?

我的DLL由第三方应用程序加载,我们无法自定义。 我的程序集必须位于它们自己的文件夹中。 我不能把它们放到GAC中(我的应用程序需要使用XCOPY进行部署)。 当根DLL尝试从另一个DLL(在同一个文件夹中)加载资源或类型时,加载失败(FileNotFound)。 是否有可能将我的DLL所在的文件夹以编程方式(从根DLL)添加到程序集搜索路径? 我不允许更改应用程序的配置文件。

在C ++内联asm中使用基指针寄存器

我希望能够在内联asm中使用基指针寄存器( %rbp )。 一个玩具的例子就是这样的: void Foo(int &x) { asm volatile ("pushq %%rbp;" // 'prologue' "movq %%rsp, %%rbp;" // 'prologue' "subq $12, %%rsp;" // make room "movl $5, -12(%%rbp);" // some asm instruction "movq %%rbp, %%rsp;" // 'epilogue' "popq %%rbp;" // 'epilogue' : : : ); x = 5; } int main() { int x; Foo(x); […]

如何从GCC / clang程序集输出中删除“噪音”?

我想检查在我的代码中应用boost::variant的程序集输出,以查看哪些中间调用被优化了。 当我编译下面的例子(GCC 5.3使用g++ -O3 -std=c++14 -S )时,好像编译器优化了所有东西,直接返回100: (…) main: .LFB9320: .cfi_startproc movl $100, %eax ret .cfi_endproc (…) #include <boost/variant.hpp> struct Foo { int get() { return 100; } }; struct Bar { int get() { return 999; } }; using Variant = boost::variant<Foo, Bar>; int run(Variant v) { return boost::apply_visitor([](auto& x){return x.get();}, v); } int […]