FB18.de - Das Informatikforum
Fehlermeldung beim Kompilieren von "temp.s" - Druckversion

+- FB18.de - Das Informatikforum ( /mybb )
+-- Forum: Bachelorstudieng ( /forumdisplay.php?fid=112 )
+--- Forum: PM Technische Informatik ( /forumdisplay.php?fid=100 )
+--- Thema: Fehlermeldung beim Kompilieren von "temp.s" ( /showthread.php?tid=10253 )


Fehlermeldung beim Kompilieren von "temp.s" - Roberto - 06.01.2009 12:14

Hey Leute,

Habt ihr folgende Fehlermeldung schon mal gesehen!?


rzdspc10$ cc temp.s
ld: fatal: relocation error: R_SPARC_13: file temp.o: symbol <unknown>: value 0x20da8 does not fit
ld: fatal: relocation error: R_SPARC_13: file temp.o: symbol <unknown>: value 0x20db0 does not fit
rzdspc10$

Er spuckt mir also keine "a.out" aus, sondern eine "temp.o".... Weiß damit nicht viel anzufangen!?

Bin um jede Hilfe dankbar! :)


RE: Fehlermeldung beim Kompilieren von "temp.s" - Roberto - 06.01.2009 13:06

Oder weiß jemand, was diese Meldung bedeutet?

warning: 2-word "setuw" pseudo-instruction in delay slot (follows CTI)


RE: Fehlermeldung beim Kompilieren von "temp.s" - Fred - 06.01.2009 13:52

Roberto schrieb:
ld: fatal: relocation error: R_SPARC_13: file temp.o: symbol <unknown>: value 0x20da8 does not fit
ld: fatal: relocation error: R_SPARC_13: file temp.o: symbol <unknown>: value 0x20db0 does not fit

Das bedeutet, dass du wahrscheinlich sowas geschrieben hast:

Code:
mov fmt, %l0

Der mov-Befehl kann aber nur 13-Bit-Werte verarbeiten. Versuche es stattdessen mit dem set-Pseudo-Befehl:

Code:
set fmt, %l0


Roberto schrieb:
warning: 2-word "setuw" pseudo-instruction in delay slot (follows CTI)

Das bedeutet, dass Du direkt nach einem Sprungbefehl ein set verwendest, was nicht erlaubt ist:

Code:
ble somelabel
set a, %l0

Wenn Du möchtest, dass das set noch vor dem Sprung ausgeführt wird, schreibe:

Code:
set a, %l0
ble somelabel
nop

Ansonsten:

Code:
ble somelabel
nop
set a, %l0




RE: Fehlermeldung beim Kompilieren von "temp.s" - Roberto - 06.01.2009 14:02

Vielen Dank für die Antwort und die Informationen... Ich bin noch ein Assembler Gringo und daher über jede Hilfe dankbar! :)

Fred, du hattest an anderer Stelle erwähnt, dass du eventuell ein kleines Tutorial bastel möchtest!? Wenn du dich dafür entschließt, wäre ich dir sehr dankbar...und ich glaube so einige mit mir! ;)

Weisst du zufällig, wie hoch der Assembler Anteil in der Klausur sein wird? ;)


RE: Fehlermeldung beim Kompilieren von "temp.s" - Roberto - 06.01.2009 14:06

Wunderbar, jetzt klappt es! :)

Allerdings hat sich eine weitere Frage ergeben....

Was bedeutet "Bad System Call"?


RE: Fehlermeldung beim Kompilieren von "temp.s" - Fred - 06.01.2009 14:11

Roberto schrieb:
Weisst du zufällig, wie hoch der Assembler Anteil in der Klausur sein wird? ;)

Da fragst Du am besten einen der letzten Jahrgänge, ich habe noch nie eine RS-Klausur gesehen.

Roberto schrieb:
Was bedeutet "Bad System Call"?

Tritt dieser Fehler zur Übersetzungszeit oder zur Laufzeit auf? Ich vermute mal, dass Du vergessen hast, Dein Programm per

Code:
mov 1, %g1
ta 0

zu beenden, ist aber nur ein Schuss ins Blaue. Ich müsste den Code sehen, um genaueres sagen zu können.


RE: Fehlermeldung beim Kompilieren von "temp.s" - Roberto - 06.01.2009 14:15

! Information für Binder
.global main
.global printf

! Deklaration von Daten
.section ".data"
a1: .half 0
a2: .half 15
a3: .half 65
a4: .half 64
fmt: .asciz "Ergebnis: %d\n"

! ausführbares Programm
.section ".text"
main: mov -9, %l0
cmp %l0, 9
bge ende
nop
set a1,%l7 ! Startwert 0 in l7

schleife:
smul %l0,%l0,%l1 ! x*x in l1
smul %l1,%l0,%l2 ! x*x*x in l2
set a2,%l3 ! 15 in l3
smul %l1,%l3,%l4 ! 15 *x*x in l4
sub %l2, %l4,%l1 ! x*x*x - 15*x*x in l1
set a3,%l2 ! 65 in l2
smul %l2,%l0,%l3 ! 65*x in l3
add %l1,%l3,%l2 ! x*x*x - 15*x*x + 65*x in l2
set a4,%l1 ! 64 in l1
sub %l2,%l1,%l3 ! x*x*x - 15*x*x + 65*x - 64 in l3
cmp %l3,%l1
bg speichern
mov %l3,%l1

speichern:
mov %l3,%o1
add %l0,1,%l0
cmp %l0,9
ble schleife
nop

ende: set fmt,%o0
call printf
set 1,%g1
ta 0


Ich glaube der Schuss ins Blau war es nicht... ;) Die Message liefert er mir, nachdem er mir ein Ergebnis -9823451 anzeigt. Allerdings kann dies nicht stimmen, oder?


RE: Fehlermeldung beim Kompilieren von "temp.s" - Fred - 06.01.2009 14:24

Roberto schrieb:
ende: set fmt,%o0
call printf
set 1,%g1
ta 0

Ich glaube der Schuss ins Blau war es nicht... ;)

Füge mal ein nop hinter das call printf ein und sage mir, ob sich dadurch etwas ändert. Falls ja, war es der Schuss ins Blaue:

Code:
ende: set fmt,%o0
call printf
nop
set 1,%g1
ta 0




RE: Fehlermeldung beim Kompilieren von "temp.s" - Roberto - 06.01.2009 14:35

Nun ist die Meldung weg! :)

Vielen Dank... Da war der Schuss ins Blaue wohl doch eher ein Schuss ins Schwarze! ;)