AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal FreePascal Portierungsproblem mit Assembler, Register
Thema durchsuchen
Ansicht
Themen-Optionen

Portierungsproblem mit Assembler, Register

Ein Thema von Schorschi5566 · begonnen am 6. Jun 2011 · letzter Beitrag vom 18. Mai 2012
 
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Portierungsproblem mit Assembler, Register

  Alt 6. Jun 2011, 20:23
Hallo DP,

ich versuche die DEC-Library von Hagen nach Lazarus zu porten.

An einer Stelle in der CRC.pas bekomme ich die Fehlermeldung:

Fatal: Syntax error, "identifier" expected but "register" found
Delphi-Quellcode:
// initilaize CRC Definition with a custom Algorithm
function CRCSetup(var CRCDef: TCRCDef; Polynomial, Bits, InitVector, FinalVector: Cardinal; Inverse: LongBool): Boolean;

implementation

function CRCSetup(var CRCDef: TCRCDef; Polynomial, Bits, InitVector,
  FinalVector: Cardinal; Inverse: LongBool): Boolean; register;
asm // initialize CRCDef according to the parameters, calculate the lookup table
       CMP ECX,8
       JB @@8
       PUSH EBX
       PUSH EDI
       PUSH ESI
       MOV [EAX].TCRCDef.Polynomial,EDX // <<< Hier kommt der Fehler!
       MOV [EAX].TCRCDef.Bits,ECX
       MOV EBX,InitVector
       MOV EDI,FinalVector
       MOV ESI,Inverse
       MOV [EAX].TCRCDef.CRC,EBX
       MOV [EAX].TCRCDef.InitVector,EBX
       MOV [EAX].TCRCDef.FinalVector,EDI
       MOV [EAX].TCRCDef.Inverse,ESI
       XOR EDI,EDI
       LEA EBX,[ECX - 8]
       SUB ECX,32
       DEC EDI
       NEG ECX
       SHR EDI,CL
       MOV [EAX].TCRCDef.Shift,EBX
       MOV [EAX].TCRCDef.Mask,EDI
       TEST ESI,ESI
       JZ @@5
       XOR EBX,EBX
       MOV ECX,[EAX].TCRCDef.Bits
@@1: SHR EDX,1
       ADC EBX,EBX
       DEC ECX
       JNZ @@1
       NOP
       MOV ECX,255
       NOP
@@20: MOV EDX,ECX
       SHR EDX,1
       JNC @@21
       XOR EDX,EBX
@@21: SHR EDX,1
       JNC @@22
       XOR EDX,EBX
@@22: SHR EDX,1
       JNC @@23
       XOR EDX,EBX
@@23: SHR EDX,1
       JNC @@24
       XOR EDX,EBX
@@24: SHR EDX,1
       JNC @@25
       XOR EDX,EBX
@@25: SHR EDX,1
       JNC @@26
       XOR EDX,EBX
@@26: SHR EDX,1
       JNC @@27
       XOR EDX,EBX
@@27: SHR EDX,1
       JNC @@28
       XOR EDX,EBX
@@28: MOV [EAX + ECX * 4],EDX
       DEC ECX
       JNL @@20
       JMP @@7
@@5: AND EDX,EDI
       ROL EDX,CL
       MOV EBX,255
// can be coded branchfree
@@60: MOV ESI,EBX
       SHL ESI,25
       JNC @@61
       XOR ESI,EDX
@@61: ADD ESI,ESI
       JNC @@62
       XOR ESI,EDX
@@62: ADD ESI,ESI
       JNC @@63
       XOR ESI,EDX
@@63: ADD ESI,ESI
       JNC @@64
       XOR ESI,EDX
@@64: ADD ESI,ESI
       JNC @@65
       XOR ESI,EDX
@@65: ADD ESI,ESI
       JNC @@66
       XOR ESI,EDX
@@66: ADD ESI,ESI
       JNC @@67
       XOR ESI,EDX
@@67: ADD ESI,ESI
       JNC @@68
       XOR ESI,EDX
@@68: ROR ESI,CL
       MOV [EAX + EBX * 4],ESI
       DEC EBX
       JNL @@60
@@7: POP ESI
       POP EDI
       POP EBX
@@8: CMC
       SBB EAX,EAX
       NEG EAX
end;
Kommt Free Pascal nicht mit "register" klar? Aber dann müsste doch der Fehler schon bei der Deklaration kommen, oder?

Oder kann mir bitte jemand helfen, den ASM-Code umzuschreiben, so dass die Parameterübergabe ganz normal ohne register funktioniert?


Grüße,
Uwe
Uwe
"Real programmers can write assembly code in any language." - Larry Wall
Delphi programming rocks
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz