Lumbard ucidental Quest articol chì l'è scrivuu in lombard, grafia milanesa.

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.

TeoriaModifiché

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.

MemoriaModifiché

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ì

Adress Fonzion
x0000 - x00FF Tabella di vettor trap
x0100 - x01FF Tabella di vettor interrput
x0200 - x2FFF Sistema operativ
x3000 - xBFFF Codes utent e stack
xC000 - xFDFF Output video
xFE00 - xFFFF Adressa di device

ComandModifiché

Sintassi generalaModifiché

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 logichModifiché

ANDModifiché

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

ADDModifiché

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

NOTModifiché

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 trasferimentModifiché

LEAModifiché

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

DirettModifiché

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

IndirettModifiché

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 registerModifiché

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 controllModifiché

BranchModifiché

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.

JSRModifiché

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.

JSSRModifiché

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

RETModifiché

RET el mett in del program counter el valor de R7, salvaa prima del salt in del sottaprogramma.

RTIModifiché

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.

TRAPModifiché

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-operandModifiché

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.

RiferimentModifiché