PDF de programación - Lenguaje ensamblador del DLX

Imágen de pdf Lenguaje ensamblador del DLX

Lenguaje ensamblador del DLXgráfica de visualizaciones

Publicado el 1 de Octubre del 2018
737 visualizaciones desde el 1 de Octubre del 2018
60,9 KB
15 paginas
Creado hace 19a (27/10/2000)
Lenguaje ensamblador del DLX
Lenguaje ensamblador del DLX

•• El procesador DLX
El procesador DLX
Modos de direccionamiento
•• Modos de direccionamiento
•• Formato de instrucciones
Formato de instrucciones
••
Instrucciones DLX
Instrucciones DLX

– Transferencia de datos
– Aritméticas y lógicas
– Saltos y bifurcaciones
– Operaciones en punto flotante

••
Sintaxis del ensamblador
Sintaxis del ensamblador
•• Directivas del ensamblador
Directivas del ensamblador
•• Ejemplo de programa en ensamblador
Ejemplo de programa en ensamblador

Estructura de Computadores (FI: 2º II)

Ensamblador DLX

1

El procesador DLX
El procesador DLX
•• Diseñado con filosofía RISC
Diseñado con filosofía RISC

– Arquitectura de carga/almacenamiento
– Repertorio de instrucciones sencillo
– Diseño de la segmentación eficiente
– Instrucciones fáciles de implementar en hardware: Instrucciones de

longitud fija y pocos modos de direccionamiento

– Eficiencia como objeto del compilador
– Incluir en el hardware todo aquello que no sea rentable hacerlo en

software

•• Registros
Registros

– 32 registros de propósito general (GPRs) de 32 bits

• R0, R1, ... R31; el valor de R0 siempre es cero

– 32 registros de punto flotante (FPR)

• F0,F1,.... F31: 32 registros de 32 bits en simple precisión
• F0, F2,... F30: 16 registros de 64 bits en doble precisión (parejas par-impar)

– Registros especiales para acceder a información sobre el estado

