首页 > 解决方案 > 汇编程序中的这段代码发生了什么?(dword ptr[rbp + 48] ...)

问题描述

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

.CODE
sepia proc          
    mov         ebx, dword ptr[rbp + 48]    
    mov         r11, rbx                    
    mov         ebx, dword ptr[rbp + 56]    
    mov         r10, rbx                    
    movdqu      xmm1, oword ptr[rdx]        
    movdqu      xmm2, oword ptr[r8]         
    movdqu      xmm3, oword ptr[r9]             

// ... more code ...

在这里从 C# 调用 DLL ...

  [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]

为什么然后将值从 rbx 寄存器分配给 r11,因为上面的条目是对 ebx 寄存器进行的?

标签: c#assemblydllx86-64cpu-registers

解决方案


推荐阅读