You are on page 1of 32

* Pepe

Sagitrn Jornadas MMIV / PIC18s / 1 de 32

2002 Microchip Technology Incorporated. All Rights Reserved.

Una nueva familia de PICs


Una arquitectura que manteniendo las excelentes
cualidades de los PICs, minimiza sus limitaciones.

Memoria de programa: hasta 1 MWord y sin paginacin.


Memoria de datos: hasta 16 x 256 = 4 KBytes.
Pila con 31 niveles de profundidad.
Tres flexibles punteros FSRs que direccionan la
memoria de datos de forma indirecta y sin bancos.
Juego de instrucciones enriquecido 72 + 4 dobles.
10 MIPS con oscilador de 10 MHz. y un PLL x4.
Amplia gama de perifricos integrados.
Altamente compatible con los PIC16CXX y PIC17CXX.

Diseada para optimizar el rendimiento del


compilador C .
Sagitrn Jornadas MMIV / 3-PIC18s / 2

2002 Microchip Technology Incorporated. All Rights Reserved.

Memoria de datos. Organizacin


Un total de 4 KBytes agrupados
en 16 bancos con 256 Bytes
cada uno.
Contienen los registros de
propsito general GPRs y los
registros especiales SFRs.
Los SFRs, tambin llamados
registros perifricos, estn
situados en la zona ms alta.
Desde F00h hasta FFFh.

Sagitrn Jornadas MMIV / 3-PIC18s / 3

2002 Microchip Technology Incorporated. All Rights Reserved.

Banco 0

GPRs
Banco 1

GPRs
Banco 2
.
.
.

GPRs

Banco F

SFRs

000
07F
080
0FF
100
.
.
1FF
200
.
.
.
.
EFF
F00
F7F
F80
FFF

Registros especiales SFRs


FFFh
FFEh
FFDh
FFCh
FFBh
FFAh
FF9h
FF8h
FF7h
FF6h
FF5h
FF4h
FF3h
FF2h
FF1h
FF0h
FEFh
FEEh
FEDh
FECh
FEBh
FEAh
FE9h
FE8h
FE7h
FE6h
FE5h
FE4h
FE3h
FE2h
FE1h
FE0h

TOSU
TOSH
TOSL
STKPTR
PCLATU
PCLATH
PCL
TBLPTRU
TBLPTRH
TBLPTRL
TABLAT
PRODH
PRODL
INTCON
INTCON2
INTCON3
INDF0
POSTINC0
POSTDEC0
PREINC0
PLUSW0
FSR0H
FSR0L
W R E G
INDF1
POSTINC1
POSTDEC1
PREINC1
PLUSW1
FSR1H
FSR1L
BSR

FDFh
FDEh
FDDh
FDCh
FDBh
FDAh
FD9h
FD8h
FD7h
FD6h
FD5h
FD4h
FD3h
FD2h
FD1h
FD0h
FCFh
FCEh
FCDh
FCCh
FCBh
FCAh
FC9h
FC8h
FC7h
FC6h
FC5h
FC4h
FC3h
FC2h
FC1h
FC0h

Sagitrn Jornadas MMIV / 3-PIC18s / 4

INDF2
POSTINC2
POSTDEC2
PREINC2
PLUSW2
FSR2H
FSR2L
STATUS
TMR0H
TMR0L
T0CON
-OSCCON
LVDCON
WDTCON
RCON
TMR1H
TMR1L
T1CON
TMR2
PR2
T2CON
SSPBUF
SSPADD
SSPSTAT
SSPCON1
SSPCON2
ADRESH
ADRESL
ADCON0
ADCON1
ADCON2

FBFh
FBEh
FBDh
FBCh
FBBh
FBAh
FB9h
FB8h
FB7h
FB6h
FB5h
FB4h
FB3h
FB2h
FB1h
FB0h
FAFh
FAEh
FADh
FACh
FABh
FAAh
FA9h
FA8h
FA7h
FA6h
FA5h
FA4h
FA3h
FA2h
FA1h
FA0h

CCPR1H
CCPR1L
CCP1CON
CCPR2H
CCPR2L
CCP2CON
CCPR3H
CCPR3L
CCP3CON
CCPR4H
CCPR4L
CCP4CON
TMR3H
TMR3L
T3CON
-SPBRG
RCREG
TXREG
TXSTA
RCSTA
COM2BRG
COM2RX
COM2TX
COM2STA
COM2CON
IPR3
PIR3
PIE3
IPR2
PIR2
PIE2

2002 Microchip Technology Incorporated. All Rights Reserved.

F9Fh
F9Eh
F9Dh
F9Ch
F9Bh
F9Ah
F99h
F98h
F97h
F96h
F95h
F94h
F93h
F92h
F91h
F90h
F8Fh
F8Eh
F8Dh
F8Ch
F8Bh
F8Ah
F89h
F88h
F87h
F86h
F85h
F84h
F83h
F82h
F81h
F80h

IPR1
PIR1
PIE1
EXTMEM
EXTBUS
TRISJ
TRISH
TRISG
TRISF
TRISE
TRISD
TRISC
TRISB
TRISA
LATJ
LATH
LATG
LATF
LATE
LATD
LATC
LATB
LATA
PORTJ
PORTH
PORTG
PORTF
PORTE
PORTD
PORTC
PORTB
PORTA

El acumulador WREG
El registro WREG, adems de intervenir de forma
implcita en mltiples instrucciones, es un registro
direccionable (0xFE8), por lo que se le puede
utilizar de forma explcita y as ser el parmetro
FILE de cualquier instruccin, por ejemplo:
COMF
DECFSZ
DCFSNZ
RLCF
RLNCF
BTFSC
BTG

WREG
WREG
WREG
WREG
WREG
WREG, b
WREG, b

Sagitrn Jornadas MMIV / 3-PIC18s / 5

NEGF
INCFSZ
INFSNZ
RRCF
RRNCF
BTFSS
SWAPF

2002 Microchip Technology Incorporated. All Rights Reserved.

WREG
WREG
WREG
WREG
WREG
WREG, b
WREG . . .

El registro de estados

STATUS, N: bit de negativo.


STATUS, OV: bit de rebase.
STATUS, Z: bit de cero.
STATUS, DC: bit de acarreo decimal.
STATUS, C: bit de acarreo.
STATUS Register
-

Sagitrn Jornadas MMIV / 3-PIC18s / 6

OV

2002 Microchip Technology Incorporated. All Rights Reserved.

DC

Registro Selector de Banco. BSR


El BSR es similar al de la
familia PIC17CXX.
Los 4 bits bajos del BSR
seleccionan un banco entre
los 16 posibles.

Banco 0

GPRs
Banco 1

GPRs
Banco 2

Bank Select Register


-

.
.
.

GPRs

Banco F

SFRs
Sagitrn Jornadas MMIV / 3-PIC18s / 7

2002 Microchip Technology Incorporated. All Rights Reserved.

000
07F
080
0FF
100
.
.
1FF
200
.
.
.
.
EFF
F00
F7F
F80
FFF

Direccionamiento de datos
Las instrucciones aritmtico-lgicas tienen un
nuevo formato:
opcode d a f f f f f f f f
Por ejemplo:
ADDWF
f, d, a
El parmetro f (8 bits) contiene la direccin del
registro.
El parmetro d indica el destino de la operacin:
Cuando d = 1 , el resultado se coloca en el registro f.
Cuando d = 0 , el resultado se coloca en el registro w.

El parmetro a se llama Access bit .


Sagitrn Jornadas MMIV / 3-PIC18s / 8

2002 Microchip Technology Incorporated. All Rights Reserved.

Access bit = 1
Cuando a = 1 , el contenido
del BSR determina el banco.
Suponiendo BSR = 0001

Banco 0

GPRs
Banco 1

GPRs
ADDWF f, d, a

0010 01d1 f f f f f f f f

Banco 2
.
.
.

Uniendo a los 4 bits del BSR


los 8 bits f , se obtiene un
direccionamiento de 4 K.
Sagitrn Jornadas MMIV / 3-PIC18s / 9

2002 Microchip Technology Incorporated. All Rights Reserved.

GPRs

Banco F

SFRs

000
07F
080
0FF
100
.
.
1FF
200
.
.
.
.
EFF
F00
F7F
F80
FFF

Access bit = 0
Cuando a = 0, en lugar de
determinar el banco por el
contenido del registro BSR, se
utiliza el Access Bank y se
selecciona un registro de los
256 entre A.RAM & A.SFRs.

