How can a bit be addressable?
La famiglia 8051/8052 e alcune altre architetture di microcontrollori (PIC a gamma media e bassa, Infineon C16x / STM ST10) supportano l'indirizzamento bit-indirizzabile. Nell'8051, i byte RAM da 0x20 a 0x2f sono bit indirizzabili (128 bit in totale). Inoltre, molti dei registri di funzioni speciali (SFR) sono anch'essi indirizzabili a bit (in particolare quelli con indirizzi di byte che terminano con 0 o 8 per l'architettura 8051).
Persupportarequesto,l'8051haunnumerodiistruzionicheoperanodirettamentesuibit,comeset/clear/complementbit,jumpsebitèimpostato/nonimpostato,ecc.Questisonomoltopiùefficientichecaricareungenerale-usoregistroeutilizzandoleistruzioniANDoOR.
Adesempio,l'istruzioneperimpostareilbit3dell'indirizzodibyte0x2Asarebbe(ilvalore53hètrovatonellatabellasopra):
SETB53h
cheèun'istruzionea2byte,1ciclo.
Allostessomodo,lamaggiorpartedeicompilatoriCperl'8051(adesempio Keil C51 ) supportano un tipo "bit" in Oltre ai tipi C standard come char, short, int ecc. Le istruzioni C che fanno riferimento alle variabili bit sono compilate in codice utilizzando le istruzioni di assemblaggio di manipolazione dei bit.
Quindi il codice:
bit flag;
.
.
.
flag = 1;
si compilerebbe in un'unica istruzione SETB come nell'esempio sopra.
EDIT:
Per quanto riguarda l'endianità su macchine bit indirizzabili, in generale i bit in un byte sono etichettati da 7 a 0 (da MSB a LSB), come nel diagramma sopra. Questo è vero se il byte endianness è big endian come Motorola 6800, 68000 e PowerPC, o little endian come la famiglia 6502, Intel x86 e Amtel AVR.
Stranamente, i minicomputer DEC 50 anni fa usavano la notazione inversa: i bit numerati PDP-8 da 0 a 11 (da MSB a LSB). Queste macchine tuttavia non erano indirizzabili a bit. Il DEC è cambiato nella forma più comune utilizzata oggi quando è uscito con il PDP-11.