I1M2018: De la matemática a la máquina
En la segunda parte de la clase de hoy del curso de Informática de 1º del Grado en Matemáticas se ha comentado cómo los se pueden representar los conceptos matemáticos en los ordenadores.
Para ello se ha visto cómo la definición de factorial se puede definir en distintos paradigmas desde la matemática al código máquina. Las definiciones consideradas han sido
- En matemáticas
1 2 3 |
n n! = ∏ k k=1 |
- En programación funcional (Haskell).
1 2 |
factorial :: Int -> Int factorial n = product [1..n] |
- En programación imperativa (C).
1 2 3 4 5 6 7 8 9 10 11 12 |
int factorial(int n) { int ret = 1; while (n > 1) { ret *= n; n--; } return ret; } |
- En ensamblador.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
factorial: mov rdi, 1 .loop: cmp rax, 1 jle .done imul rdi, rax dec rax jmp .loop .done: ret |
- En código máquina.
1 2 |
48 bf 01 00 00 00 00 00 00 00 48 3d 01 00 00 00 7e 0c 48 0f af f8 48 ff c8 e9 ec ff ff ff c3 |
La exposición se ha basado en el artículo From math to machine: translating a function to machine code de Brian Steffens.