Editor Fachwissen bezüglich c unter Linux
- 
					
					
					
					
 Richtig ! Allerdings kommt jetzt die Meldung: sokonord@ubuntu:~/Arbeitsfläche/Trplc$ objdump -D Groessenvergl.s sokonord@ubuntu:~/Arbeitsfläche/Trplc$ objdump -D Groessenvergl.exe objdump: 'Groessenvergl.exe': No such file sokonord@ubuntu:~/Arbeitsfläche/Trplc$ ??... bzw.: sokonord@ubuntu:~/Arbeitsfläche/Trplc$ objdump -D Groessenvergl.s sokonord@ubuntu:~/Arbeitsfläche/Trplc$keine Ausgabe? Zu Veranschaulichung das Vz: sokonord@ubuntu:~/Arbeitsfläche/Trplc$ ls a.out endlicherzahlenkfunc2.c~ Groessenvergl2.c~ pointerschalter3.c~ array2.c endlicherzahlenkfunc.c Groessenvergl.c pointerschalter.c~ array2.c~ endlicherzahlenkfunc.c~ Groessenvergl.c~ struct2.c array.c Entscheidungsstruktur2.c Groessenvergl.s struct2.c~ array.c~ Entscheidungsstruktur2.c~ kalender2.c struct.c do_Schleife2.c Entscheidungsstruktur.c kalender2.c~ struct.c~ do_Schleife.c Entscheidungsstruktur.c~ kalender.c test.c do_Schleife.c~ Formelimpl Zinsen extern2.c~ kalender.c~ test.c~ endlicherzahlenk2.c gesch_Schleife2.c kalenderTrpl.c~ zinsberechnung2.c endlicherzahlenk2.c~ gesch_Schleife.c pointermechanik.c~ zinsberechnung.c endlicherzahlenk.c Gleichungsalgorithmus2.c pointermechanikTrpl.c~ zinsen2.c endlicherzahlenk.c~ Gleichungsalgorithmus.c pointerschalter2.c~ zinsen2.c~ endlicherzahlenkfunc2.c Groessenvergl2.c pointerschalter3-1.c~ zinsen.c sokonord@ubuntu:~/Arbeitsfläche/Trplc$ objdump -D Groessenvergl.s sokonord@ubuntu:~/Arbeitsfläche/Trplc$ objdump -D Groessenvergl.exe objdump: 'Groessenvergl.exe': No such file sokonord@ubuntu:~/Arbeitsfläche/Trplc$
 
- 
					
					
					
					
 du musst natürlich zuerst das programm kompilieren. unter ubuntu gibt es keine exe dateien. 
 
- 
					
					
					
					
 "a.out"? Gibt das einfach mal ein... 
 
