#MAV-001: Casualidades [cltd y división en IA-32]

001-Casualidad

 

Bueno, esta es la primera tira de MIpS aventuras por la vIA-32 (MAV-32)… Y aunque el chiste sea bastante malo igual voy a explicarlo, probablemente sea instructivo para algún lector.

En principio es importante decir que la división siempre es una de esas operaciones aritméticas que suelen enredar un poco a los principiantes en lenguaje ensamblador IA-32, ya que, la división tiene varios procesos que son tácitos.

A continuación voy a explicarles un poco el proceso de división y el papel que juega la instrucción cltd.

En principio una operación típica de división tendría la siguiente forma:

cltd
idivl Divisor

Estas dos simples instrucciones hacen todo lo siguiente:

La instrucción cltd toma el valor del signo del registro %eax y lo extiende en el registro %edx. En otras palabras, el valor de 32 bits que tiene el %eax y lo convierte en un valor de 64 bits conformado por el %edx y el %eax. De hecho, cltd significa convert long (valor de 32 bits) to double (valor de 64 bits).

Dado que la representación de los registros es complemento a dos, el cltd coloca ceros si el número es positivo o unos (representación del -1 en complemento a dos) si el número es negativo (explicando así el chiste malo).

Advertencia: recuerda que luego del cltd se pierde cualquier valor que el %edx hubiera tenido.

Luego la instrucción idivl concatena %edx con %eax que lo representaremos [%edx:%eax] y lo divide entre lo que pases como divisor, por ejemplo %ebx. El cociente de la división es un valor entero que queda en el registro %eax y el resto o residuo queda en %edx.

2016: Vuelven los webcomics

Los que me conocen sabrán que otra de mis aficiones son los webcomics, de hecho, tenía un blog completo dedicado a publicar algunas de las cosas que se me ocurrían… En ocasiones veo esos viejo comics y algunos hasta siguen vigentes… Así que este año me parece interesante publicar de nuevo los mejores, ya que, muchas de mis amistades más recientes no conocen estos dibujos.

Cada serie está dividida por temáticas:

Un Memento de Locura (UMDL): es una serie de caricaturas (dicen que es basadas en hechos reales) creadas con la herramienta stripgenerator, que cuenta la historia de Romer, un desarrollador de software sub-pagado y esclavizado por la empresa que trabaja, cuya presidenta es la malvada tirana Tuchulcha.

000-cover-umdl

MIpS aventuras por la vIA-32 (MAV): un comic de alto nivel geek, pero de lenguaje de bajo nivel (lenguaje ensamblador IA-32). Dibujados en Paint.

000-Mips-aventuras-por-la-via-portada

 

Casos y cosas de estudiantes (CCE): un webcomic creado con una herramienta llamada Pixton. Los dibujos pueden parecer algo “retro” pero están restringidos a la herramienta.

000-CCE-Portada

 

Risco vs. Cisca (RvC): otro webcomics donde el tema “arquitectura del computador” se hace presente, en este caso se trata de una situación imaginaria, en la cual, la inteligencia artificial de las máquinas son capaces de tener distintos niveles de razonamiento. A su vez las máquinas han encontrado los mecanismos suficientes para evolucionar por si mismas bajo las condiciones adecuadas, es decir, actualizar tanto su hardware como su software con cierta autonomía. Risco y Cisca representan la rapidez y efectividad de lo sencillo (como las arquitecturas RISC), en contraposición de lo poderoso de las cosas complejas (como las arquitecturas CISC). Este webcomic aunque está hecho con stripgenerator, creo que nunca llegué a publicarlo, de hecho está inconcluso, quizás con el tiempo suficiente continúe con esta historia porque me gusta bastante.

000-Risco-vs-Cisca-Portada

El Rincón Reflexivo (ERR): Aquí agrupé todos los dibujos y comics que por alguna razón no entraban en la temática o el estilo de alguna de las opciones anteriores.

el-rincon-reflexivo-portada