5.1 Assembler Prozedur will nicht mehr

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

5.1 Assembler Prozedur will nicht mehr

Beitrag von hjbremer »

Hallo Assembler Kundige,
leider habe ich null Ahnung von ASM

folgende Prozedur funktioniert in 4.6 x86 32 Bit Windows

in 5.1 leider nicht
Fehlermeldung: undefiniertes Symbol l_notfound13

weiss jemand was ich ändern muß

Code: Alles auswählen

Procedure.i FindChar13asm(z, laenge) 
   
  ;z = startposition im memory
  
  CLD  
  MOV edi,z           
  MOV eax,13          ;gesuchtes Zeichen
  MOV ecx,laenge      
  REPNZ SCASB 
  JNZ l_notfound13 
  SUB edi,z 
  MOV eax,edi         ;Rückgabewert 
  ProcedureReturn 
  
  notfound13:         ;wenn nicht gefunden 
  ProcedureReturn 0 
  
EndProcedure
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: 5.1 Assembler Prozedur will nicht mehr

Beitrag von edel »

Labels in Funktionen sind nun lokal. Das heisst sie sind, oder sollten, von aussen nicht mehr erreichbar sein.
In Funktionen musst du jetzt l_funcname_ benutzen.

Code: Alles auswählen

Procedure.i FindChar13asm(z, laenge) 
   
  ;z = startposition im memory
  
  CLD  
  MOV edi,z           
  MOV eax,13          ;gesuchtes Zeichen
  MOV ecx,laenge      
  REPNZ SCASB 
  JNZ l_findchar13asm_notfound13 
  SUB edi,z 
  MOV eax,edi         ;Rückgabewert 
  ProcedureReturn 
  
  notfound13:         ;wenn nicht gefunden 
  ProcedureReturn 0 
  
EndProcedure
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: 5.1 Assembler Prozedur will nicht mehr

Beitrag von STARGÅTE »

Oder du kannst ja auch "echte" ASM-Labels nutzen, dann schreibst du:

Code: Alles auswählen

JNZ notfound13
; [...]
!notfound13:
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: 5.1 Assembler Prozedur will nicht mehr

Beitrag von hjbremer »

Wow, was du alles weißt :allright:

Herzlichen Dank !

dein Chef sollte dein Gehalt verdoppeln
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: 5.1 Assembler Prozedur will nicht mehr

Beitrag von hjbremer »

PS: es funktioniert nun in 5.1

Nur schade das es nun in 4.6 mit dem neuen Bezeichner nicht mehr geht

Kann man das was machen oder muß ich jetzt mit 2 Procs arbeiten ?
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: 5.1 Assembler Prozedur will nicht mehr

Beitrag von STARGÅTE »

mein Post überlesen?
Du kannst auch in ASM Labels definieren, die sind dann Versionsunabhängig, und vermutlich einfacher als jetzt noch n CompilerSelect für beide PB-Versionen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: 5.1 Assembler Prozedur will nicht mehr

Beitrag von hjbremer »

STARGÅTE hat geschrieben:mein Post überlesen?
Uups, habe ich nicht gesehen, in der Zeit hatte ich meine Antwort für edel geschrieben.

Und Herzlichen Dank auch Dir, das mit dem Ausrufezeichen funktioniert ebenfalls.
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Antworten