我正在尝试将一些Delphi 5代码转换为Delphi XE7-x64,并且我卡在了以下代码上:
function FindScanline(Source : Pointer; MaxLen : Cardinal;
Value : Cardinal) : Cardinal; assembler;
asm
PUSH ECX
MOV ECX,EDX
MOV EDX,EDI
MOV EDI,EAX
POP EAX
REPE SCASB
MOV EAX,ECX
MOV EDI,EDX
end;
据我所了解,以下事情正在发生:
将ECX寄存器(值)的内容推送到堆栈上 将EDX寄存器(MaxLen)的内容移动到ECX寄存器中。现在,ECX包含(MaxLen) 将EDI寄存器的内容移动到EDX寄存器中。现在,EDX包含(EDI) 将EAX寄存器的内容移动到EDI寄存器中。现在,EDI包含(Source) 将ECX弹出到EDX。现在,EDX包含(Value)。是否丢失了(EDI)? 重复直到相等为止?每个字符递减ECX? 将ECX寄存器的内容移动到EAX寄存器中 将EDX寄存器的内容移动到EDI寄存器中
对于参考函数FindScanline在函数GetCursorHeightMargin中使用。
如果需要翻译帮助,请随时联系。