• Flags (indicadores) de cero: FPSR (flag de cero
• Pueden transferirse a y desde registros enteros

Estructura de Computadores (FI: 2º II)

Ensamblador DLX

2

El procesador DLX
El procesador DLX
•• Direcciones de memoria de 32 bits
Direcciones de memoria de 32 bits

– Modelo de memoria “BIG-ENDIAN”
•• Tamaño de las transferencias de datos
Tamaño de las transferencias de datos

– Entre GPRs y memoria

• 8, 16 y 32 bits

– Entre FPRs y memoria

• 32 y 64 bits

•• Datos e instrucciones alineados en memoria
Datos e instrucciones alineados en memoria

– La dirección de memoria donde se ubica un dato ha de ser múltiplo

de su tamaño.

Bien alineado
0,1,2,3,4,5,6,.. (nunca)
0,2,4,6,8, ...

Byte
Media palabra
Palabra (4 bytes) 0,4,8,...
Doble palabra

0,8, ..

Objeto

Mal alineado

1,3,5,7, ...
1,2,3,5,6,7,9,10,11,...
1,2,3,4,5,6,7,9,10,11,12,13,14,15,....



Estructura de Computadores (FI: 2º II)

Ensamblador DLX

3

El procesador DLX
El procesador DLX
•• Estructura segmentada
Estructura segmentada

– Etapa IF

• Búsqueda de instrucción

– Etapa ID

• Decodificación de la instrucción y lectura de registros

– Etapa EX

• Ejecución: Operación o cálculo de dirección efectiva
• Unidades funcionales:

– intEX: Unidad principal entera

» Carga-almacenamiento, operaciones enteras (excepto multiplicación y división) y saltos

– faddEX: Sumador FP
– fmulEX: Multiplicador FP y entero
– fdivEX: Divisor FP y entero

– Etapa MEM

• Carga o almacenamiento de datos en memoria

– Etapa WB

• Almacenamiento de resultados en registros. Se realizan en la primera mitad
del ciclo de reloj. La instrucción que está en la etapa de ID puede leer estos
datos en la segunda mitad del ciclo.

Estructura de Computadores (FI: 2º II)

Ensamblador DLX

4

Modos de direccionamiento
Modos de direccionamiento
•• Para DATOS:
Para DATOS:

– Registro-registro (R-R)

• add

r1,r2,r3
– Inmediato (R-I)
r1,r3,#5

• addi

– Registro base + desplazamiento (R-I)



lw

r1, inm16(reg)

•• Para CÓDIGO:
Para CÓDIGO:

– Relativo al contador de programa (PC)

• beq


j

r1,r2,loop ; desplazamiento en 16 bits (especifica bytes)
dirección ; desplazamientos de 26 bits (especifica bytes)

– Indirecto por registro




jr
jalr

r2
r5

Estructura de Computadores (FI: 2º II)

Ensamblador DLX

5

Formato de las instrucciones
Formato de las instrucciones
Sólo tres tipos de formatos:
Sólo tres tipos de formatos:
••

Formato R: : add rd
Formato R

add rd,rs1,rs2
,rs1,rs2

op

rs2

rs1

rd
6 bits 5 bits 5 bits 5 bits
000000 01010 11111
00011
Codifica: Operaciones de ALU registro-registro: rd <- rs1 op rs2; el campo de “func” codifica la operación a realizar por el
camino de datos: add, sub, ....

Instrucciones tipo R
Todas las instrucciones DLX de 32 bits

00000 100000 0x015f1820

func
11 bits

add R3,R10,R31

••

op

Formato I: : lw rd
Formato I
rs1

lw rd,inmediato(rs1)
,inmediato(rs1)
rd
Inmediato
6 bits 5 bits 5 bits
100011 00011
00101

16 bits

0000000000100000

Instruciones de carga e inmediatas
Todas las instrucciones DLX de 32 bits
0x8c650020

lw $5,32($3)

Codifica: carga y almacenamiento de bytes, palabras y medias palabras; todos los inmediatos ( rd <- rs1 op inmediato); saltos
condicionales (rs1 es el registro, rd no usado); saltos indirectos por registro “jr” y salta y enlaza por registro “jalr” (rd=0; rs1
=destino; inmediato=0)

••

Formato J: j dirección
j dirección
Formato J:
Dirección objetivo

op
6 bits
000010
Bifurcación “j” y bifurcación y enlace “jal”; trap y retorno de excepción

11111111111111111111110100

26 bits

Instrucciones de bifurcación
Todas las instrucciones DLX de 32 bits
0x0bfffff4

0x10c: j 0x100

Estructura de Computadores (FI: 2º II)

Ensamblador DLX

6

Instrucciones DLX:
Instrucciones DLX:
Transferencias de datos
Transferencias de datos
LBLB RdRd,,AdrAdr
••
LBULBU RdRd,,AdrAdr
••
LHLH RdRd,,AdrAdr
••
LHULHU RdRd,,AdrAdr
••
LWLW RdRd,,AdrAdr
••
LFLF FdFd,,AdrAdr
••
LDLD DdDd,,AdrAdr
••
SBSB AdrAdr,,RsRs
••
SHSH AdrAdr,,RsRs
••
SWSW AdrAdr,,RsRs
••
SFSF AdrAdr,,FsFs
••
SDSD AdrAdr,,FsFs
••
MOVI2FP FdFd,,RsRs
•• MOVI2FP
•• MOVI2FP
MOVI2FP RdRd,,FsFs
•• MOVFMOVF FdFd,,FsFs
•• MOVDMOVD DdDd,,DsDs
•• MOVI2S SR,
•• MOVS2I

MOVI2S SR,RsRs
MOVS2I RsRs,SR,SR

halfword ((sign extension
sign extension))
halfword ((unsigned
unsigned))

Load bytebyte ((sign extension
sign extension))
Load
Load bytebyte ((unsigned
unsigned))
Load
Load halfword
Load
Load halfword
Load
Load wordword
Load
Load single--precision Floating point
precision Floating point
Load single
Load double
double--precision Floating point
precision Floating point
Load
Store bytebyte
Store
tore halfword
tore halfword
Store wordword
Store
Store single--precision Floating point
precision Floating point
Store single
double--precision Floating point
Store double
precision Floating point
Store
MoveMove 32 bits
from integer registers to FPFP registers
32 bits from integer registers to
registers
MoveMove 32 bits
32 bits fromfrom FPFP registers to integer registers
registers to integer registers
Copy one Floating point register to another register
Copy one Floating point register to another register
CopyCopy aa double
CopyCopy aa register to
CopyCopy aa special register to

double--precision pair to another pair
precision pair to another pair
register to aa special register
special register to a GPR (

special register ((not implemented
not implemented!)!)

a GPR (not implemented

not implemented!)!)

Estructura de Computadores (FI: 2º II)

Ensamblador DLX

7

Instrucciones DLX:
Instrucciones DLX:
CargaCarga--almacenamiento
almacenamiento

Estructura de Computadores (FI: 2º II)

Ensamblador DLX

8

Instrucciones DLX:
Instrucciones DLX:
Aritméticas
Aritméticas
•• ADDADD RdRd,,RaRa,,RbRb
•• ADDI
•• ADDU
•• ADDUI
••
••
••
••
•• MULTMULT RdRd,,RaRa,,RbRb
•• MULTU
•• DIVDIV RdRd,,RaRa,,RbRb
•• DIVUDIVU RdRd,,RaRa,,RbRb

ADDI RdRd,,RaRa,,ImmImm
ADDU RdRd,,RaRa,,RbRb
ADDUI RdRd,,RaRa,,ImmImm
SUBSUB RdRd,,RaRa,,RbRb
SUBI RdRd,,RaRa,,ImmImm
SUBI
SUBU RdRd,,RaRa,,RbRb
SUBU
SUBUI RdRd,,RaRa,,ImmImm
SUBUI

MULTU RdRd,,RaRa,,RbRb

all immediates are 16 bits)
are 16 bits)

