#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}