相关疑难解决方法(0)

什么时候装配比C快?

了解汇编程序的一个原因是,有时可以使用它来编写比使用更高级语言编写代码更高效的代码,特别是C. 但是,我也听过很多次说虽然这并非完全错误,但汇编程序实际上可用于生成更高性能代码的情况极为罕见,需要专业知识和汇编经验.

这个问题甚至没有涉及汇编程序指令将是机器特定的和不可移植的,或汇编程序的任何其他方面的事实.当然,除了这一点之外,还有很多很好的理由知道汇编,但这是一个特定的问题,征求例子和数据,而不是关于汇编语言与高级语言的扩展讨论.

任何人都可以提供一些特定的例子,其中汇编将比使用现代编译器的编写良好的C代码更快,并且您是否可以通过分析证据来支持该声明?我非常有信心这些案例存在,但我真的想知道这些案件究竟有多深奥,因为它似乎是一些争论的焦点.

c performance assembly

458
推荐指数
25
解决办法
10万
查看次数

C#中的x86/x64 CPUID

我的其他问题相关,请帮我调试"未知模块中发生未处理的类型'System.AccessViolationException'异常.附加信息:尝试读取或写入受保护的内存.这通常表明其他内存已损坏." 逐步执行代码,一切都会一直运行,直到实际调用del()并在该行中失败.

这段代码基于本文的示例python代码,它在python中运行.我无法得到代码示例,因为它可以工作(相同的例外),但我希望它只是有点过时或者其他东西.

编辑:如果你关心我们如何到达这里,看看编辑历史,这是无趣的.

完成工作版:

public static class CpuID
{
    public static byte[] Invoke(int level)
    {
        IntPtr codePointer = IntPtr.Zero;
        try
        {
            // compile
            byte[] codeBytes;
            if (IntPtr.Size == 4)
            {
                codeBytes = x86CodeBytes;
            }
            else
            {
                codeBytes = x64CodeBytes;
            }

            codePointer = VirtualAlloc(
                IntPtr.Zero,
                new UIntPtr((uint)codeBytes.Length),
                AllocationType.COMMIT | AllocationType.RESERVE,
                MemoryProtection.EXECUTE_READWRITE
            );

            Marshal.Copy(codeBytes, 0, codePointer, codeBytes.Length);

            CpuIDDelegate cpuIdDelg = (CpuIDDelegate)Marshal.GetDelegateForFunctionPointer(codePointer, typeof(CpuIDDelegate));

            // invoke
            GCHandle handle = default(GCHandle);
            var buffer = new byte[16];

            try
            { …
Run Code Online (Sandbox Code Playgroud)

c# inline-assembly cpuid

31
推荐指数
3
解决办法
2万
查看次数

如何在现代使用汇编(例如使用C/C++)?

我理解计算机如何在基本原理上工作,例如,程序可以用C#,C等"高级"语言编写,然后将其分解为目标代码,然后分解为处理器才能理解.但是,我真的想学习装配,以及它如何在现代应用中使用.

我知道处理器在基本x86指令集之上有不同的指令集.所有汇编语言都支持所有指令集吗?

有多少汇编语言?有多少与其他语言一起使用?

如何在程序集中编写例程,然后将其编译为对象/二进制代码?

那么有人会如何用C或C++这样的语言引用汇编代码中的函数/例程?

我们怎么知道我们在汇编中编写的代码可能是最快的?

是否有关于汇编语言的推荐书籍/将它们与现代程序一起使用?

对于问题的数量感到抱歉,我希望它们足够通用,对其他人有用,并且足够简单,让其他人回答!

c c++ assembly

14
推荐指数
3
解决办法
1万
查看次数

标签 统计

assembly ×2

c ×2

c# ×1

c++ ×1

cpuid ×1

inline-assembly ×1

performance ×1