Autor Thema: [Erledigt] CPUID hilfe!!!  (Gelesen 11217 mal)

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #20 am: 20. November 2009, 19:05 »
da hast du beim compilieren wohl '-masm intel' '-masm=intel' vergessen.

Edit: Im AT/T-Syntax sieht das ungefähr so aus
__asm__("pushf;"
        "pushf;"
        "pop %1;"
        "mov %1, %0;"
        "xor $0x200000, %0;"
        "push %0;"
        "popf;"
        "pushf;"
        "pop %0;"
        "popf" : "=a"(EAX), "=c"(ECX));
« Letzte Änderung: 20. November 2009, 19:20 von MNemo »
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

Programm Noob

  • Gast
Gespeichert
« Antwort #21 am: 20. November 2009, 19:10 »
heißt das nicht :
-masm=intel   :?

Programm Noob

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #22 am: 20. November 2009, 19:17 »
doch :oops:

-masm=intel
ist korrekt, aber das hat bei dir wohl gefehlt. Zumindest gibt's bei mir die Fehlermeldung nur wenn ich es weglasse.
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #23 am: 20. November 2009, 19:43 »
Es könnte sein, dass gas pushfd und popfd nicht kennt, probiers einfach mal mit pushf und popf.

Programm Noob

  • Gast
Gespeichert
« Antwort #24 am: 20. November 2009, 20:09 »
@MNemo mit welchem Compiler arbeitest du?

weil bei cross gcc mit -masm=intel gibts den Fehler nämlich trotzdem

programm Noob

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #25 am: 20. November 2009, 20:22 »
ich nutzte:
gcc (Debian 4.3.4-5) 4.3.4
GNU assembler (GNU Binutils for Debian) 2.20

alles 64bit, daher compiliere ich mit '-m32'
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

Programm Noob

  • Gast
Gespeichert
« Antwort #26 am: 21. November 2009, 00:48 »
Compilieren kann ich es jetzt, doch wenn ich das ganze in bochs testen will startet sobald die Funkion ausgeführt wird der "PC" in Bochs neu.

Programm Noob

DerHartmut

  • Beiträge: 236
    • Profil anzeigen
    • Mein Blog
Gespeichert
« Antwort #27 am: 21. November 2009, 12:23 »
Hänge bei deinen CFLAGS den Switch -masm=intel an. Damit kompilliert er nicht mehr in AT&T-Syntax sondern in Intel-Syntax ;)
$_="krJhruaesrltre c a cnp,ohet";$_.=$1,print$2while s/(..)(.)//;
Nutze die Macht, nutze Perl ;-)

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #28 am: 21. November 2009, 13:04 »
Compilieren kann ich es jetzt, doch wenn ich das ganze in bochs testen will startet sobald die Funkion ausgeführt wird der "PC" in Bochs neu.

XanClic und ich haben bei den Codebeispielen jeweils das fehlende 'popf' am Ende ergänzt(ohne es nochmal zu erwähnen). hast du das in deinem Code auch? Alternativ kannst du auch das erste pushf weglassen.
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #29 am: 21. November 2009, 13:09 »
Zitat von: DerHartmut
Hänge bei deinen CFLAGS den Switch -masm=intel an. Damit kompilliert er nicht mehr in AT&T-Syntax sondern in Intel-Syntax ;)
Zitat von: Programm Noob
weil bei cross gcc mit -masm=intel gibts den Fehler nämlich trotzdem

Ich glaube, da muss man nix an eine Umgebungsvariable anhängen, denn afaik nutzt gcc diese an sich nicht. Sie wird nur standardmäßig in Makefiles genutzt, dann eben in der Form $(CC) $(CFLAGS). Aber an sich sollte die das nicht beeinflussen.
Und offenbar hat er ja -masm=intel als Parameter benutzt.

Wobei ich hoffe, dass ich jetzt keinen Mist erzählt hab und gcc CFLAGS doch direkt nutzt. :-D

Programm Noob

  • Gast
Gespeichert
« Antwort #30 am: 21. November 2009, 21:56 »
Moin

@MNemo ja das zweite popf habe ich auch angefügt.

@XanClic ich arbeite nicht mit makefiles oder zumindest noch nicht sondern nutze .bat Dateien

Der Fehler ist noch nicht behoben, ich wede mal gucken was der Bochs debugger ausspuckt.

Danke für eure Hilfe bis jetzt, sollte trotzden noch irgendjemanden etwas einfallen, dann bitte posten.

Programm Noob

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #31 am: 21. November 2009, 23:13 »
Zitat von: Programm Noob
@XanClic ich arbeite nicht mit makefiles oder zumindest noch nicht sondern nutze .bat Dateien
Das dachte ich mir und deshalb hat dich CFLAGS afaik nicht zu interessieren. :wink:

 

Einloggen