Not logged in. · Lost password · Register

Page:  previous  1  2  3  next 
Steppenwolf
Schläfer
Avatar
Member since Nov 2002
1535 posts
jou, so wuerde ich das auch sehen. ist natuerlich immer mehrdeutig so eine aufgabe, aber es kommt ja auf die argumentation an, die du hinschreiben kannst, wenn du noch zeit dafuer hast.
dawell
Avatar
Member since Nov 2002
138 posts
Zur 2)
Wie kommt man auf die 5 Bit / 13 Bit / 16 Bit?

Da WELL '4
Claudius
Avatar
Member since Oct 2002
956 posts
In reply to post ID 8665
Quote by Steppenwolf on 2003-09-26, 18:04:
next one:

3i)
movb x, %al
shlb $4, %al
subb x, %al
movb %al, y

Ist nicht 'Schnelle Multiplikation genau das Verfahren mit immer durch 2 teilen und am Schluss von allen ungeraden das nochmal dazu addieren(schon klar das du das mit dem Shift gut abkürzt, aber wollen die das evtl genau so und nicht anders(also mit adds, Schritt für Schritt))
Also wollen die evtl gleich noch ein bissl Theorie abfragen, oder gibts Extra-Pkte auf effizientere Algorihtmen?
Im mod(1) sind wir alle gleich....
UQi ⊂ ΦMilch ⊂ ΦNutz ;i ∈ ℕ
Q ∪ Φk = φNutz ∀k ∈ Deck
Abstreiter-T5
Member since Nov 2002
152 posts
shiften is immer gut, wie ich mitgeschrieben hab, im 2ten semester? war ne klausuraufgabe, ne vorgegebene zahl mit 254 zu multiplizieren. Wenn du da nach der schnellen multiplikation das hinschreibst brauchst du ewig (soviel platz is garned aufm papier). einfach die zahl um 8bits shiften (= mit 256 multiplizieren) und dann zweimal die ursprüngliche zahl abziehn. Wenn man sowas verstanden hat und weis wie n framepointer aufgebaut ist, hat man die klausur im prinzip bestanden. Is ne klausur zum denken, nicht zum stupiden auswendig gelerne. Was auch lustig war, war ne aufgabe wo se uns n assemblercode gegeben haben und man sagen sollte was der code macht ... und da war ne endlosschleife miteingebaut *g*
Ceterum censeo Carthaginem esse delendam!
Claudius
Avatar
Member since Oct 2002
956 posts
Willst du nicht gaanz lieb :heart: sein und mir den Frame-Pointer erklären?  :-D


Wow - this machine is *really* fast - it executes an infinite loop in less than 5 seconds!
Im mod(1) sind wir alle gleich....
UQi ⊂ ΦMilch ⊂ ΦNutz ;i ∈ ℕ
Q ∪ Φk = φNutz ∀k ∈ Deck
Abstreiter-T5
Member since Nov 2002
152 posts
Also ich find den framepointer ganz gut erklärt im skript, wie das jetzt aba genau funktioniert weiß ich auch nimmer, is schon so lang her ;(
Ceterum censeo Carthaginem esse delendam!
ML
Avatar
Member since Oct 2003
66 posts
also ich verstehe den Sinn eines Frampointers schon, glaube ich - bin mir aber nicht ganz sicher (deswegen poste ich mal dazu noch nichts - nicht dass ich hier unwahrheiten verbreite).

Was mich aber interessiert ist folgendes:

main:
        pushl   %ebp

das ist jeweils die erste Zeile in nem ausführbaren Programm. Das bedeutet doch eigentlich, dass zu Beginn eines jeden Programms der Inhalt des ebp gleich dem Inhalt des esp sein muss. sonst würde doch nach diesem push ne falsche adresse aufm stack stehn.  Das wiederum bedeutet doch, dass jedes terminierende Programm den ebp auf den aktuellen esp setzen muss. Oder geschieht das automatisch?

achja: gibts irgendwo Lösungen zu den alten Klausuren?
This post was edited on 2004-09-25, 13:51 by ML.
Erik
Member since Jan 2003
424 posts
http://www.a-m-i.de/tips/stack/stack.php

Vielleicht hilft ja das als Erklärung?
dawell
Avatar
Member since Nov 2002
138 posts
Moin!

Ähm, wie kommt man auf die 5 Bit / 13 Bit / 16 Bit in Aufgabe 2? Weiß des niemand, oder is es zu trivial?

Da WELL '4
Claudius
Avatar
Member since Oct 2002
956 posts
die5 - keine Ahnung, aber die anderen sind dann
c) 5 + 8 = 13 (Weil das displacement 8 bit braucht für 256 versch. Zahlen)
und
d) 1(ka, warum, ich lerns mal auswendig :o) ) + 15 (naja, 216-1 = (Σi=0n)215, also 15 Bit wenn alles Einsen sind)
=16 Bit *Schulterzuck*
ich würde es auch gerne genau wisse und habe auf Antwort von jmd qualifizierten gehofft - das mit den Zahlen bekomm ich ja noch hin, aber woher soll ich wissen mit wievielen Bit die Adressierungsarten codiert werden oder ob das Flags sind oder wie auch immer....?
Im mod(1) sind wir alle gleich....
UQi ⊂ ΦMilch ⊂ ΦNutz ;i ∈ ℕ
Q ∪ Φk = φNutz ∀k ∈ Deck
bisasam
Member since Nov 2002
16 posts
zur 2)
a) "Register" -> Als Operand muss Register codiert sein... Es gibt 32 Stück davon. Also brauch man log2(32) = 5 bits