A.RAM
GPRs
GPRs
GPRs

ADDWF f, d, a

0010 01d0 f f f f f f f f

SFRs
A.SFRs
Sagitrn Jornadas MMIV / 3-PIC18s / 10

2002 Microchip Technology Incorporated. All Rights Reserved.

=00
=7F
080
0FF
100
.
.
1FF
200
.
.
.
.
EFF
F00
F7F
=80
=FF

El Access Bank
El Access Bank es un banco virtual de 256
registros formado por:
Los registros A.RAM de la parte baja del Banco 0.
Los registros A.SFRs de la parte alta del Banco F.

Los A.RAM son GPRs que tienen la cualidad de


pertenecer al Access Bank .
Los A.SFRs y los A.RAM estn siempre
accesibles, independientemente del contenido del
BSR.
La conmutacin de bancos se minimiza gracias a la
posibilidad de operar con los A.SFRs y los A.RAM
sin necesidad de modificar el contenido del BSR.
Sagitrn Jornadas MMIV / 3-PIC18s / 11

2002 Microchip Technology Incorporated. All Rights Reserved.

De Memoria a Memoria
MOVFF mueve un dato
desde cualquier registro
hasta cualquier registro.
MOVFF fs, fd

4 KB A.RAM
SIN USAR
GPRs
BANCOS

1100 ssss ssss ssss

GPRs

1111 dddd dddd dddd

GPRs

Esta es una de las cuatro instrucciones de

DOBLE PALABRA
Sagitrn Jornadas MMIV / 3-PIC18s / 12

2002 Microchip Technology Incorporated. All Rights Reserved.

SFRs
A.SFRs

000
07F
080
0FF
100
.
.
1FF
200
.
.
.
.
EFF
F00
F7F
F80
FFF

Instrucciones de doble palabra


El cdigo objeto de la segunda palabra de las
instrucciones MOVFF, GOTO, CALL y LFSR
tiene la forma: 1111 XXXX XXXX XXXX.
Si esta segunda palabra fuera interpretada como
instruccin, se decodificara como un NOP especial.
Por ejemplo:
. . .
DECFSZ CONTADOR,d,a
GOTO
PROGRAMA
NOP especial
NOP
. . .
Sagitrn Jornadas MMIV / 3-PIC18s / 13

0010
1110
1111
0000

2002 Microchip Technology Incorporated. All Rights Reserved.

11da
1111
XXXX
0000

ffff
XXXX
XXXX
0000

ffff
XXXX
XXXX
0000

Punteros indirectos
Hay tres punteros indirectos:

FSR0H, FSR0L
FSR1H, FSR1L
FSR2H, FSR2L

GPRs

Sus 12 bits direccionan linealmente


4 K SIN USAR BANCOS.
Se pueden utilizar de 5 modos:

INDFn: Sin cambio del valor del puntero.


POSTINCn: Con auto-post-incremento.
POSTDECn: Con auto-post-decremento.
PREINCn:Con auto-pre-incremento.
PLUSWn: Indexando con WREG signo.

Sagitrn Jornadas MMIV / 3-PIC18s / 14

A.RAM

2002 Microchip Technology Incorporated. All Rights Reserved.

GPRs
GPRs

SFRs
A.SFRs

000
07F
080
0FF
100
.
.
1FF
200
.
.
.
.
EFF
F00
F7F
F80
FFF

Memoria de programa
Se pueden direccionar hasta 1 MWord = 2 MBytes.
Word
0x000000
0x000002
0x000004
. . .

Byte H

Byte L

0x000001
0x000003
0x000005
. . .

0x000000
0x000002
0x000004
. . .
. . .
0x0F
0xC1
0xF4
0xEF
0xF4
0xEF
0xF9
. . .

. . .

. . .
0x1FFFFD
0x1FFFFC 0x1FFFFF
0x1FFFFE
Sagitrn Jornadas MMIV
/ 3-PIC18s / 15

Instrucciones
. . .
0x55
0x23
0x56
0x10
0x32
0x2B
0x1A
. . .

. . .
0x1FFFFC
0x1FFFFE

2002 Microchip Technology Incorporated. All Rights Reserved.

MOVLW
MOVFF

0x55
0x123, 0x456

GOTO

0x086420

GOTO

0x123456