- 
					
					
					
					
 Hallo liebe Freunde der Programmiersprachen, Ich habe das Problem mit eurer Hilfe ---vorerst--- so gelöst: gcc -S Groessenvergl.c objdump -D Groessenvergl.s as -o Groessenvergl.o Groessenvergl.s ld -o Groessenvergl.x Groessenvergl.o ./Groessenvergl.x cat Groessenvergl.sWelche der Systemanweisungen vor der mit letzten mit cat... entscheidend ist muss 
 Ich noch durchtesten. In As habe Ich zwar kein lauffähiges Programm erhalten,
 Der AS fragt nach der Funktiona scanf... aber Ich erhalte folgende Ausgabe mit
 dem letzten Befehl cat nachsokonord@ubuntu:~/Arbeitsfläche/Trplc$ cat Groessenvergl.s .file "Groessenvergl.c" .section .rodata .LC0: .string "x eingeben: " .LC1: .string "%i" .LC2: .string "y eingeben: " .LC3: .string "z eingeben: " .LC4: .string "Die groesste Zahl ist %i \n" .text .globl main .type main, @function main: .LFB0: .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 movl $.LC0, %eax movl %eax, (%esp) call printf movl $.LC1, %eax leal 20(%esp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call __isoc99_scanf movl $.LC2, %eax movl %eax, (%esp) call printf movl $.LC1, %eax leal 24(%esp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call __isoc99_scanf movl $.LC3, %eax movl %eax, (%esp) call printf movl $.LC1, %eax leal 28(%esp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call __isoc99_scanf movl 20(%esp), %edx movl 24(%esp), %eax cmpl %eax, %edx jle .L2 movl 28(%esp), %edx movl 20(%esp), %eax cmpl %eax, %edx cmovge %edx, %eax jmp .L3 .L2: movl 28(%esp), %edx movl 24(%esp), %eax cmpl %eax, %edx cmovge %edx, %eax .L3: movl $.LC4, %edx movl %eax, 4(%esp) movl %edx, (%esp) call printf leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (Ubuntu/Linaro 4.6.2-7ubuntu1) 4.6.2" .section .note.GNU-stack,"",@progbitsDa muss man wohl bisschen dran arbeiten... Danke für die Tipps! 
 
- 
					
					
					
					
 Hö? Du weißt doch hoffentlich, dass du diese Schritte nicht alle selbst machen musst, oder? gcc Groessenvergleich.c -o Groessenvergleich.xUnd schon hast du deine executable. 
 
- 
					
					
					
					
 Und was soll der Aufruf 
 objdump -D Groessenvergl.sDu scheinst nicht genau zu verstehen, Groessenvergl.s ist eine TEXTDATEI, die du mit jedem x-beliebigen Texteditor öffnen und betrachten kannst. objdump prüft BINÄRDATEIEN. 
 Du muss zuerst das Programm kompilieren und kannst am Ende das PROGRAMM (!!!) mit objdump auseinandernehmen.Außerdem brauchst du eigentlich garnicht den assembler-output. Das macht alles der gcc für dich. 
 
- 
					
					
					
					
 Es ging mir ursprünglich darum ein c Programm in As Code auszugeben, weil Ich davon ausgegangen bin, dass C sich in As auflöst. "Definition: DerAssembler ist ein Übersetzter für Befehle in Maschinensprache 
 Ein Befehl in einer höheren Sprache ist eine Gruppe von Befehlen in Maschinen-
 sprache bzw. Assembler."
 Dies hatte Ich am Anfang des Diskussionstitels mit dem c-Programm erklärt.Die von dir in der letzten Anmerkung zitierte durchaus richtige Terminalanweisung 
 für den C-Compilergcc Groessenvergleich.c -o Groessenvergleich.xtut dies nicht . In dem jeweiligen Verzeichnis wird kein 
 Programm/Datei mit der Endung Groessenvergleich.s erzeugt sondern der Befehl den Teilnehmer Elise mir vorschlug mitgcc -S Groessenvergl.cerzeugt diese Datei erst. 
 Nun hatte Ich aber das Problem, das Ich diese so gezeugte Datei nicht mit dem
 Befehl cat im Terminalcat Groessenvergl.sund auch nicht durch einen Editor --konkret gedit-- öffnen konnte, 
 die Anmerkung von dir verstehe Ich , Ich hatte versucht diese Datei mit gedit
 zu öffnen -- ging nicht ?
 erst nachdem Ich die so gezeugte Assembler Datei
 mit den Terminal Anweisungen1. objdump -D Groessenvergl.s 2. as -o Groessenvergl.o Groessenvergl.s ld -o Groessenvergl.x Groessenvergl.o(eine Datei xyz.s muss ja dafür existieren) habe convertieren lassen; 
 funktionierte das Anzeigen mit dem Terminal Befehl cat ...
 Welche der Anweisungen entscheidend war weiss Ich nicht aber, es hat erst danach
 funktioniert.
 Warum ? Keine Ahnung ...
 
- 
					
					
					
					
 Ich habe Abends nochmal in Ruhe am Rechner gearbeitet und muss dem 
 Sozialistischen Demokraten recht geben ,diemit dem Befehl gcc -S Groessenvergleich.c 
 gezeugte Datei lässt sich schon in erster Instanz mit Gedit anzeigenWar also wohl ein Fehler von mir oder das netbook hats nicht gepackt sorry (Anders gesagt: 
 Mir ging es eingentlich nur darum, ein c-Programm als Assembler Quelltext
 darzustellen , weil Ich davon ausgehe, dass sich laut Definitionen, die
 Befehle und Funktionen von C in Assembler Befehle auflösen ! ?)
 
- 
					
					
					
					
 also: wenn du dein c programm als assembler code sehen willst: 
 gcc -S datei.cdanach führst du immer selbst diese as und ld schritte aus, das brauchst du aber nicht, das macht alles der gcc für dich: 
 gcc datei.c -o datei.xanschließend kannst du das programm "datei.x" mit objdump disassemblen: 
 objdump -D datei.xalles klar?  
 
- 
					
					
					
					
 Ja Danke!!