FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Technische Informatik

Fehlermeldung beim Kompilieren von "temp.s"

Fehlermeldung beim Kompilieren von "temp.s" 2009-01-06 12:14
Roberto
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" 2009-01-06 13:06
Roberto
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" 2009-01-06 13:52
Fred
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:
mov fmt, %l0 Der mov-Befehl kann aber nur 13-Bit-Werte verarbeiten. Versuche es stattdessen mit dem set-Pseudo-Befehl:
set fmt, %l0
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:
ble somelabel set a, %l0 Wenn Du möchtest, dass das set noch vor dem Sprung ausgeführt wird, schreibe:
set a, %l0 ble somelabel nop Ansonsten:
ble somelabel nop set a, %l0

RE: Fehlermeldung beim Kompilieren von "temp.s" 2009-01-06 14:02
Roberto
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" 2009-01-06 14:06
Roberto
Wunderbar, jetzt klappt es! :)

Allerdings hat sich eine weitere Frage ergeben….

Was bedeutet "Bad System Call"?

RE: Fehlermeldung beim Kompilieren von "temp.s" 2009-01-06 14:11
Fred
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.

Was bedeutet "Bad System Call"?
Tritt dieser Fehler zur Übersetzungszeit oder zur Laufzeit auf? Ich vermute mal, dass Du vergessen hast, Dein Programm per
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" 2009-01-06 14:15
Roberto
! 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" 2009-01-06 14:24
Fred
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:
ende: set fmt,%o0 call printf nop set 1,%g1 ta 0

RE: Fehlermeldung beim Kompilieren von "temp.s" 2009-01-06 14:35
Roberto
Nun ist die Meldung weg! :)

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