Contador de programa
El PC tiene 21 bits (PCU, PCH y PCL).
El bit menos significativo del PC apunta a BYTEs,
no a WORDs, por lo que es 0. El PC se
incrementa de dos en dos.
Se dispone de los correspondientes registros
auxiliares PCLATU y PCLATH para actuar de
forma combinada con el PC cuando ste se
escribe o se lee.

Sagitrn Jornadas MMIV / 3-PIC18s / 16

2002 Microchip Technology Incorporated. All Rights Reserved.

Operaciones con la pila


El STACK tiene 31 niveles de profundidad x 21 bits.
El Top Of Stack es accesible. Se puede leer y
escribir (ser conveniente quitar previamente las interrupciones).
El STKPTR es el puntero automtico (5 bits).
20

16

PCU

PCH

PCL

TOSU

TOSH

TOSL

STKPTR

+ CALL
+ RCALL
+ INTERRUPT
+ PUSH
- POP
- RETURN
- RETFIE
- RETLW

15

Sagitrn Jornadas MMIV / 3-PIC18s / 17

2002 Microchip Technology Incorporated. All Rights Reserved.

Dos vectores de interrupcin


0x08 para alta prioridad y 0x18 para baja prioridad.
GIE/GIEH & PEIE/GIEL controlan los respectivos permisos
globales.
Cuando se sirve una interrupcin, automticamente se
quita su correspondiente permiso global.
El servicio de interrupcin de alta prioridad impide el
servicio de baja prioridad.
Cuando se ejecuta RETFIE se pone el permiso
correspondiente al nivel que se est sirviendo.

Cada fuente de interrupcin se puede asignar de


forma independiente a una u otra prioridad.
Se puede forzar el modo compatible slo alta
prioridad, mediante el bit IPEN = 0.
Sagitrn Jornadas MMIV / 3-PIC18s / 18

2002 Microchip Technology Incorporated. All Rights Reserved.

Los registros sombra del entorno


Se puede salvar y restaurar el contenido de las
variables de entorno ( WREG, STATUS y BSR )
en sus respectivos registros sombra, lo que
equivale a una pila de un solo nivel.
El parmetro s de la instruccin CALL determina si se
salvan o no las variables de entorno utilizando este
nico nivel.
Cuando se sirve una interrupcin siempre se salvan las
variables de entorno en los registros sombra (no hay
penalizacin del tiempo de ejecucin).
El parmetro s de las instrucciones RETURN y
RETFIE determina si se restauran o no las variables de
entorno desde los registros sombra.
Sagitrn Jornadas MMIV / 3-PIC18s / 19

2002 Microchip Technology Incorporated. All Rights Reserved.

Operaciones con Tablas


El TBLPTR es el puntero que con sus 21 (+1) bits
direcciona 2(+) MBytes de memoria de programa.
La instruccin TBLRD lee 8 bits desde la memoria
de programa y los copia en el registro TABLAT.
La instruccin TBLWR escribe en la memoria de
programa los 8 bits del registro TABLAT.
Memoria PROG (16 bits)

TABLPTR
21(+1) bit direccin
TABLAT

High Byte

Sagitrn Jornadas MMIV / 3-PIC18s / 20

Low Byte

2002 Microchip Technology Incorporated. All Rights Reserved.

8 bit Datos

Memoria
DATOS

Juego de instrucciones
Se mantiene el conjunto de instrucciones de la
gama media y de la gama alta, amplindolo con:

SUBFWB: Resta inversa con acarreo.


RCALL: Llamada a rutina relativa.
BRA: Salto incondicional relativo.
BC, BNC, BN, BNN, BOV, BNOV, BZ y BNZ: Saltos condicionales
relativos.
POP y PUSH: Tiran y empujan los datos de la pila.
RESET: Inicializa el sistema.
Nuevas instrucciones de doble palabra.
CALL: Llamada a rutina sin paginacin.
GOTO: Salto incondicional sin paginacin.
MOVFF: Movimiento de datos de memoria a memoria.
LFSR: Carga un inmediato de 12 bit en uno de los FSRs.
Sagitrn Jornadas MMIV / 3-PIC18s / 21

2002 Microchip Technology Incorporated. All Rights Reserved.

Instrucciones tipo BYTE . . .

ADDWF
ADDWFC
ADDLW
SUBWF
SUBWFB
SUBFWB
SUBLW

