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.
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
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?
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.