Ich habe nämlich gar keine Ahnung.
So wie es aussieht muss ich dann die Lösungen abwarten und RS im nächsten Jahr nochmal machen. Und das alles nur wegen den letzten beiden Übungszetteln. Obwohl ich sonst immer fast 100% hatte.
Wie fange ich denn nun an ein Programm zu schreiben, wenn ich nicht die Möglichkeit habe eine Sparc zu benutzen.
Die Lösungen sollen ja als Aufgabe.s Format eingeschickt werden. Das kann ich ja dann gar nicht. Oder reicht es den Code in einem Editor zu schreiben und als .txt zu verschicken?
Wenn ihr Ahnung habt dann könnt ihr mir ja mal den Code für die Addition zweier Zahlen zeigen zum Beispiel. Und nicht nur die Befehle, die sind mir schon klar, aber das ganze Program wie es richtig wäre, von Anfang bis Ende.
Ich sehe für mich nämlich schwarz hier. Das nervt mich schon gewaltig wenn es daran nun scheitern würde.
Wie fange ich denn nun an ein Programm zu schreiben, wenn ich nicht die Möglichkeit habe eine Sparc zu benutzen.
Hast Du doch??? Im Rechenzentrum stehen jede Menge rum, und da kommt man auch von aussen per ssh rauf.
Die Lösungen sollen ja als Aufgabe.s Format eingeschickt werden. Das kann ich ja dann gar nicht. Oder reicht es den Code in einem Editor zu schreiben und als .txt zu verschicken?
.s ist plain text…
ok danke für die Antwort. Ich dachte ich würde dieses SSH nie brauchen, aber nun sieht es wohl danauch aus.
Was ich bis jetzt im Forum darüber gelesen habe hat mir nicht viel geholfen.
Kann mir das jemand mal für Dummies erklären? Und wenn ich dan da drauf bin, wie kann ich dann dort Assemblerprogramme schreiben und testen.
Obwohl ich ja immer noch nicht weiss wie ich so ein Programm komplett schreibe, dann hilft es mir auch nicht viel am Informatikum oder über SSH die Aufgaben zu lösen…….
Kann noch irgendjemand helfen bitt?
Über das Arbeiten über SSH hatte Fred schon hier was geschrieben:
http://3773.rapidforum.com/topic=101880127261
Wenn ihr Ahnung habt dann könnt ihr mir ja mal den Code für die Addition zweier Zahlen zeigen zum Beispiel. Und nicht nur die Befehle, die sind mir schon klar, aber das ganze Program wie es richtig wäre, von Anfang bis Ende.
Wie in einem anderen Thread bereits erwähnt kannst Du ein C-Programm schreiben und nach Assembler übersetzen.
Ich habe z.B. gerade testweise mal ein Programm geschrieben, welches zwei Zahlen addiert:
#include <stdio.h>
int main()
{
int a = 5;
int b = 10;
int c = a+b;
printf("%i + %i = %i\n", a, b, c);
return 0;
}
Das lädt man dann per WinSCP auf rzdspc3 hoch. Dann startet man putty und übersetzt es nach Assembler:
gcc -S test.c
Anschliessend hast Du eine test.s, welche Du Dir per WinSCP runterladen kannst. Die sieht bei mir so aus:
.file "test.c"
.section ".rodata"
.align 8
.LLC0:
.asciz "%i + %i = %i\n"
.section ".text"
.align 4
.global main
.type main, #function
.proc 04
main:
save %sp, -128, %sp
mov 5, %g1
st %g1, [%fp-28]
mov 10, %g1
st %g1, [%fp-24]
ld [%fp-28], %g2
ld [%fp-24], %g1
add %g2, %g1, %g1
st %g1, [%fp-20]
sethi %hi(.LLC0), %g1
or %g1, %lo(.LLC0), %o0
ld [%fp-28], %o1
ld [%fp-24], %o2
ld [%fp-20], %o3
call printf, 0
nop
mov 0, %g1
mov %g1, %i0
restore
jmp %o7+8
nop
.size main, .-main
.ident "GCC: (GNU) 4.1.1"
In dem generierten Code sind noch sehr viele überflüssige Befehle (z.B. werden Zwischenergebnisse auf dem Stack zwischengespeichert, obwohl wir genügend Platz in den Registern haben). Nach ein bischen Aufräumarbeit sieht das ganze dann so aus:
.section ".text"
.align 4
.global main
main:
save %sp, -128, %sp
sethi %hi(hans), %o0
or %o0, %lo(hans), %o0
mov 5, %o1
mov 10, %o2
call printf
add %o1, %o2, %o3
ret
restore
.section ".rodata"
.align 8
hans:
.asciz "%i + %i = %i\n"
Wunder Dich nicht darüber, dass der printf Aufruf vor der Addition steht: der Befehl hinter dem call wird noch vor dem eigentlichen Sprung ausgeführt. Stichwort pipelining.
macht das jeder so? das er zuerst ein C Programm schreibt? Ich persönlich kenne mich mit C Programmen nicht so gut aus. Schreibt keiner das Assemblerprogramm von Anfang an ohne solche Hilfe?
Dann startet man putty und übersetzt es nach Assembler: gcc -S test.c Anschliessend hast Du eine test.s, welche Du Dir per WinSCP runterladen kannst.
Wie genau ist das gemeint? Wenn ich jetzt mit Putty meine Konsole habe, was dann?
Schreibt keiner das Assemblerprogramm von Anfang an ohne solche Hilfe?
Also ich benutze dafür meistens die folgende Vorlage:
.section ".text"
.align 4
.global main
main:
save %sp, -128, %sp
;---insert code here
ret
restore
.section ".rodata"
.align 8
;---insert data here
Damit kann man es eigentlich ganz vernünftig "von Hand" schreiben.
Schreibt keiner das Assemblerprogramm von Anfang an ohne solche Hilfe?
Kommt drauf an ob du es können möchtest oder nicht und die Aufgaben ohne C zu machen ist sicherlich eine sehr gute Übung ^^
Zitat:
Schreibt keiner das Assemblerprogramm von Anfang an ohne solche Hilfe?
Kommt drauf an ob du es können möchtest oder nicht und die Aufgaben ohne C zu machen ist sicherlich eine sehr gute Übung ^^
Ich würde es sehr gerne können, wenn jemand bereit ist mir dabei zu helfen?
Bist du ein Erstsemester Goldl?
Willkommen zum gleichen Schicksal ;) lol