Assembler

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Atomek
Beiträge: 6
Registriert: Di 15. Jun 2010, 12:07

Assembler

Beitrag von Atomek »

Habe hier eine Funktion mit etwas Assembler drin. Kommt von Delphi und funktioniert. Manchmal streue ich ein paar Assemblerzeilen ein, weil die Hochsprache dann einfach zu umständlich, ineffektiv, kompliziert, langsam und hässlich ist (habe ich irgendwetwas vergessen?).

Ich weiß. dass Lazarus wegen der Platformunabhängigkeit gesagt bekommen muss, welcher Assembler das sein soll. Aber die spärlichen Hinweise aus der Doku haben mir nicht weitergeholfen. Hat jemand ein simples Beispiel der notwendigen Einstellungen?

Grüße

Code: Alles auswählen

function THashTable.Hash(const Key: string): integer;
var
  i :integer;
 
  function ROR(Value :char; Width :integer) :integer;
  asm
    MOV ECX,Width
    ROR AL,CL
  end;
 
begin
  result := 0;
  for i:=1 to Length(Key) do
    result := result xor ROR(Key[i], i mod FExp2);
end;

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: Assembler

Beitrag von theo »

So müsst's kompilieren (intel 32}, frag mich nicht warum.

Code: Alles auswählen

{$asmmode intel}
function ROR(Value :char; Width :integer) :integer; assembler;
asm
    MOV ECX,Width
    ROR AL,CL
end;

Atomek
Beiträge: 6
Registriert: Di 15. Jun 2010, 12:07

Re: Assembler

Beitrag von Atomek »

Habe gerade das selbe Problem an einer anderen Stelle

Code: Alles auswählen

{$asmmode intel}
 
function GetTickCount64 :int64;
asm
 DB 0FH
 DB 31H
end;
Compiler meldet:

D:\Mf\Lz\LIBRARY\CPUTime.pas(31,1) Fatal: Syntax error, "BEGIN" expected but "ASM" found

Atomek
Beiträge: 6
Registriert: Di 15. Jun 2010, 12:07

Re: Assembler

Beitrag von Atomek »

Oops, habe das Wörtchen assembler übersehen. Jetzt kompiliert er!

Besten Dank.

Antworten