f, d, a
f, d, a
k
f, d, a
f, d, a
f, d, a
k

Suma WREG con FILE


Suma WREG con FILE con acarreo
Suma WREG con literal
Resta WREG de FILE
Resta WREG de FILE con acarreo
Resta FILE de WREG con acarreo
Resta WREG de literal

1
1
1
1
1
1
1

MULWF
MULLW

f, a
k

Multiplica WREG con FILE


Multiplica WREG con literal

1
1

ANDWF
ANDLW
IORWF
IORLW
XORWF
XORLW

f, d, a
k
f, d, a
k
f, d, a
k

AND lgico WREG con FILE


AND lgico WREG con literal
OR inclusivo WREG con FILE
OR inclusivo WREG con literal
OR exclusivo WREG con FILE
OR exclusivo WREG con literal

1
1
1
1
1
1

Sagitrn Jornadas MMIV / 3-PIC18s / 22

2002 Microchip Technology Incorporated. All Rights Reserved.

. . . Instrucciones tipo BYTE . . .

MOVF
MOVWF
MOVLW

f, d, a
f, a
k

Mueve FILE a destino


Mueve de WREG a FILE
Mueve literal a WREG

1
1
1

MOVFF

fs, fd

Mueve de FILE origen a FILE destino

SWAPF

f, d, a

Intercambia semi-Bytes de FILE

CLRF
SETF

f, a
f, a

Borra todos los bits de FILE


Activa todos los bits de FILE

1
1

COMF

f, d, a

Complementa los bits de FILE

NEGF

f, a

Complementa a 2 el valor de FILE

DAW

Ajuste decimal de WREG

Sagitrn Jornadas MMIV / 3-PIC18s / 23

2002 Microchip Technology Incorporated. All Rights Reserved.

. . . Instrucciones tipo BYTE

RLCF
RLNCF
RRCF
RRNCF

f, d, a
f, d, a
f, d, a
f, d, a

Rota a la izda. 9 bits FILE+acarreo


Rota a la izda. 8 bits FILE
Rota a la dcha. 9 bits FILE+acarreo
Rota a la dcha. 8 bits FILE

1
1
1
1

DECF
DECFSZ
DCFSNZ
INCF
INCFSZ
INFSNZ

f, d, a
f, d, a
f, d, a
f, d, a
f, d, a
f, d, a

Decrementa FILE
Decrementa FILE, salto si 0
Decrementa FILE, salto si no 0
Incrementa FILE
Incrementa FILE, salto si 0
Incrementa FILE, salto si no 0

1
12
12
1
12
12

CPFSEQ
CPFSGT
CPFSLT

f, a
f, a
f, a

Compara FILE con WREG, salto si =


Compara FILE con WREG, salto si >
Compara FILE con WREG, salto si <

12
12
12

TSTFSZ

f, a

Prueba FILE, salta si 0

12

Sagitrn Jornadas MMIV / 3-PIC18s / 24

2002 Microchip Technology Incorporated. All Rights Reserved.

Instrucciones orientadas a BIT

BCF
BSF
BTG

f, b, a
f, b, a
f, b, a

Borra el bit b de FILE


Activa el bit b de FILE
Invierte el bit b de FILE

1
1
1

BTFSC
BTFSS

f, b, a
f, b, a

Prueba el bit b de FILE, salto si est 0


Prueba el bit b de FILE, salto si est 1

12
12

Sagitrn Jornadas MMIV / 3-PIC18s / 25

2002 Microchip Technology Incorporated. All Rights Reserved.

Instrucciones Control de Flujo

GOTO

Salto a posicin de programa p

BRA

Salto a posicin relativa r


Rango: -1024 . . . +1023

BC
BNC
BN
BNN
BOV
BNOV
BZ
BNZ

r
r
r
r
r
r
r
r

Bifurcacin si acarreo
Bifurcacin si no acarreo
Bifurcacin si negativo
Bifurcacin si no negativo
Bifurcacin si rebase
Bifurcacin si no rebase
Bifurcacin si cero
Bifurcacin si no cero
Saltos relativos condicionales
Rango: -128 . . . +127

12
12
12
12
12
12
12
12

Sagitrn Jornadas MMIV / 3-PIC18s / 26

2002 Microchip Technology Incorporated. All Rights Reserved.

