Assembler/C Programme anzeigen



  • Guten Morgen liebe Programmierer,
    Wer kann mir den genauen Befehl nennen, den man eingeben muss, um ein C-Programm als Assembler Quelltext angezeigt zu bekommen.
    Bsp:Einfaches x-beliebiges Programm :
    Das Programm mit dem Namen do_Schleife.c - Dazu will man die Auflösung in As
    Gnu-Assembler, also unter Linux angezeigt bekommen.

    #include<stdio.h>
    
    main()   {
    int eingabe;
    do{
    printf("Bitte eine Zahl eingeben bis max 100: ");
    scanf("%i",&eingabe);
    } while(eingabe >100);
    printf("Ihre Eingabe war %i",eingabe);
    }
    

    Wie lautet die genaue Syntax Editor von Linux (oder Windows),
    das ist ja im einzelnen unterschiedlich, für dieses Programm mit dem Namen:
    do_Schleife.c



  • Du hast die gleiche Frage schon im C-Unterforum gestellt...

    Wenn ich das richtig verstehe, willst du einfach die Ausgabe vom as von diesem Programm?

    erstmal solltest du dein programm gescheit umschreiben, so:

    #include <stdio.h>
    
    int main() // es heißt "int main", weil main einen int zurückgibt
    {
       int eingabe=0;
       while(eingabe > 100) // das ganze do-konstrukt kannst du dir sparen.
       {
           printf("Bitte eine Zahl eingeben bis max 100: ");
           scanf("%i",&eingabe);
       }
       printf("Ihre Eingabe war %i",eingabe);
       return 0; // das ist der int, den main zurückgibt
    }
    

    darf ich fragen, welches buch du zum lernen verwendest? das sieht mir nämlich sehr nach K&R-C aus...

    der as-output DEINES quellcodes aus dem eingangspost sieht folgendermaßen aus:

    .file	"do_Schleife.c"
    	.def	___main;	.scl	2;	.type	32;	.endef
    	.section .rdata,"dr"
    	.align 4
    LC0:
    	.ascii "Bitte eine Zahl eingeben bis max 100: \0"
    LC1:
    	.ascii "%i\0"
    LC2:
    	.ascii "Ihre Eingabe war %i\0"
    	.text
    	.globl	_main
    	.def	_main;	.scl	2;	.type	32;	.endef
    _main:
    LFB6:
    	.cfi_startproc
    	pushl	%ebp
    	.cfi_def_cfa_offset 8
    	.cfi_offset 5, -8
    	movl	%esp, %ebp
    	.cfi_def_cfa_register 5
    	andl	$-16, %esp
    	subl	$32, %esp
    	call	___main
    L2:
    	movl	$LC0, (%esp)
    	call	_printf
    	leal	28(%esp), %eax
    	movl	%eax, 4(%esp)
    	movl	$LC1, (%esp)
    	call	_scanf
    	movl	28(%esp), %eax
    	cmpl	$100, %eax
    	jg	L2
    	movl	28(%esp), %eax
    	movl	%eax, 4(%esp)
    	movl	$LC2, (%esp)
    	call	_printf
    	leave
    	.cfi_restore 5
    	.cfi_def_cfa 4, 4
    	ret
    	.cfi_endproc
    LFE6:
    	.def	_printf;	.scl	2;	.type	32;	.endef
    	.def	_scanf;	.scl	2;	.type	32;	.endef
    


  • Danke für die Hinweise und das Programm , das bringt mich schon weiter,

    wonach Ich suche ist jedoch der exakte Befehl bzw. Vorgehen wie Ich --selber-- ein c-Programm in Assembler anzeigen lassen kann!

    Der Hinweis von elise mit :
    gcc -S deinedatei.c

    hat mich schon insoweit weitergebracht als dass in Linux im Terminal in dem Verzeichnis eine Datei mit dem Namen deinedatei.s erzeugt wird.

    Mit dem zweiten Teil: ->"deinedatei.s" bekomme Ich allerdings nicht den Inhalt der -entsprechenden- Datei angezeigt?

    Ich muss das Terminal irgendwie dazu bringen mir den Inhalt des c-Programms, so wie es der Kollege in dem Vorhergehenden Beispiel gut dargestellt hat, anzeigen zu lassen.
    ??? ...


Anmelden zum Antworten