welcome: log in

Petit tutorial assambleur (GAS)

Les flags du regitre status

  +----+----+----+----+----+----+---+---+---+---+---+---+---+---+---+---+
  | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Bits
  +---------------------------------------------------------------------
  | -- | -- | -- | -- | O  | D  | I | T | S | Z | - | A | - | P | - | C | Flags
  +----+----+----+----+----+----+---+---+---+---+---+---+---+---+---+---+

Les registres (GPR)

           +-------------------------------------------------------------------------------------------+ 
           | Accumulator | Counter | Data | Base | Stack Pointer | Base Pointer | Source | Destination |
+----+-------------------------------------------------------------------------------------------------+
|  8 (lsb) |     al      |    cl   |  dl  |  bl  |      N/A      |      N/A     |  N/A   |    N/A      |   
+----------+-------------------------------------------------------------------------------------------+
|  8 (msb) |     ah      |    ch   |  dh  |  bh  |      N/A      |      N/A     |  N/A   |    N/A      |   
+----------+-------------------------------------------------------------------------------------------+
|    16    |     ax      |    cx   |  dx  |  bx  |      sp       |      bp      |   si   |     di      |
+----------+-------------------------------------------------------------------------------------------+
|    32    |    eax      |   ecx   | eax  | ebx  |     esp       |     ebp      |   esi  |     edi     |
+----------+-------------------------------------------------------------------------------------------+

Les segments

Appels de fonctions

Appel d'une fonction

Début de la nouvelle fonction

Exemples

Etat de la pile lors de l'appelle d'une procédure avec 2 arguments

Etat de la pile

offset ebp

offset esp

Variables locales de la procédure source

16(%ebp)

24(%esp)

2ème argument transmis à la procédure appellée

12(%ebp)

20(%esp)

1er argument transmis à la procédure appellée

8 (%ebp)

16(%esp)

addresse de retour vers la procédure mère

4(%ebp)

12(%esp)

sauvegarde de ebp

0(%ebp)

8(%esp)

1ère variable locale de la procédure

-4(%ebp)

4(%esp)

2ème variable locale de la procédure

-8(%ebp)

0(%esp)

Les instructions

Référence mnemonic

  • pop dest est équivalent aux instructions:
    • mov (%esp),dest add $4,%esp

pense bêtes GDB


Index CategoryLinux

tutorialASM (last edited 16/08/2014 14:02:21 by glennie)