Sei sulla pagina 1di 27

WinMIPS64

Manual de Usuario

0
Introduccin

Introduccin

Herramienta que nos permite


entender:
La codificacin de datos e
instrucciones
El repertorio de instrucciones MIPS
El pipeline
La jerarqua de memoria
Entrada/Salida y Llamadas al Sistema

1
Interfaz de usuario

2
Caractersticas de WinMIPS64

Pipeline

WinMIPS64 implementa un pipeline


paralelo formado por cinco etapas:
Instruction Fetch (IF)
Instruction Decode (ID)
Execution / Address Calculation (EX)
Data memory access (MEM)
Write Back (WB)
Cada etapa se representa con un color
Se puede ver el estado del pipeline
durante la ejecucin de un programa por
medio de la ventana correspondiente
3
Caractersticas de WinMIPS64

Pipeline

4
Caractersticas de WinMIPS64

Repertorio de instrucciones

Subconjunto representativo del MIPS64


ISA
Por compatibilidad con otros simuladores
incluye instrucciones que no pertenecen al
MIPS64: HALT
Las instrucciones siguen los formatos
descritos por el fabricante, es decir:
I-Type, J-Type, R-Type

5
Caractersticas de WinMIPS64

Repertorio de instrucciones
lb reg,imm(reg) - load byte
lbu reg,imm(reg) - load byte unsigned
sb reg,imm(reg) - store byte
lh reg,imm(reg) - load 16-bit half-word
lhu reg,imm(reg) - load 16-bit half word unsigned
sh reg,imm(reg) - store 16-bit half-word
lw reg,imm(reg) - load 32-bit word
lwu reg,imm(reg) - load 32-bit word unsigned
sw reg,imm(reg) - store 32-bit word
ld reg,imm(reg) - load 64-bit double-word
sd reg,imm(reg) - store 64-bit double-word
l.d freg,imm(reg) - load 64-bit floating-point
s.d freg,imm(reg) - store 64-bit floating-point
halt - stops the program
daddi reg,reg,imm - add immediate
daddui reg,reg,imm - add immediate unsigned
andi reg,reg,imm - logical and immediate
ori reg,reg,imm - logical or immediate
xori reg,reg,imm exclusive or immediate
-
lui reg,imm load upper half of register immediate
-
slti reg,reg,imm set if less than immediate
-
sltiu reg,reg,imm set if less than immediate unsigned
-
beq reg,reg,imm branch if pair of registers are equal
bne reg,reg,imm -
branch if pair of registers are not
equal -
beqz reg,imm - branch if register is equal to zero
bnez reg,imm - branch if register is not equal to zero
j imm - jump to address
jr reg - jump to address in register
6
Caractersticas de WinMIPS64

Repertorio de instrucciones
jal imm - jump and link to address (call
subroutine)
jalr reg - jump and link to address in register
dsll reg,reg,imm - shift left logical
dsrl reg,reg,imm - shift right logical
dsra reg,reg,imm - shift right arithmetic
dsllv reg,reg,reg - shift left logical by variable amount
dsrlv reg,reg,reg - shift right logical by variable amount
dsrav reg,reg,reg - shift right arithmetic by variable
amount
movz reg,reg,reg - move if register equals zero
movn reg,reg,reg - move if register not equal to zero
nop - no operation
and reg,reg,reg - logical and
or reg,reg,reg - logical or
xor reg,reg,reg - logical xor
slt reg,reg,reg - set if less than
sltu reg,reg,reg - set if less than unsigned
dadd reg,reg,reg - add integers
daddu reg,reg,reg - add integers unsigned
dsub reg,reg,reg - subtract integers
dsubu reg,reg,reg - subtract integers unsigned
dmul reg,reg,reg - signed integer multiplication
dmulu reg,reg,reg - unsigned integer multiplication
7
Caractersticas de WinMIPS64

Repertorio de instrucciones
ddiv reg,reg,reg - signed integer division
ddivu reg,reg,reg - unsigned integer division
add.d freg,freg,freg - add floating-point
sub.d freg,freg,freg - subtract floating-point
mul.d freg,freg,freg - multiply floating-point
div.d freg,freg,freg - divide floating-point
mov.d freg,freg - move floating-point
cvt.d.l freg,freg - convert 64-bit integer to a double FP
format
cvt.l.d freg,freg - convert double FP to a 64-bit integer
format
c.lt.d freg,freg - set FP flag if less than
c.le.d freg,freg - set FP flag if less than or equal to
c.eq.d freg,freg - set FP flag if equal to
bc1f imm - branch to address if FP flag is FALSE
bc1t imm - branch to address if FP flag is TRUE
mtc1 reg,freg - move data from integer register to FP
register
mfc1 reg,freg - move data from FP register to integer
register

8
Caractersticas de WinMIPS64

Adelantamiento

Tcnica que permite la reduccin de


