LC-3

LC-3, breviazion de Little Computer-3, a l'è 'n microprocessor teòrich pensaa per l'istruzion. El sò assembly a l'è pussee semplificaa di assembly di ver processor, ma a l'è bon de fà di programma complett e de vess doperaa 'me bersaj de 'n compilator per el C. L'è staa desviluppaa de Yale N. Patt de l'Università del Texas a Austin e Sanjay J. Patel a l'Università de l'Illinois a Urbana–Champaign.

 Teoria 
El processor LC-3 el dopera di word de 16 bit, che l'è la misura de tucc i sò register. 

El gh'ha 8 register de us comun, el program counter, on instruction register, on memory address register, on memory data register, di condition code, che segnalen el segn del resultaa de la darrera operazion e 'na Processor Status Word.

I numer a hinn doperaa in complement a du: A l'è donca possibil reppresenta numer de −32'768 a 32'767. I istruzion, inveci, a hinn partii in quatter bit per l'opcode e dodes per i operand.

 Memoria 
La memoria del sistema a l'è fàda de 64K cell de memoria: Degià che sett bit a hinn occupaa di istruzion in la memoria, domà noeuv a hinn reservaa per la locazion de memoria, e donca i primm sett a hinn tolt del program counter.

I cell a hinn spartii inscì
AdressFonzionx0000 - x00FF Tabella di vettor trapx0100 - x01FF Tabella di vettor interrputx0200 - x2FFFSistema operativx3000 - xBFFF Codes utent e stackxC000 - xFDFFOutput videoxFE00 - xFFFF Adressa di device

 Comand 
 Sintassi generala 
El lenguagg assembly el mett, in la soa sintassi, el register de destinazion prima de quej che hinn i register de partenza. El supporta trè maner de addressament: Quèlla immediada, quèlla diretta e quèlla  indiretta.
 Operazion logich 
 AND 
AND el implementa l'AND logich e l'è possibil doperàll sia in manera diretta, ossia cont el fà l'AND in tra du register, sia in manera immediada, cont el fà l'AND in tra on register e ona costanda a 5 bit.

AND RD,RS,RS ;Manera diretta
AND RD,RS,#N ;Manera immediada
 ADD 
L'ADD l'implementa la somma e l'è possibil doperàll per sommà sia du register sia on register e ona costanta a cinch bit.

ADD RD,RS,RS ;Manera diretta
ADD RD,RS,#N ;Manera immediada
 NOT 
L'istruzion NOT la implementa la porta NOT e la gh'ha dònca domà du operand: El register de destinazion e quell de negà.

NOT RD,RS

 Operazion de trasferiment 
 LEA 
L'operazion LEA (Load Effective Address) la permett de salvà in d'on register daa on'adressa de memoria, dent de la pagina de memoria, cont on offset de 9 bit, per permettegh de lavorà sora dopo.

.orig x3000
LEA R0,x00A; el mett x300B in R0
 Dirett 
L'adressament dirett, ciamaa anca "PC-relative",  el dopera 'me adressa per caregà i primm sett bit del program counter e i darree noeuv che hinn mittuu del programmator.
.orig x3000
LD R2,x9 ;carega in R2 de 0011 0000 0000 1010 (x300A)
ST R3,x8 ;carega R3 in x300A
 Indirett 
L'adressament indirett el dopera per formà l'adressa el midemm sistema de l'adressament dirett, ma inveci de caregà direttament quella cella el troeuva in la cella on'adressa de memoria e 'l carega de quella. A l'è donca possibil, inscì, caregà de tutta la memoria intrega.
LDI R0,LABEL ;carega in R0 la cella de memoria contegnuda in LABEL
STI R0,x001 ;salva R0 in la cella de memoria indicada
LABEL .fill x1000
 De register 
L'adressament de register el permett de caregà l'adressa de doperà de on register e l'è possibil anca sommàgh on numer a noeuv bit.
LDR R0,R5,#0 ;carega in R0 el contegnuu de la cella de memoria in R5 senza offset
STR R1,R2,#3 ;salva in la cella de memoria in R2+3 el valor de R1

 Operazion de controll 
 Branch 
Branch (BR) el permett de implementà i salt, condizionaa e incondizionaa. A nivell interno a hinn doperaa trii bit per permett la scerna in tra la condizion NZP (negativ, zero, positiv) e 'l lassa i 9 bit per l'adressa de memoria de rivà, ma l'assembler el permett anca de scernì direttament la condizion (per esempi BRN el salta domà in negativ, BRNZP el salta semper) e de mett ona label 'me adressa de salt.

 JSR 
JSR el permètt de saltà dent de on sottaprogramma, indicaa per adressa o per label. El scriv, per permètt el rienter, el program counter corrent in del register R7.

A l'è doperabil anca 'me istruzion de jump JMP, ossia de salt incondizionaa, che la salva no el PC in del register R7.

 JSSR 
JSSR el permètt de saltà per on sottaprogramma foeura de la pagina, cont on register daa 'me operand e che 'l gh'ha dent l'adressa a che saltà.

JSSR BR,#N a 6 bit
 RET 
RET el mett in del program counter el valor de R7, salvaa prima del salt in del sottaprogramma.
 RTI 
RTI a l'è el el retorn de on interrupt, che 'l ripristina anca i CC prima de l'interrupt, salvaa in del Processor Status Word.
 TRAP 
I TRAP permetten de ciamà di fonzion del sistema operativ che permetten de fà vari ròbb, 'me legg di caratter, fermà el programma e inscì via.

 Pseudo-operand 
L'assembler LC-3 el supporta di pseudo-operand che permetten al programmator de fà di robb mej o in manera pussee svelta e hinn:
.orig: El segna el principi del programma, el gh'ha 'me argoment 'n adressa de memoria
.end: El segna la fin del programma
.fill: El riemp la cella de memoria cont on'adressa e 'l permett de mett 'na lable che l'è poeu doperada per riferìss a quell numer
.blkw: El reserva on numer daa de cell de memoria
.stringz: El reserva i cell de memoria che hinn assee per contegnì 'na stringa dada.

 Riferiment 
 :: Architettura degli elaboratori - LC2 ::
The LC-2: University of Texas
L'architettura LC-3 - Università di Verona
LC-3 simulator manual 

Categoria:Lenguagg de programazzion
Categoria:CPU