Hallo, jedesmal wenn ich neues Projekt in MPLAB mache, fragt er mich, ob "absolute" oder "relocatable code" will. Ich nehme immer den absoluten, aber keine Ahnung wieso. Was sind die Unterschjiede? Gruß T.
Gast
#2261604
In relozierbarem Code sind alle Sprungaddressen relativ, so dass er an jeder beliebigen Stelle im Speicher laufen kann. Das ist wichtig, wenn man Binär(!)libaries baut und verwenden will. Bei reinem Quellcode der immer vollständig übersetzt wird, ist auch absolut möglich (und schneller, da die Zieladresse nicht erst berechnet werden muss). Gruß, Christian
Gast
#2261609
Christian Erker schrieb: > Bei reinem Quellcode der > immer vollständig übersetzt wird, ist auch absolut möglich (und > schneller, da die Zieladresse nicht erst berechnet werden muss). Nö. Absolut ist langsamer und verbraucht mehr Speicher. Dafür kann man aber weiter springen.
Noah schrieb: > Absolut ist langsamer und verbraucht mehr Speicher. Dafür kann man > aber weiter springen. Warum?
Gast
#2261646
Lehrmann Michael schrieb: > Warum? Hm.. Beim AVR ist das zumindest so: Da ist RJMP kürzer, da nur 1 Word, bei JMP brauch man 2 Word, + 1 Takt mehr (um dieses aus dem Programmspeicher zu laden). Beim PIC scheint es aber anders zu sein: anscheinend gibt es nur "goto" als absoluten Sprungbefehl. Da muss man für einen relativen Sprung den wert vom Program Counter nehmen, dann was addieren oder abziehen, und dann das Ergebnis wieder auf den Program Counter hauen. Das ist in der tat viel langsamer ... Also nehme ich meine Aussage zurück. Ich war (fälschlicherweise) davon ausgegangen, der PIC hätte auch soetwas wie RJMP. Noah
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.