parones en el cauce introducidas por la
dependencia de datos entre
instrucciones
Se pueden ejecutar los programas con o
sin adelantamiento, entediendo as su
impacto en el flujo del programa

9
Formato del fichero fuente

Formato de un fichero fuente


Secciones
.data
.code
Comentarios
;
Todo lo que hay despus de este carcter se
ignora
Etiquetas
Se utilizan para referirse a posiciones de
memoria o a instrucciones
Son case insensitive
Slo se puede utilizar una etiqueta por lnea
10
Formato del fichero fuente

Ejemplo

;This is a comment
.data
label: .word 15 ;This is an inline comment
.code
daddi r1,r0,0
halt

11
Formato del fichero fuente

Seccin .data

Comandos que especifican cmo se debe


rellenar la memoria antes de que el
programa comience su ejecucin
El formato de un comando .data es:
[label:] .datatype val1 [,val2 [, ]]
Tipos de datos representados:
.space <n> - leave n empty bytes
.asciiz <s> - enters zero terminated ascii string
.ascii <s> - enter ascii string
.align <n> - align to n-byte boundary
.word <n1>,<n2>.. - enters word(s) of data (64-bits)
.byte <n1>,<n2>.. - enter bytes
.word32 <n1>,<n2>.. - enters 32 bit number(s)
.word16 <n1>,<n2>.. - enters 16 bit number(s)
.double <n1>,<n2>.. - enters floating-point number(s)

12
Formato del fichero fuente

Seccin .data
Ejemplo:

13
Formato del fichero fuente

Seccin .data
Otras directivas
.space
Nos permite reservar memoria. Recibe como parmetro un
entero que indica el nmero de bytes a reservar
.ascii
Acepta strings que contienen caracteres ASCII+secuencias
de escape y los almacena en memoria
.asciiz
Como .ascii, solo que termina los strings con el byte cero

14
Formato del fichero fuente

Seccin .code

Instrucciones simblicas que sern


codificadas y ejecutadas cuando el
programa comience
Formato de un comando .code:
[label:] instruction [p1 [, p2 [, p3]]]
Donde instruction es el nombre de la
instruccin y p1, p2 y p3 son los tres
operandos
El tipo y nmero de los operandos viene
determinado por el tipo de instruccin

15
Formato del fichero fuente

Seccin .code

Las instrucciones reciben tres tipos de


operandos
Registros: se indica un registro por medio de
una r, R $ seguido de un nmero (entre 0 y
31). Por ejemplo, r4, R4 $4
Datos inmediatos: pueden ser un nmero o
una etiqueta. El nmero se puede especificar en
base 10 o 16. Para insertar un nmero en base
16 hay que aadir el prefijo 0x
Direcciones de memoria: dato inmediato
(nmero o etiqueta) seguido del nombre de un
registro entre parntesis. El valor del registro se
utilizar como offset
16
Ventanas

Ventanas

La ejecucin de los programas se


presenta mediante 7 ventanas
Cycles
Registers
Statistics
Pipeline
Memory
Code
Input/Output

17
Ventanas

Cycles
Muestra la evolucin del flujo del programa a lo
largo del tiempo

18
Ventanas

Registers
Muestra el valor de los 32 registros de propsito general, de
los 32 registros de coma flotante. Con un doble click
podemos modificar su valor

19
Ventanas

Statistics
Muestra datos estadsticos acerca del ltimo
programa ejecutado: ciclos consumidos de CPU,
instrucciones ejecutadas en esos ciclos, el nmero
de Ciclos Por Instruccin (CPI), parones (RAW )

20
Ventanas

Pipeline
Muestra un grfico con las 5 etapas de la CPU y la
etapa del cauce en la que se encuentra cada
instruccin

21
Ventanas

Memory
Muestra las direcciones y el contenido de las
celdas de memoria junto con etiquetas y
comentarios del programa fuente

22
Ventanas

Code
Muestra el cdigo fuente correspondiente al
programa en ejecucin

23
Ventanas

Input/Output
Muestra la salida generada por las instrucciones SYSCALLs
4 y 5. Para las entradas, SYSCALL 3, se abre una ventana
de dilogo que lee datos de la entrada estndar

24
Mens

Mens

File: carga de ficheros y reset del simulador


Execute: arrancar y para el simulador,
ejecutar los programas paso a paso o en un
nico paso
Configure: permite abrir ventanas de
configuracin
Window: organizacin de las ventanas
Help: manual de ususario

25
Ejecutando WinMIPS64

Cmo ejecutar WinMIPS64?


Podis utilizar el editor que prefiris para escribir
los ficheros fuente en ensamblador
Para arrancar el simulador tenis que teclear en un
terminal el siguiente comando:

katia@epsilon02:~$ wine winmips64.exe &

As mismo, para ejecutar el comprobador sintctico


asm.exe:

katia@epsilon02:~$ wine asm.exe file.s

26

Potrebbero piacerti anche