AddAdd
Add immediate ((all immediates
Add immediate
Add unsigned
Add unsigned
Add unsigned immediate
Add unsigned immediate
Subtract
Subtract
Subtract immediate
Subtract immediate
Subtract unsigned
Subtract unsigned
Subtract unsigned immediate
Subtract unsigned immediate
Multiply signed
Multiply signed
Multiply unsigned
Multiply unsigned
Divide signed
signed
Divide
Divide unsigned
unsigned
Divide

Estructura de Computadores (FI: 2º II)

Ensamblador DLX

9

AndAnd

Instrucciones DLX:
Instrucciones DLX:
Lógicas
Lógicas
••
ANDAND RdRd,,RaRa,,RbRb
••
And immediate
ANDI RdRd,,RaRa,,ImmImm And immediate
ANDI
•• OROR RdRd,,RaRa,,RbRb
OrOr
•• ORIORI RdRd,,RaRa,,ImmImm
Or immediate
Or immediate
••
XORXOR RdRd,,RaRa,,RbRb
XorXor
Xor immediate
••
XORI RdRd,,RaRa,,ImmImm Xor immediate
XORI
••
LHILHI RdRd,,ImmImm
LOad high immediate
LOad high immediate
SLLSLL RdRd,,RsRs,,RcRc
••
Shift left logical
Shift left logical
••
SRLSRL RdRd,,RsRs,,RcRc
Shift right logical
Shift right logical
SRASRA RdRd,,RsRs,,RcRc
••
Shift right arithmetic
Shift right arithmetic
••
SLLI RdRd,,RsRs,,ImmImm Shift left logical 'immediate'
Shift left logical 'immediate' bitsbits
SLLI
Shift right logical 'immediate' bitsbits
••
SRLI RdRd,,RsRs,,ImmImm Shift right logical 'immediate'
SRLI
Shift right arithmetic 'immediate' bitsbits
••
SRAI RdRd,,RsRs,,ImmImm Shift right arithmetic 'immediate'
SRAI
••
S__S__ RdRd,,RaRa,,RbRb
Set conditional: "__" may be EQ, NE, LT, GT, LE
Set conditional
S__IS__I RdRd,,RaRa,,ImmImm
••
Set conditional immediate: "__"
Set conditional immediate
••
S__US__U RdRd,,RaRa,,RbRb
Set conditional unsigned: "__"
Set conditional unsigned
Set conditional unsig.. immediate
••
S__UI RdRd,,RaRa,,ImmImm Set conditional unsig
S__UI
No No operation
••
NOPNOP
operation

: "__" ídem de ídem
ídem de ídem

: "__" may be EQ, NE, LT, GT, LE oror GEGE

: "__" ídem de ídem
ídem de ídem
: "__" ídem de ídem
ídem de ídem

immediate: "__"

Estructura de Computadores (FI: 2º II)

Ensamblador DLX

10

Instrucciones DLX:
Instrucciones DLX:
Control
Control
••
••
••

BEQZ RtRt,,DestDest Branch if
BEQZ
BNEZ RtRt,,DestDest Branch if
BNEZ
BFPTBFPT DestDest

••

••
••
••
••
••
••

BFPFBFPF DestDest

JJ DestDest
JRJR RxRx
JALJAL DestDest
JALRJALR RxRx
TRAP ImmImm
TRAP
RFERFE DestDest

FP status register
  • Links de descarga
http://lwp-l.com/pdf13671

Comentarios de: Lenguaje ensamblador del DLX (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad