win32汇编代码可以直接嵌入delphi中吗?该如何解决
win32汇编代码可以直接嵌入delphi中吗?
初学,问个感到疑惑的问题,类似罗云彬老师win32汇编语言设计中的32位汇编代码可以直接嵌入delphi程序中吗?
------最佳解决方案--------------------
可以的,可以看SysUtils单元,很多都是汇编。
------其他解决方案--------------------
function IntToStr(Value: Integer): string;
// FmtStr(Result, '%d', [Value]);
asm
PUSH ESI
MOV ESI, ESP
SUB ESP, 16
XOR ECX, ECX // base: 0 for signed decimal
PUSH EDX // result ptr
XOR EDX, EDX // zero filled field width: 0 for no leading zeros
CALL CvtInt
MOV EDX, ESI
POP EAX // result ptr
CALL System.@LStrFromPCharLen
ADD ESP, 16
POP ESI
end;
------其他解决方案--------------------
可以,你只需要按照Delphi的Register Call调用方式改写一下汇编顺序就行
用asm关键字括起来
------其他解决方案--------------------
原Borland产品中嵌入汇编,通常叫它BASM,搜索一下有很多介绍
------其他解决方案--------------------
当然可以,不然你以为为啥delphi函数速度会这么快
------其他解决方案--------------------
16位汇编指令只是32位汇编指令的子集吧?
那么应该都可以的
------其他解决方案--------------------
可以的...
------其他解决方案--------------------
几天没来,这么多热心网友回复,非常感动。
我还想知道delphi中16位和32位汇编都可以嵌入吗,有何区别?
初学,问个感到疑惑的问题,类似罗云彬老师win32汇编语言设计中的32位汇编代码可以直接嵌入delphi程序中吗?
------最佳解决方案--------------------
可以的,可以看SysUtils单元,很多都是汇编。
------其他解决方案--------------------
function IntToStr(Value: Integer): string;
// FmtStr(Result, '%d', [Value]);
asm
PUSH ESI
MOV ESI, ESP
SUB ESP, 16
XOR ECX, ECX // base: 0 for signed decimal
PUSH EDX // result ptr
XOR EDX, EDX // zero filled field width: 0 for no leading zeros
CALL CvtInt
MOV EDX, ESI
POP EAX // result ptr
CALL System.@LStrFromPCharLen
ADD ESP, 16
POP ESI
end;
------其他解决方案--------------------
可以,你只需要按照Delphi的Register Call调用方式改写一下汇编顺序就行
用asm关键字括起来
------其他解决方案--------------------
原Borland产品中嵌入汇编,通常叫它BASM,搜索一下有很多介绍
------其他解决方案--------------------
当然可以,不然你以为为啥delphi函数速度会这么快
------其他解决方案--------------------
16位汇编指令只是32位汇编指令的子集吧?
那么应该都可以的
------其他解决方案--------------------
可以的...
------其他解决方案--------------------
几天没来,这么多热心网友回复,非常感动。
我还想知道delphi中16位和32位汇编都可以嵌入吗,有何区别?