Instrucciones RUTINAS & PILA

CALL

p, s

Llamada a rutina (Posicin programa p)

RCALL

Llamada a rutina (Posicin relativa r)


Rango: -1024 . . . +1023

RETURN
RETFIE
RETLW

s
s
k

Retorno desde rutina


Retorno desde interrupcin
Retorno cargando literal en WREG

2
2
2

POP
PUSH

Decr. el puntero de la pila STKPTR


Incr. STKPTR y guarda el PC en TOS

1
1

Sagitrn Jornadas MMIV / 3-PIC18s / 27

2002 Microchip Technology Incorporated. All Rights Reserved.

Instrucciones Tablas en Memoria

TBLRD *
TBLRD * +
TBLRD * TBLRD + *
TBLWT *
TBLWT * +
TBLWT * TBLWT + *

Lee Byte desde tabla en memoria


Lee tabla con post-incremento
Lee tabla con post-decremento
Lee tabla con pre-incremento
Escribe Byte en tabla en memoria
Escribe tabla con post-incremento
Escribe tabla con post-decremento
Escribe tabla con pre-incremento

2
2
2
2
2
2
2
2

Instrucciones Especiales

MOVLB
LFSR
NOP
CLRWDT
SLEEP
RESET

i
n, i

Sagitrn Jornadas MMIV / 3-PIC18s / 28

Mueve inmediato (4 bits) a BSR


Carga inmediato (12 bits) a FSRn
No operacin
Borra temporizador perro guardin
Modo reposo / bajo consumo
Inicializa el sistema
2002 Microchip Technology Incorporated. All Rights Reserved.

1
2
1
1
1
1

Eficacia del compilador C


El rendimiento del cdigo mejorar debido a:
La memoria de programa (1 MWord) se direcciona de
modo lineal, sin ningn tipo de paginacin.
La memoria de datos (4 KBytes) est organizada en
bancos de 256 Bytes.
Access Bank es ideal para implementar procesos con
variables globales.
La instruccin MOVFF selecciona fs y fd direccionando
los 4 K de la memoria de datos de forma lineal.
Tres punteros indirectos con 5 modos de utilizacin y
direccionamiento lineal de los 4 K registros.
8 Saltos condicionales.
Posibilidad de acceder a la Pila para ampliarla por
medio de programacin.
Sagitrn Jornadas MMIV / 3-PIC18s / 29

2002 Microchip Technology Incorporated. All Rights Reserved.

Osciladores
Mltiples configuraciones: EC, ECIO, LP, XT, HS,
RC, RCIO & HS4.
4X PLL permite 10MIPS @ 10MHz.
Conmutacin dinmica de la fuente de oscilacin.
OSC2

CONFIG1H
FOSC2:FOSC0

TOSC

4 x PLL

TT1P

T1OSO
T1OSCEN
T1OSI
Sagitrn Jornadas MMIV / 3-PIC18s / 30

Timer CLK
2002 Microchip Technology Incorporated. All Rights Reserved.

MUX_SEL

OSC1

OSCCON:SCS

TSCLK

Los puertos de entrada / salida


Cada puerto dispone de tres direcciones:
PORTx: Es la correspondiente a los pines del puerto. Se
utiliza para leer el estado de las entradas. Por razones
de compatibilidad, escribir en esta direccin equivale a
hacerlo en la direccin LATx.
LATx: Es la de los registros que almacenan los datos que
pueden salir por los correspondientes pines de puerto.
Se utiliza para escribir el estado que se desea poner en
las salidas. Si se lee esta direccin, se leer el valor que
hay en los registros y no el estado de los pines.
TRISx: Es la de los registros que configuran los bits del
puerto, de forma individual y dinmica, como entrada o
salida. Se puede escribir y leer.
Sagitrn Jornadas MMIV / 3-PIC18s / 31

2002 Microchip Technology Incorporated. All Rights Reserved.

Diagrama de un bit de E / S
LEER LATx

PIN
D

LATx
ESCRIBIR
o
PORTx

>CK

LATx

BUS DATOS

ESCRIBIR TRISx

TRISx

>CK

LEER TRISx

PORTx

EN<
LEER PORTx
Sagitrn Jornadas MMIV / 3-PIC18s / 32

2002 Microchip Technology Incorporated. All Rights Reserved.

You might also like