#LyX 2.3 created this file. For more info see http://www.lyx.org/
\lyxformat 544
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass book
\use_default_options true
\maintain_unincluded_children false
\language spanish
\language_package default
\inputencoding auto
\fontencoding global
\font_roman "default" "default"
\font_sans "default" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\use_microtype false
\use_dash_ligatures true
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 1
\use_minted 0
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\is_math_indent 0
\math_numbering_side default
\quotes_style swiss
\dynamic_quotes 0
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header
\begin_body
\begin_layout Section
Registros
\end_layout
\begin_layout Standard
\begin_inset Tabular
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Número
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Nombre ABI
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\series bold
Uso
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$0
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$zero
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Conectado al valor 0.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$at
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Para uso temporal por el ensamblador.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$2
\family default
,
\family typewriter
$3
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$v0
\family default
,
\family typewriter
$v1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Resultados de llamadas a procedimiento.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$4
\family default
–
\family typewriter
$7
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$a0
\family default
–
\family typewriter
$a3
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Parámetros de las llamadas a procedimiento.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$8
\family default
–
\family typewriter
$15
\family default
,
\family typewriter
$24
\family default
,
\family typewriter
$25
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$t0
\family default
–
\family typewriter
$t9
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Valores temporales.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$16
\family default
–
\family typewriter
$23
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$s0
\family default
–
\family typewriter
$s7
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Variables locales, preservadas entre llamadas.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$26
\family default
,
\family typewriter
$27
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$k0
\family default
,
\family typewriter
$k1
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Reservados para su uso por el sistema operativo.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$28
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$gp
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Puntero al segmento de datos (no us.
en práct.).
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$29
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$sp
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Puntero de pila.
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$30
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$fp
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Puntero de marco (no usado en prácticas).
\end_layout
\end_inset
|
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$31
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
\family typewriter
$ra
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Dirección de retorno, preservada entre llamadas.
\end_layout
\end_inset
|
\end_inset
\end_layout
\begin_layout Standard
Además:
\end_layout
\begin_layout Itemize
El coprocesador 0, de manejo de excepciones, posee los registros
\family typewriter
$8
\family default
(
\family typewriter
vaddr
\family default
),
\family typewriter
$12
\family default
(
\family typewriter
status
\family default
),
\family typewriter
$13
\family default
(
\family typewriter
cause
\family default
) y
\family typewriter
$14
\family default
(
\family typewriter
epc
\family default
), de 32 bits cada uno.
\end_layout
\begin_layout Itemize
El coprocesador 1, de punto flotante, posee los registros
\family typewriter
$f0
\family default
–
\family typewriter
$f31
\family default
, de 32 bits cada uno, que representan un entero de simple precisión o se
combinan en parejas (nombradas como el registro de menor número, que será
par) para representar enteros de doble precisión.
\end_layout
\begin_layout Itemize
El registro
\family typewriter
pc
\family default
contiene la
\emph on
siguiente
\emph default
instrucción a ejecutar.
\end_layout
\begin_layout Itemize
Los registros
\family typewriter
hi
\family default
y
\family typewriter
lo
\family default
se combinan para representar un entero de 64 bits, usado en multiplicaciones.
\end_layout
\begin_layout Standard
Al inicio de un procedimiento, se disminuye
\family typewriter
$sp
\family default
tanto como sea necesario y se guardan, en las direcciones
\family typewriter
0($sp)
\family default
,
\family typewriter
4($sp)
\family default
, etc., si es necesario, el valor del registro
\family typewriter
$ra
\family default
y el de los re
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
-
\end_layout
\end_inset
gis
\begin_inset ERT
status open
\begin_layout Plain Layout
\backslash
-
\end_layout
\end_inset
tros
\family typewriter
$s
\emph on
x
\family default
\emph default
que vayamos a utilizar.
Al final, se vuelven a cargar estos valores en los registros correspondientes,
se aumenta
\family typewriter
$sp
\family default
y se salta a la dirección apuntada por
\family typewriter
$ra
\family default
\SpecialChar endofsentence
\end_layout
\begin_layout Section
Instrucciones
\end_layout
\begin_layout Itemize
\series bold
Aritmético-lógicas:
\series default
\family typewriter
add[i][u]
\family default
(
\begin_inset Formula $R_{d}\leftarrow R_{s}+Op2$
\end_inset
),
\family typewriter
and[i]
\family default
(
\begin_inset Formula $R_{d}\leftarrow R_{s}\land Op2$
\end_inset
),
\family typewriter
div[u]
\family default
(
\begin_inset Formula $LO\leftarrow\left\lfloor \frac{R_{s}}{R_{t}}\right\rfloor $
\end_inset
,
\begin_inset Formula $HI\leftarrow R_{s}-R_{t}LO$
\end_inset
),
\family typewriter
madd[u]
\family default
(
\begin_inset Formula $HI:LO\leftarrow HI:LO+R_{s}\cdot R_{t}$
\end_inset
),
\family typewriter
msub[u]
\family default
(
\begin_inset Formula $HI:LO\leftarrow HI:LO-R_{s}\cdot R_{t}$
\end_inset
),
\family typewriter
mul
\family default
(
\begin_inset Formula $HI:LO\leftarrow R_{s}\cdot R_{t}$
\end_inset
, seguido de
\begin_inset Formula $R_{d}\leftarrow LO$
\end_inset
, sin desbordamiento),
\family typewriter
mult[u]
\family default
(
\begin_inset Formula $HI:LO\leftarrow R_{s}\cdot R_{t}$
\end_inset
),
\family typewriter
nor
\family default
(
\begin_inset Formula $R_{d}\leftarrow\neg(R_{s}\lor R_{t})$
\end_inset
),
\family typewriter
or[i]
\family default
(
\begin_inset Formula $R_{d}\leftarrow R_{s}+R_{t}$
\end_inset
),
\family typewriter
slt[i][u]
\family default
(
\begin_inset Formula $R_{d}\leftarrow\begin{cases}
1 & \text{si }R_{s}>Op2$
\end_inset
),
\family typewriter
srl[v]
\family default
(
\begin_inset Formula $R_{d}\leftarrow(unsigned)R_{s}>>Op2$
\end_inset
).
Parámetros:
\begin_inset Formula $R_{d}$
\end_inset
,
\begin_inset Formula $R_{s}$
\end_inset
y
\begin_inset Formula $Op2$
\end_inset
, donde
\begin_inset Formula $Op2$
\end_inset
es un registro si se añade
\family typewriter
v
\family default
o un inmediato si no.
\end_layout
\begin_layout Itemize
\series bold
De punto flotante:
\series default
\family typewriter
abs.[d|s]
\family default
(
\begin_inset Formula $R_{d}\leftarrow|R_{s}|$
\end_inset
),
\family typewriter
add.[d|s]
\family default
(
\begin_inset Formula $R_{d}\leftarrow R_{s}+R_{t}$
\end_inset
),
\begin_inset Newline newline
\end_inset
\family typewriter
c.[eq|le|lt].[d|s]
\family default
(
\begin_inset Formula $coproc1.cond[l]\leftarrow R_{s}[=|\leq|<]R_{t}$
\end_inset
),
\family typewriter
ceil.w.[d|s]
\family default
(
\begin_inset Formula $((int)R_{d})\leftarrow\lceil R_{s}\rceil$
\end_inset
),
\family typewriter
cvt.[d.[s|w]|s.[d|w]|w.[d.s]]
\begin_inset Newline newline
\end_inset
\family default
(
\begin_inset Formula $((double|float|int)R_{d})\leftarrow((double|float|int)R_{s})$
\end_inset
,
\family typewriter
div.[d|s]
\family default
(
\begin_inset Formula $R_{d}\leftarrow\frac{R_{s}}{R_{t}}$
\end_inset
),
\family typewriter
floor.w.[d|s]
\family default
(
\begin_inset Formula $((int)R_{d})=\lfloor R_{s}\rfloor$
\end_inset
),
\family typewriter
mul.[d|s]
\family default
(
\begin_inset Formula $R_{d}\leftarrow R_{s}\cdot R_{t}$
\end_inset
),
\family typewriter
round.[d|s]
\family default
(
\begin_inset Formula $((int)R_{d})\leftarrow round(R_{s})$
\end_inset
),
\family typewriter
sqrt.[d|s]
\family default
(
\begin_inset Formula $R_{d}\leftarrow\sqrt{R_{s}}$
\end_inset
),
\family typewriter
sub.[d|s]
\family default
(
\begin_inset Formula $R_{d}\leftarrow R_{s}-R_{t}$
\end_inset
),
\family typewriter
trunc.w.[d|s]
\family default
(
\begin_inset Formula $((int)R_{d})\leftarrow\lfloor R_{s}\rfloor$
\end_inset
).
\begin_inset Newline newline
\end_inset
Parámetros:
\begin_inset Formula $l$
\end_inset
opcional para
\family typewriter
c.[eq|le|lt].[d|s]
\family default
(por defecto 0), seguido de
\begin_inset Formula $R_{d}$
\end_inset
,
\begin_inset Formula $R_{s}$
\end_inset
y
\begin_inset Formula $R_{t}$
\end_inset
(sólo los que se indican en la descripción de instrucción).
Estos corresponden a los registros del coprocesador 1, tratados como de
simple precisión, si la instrucción termina en
\family typewriter
.s
\family default
, o parejas de estos, tratados como de doble precisión, si termina en
\family typewriter
.d
\family default
; sin embargo, el indicar
\begin_inset Formula $float$
\end_inset
,
\begin_inset Formula $double$
\end_inset
o
\begin_inset Formula $int$
\end_inset
junto a estos indica que se trata de números en punto flotante de simple
precisión, de doble precisión (mediante parejas de registros) o enteros
de 32 bits (en los tres casos registros del coprocesador 1).
\end_layout
\begin_layout Itemize
\series bold
De salto:
\series default
\family typewriter
bc1f
\family default
(
\begin_inset Formula $coproc1.cond[l]=0$
\end_inset
),
\family typewriter
bc1t
\family default
(
\begin_inset Formula $coproc1.cond[l]=1$
\end_inset
),
\family typewriter
beq
\family default
(
\begin_inset Formula $R_{s}=R_{t}$
\end_inset
),
\family typewriter
bgez[al]
\family default
(
\begin_inset Formula $R_{s}\geq0$
\end_inset
),
\family typewriter
bgtz
\family default
(
\begin_inset Formula $R_{s}>0$
\end_inset
),
\family typewriter
blez
\family default
(
\begin_inset Formula $R_{s}\leq0$
\end_inset
),
\family typewriter
bltz[al]
\family default
(
\begin_inset Formula $R_{s}<0$
\end_inset
),
\family typewriter
bne
\family default
(
\begin_inset Formula $R_{s}\neq R_{t}$
\end_inset
),
\family typewriter
j[al]
\family default
(siempre).
Entre paréntesis se indica la condición necesaria para
\begin_inset Formula $PC\leftarrow label$
\end_inset
.
\family typewriter
al
\family default
además hace antes
\begin_inset Formula $\mathtt{\$ra}\leftarrow PC$
\end_inset
.
Parámetros:
\begin_inset Formula $l$
\end_inset
opcional para
\family typewriter
bc1f
\family default
o
\family typewriter
bc1t
\family default
(por defecto 0) o uno o dos registros (
\family typewriter
\emph on
Rs
\emph default
[,
\emph on
Rt
\emph default
]
\family default
) según requiera la condición, seguidos de
\begin_inset Formula $label$
\end_inset
.
\begin_inset Newline newline
\end_inset
También,
\family typewriter
jr Rs
\family default
para
\begin_inset Formula $PC\leftarrow R_{s}$
\end_inset
, o
\family typewriter
jalr [Rd, ]Rs
\family default
(por defecto
\begin_inset Formula $R_{d}=\mathtt{\$ra}$
\end_inset
) para antes hacer
\begin_inset Formula $R_{d}\leftarrow PC$
\end_inset
.
\end_layout
\begin_layout Itemize
\series bold
De excepción:
\series default
\family typewriter
teq[i]
\family default
(
\begin_inset Formula $R_{s}=Op2$
\end_inset
),
\family typewriter
tge[i][u]
\family default
(
\begin_inset Formula $R_{s}\geq Op2$
\end_inset
),
\family typewriter
tlt[i][u]
\family default
(
\begin_inset Formula $R_{s}|\leq|\neq]Op2\\
0 & \text{si }R_{s}[\neq|<|\leq|>|=]Op2
\end{cases}$
\end_inset
).
\end_layout
\begin_layout Itemize
\series bold
De desplazamiento de bits
\series default
:
\family typewriter
ro[l|r] Rd, Rs, Op2
\family default
(rota los bits de
\begin_inset Formula $R_{s}$
\end_inset
, respectivamente a izquierda o derecha, en un número de bits indicado por
\begin_inset Formula $Op2$
\end_inset
, que puede ser registro o inmediato).
\end_layout
\begin_layout Itemize
\series bold
De salto
\series default
: Poder comparar con inmediatos y de tamaño arbitrario.
\family typewriter
b label
\family default
(incondicional).
\family typewriter
bge[u]
\family default
(
\begin_inset Formula $R_{s}\geq Op2$
\end_inset
),
\family typewriter
bgt[u]
\family default
(
\begin_inset Formula $R_{s}>Op2$
\end_inset
),
\family typewriter
ble[u]
\family default
(
\begin_inset Formula $R_{s}\leq Op2$
\end_inset
) y
\family typewriter
blt[u]
\family default
(
\begin_inset Formula $R_{s}