b) "Register Indirect" -> Die Art (also "indirekt") wird in der Instruktion und nicht im Operanden codiert. Es muss also wir in a) nur das Register codiert werden -> 5 bits

c) 5 bits für Register, klar. Displacement kann (127 - (-128) + 1) = 256 Werte annehmen -> log2(256) = 8 bits. Also igs. 5 + 8 = 13 bits

d) Operand muss direkt codiert werden. Es gibt (2^16 - 1 - 0 + 1) = 2 ^ 16 Möglichkeiten. log2(2^16) = 16. Also 16 Bits benötigt.

Die nächste Teilaufgabe ist aber glaub ich NICHT so trivial, wie im ersten Post zu lesen... Denn als Immediate Operand kann man ja laut d) nur Werte von 0 .. 2^16 (also 2 Bytes) übergeben. D.h. man kann $0x12345678 nicht direkt übergeben. (sind ja 4 Bytes). Was denkt ihr ?!?
Claudius
Avatar
Member since Oct 2002
956 posts
Danke erst mal!
aber warum rechnest du bei d) nochmal eins dazu? 15 Bits liefern ja genau die Anzahl Werte die wir brauchen?
Anm.: Ich glaub ich habe "von 0 bis 2^16 anders interpretiert - dann stimmts wieder :o)

Bei der nächsten:
Wie wärs zur Umgehung mit:
movw $0x1234 , %r1
shll $4 , %r1
addl $0x5678 , %r1
movl (%r1) , %r0

Aber gute Denke, der Einwand, richtig fieselig die Aufgabe...
Im mod(1) sind wir alle gleich....
UQi ⊂ ΦMilch ⊂ ΦNutz ;i ∈ ℕ
Q ∪ Φk = φNutz ∀k ∈ Deck
Hanswurscht
Avatar
Member since Nov 2002
192 posts
In reply to post #26
Die nächste Teilaufgabe ist aber glaub ich NICHT so trivial, wie im ersten Post zu lesen... Denn als Immediate Operand kann man ja laut d) nur Werte von 0 .. 2^16 (also 2 Bytes) übergeben. D.h. man kann $0x12345678 nicht direkt übergeben. (sind ja 4 Bytes). Was denkt ihr ?!?

Tschuldigung wenn ich mich einmische aber da weiß ich glaub ich auch was.

das geht glaubich mit sethi und setlo.

sethi $0x1234, %r1
setlo $0x5678, %r1
movl (%r1), %r0
Have a chillin`day.  
bisasam
Member since Nov 2002
16 posts
allgemeine Formel: Anzahl = Obergrenze - Untergrenze + 1
d.h. bei Werten von 0 .. 2^16 - 1 => Anzahl = (2^16 - 1) - 0 + 1 = 2^16

die Idee mit dem shiften und addieren ist gut :) sethi und setlo kam in der Vorlesung aber auch mal vor...
Sade
SP Team
Avatar
Member since Nov 2004
14 posts
Subject: Aufgabe 5
>21      ggt:
>22      movl 8(%esp), %eax     # a in %eax
>23      movl 4(%esp), %ebx     # b in %ebx

ich habe da:
movl 4(%esp), %eax #a ins %eax
movl 8(%esp), %ebx #b ins %eax

das b wird doch zuerst auf den stack gelegt, da der compiler doch am anfang schaun, muss wieviele parameter überhaupt da sind, oder hab ich da was falsch verstanden...?
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Page:  previous  1  2  3  next 
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen