FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Technische Informatik

Assembler Programm zur Berechnung der Fibonacci Zahlen

Assembler Programm zur Berechnung der Fibonacci Zahlen 2007-01-14 21:01
Anonymer User
Wie gebe ich an welche Fibonacci-Zahl ich berechnen möchte wenn ich ein Programm habe, das mir die n-te Fibonacci-Zahl liefert?

Wenn ich gcc MeinProgramm.s und dann ./a.out ausführe…

Wo gebe ich an welche Fibonacci-Zahl ich berechnen möchte?

Re: Assembler Programm zur Berechnung der Fibonacci Zahlen 2007-01-14 21:31
Wolf
Parameter landen auf dem Stack.
enter $0, $0 # -> push %ebp; mov %esp, %ebp; push %edx # Parameter vom Stack in edx schreiben movl 8(%ebp), %edx # --- CODE --- # Danach kannst Du Deinen Parameter auf der Kommandozeile beim Programmaufruf übergeben.

Re: Assembler Programm zur Berechnung der Fibonacci Zahlen 2007-01-14 22:16
Anonymer User
und wie übergebe ich den Parameter beim Programmaufruf?

Re: Assembler Programm zur Berechnung der Fibonacci Zahlen 2007-01-14 22:17
Wolf
Mit der Tastatur. Wie denn sonst?

Edit: Du kannst natürlich auch einen trivialen C-Wrapper zum Aufruf schreiben - main-Methode, das Argument von main gibts Du als int an eine Methode fibonacci(int), über den Header rufst Du dann Dein Assemblerprogramm auf, fertig.

Re: Assembler Programm zur Berechnung der Fibonacci Zahlen 2007-01-14 22:42
Anonymer User
Wie gebe ich an welche Fibonacci-Zahl ich berechnen möchte wenn ich ein Programm habe, das mir die n-te Fibonacci-Zahl liefert?
Ich denke mal, Du sollst ein Programm schreiben, welches drei ganz bestimmte berechnen soll. Dazu ruftst Du in der main-Funktion drei mal die Fibonacci-Funktion mit verschiedenen Werten auf.

In C sähe das so aus:
int main() { fibonacci(46); fibonacci(47); fibonacci(48); } void fibonacci(int i) { // ... berechnen und ausgeben }

Re: Assembler Programm zur Berechnung der Fibonacci Zahlen 2007-01-15 00:06
UncleOwen
Danach kannst Du Deinen Parameter auf der Kommandozeile beim Programmaufruf übergeben.
Naja, aber als String. Und String-Handling in asm will man nicht machen (vor allem nicht, in so 'ner billigen Uebungsaufgabe…)

Re: Assembler Programm zur Berechnung der Fibonacci Zahlen 2007-01-15 00:52
Goldl
Hat jemand vielleicht nen Tipp wie ich den Overflow bei Fib(47) vermeiden kann?

Re: Assembler Programm zur Berechnung der Fibonacci Zahlen 2007-01-15 02:06
Anonymer User
Hat jemand vielleicht nen Tipp wie ich den Overflow bei Fib(47) vermeiden kann?
Vielleicht ist der Overflow der Sinn der Aufgabe?

Re: Assembler Programm zur Berechnung der Fibonacci Zahlen 2007-01-15 03:05
garou
Hat jemand vielleicht nen Tipp wie ich den Overflow bei Fib(47) vermeiden kann?
Wie lange willst du ihn denn vermeiden? Du könntest die Zahl in $favorite_numerical_type-Blocks darstellen und iterative schriftliche Multiplikation damit treiben, AFAIK wird bignum so gerechnet. Natürlich kommst du damit dann irgendwann vom word overflow zum memory overflow, aber irgendwas ist immer. :)

Re: Assembler Programm zur Berechnung der Fibonacci Zahlen 2007-01-15 07:34
Hannes
Hat jemand vielleicht nen Tipp wie ich den Overflow bei Fib(47) vermeiden kann?

bei f47 gehts noch, indem du in printf %u statt %d als parameter verwendest. dann wird das register ohne rücksicht auf das vorzeichen ausgegeben.

Re: Assembler Programm zur Berechnung der Fibonacci Zahlen 2007-01-15 17:32
Wolf
Danach kannst Du Deinen Parameter auf der Kommandozeile beim Programmaufruf übergeben.
Naja, aber als String. Und String-Handling in asm will man nicht machen (vor allem nicht, in so 'ner billigen Uebungsaufgabe…)
Wieso nicht? Was rauskommt, ist die Adresse des String-Anfangs. Ein Blick in eine ASCII-Tabelle zeigt, wie leicht es ist, ints zu parsen. Der String endet bei \0. Ist doch easy.

Oder hab ich was übersehen?