# CONVENCIÓN DE LLAMADAS

La mayor parte de la teoría que se va a ver en la guía es aplicable tanto a arquitectura de 32bit como a 64bit. Sin embargo hay un detalle muy importante que varía y es necesario tenerlo en cuenta:

### Convención de llamadas: Argumentos de las funciones

La manera de pasar argumentos a las funciones varía en función de la arquitectura:

#### x86

En arquitectura de 32 bits, los argumentos se almacenan directamente en el stack siguiendo la convención de llamadas:

![](https://3403442240-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhLaK1R01rLyFh-Jcoj%2Fuploads%2F1kD0p5Eiq9zKFUpz9BNi%2Fstack-convention.png?alt=media\&token=02cc154d-adc5-4d91-ad6a-96faaa7f7fb0)

#### x64

Por otro lado, en arquitecturas más modernas (64bits), los parámetros se almacenan en los **registros** a no ser que haya más de 6 argumentos, que los últimos se almacenarían en el stack.

![Fijense que ésta imagen muestra el stack al revés que la imagen superior.](https://3403442240-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MhLaK1R01rLyFh-Jcoj%2Fuploads%2FhlYdy7toe6k2hdd5feJ6%2Fimage.png?alt=media\&token=771fdfa5-f143-4c55-8278-f3e854815be5)

Como se puede observar, los argumentos se almacenan en: **RDI, RSI, RDX, RCX, R8 y R9** y despúes se comienzan a almacenar en el **stack** desde el séptimo en adelante.
