Frase célebre

25 julio, 2010

- Oh, no. La típica discusión absurda sobre lenguajes donde cada uno elige el que más se programa en su pueblo. Sois idiotas. Por no usar Python.

jotape. (Menéame)

Posteado en Información Libre by luis | No hay comentarios »

Vim. El único a partir de hoy.

26 abril, 2010
Tags: , , , , , ,

Unix is simple.  It just takes a genius to understand its simplicity.  ~Dennis Ritchie
Vim logo
Vim, versión mejorada de VI, es (en caso de que alguien no haya querido leer los artículos de la wikipedia) un editor de textos muy versátil.
Antes de seguir debo indicar que este artículo no pretende ser una introducción a Vim, ya que ¡Hasta el propio editor tiene un tutorial con esa finalidad (vimtutor)!… ok, puede que al leer esa frase más de uno piense ahora… Si un editor de texto tiene que incluir un tutorial… ¡entonces es de todo menos fácil!. Y he aquí el motivo de la primera línea del artículo…
Por otra parte, gracias a la gran comunidad que le rodea, es un entorno de desarrollo que puedes usar dónde y para lo que quieras.
Lo seguro es que cuando veáis lo que se puede hacer con Vim será vuestro único editor.
Leer todo el artículo »

Posteado en Información Libre by datf | 2 Comentarios »

Frase célebre

25 abril, 2010
Tags: ,

- Real hackers don’t take vacations. And by that standard, Bill Gates is no longer a real hacker.

Posteado en Información Libre by luis | No hay comentarios »

Arch Hurd instalado!

11 abril, 2010
Tags: , , ,


Leer todo el artículo »

Posteado en ArchHurd by luis | 1 Comentario »

Frase célebre

6 abril, 2010
Tags: , ,

- Que las empresas tengan especial influencia en la política significa que la democracia está enferma. El propósito de la democracia es asegurarse de que los ricos no tienen una influencia proporcional a su riqueza. Y si tienen más influencia que tú o que yo, eso significa que la democracia está fallando. Las leyes que obtienen de esta forma no tienen autoridad moral, sino la capacidad de hacer daño.

Richard Stallman.

Posteado en Información Libre by luis | 1 Comentario »

Ejemplo de una función en ensamblador

5 marzo, 2010
Tags: , , , , ,

Echemos un vistazo a cómo se hacen llamadas a funciones en un programa. La función que escribiremos se llamará ‘power’. Pasaremos a la función dos parámetros, la base y el exponente. Por ejemplo, si pasamos los parámetros 2 y 3, elevaremos el número 2 al cubo, es decir 2*2*2, obteniendo 8. Para hacer el programa sencillo, utilizaremos números positivos (excepto el 0).

El siguiente código es el programa completo. La explicación la veremos después del código, y el nombre del archivo es power.s
Leer todo el artículo »

Posteado en Assembly (x86), Programación by luis | No hay comentarios »

Funciones en ensamblador & C calling convention

28 febrero, 2010
Tags: , , , , ,

No podremos escribir funciones en ensamblador sin entender cómo funciona la pila  (stack de ahora en adelante) del ordenador. Cada programa que se ejecuta en un ordenador usa una zona de memoria llamada stack para hacer que las funciones puedan ejecutarse correctamente. Piensa que el stack es como la pila de papeles que tienes en tu mesa.

Un ordenador también tiene su stack. Para poder apilar datos en el stack, la instrucción en ensamblador es pushl, que apila un valor o registro en la parte superior del stack. Bueno, digo parte superior pero en realidad el ‘top’ del stack está en la parte inferior del mismo. Aunque esto pueda parecer confuso, la razón es que cuando imaginamos una pila de algo (papeles por ejemplo), pensamos en añadir o quitar cosas de la parte superior. Sin embargo, en la memoria el satack comienza en la parte superior de la misma y va creciendo hacia abajo debido a razones de arquitectura. Por lo tanto, cuando nos referimos al la parte superior del stack, recuerda que físicamente en memoria estaría en la parte más baja. Para verlo más claro, es como si los papeles de la mesa los empezaras a colocar desde el techo hacia abajo. Para quitar valores del stack la instrucción es popl. Esto quita el valor superior del stack (el último que se ha puesto), y lo guarda en un registro o dirección de memoria que elijas.
Leer todo el artículo »

Posteado en Assembly (x86), Programación by luis | No hay comentarios »

Cómo trabajan las funciones

27 febrero, 2010
Tags: , , , ,

Las funciones están formadas por diferentes piezas:

  • Nombre
    El nombre de una función es un símbolo que representa la dirección dónde el código de la misma empieza. En ensamblador, el símbolo se define escribiendo el nombre de la función como una etiqueta antes del código de la misma.
  • Parámetros
    Los parámetros son los datos que se le pasan a la función para luego ser procesados. Por ejemplo, en matemáticas, en una función de seno, si se le pregunta al ordenador por el seno de 2, seno será el nombre de la función, y 2 será el parámetro.
    Leer todo el artículo »

Posteado en Assembly (x86), Programación by luis | No hay comentarios »

Tratando con lo complejo

27 febrero, 2010
Tags: , , ,

Los programas que hemos escrito en posts anteriores solamente consistían en una sección de código. Sin embargo, si escribiésemos programas reales como esos, serían imposibles de mantener. Sería realmente difícil conseguir programadores que trabajaran en el proyecto, ya que los cambios hechos en una parte podrían afectar negativamente a otra que se esté desarrollando.

Para ayudar a que los programadores trabajen en grupo, es necesario dividir los programas en partes separadas, que se comunicarán entre sí a través de interfaces bien definidas. De esta forma, cada pieza puede ser desarrollada y probada independientemente de las demás, haciendo mucho más fácil que varios programadores trabajen en el mismo proyecto.
Leer todo el artículo »

Posteado en ArchLinux, Assembly (x86) by luis | No hay comentarios »

Representación de los modos de acceso a memoria en ensamblador

26 febrero, 2010
Tags: , , ,

En otro post vimos los distintos tipos de acceso a memoria. Ahora vamos a ver cómo esos tipos de acceso son representados como instrucciones en ensamblador.

La forma general de la instrucción es :

DIRECCIÓN_O_OFFSET (%BASE_O_OFFSET, %INDICE, MULTIPLICADOR)

Todos los campos son opcionales. Para calcular la dirección, hacemos un sencillo cálculo:

DIRECCIÓN FINAL = DIRECCIÓN_O_OFFSET + %BASE_O_OFFSET + MULTIPLICADOR * %ÍNDICE
Leer todo el artículo »

Posteado en Assembly (x86), Programación by luis | No hay comentarios »