Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Allgemeines (OffTopic) » mingw 3.5 bug?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.03.2005, 14:02 Uhr
(un)wissender
Niveauwart


Hallo,

ich bin auf etwas Seltsames gestoßen. Es geht um eine Assemblerroutine, die ich einbinde. Mit VC++ 7.1 funzt alles super, mit mingw 3.2 auch. Aber mit mingw 3.5 nicht. Weiß jemand was näheres? Kommt der mit stdcall nicht klar? Ich habe schon mal soviel rausgefunden, dass der Stackpointer von 3.5 wohl nicht korrekt gesetzt wird. Im Allgemeinen ist der Umgang des gccs mit stdcall sehr seltsam. Eigentlich ist für das Aufräumen des Stacks die aufgerufene Funktion verantwortlich (bei stdcall), der gcc zieht aber trotzdem noch die Größe der Parameter vom Stackpointer ab. Warum?!
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.03.2005, 14:15 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


fehlender flag evtl?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.03.2005, 14:57 Uhr
(un)wissender
Niveauwart


Wenn, welches flag meinst du?
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.03.2005, 15:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ka evtl fehlt beim kompilieren ein flag o.ä
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.03.2005, 16:14 Uhr
(un)wissender
Niveauwart


Tja, man ist immer schnell dabei anderen den Fehler unterzuschieben.
Also, das Problem war, dass ich die Register EBX und EDX verwechselt habe. Es gibt so genannte scratch register, also Register die eine Funktion überschreiben darf ohne sie wieder herstellen zu müssen ( EAX, ECX, EDX, ST(0)-ST(7), XMM0-XMM7 ). Nun gehört aber EBX halt nicht dazu und das habe ich überschreiben. DEr Vc++ zählt diese auch zu den scratch registern, der gcc hält sich aber an den Standard und zählt es nicht dazu. Beim gcc 3.2 hat es wohl durch Zufall funktioniert.
Zum zweiten Punkt: der gcc hält es mit stdcall etwas anders, aber trotzdem durchaus standardkonform.
War also alles mein Fehler.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.03.2005, 17:29 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


evtl hat sich der gcc-3.2 an der stelle nicht an den standard gehalten
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.03.2005, 17:50 Uhr
Bruder Leif
dances with systems
(Operator)


Ja ja, bei Problemen im Zusammenhang mit Assembler wirken PUSHA und POPA manchmal Wunder
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.03.2005, 19:38 Uhr
(un)wissender
Niveauwart


@Leif
Man kann sie aber oft weglassen, man muss nur wissen wo. Dann klappt es auch mit der Performance.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
20.03.2005, 19:40 Uhr
Bruder Leif
dances with systems
(Operator)


Jepp, wie gesagt in erster Linie zur Fehlersuche
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Allgemeines (OffTopic) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: