dst*_*sta 6 c# assembly code-generation gnu-assembler
有没有办法从C#代码生成汇编代码?我知道C代码可以使用GAS,但有人知道C#是否可行?
您可以使用BenchmarkDotNet并将 printAsm 标志设置为 true。
[DisassemblyDiagnoser(printAsm: true, printSource: true)] // !!! use the new diagnoser!!
[RyuJitX64Job]
public class Simple
{
int[] field = Enumerable.Range(0, 100).ToArray();
[Benchmark]
public int SumLocal()
{
var local = field; // we use local variable that points to the field
int sum = 0;
for (int i = 0; i < local.Length; i++)
sum += local[i];
return sum;
}
[Benchmark]
public int SumField()
{
int sum = 0;
for (int i = 0; i < field.Length; i++)
sum += field[i];
return sum;
}
}
Run Code Online (Sandbox Code Playgroud)
C# 通常编译为 .NET 字节码(称为CIL 或 MSIL),然后在程序实际运行时JIT(“即时”)编译为本机代码。C# 存在提前编译器,例如Mono 的 AOT,因此您可以通过其中之一编译 C# 程序,然后反汇编它。结果可能很难遵循。
更有可能的是,您可能想要查看比 CPU 汇编代码级别更高的字节码,您可以通过在编译的C# 程序上使用ILdasm来完成此操作。.exe
| 归档时间: |
|
| 查看次数: |
10146 次 |
| 最近记录: |