Seite 1 von 2

Assembler Error

Verfasst: 28.10.2004 15:32
von Lebostein
Hallo,

nach einer größeren Umstrukturierungsmaßnahme in einem Programm (von Arrays auf Listen) bekomme ich beim kompilieren folgende Fehlermeldung:

Bild

Ich verwende weder Inline-Assembler noch hab ich die Assembler-Unterstützung aktiviert. Habt ihr so einen Fehler schon mal gesehen?
Das dumme ist, der Debugger sagt nichts dazu, das Programm wird mit dieser Meldung einfach beendet, also kann ich auch nicht lokalisieren, wo der Fehler liegt...

Re: Assembler Error

Verfasst: 28.10.2004 15:37
von freedimension
Lebostein hat geschrieben:Das dumme ist, der Debugger sagt nichts dazu, das Programm wird mit dieser Meldung einfach beendet, also kann ich auch nicht lokalisieren, wo der Fehler liegt...
Wenn ich die Fehlermeldung richtig interpretiere kannst du das schon. Der Fehler müsste in Zeile 2560 des erzeugten ASM-Outputs sein.
Am Besten du erzeugst eine ASM-Datei mit dem Kommandozeilenswitch /COMMENTED, kompilierst diese von Hand und schaust die Fehlermeldung nochmal an.

Verfasst: 28.10.2004 15:53
von Lebostein
Hab grade mal ne Menge Code rausgeschmissen und ausprobiert. An dieser Zeile hängt er sich auf:

Code: Alles auswählen

SetGadgetText(#Menu_Edit_Verb_mx, Str(glob()\menu\wide[0]\valx))
Die Verwendeten Strukturen sehen so aus:

Code: Alles auswählen

Structure v
  valx.w           ; x-Wert
  valy.w           ; y-Wert
EndStructure

Structure c
  colr.w           ; Rote farbe
  colg.w           ; Grüne Farbe
  colb.w           ; Blaue Farbe
EndStructure

Structure menu
  name.s           ; Name des Menus
  text.s[09]       ; Text der Verben
  pref.v[05]       ; Referenzpunkte 
  wide.v[03]       ; Breite der Bereiche
  posi.v[12]       ; Position der Bereiche
  pals.c[15]       ; Palette
  face.b[09600]    ; GUI-Bitmap
  verb.b[01800]    ; Verb-Bitmap
  move.b[00900]    ; Scroll gedrückt
  stop.b[00900]    ; Scroll deaktiviert
  maus.b[00240]    ; Mauszeiger Standard
  user.b[00240]    ; Mauszeiger kombinieren
EndStructure

Structure glob
  ...
  menu.menu
  ...
EndStructure
Die Liste wurde so angelegt:

Code: Alles auswählen

NewList glob.glob()
AddElement(glob())
Was soll den daran falsch sein.....

Verfasst: 28.10.2004 16:01
von Lebostein
Hab grade mal die Zeile durch folgenden Code getauscht:

Code: Alles auswählen

glob()\menu\wide[0]\valx = 5            ...keine Probleme....

Debug glob()\menu\wide[0]\valx          ...es wird 5 ausgegeben....

Debug Str(glob()\menu\wide[0]\valx)     ...Programm stürzt ab....
:?: :?: :?:

Verfasst: 28.10.2004 16:03
von freedimension
Mach mal folgendes:

Code: Alles auswählen

; aus
SetGadgetText(#Menu_Edit_Verb_mx, Str(glob()\menu\wide[0]\valx))

; mach
dummy.l = glob()\menu\wide[0]\valx);
SetGadgetText(#Menu_Edit_Verb_mx, Str(dummy.l))
Ist zwar nicht toll, könnte aber vielleicht helfen.

EDIT: Ach ja, wieviele dieser Strukturen werden denn gleichzeitig eingesetzt? Wenn es wenige sind, kommst du billiger weg wenn du gleich den Long-Typ verwendest, die 4 Byte machen nicht wirklich was aus.

Verfasst: 28.10.2004 16:13
von Lebostein
So, für alle zum Testen:

Code: Alles auswählen

Structure v
  valx.w           ; x-Wert
  valy.w           ; y-Wert
EndStructure

Structure c
  colr.w           ; Rote farbe
  colg.w           ; Grüne Farbe
  colb.w           ; Blaue Farbe
EndStructure

Structure a
  maxi.w           ; Maximalwert der Animation
  tick.w           ; Zeitschritt
EndStructure

Structure anim
  name.s           ; Name der Figur
  pref.v           ; Referenzpunkt
  talk.a           ; Redeanimation
  walk.a           ; Gehanimation
  pals.c[16]       ; Palette
  head.b[13824]    ; Kopfbitmap
  body.b[34560]    ; Körperbitmap
EndStructure

Structure menu
  name.s           ; Name des Menus
  text.s[09]       ; Text der Verben
  pref.v[05]       ; Referenzpunkte 
  wide.v[03]       ; Breite der Bereiche
  posi.v[12]       ; Position der Bereiche
  pals.c[15]       ; Palette
  face.b[09600]    ; GUI-Bitmap
  verb.b[01800]    ; Verb-Bitmap
  move.b[00900]    ; Scroll gedrückt
  stop.b[00900]    ; Scroll deaktiviert
  maus.b[00240]    ; Mauszeiger Standard
  user.b[00240]    ; Mauszeiger kombinieren
EndStructure

Structure glob
  anim.anim
  menu.menu
EndStructure

NewList glob.glob()
AddElement(glob())

glob()\menu\wide[0]\valx = 5
Debug glob()\menu\wide[0]\valx
Debug Str(glob()\menu\wide[0]\valx)
Wer findet den Fehler?

EDIT: wenn ihr 'anim.ainm' in der glob-Struktur auskommentiert, funktioniert es... aber warum?

Verfasst: 28.10.2004 16:28
von Lebostein
Wenn man die glob-Struktur rumdreht, geht's plötzlich:

Code: Alles auswählen

Structure glob 
  menu.menu 
  anim.anim 
EndStructure
Da ist was faul in den tiefen von PureBasic :o

Verfasst: 28.10.2004 22:09
von Zaphod
probier mal aus den words

Code: Alles auswählen

Structure v
  valx.w           ; x-Wert
  valy.w           ; y-Wert
EndStructure
integers zu machen

Code: Alles auswählen

Structure v
  valx.l           ; x-Wert
  valy.l           ; y-Wert
EndStructure

Verfasst: 29.10.2004 01:13
von Lars
Ich würde sagen, Workaround schön und gut, aber erstmal ab damit an
Fred, das ist ja wohl ein ziemlich eindeutiger PB Bug.

Verfasst: 29.10.2004 08:18
von Lebostein
...ist schon gestern Nachmittag geschehen..

Fred scheint aber nicht da zu sein, sein letzter Post im engl. Forum geht auf den 26.10. zurück.... er wird schon wieder auftauchen :)