Adressierung: "0x1000"

Aufgaben, Lösungen, Klausuren
Gesperrt
DjKeeper
Beiträge: 33
Registriert: 17.12.2004 12:16

Adressierung: "0x1000"

Beitrag von DjKeeper »

ich muss die vorlesung verpennt haben, ich weiß nämlich überhaupt nicht, wie ich mit dieser adressen-form umgehen soll.

was bedeutet denn das \"x\"?

z.B. 0x100000

ich weiß, ist ein bißchen spät für die frage ;)

gruß
Benutzeravatar
Krüsty
Beiträge: 163
Registriert: 11.10.2004 20:34
Name: Krüsty
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2012
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Dresden
Kontaktdaten:

Adressierung:

Beitrag von Krüsty »

Das 0x steht für Hexadezimale Zahlendarstellung. Man könnte auch nen H oder ne 16 hinten als Index schreiben.
Wer sich zu wichtig für kleine Arbeiten hält, ist oft zu klein für
wichtige Arbeiten. (Jaques Tati)
DjKeeper
Beiträge: 33
Registriert: 17.12.2004 12:16

Noch eine Frage

Beitrag von DjKeeper »

Danke.

Ich habe noch eine Frage zur Aufgabe 6.2 aus Übung Nr 6.

Dort ist folgendes Programm, dass ich nicht verstehe:

Start:
lhi r1, 0x10 // hier wird A nach r1 geladen, aber woher weiß ich, dass A in 0x10 liegt?
ori r1,r1,0x2000 // Ist eine oder-Verknüpfung, in wiefern ist diese für das Programm von Bedeutung? Und woher weiß ich was an 0x2000 im Speicher liegt?
lw r2, 4(r1) // hier wird B nach r2 geladen. Woher weiß ich, dass B in 4(r1) liegt? bedeutet das \"r1+4bytes\"? r1 enthält doch aber den Wert A und nicht seine Adresse?!?

Danke im Voraus!
Benutzeravatar
Krüsty
Beiträge: 163
Registriert: 11.10.2004 20:34
Name: Krüsty
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2012
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Dresden
Kontaktdaten:

Adressierung:

Beitrag von Krüsty »

A liegt auf 0x102000. Da aber immer nur 16 Bit geladen werden, kommt erst das LoadHI (oberen 16 bit) und dann mit der ORI wir der Rest (die untern 16 Bit) geladen. Ist nen einfacher \"Trick\".
Das A auf dieser Adresse liegt steht da: .data 0x102000

Das mit der 4 erklärt sich durch das .word .
1 Wordlänge sind 32 bit (siehe Aufgabenstellung)= 4 byte. Das nächste Objekt im Speicher ist also 4 byte \"später\".
Und nein, r1 enthält die Adresse von A, wir haben ja nur Konstanten in r1 geladen, die wir (als Programmierer) vorher abgelesen haben. (Wir verwenden ja kein LW!!!)
- Editiert von Krüsty am 21.02.2005, 15:26 -
Wer sich zu wichtig für kleine Arbeiten hält, ist oft zu klein für
wichtige Arbeiten. (Jaques Tati)
DjKeeper
Beiträge: 33
Registriert: 17.12.2004 12:16

Adressierung: "0x1000"

Beitrag von DjKeeper »

Jetzt habe ich es endlich verstanden!

Thx! :-)
DjKeeper
Beiträge: 33
Registriert: 17.12.2004 12:16

Noch eine Frage...

Beitrag von DjKeeper »

Noch eine kleine Frage:
In der Vorlesung hatten wir zu dem Trick ja das \"CAFEBABE\"-Beispiel, wobei mit lhi erst cafe und mit ori babe geladen wird. Nun sind diese Immediates ja auch jeweils 16 bit lang, aber im o.g. Beispiel wird erst 10 und dann 2000 geladen, also 8 und 32 bit, so wie ich es verstehe. Wie kommt das?
martin_liebner
Beiträge: 134
Registriert: 12.10.2004 20:57
Kontaktdaten:

Adressierung: "0x1000"

Beitrag von martin_liebner »

nee, sind 4 und 16 bit. eine hexadezimalstelle steht für 4bit. die 0x10 ist dasselbe wie 0x0010, also sind auch hier beide constanten 16bit lang...
Gesperrt

Zurück zu „1. und 2. Semester“