FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Technische Informatik

T3. Formatparameter??

T3. Formatparameter?? 2004-11-24 19:12
Anonymer User
Hi
ich habe in einem beispielprogramm (asm) folgende zeilen gefunden, die ich überhaupt nicht verstehe:

fmt: .asciz "%c"

sethi %hi(fmt), %l2

or %l2, %lo(fmt), %l2

also mein problem ist, dass ich keine ahnung hab, was nun im register %l2 steht.

Re: T3. Formatparameter?? 2004-11-24 19:13
TriPhoenix
Im Register %l2 steht jetzt die Adresse des Strings "%c"

Re: T3. Formatparameter?? 2004-11-24 19:24
Anonymer User
aha, und danke für die schnelle antwort

und was soll die zeile

or %l2, %lo(fmt), %l2

in %lo steht ja nichts, also würd sich in dem register %l2 nichts ändern…….oder doch?

Re: T3. Formatparameter?? 2004-11-24 19:31
TriPhoenix
%lo ist nicht %l0, vorsicht. %lo ist ein Makro, welches die unteren 10 Bit der Adresse in Klammern rausholt. Das Problem ist dass man nicht einen 32-Bit-Wert wie Adressen es sind in ein Register holen kann. Dazu holt man erst die oberen 22 Bit in das Register mit dem sethi-Befehl, dieser setzt die unteren 10 Bit dann auf 0. Wenn man das getan hat muss man danach noch die letzten 10 Bit dazuholen. Das macht man mit dem or, da die unteren 10 bit 0 sind, hat man am Ende die ganze 32-Bit-Zahl im Register.

Re: T3. Formatparameter?? 2004-11-24 19:39
Anonymer User
ah, danke, jetzt versteh ich das.

ich dachte, dass dieser or-befehl gar nichts mit dem sethi zutun hat, weil da ein befehl dazwischen war. aber nu ergibt das für mich einen sinn [img]http://www.fb18.de/gfx/23.gif[/img]

Re: T3. Formatparameter?? 2004-11-24 20:07
Brokkoli
der befehl dazwischen ist vermutlich sein sprung, der ja erst danach ausgeführt eird ;)

Re: T3. Formatparameter?? 2004-11-24 20:27
Anonymer User
hm, eine sache ist mir aber noch nicht klar.
durch printf wird der inhalt von %o1 an den String "%c" rangehängt.
ich versteh nur nicht, warum zum register %o1 vorher 0x30 addiert wird. wenn man die addition weglässt, wird nichts ausgegeben.
(komischer datentyp dieser char)

Re: T3. Formatparameter?? 2004-11-24 20:35
TriPhoenix
Das hat ne ganz einfache Ursache: %c gibt ein Zeichen und nicht eine Zahl aus. Wenn man 0x30 addiert wird die 0 genau zum ASCII-Wert von "0", das klappt bis 9, danach kommen einige andere Zeichen und letztendlich Buchstaben. Wenn du eine Zahl ausgeben willst, nimm %d

Re: T3. Formatparameter?? 2004-11-24 22:21
Anonymer User
…und wieder etwas gelernt. danke