Anzeige:
Ergebnis 1 bis 3 von 3

Thema: assembler-output von gcc auf AMD64-architektur

  1. #1
    Registrierter Benutzer
    Registriert seit
    07.09.2006
    Beiträge
    14

    assembler-output von gcc auf AMD64-architektur

    Hi!

    Ich habe mir mal den Output angesehen den der gcc auf einer AMD64-Maschine ausgibt. Der gcc erzeugt sehr viele Pseudo-Ops wie .LFB2, .LCFI0, etc.
    Wenn ich das selbe Programm jedoch auf einer x86-Maschine kompiliere bekomme ich einen wesentlich schlankeren Assembler-Code. Was bedeuten diese ganzen Pseudo-Ops? Im Gnu As Manual sind sie leider nicht dokumentiert und auch in den AMD-Developer-Manuals befindet sich dazu keine Information. Kann ich vielleicht dem gcc irgendwie beibringen nur die nötigste Information in das Assembler-File zu packen?

    lg, mouk

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    OPS sind vermutlich Meldungen auf der Kernelebene.
    Schalte den -fstack-protector ein und du bekommst ausführlichere Meldungen.
    Letzteres müsste -fomit-frame-pointer oder -mno-align-stringops erledigen.
    Geändert von undefined (24-03-2008 um 14:59 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.09.2005
    Beiträge
    66
    Anweisungen wie .LFB2 sind keine Instruktionen, sondern Labels. Der Compiler markiert damit eine Stelle im Code, die er später benutzen kann. Der Assembler ersetzt die Label-Referenzen dann durch Addressen, im kompilierten Code tauchen sie dann auch nicht mehr auf. Von der Performance her musst du dir da also keine Sorgen machen.
    Dass der GCC im AMD64-Modus wesentlich mehr Labels als auf x86 setzt, ist mir auch schon aufgefallen, allerdings kann ich dir dafür auch keine richtige Erklärung liefern.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •