Tag: 程序集

如何编译GCC生成的asm?

我正在玩一些ASM代码,有什么东西在困扰着我。 我编译这个: #include <stdio.h> int main(int argc, char** argv){ printf("Hello World\n"); return 0; } 用gcc file.c -S -o file.S生成一个很好的asm代码: .cstring LC0: .ascii "Hello World\0" .text .globl _main _main: LFB3: pushq %rbp LCFI0: movq %rsp, %rbp LCFI1: subq $16, %rsp LCFI2: movl %edi, -4(%rbp) movq %rsi, -16(%rbp) leaq LC0(%rip), %rdi call _puts movl $0, %eax leave […]

最快的方式来扫描位stream中的位模式

我需要在比特stream中扫描16位字。 不保证在字节或字边界上alignment 。 什么是实现这个最快的方法? 有各种蛮力方法; 使用表和/或移位,但是有没有什么“bit twiddling shortcuts”,可以减less计算的数量,通过给yes / no /可能包含每个字节或单词的标志结果,因为它到达? C代码,内部函数,x86机器代码都会很有趣。

分析高性能Haskell代码

我有一些高性能的Haskell代码 – 内部循环编译为6个汇编指令。 内环效率低下对性能没有明显的影响,说明内环不是瓶颈。 但是,打开性能分析时,为内部循环生成的汇编代码效率会大大降低,而且性能分析器报告内部循环占用了85%的时间。 我怀疑有些东西是不必要的慢,但是当我使用剖析来看看,我怀疑剖析使内部循环足够慢,以至于它占主导地位。 我可以用什么技术来看看时间在哪里? 如果一个Haskell存在的话,一个采样分析器将会非常棒。

有没有办法将汇编代码插入到C?

我记得在旧的borland DOS编译器的一天,你可以做这样的事情: asm { mov ax,ex etc etc… } 现在有没有半平台独立的方式来做到这一点? 我有一个需要进行BIOS调用,所以如果有一种方法来做到这一点没有ASM代码,这对我来说同样有用。

VS2005:程序集“<assembly>”被错误地指定为一个文件。

我已经添加了对我的项目的log4net程序集dll的引用。 当我build立我得到一个警告说: 警告程序集“Lib \ log4net.dll”被错误地指定为一个文件。 我在MSDN上查找这个错误的帮助 ,它说: 当生成过程检测到文件引用实际上是(托pipe或本机)程序集时,会在生成应用程序清单期间生成此警告。 这正是我所做的; 文件引用是一个程序集。 我在这里告诉了什么? 如何添加对程序集dll的引用,而不添加对程序集dll的引用?

在Linux中编译/运行汇编程序?

我相当新的Linux(Ubuntu 10.04)和汇编的新手。 我正在关注一些教程,我找不到特定于Linux的任何东西。 所以,我的问题是,编译/运行汇编程序有什么好的包,编译/运行该程序包的命令行命令是什么?

在.NET 4库中使用ILMerge

两个问题: 1)不包含在ILMerged程序集中的基本.NET程序集 从.NET 3.5 / Visual Studio 2008升级到.NET 4 / Visual Studio 2010后,我在使用ILMerge进行后构build时遇到了问题。我有一个解决scheme,其中有几个项目的目标框架设置为“.NET Framework 4” 。 我使用下面的ILMerge命令将单个项目DLL合并到单个DLL中: if not $(ConfigurationName) == Debug if exist "C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" "C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" /lib:"C:\Windows\Microsoft.NET\Framework64\v4.0.30319" /lib:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies" /keyfile:"$(SolutionDir)$(SolutionName).snk" /targetplatform:v4 /out:"$(SolutionDir)bin\development\$(SolutionName).dll" "$(SolutionDir)Connection\$(OutDir)Connection.dll" …other project DLLs… /xmldocs 如果我没有指定.NET 4框架目录的位置,则会从ILMerge中得到“未parsing的程序集引用不允许:系统”错误。 如果我没有指定MSTest目录的位置,我得到“未parsing的程序集引用不允许:Microsoft.VisualStudio.QualityTools.UnitTestFramework”错误。 上面的ILMerge命令工作并产生一个DLL。 但是,当我在另一个.NET 4 C#项目中引用该DLL并尝试使用其中的代码时,出现以下警告: 主要引用“MyILMergedDLL”无法parsing,因为它具有.NET Framework程序集“mscorlib,Version = […]

预取示例?

任何人都可以举一个例子或链接到一个在GCC中使用__builtin_prefetch的例子(或者只是一般的asm指令prefetcht0)来获得实质的性能优势吗? 特别是,我希望例子符合以下标准: 这是一个简单,小巧,独立的例子。 删除__builtin_prefetch指令会导致性能下降。 将__builtin_prefetch指令replace为相应的内存访问会导致性能下降。 也就是说,我想最短的例子显示__builtin_prefetch执行优化,没有它不能pipe理。

JE / JNE和JZ / JNZ的区别

在x86汇编代码中, JE和JNE与JZ和JNZ是否完全一样?

如何阅读程序集属性

在我的程序中,如何读取AssemblyInfo.cs中设置的属性: [assembly: AssemblyTitle("My Product")] [assembly: AssemblyDescription("…")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Radeldudel inc.")] [assembly: AssemblyProduct("My Product")] [assembly: AssemblyCopyright("Copyright @ me 2008")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] 我想显示一些这些值给我的程序的用户,所以我想知道如何加载他们从主程序和我使用的Komponent程序集。