Registry R0 až R31

Z MAM wiki

Přejít na: navigace, hledání

AVR má 32 osmibitových pracovních registrů, ve kterých jsou (aspoň některé) operandy většiny instrukcí. Tyto registry nejsou zcela univerzální (jak by se slušelo na architekturu RISC), některé věci lze dělat jen s některými z nich:

  • Dvojice R1:R0 je jediné místo, kam lze uložit výsledek násobení
  • Instrukce obsahující osmibitovou konstantu pracují jen s R16 až R31
  • K adresování lze použít jen některé dvojice registrů s nejvyššími čísly, a to pod alternativním jménem registry X, Y a Z
  • Změnit obsah dvojice o konstantu (instrukcemi ADIW, SBIW) lze jen u čtyř nejvyšších, tedy R25:R24, X, Y a Z

Jako univerzální registry lze také použít registry GPIORn, pokud je procesor má (ATmega88 má tři, n=0,1,2). Tyto registry jsou v IO prostoru mezi registry pro ovládání periferií, ale žádné periferie k nim připojeny nejsou. Nemůžeme je použít jako operandy většiny instrukcí, jen si do nich můžeme něco odložit instrukcí OUT a vyzvednout si to instrukcí IN. Oproti podobnému odložení do RAM (instrukcemi STS, LDS) ušetříme u každé instrukce jeden hodinový cyklus a jedno slovo paměti programu, jiná výhoda v tom není.

Osobní nástroje