Einzelnen Beitrag anzeigen

venice2
(Gast)

n/a Beiträge
 
#3

AW: ASM Inline code x64

  Alt 13. Feb 2022, 22:10
Nein, so geht das glaube ich nicht!
Du musst glaube ich sowas machen:

Delphi-Quellcode:
Procedere DoIt; Assembler;
begin
  mov ax, 0; // nur ein Beispiel
end;
Ich habe leider keine Ahnung von ASM daher nutz mir eine Vermutung (Beispiel) nichts.. Sorry
Der Aufruf müßte also schon genau funktionieren.

FNCLEX müßte dann also nach Delphi übersetzt werden.
Oder die Procedure entsprechend angepaßt.

Trotzdem Danke!

Zitat:
Mit ASM eingeleitete Blöcke dürften in x64 nicht
funktionieren.
Diese Funktion unter 64Bit macht aber keine Probleme.
Wird anstandslos akzeptiert trotz Abhängigkeit (allerdings in einer DLL 64Bit)
Delphi-Quellcode:
function TSkinEngine.Rgb2Gray(RGBValue: COLORREF): COLORREF; stdcall;
asm
  movzx edx, al
  imul edx, 19595 //Red
  movzx ecx, ah
  imul ecx, 38470 //Greean
  shr eax, 16
  imul eax, 7471 //Blue
  add eax, ecx
  add eax, edx
  shr eax, 16
  mov ah, al
  shl eax, 8
  mov al, ah
end;
Verstehe wer will.

Also Basis Anwendung 64Bit funktioniert.
32Bit Anwendung ASM macht Probleme wenn ich diese als Abhängigkeit der 64Bit Anwendung zuweise.
64Bit DLL mit obiger Funktion geht ohne Probleme.

Geändert von venice2 (14. Feb 2022 um 01:16 Uhr)
  Mit Zitat antworten Zitat