C# 什么';汇编程序中的这段代码是怎么回事?(dword ptr[rbp&x2B;48]…)

C# 什么';汇编程序中的这段代码是怎么回事?(dword ptr[rbp&x2B;48]…),c#,assembly,dll,x86-64,cpu-registers,C#,Assembly,Dll,X86 64,Cpu Registers,我正在分析某人的项目,将图像转换为深褐色。我不明白这段被称为C#DLL的代码中发生了什么 这里从C#调用DLL 这个代码是什么意思 ebx, dword ptr [rbp + 48] 既然上面的条目是在ebx寄存器中输入的,那么为什么将rbx寄存器中的值分配给r11?看起来像是错过了优化。可以直接加载r11,而不是通过ebx。无论如何,[rbp+48]是第五个参数,开始索引和[rbp+56]是第六个参数,结束索引。请参阅解释写入EDX和读取RDX的功能。但是为什么+48和+56在这里?因为假设

我正在分析某人的项目,将图像转换为深褐色。我不明白这段被称为C#DLL的代码中发生了什么

这里从C#调用DLL

这个代码是什么意思

ebx, dword ptr [rbp + 48]

既然上面的条目是在ebx寄存器中输入的,那么为什么将rbx寄存器中的值分配给r11?

看起来像是错过了优化。可以直接加载
r11
,而不是通过
ebx
。无论如何,
[rbp+48]
是第五个参数,
开始索引
[rbp+56]
是第六个参数,
结束索引
。请参阅解释写入EDX和读取RDX的功能。但是为什么+48和+56在这里?因为假设
rbp
已设置为帧指针,则第5个和第6个参数就在这里。
  [DllImport("DLL_ASM.dll", EntryPoint = "sepia")]
        private static extern void SepiaAsmAlgorithm(
            float[] pixels, float[] sepiaRates, 
            float[] rgbRates, float[] array255, int startIndex, int endIndex);
ebx, dword ptr [rbp + 48]