Bonjour.
Considérons le code C suivant contenu dans un fichier "main.cpp" .
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int main(){ int a = 5; a = a + 2; return 0; }
Sous Linux Ubutnu, la commande "gcc -S main.cpp" renvoie le code assembleur suivant.
Code Assembleur : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 .file "main.c" .text .globl main .type main, @function main: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 movq %rsp, %rbp .cfi_offset 6, -16 .cfi_def_cfa_register 6 movl $3, -4(%rbp) addl $2, -4(%rbp) movl $0, %eax leave ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3" .section .note.GNU-stack,"",@progbits
Dans le code précédent, ce qui m'intéresse ce sont les lignes suivantes.
Code Assembleur : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 pushq %rbp .cfi_def_cfa_offset 16 movq %rsp, %rbp .cfi_offset 6, -16 .cfi_def_cfa_register 6 movl $3, -4(%rbp) addl $2, -4(%rbp) movl $0, %eax leave
Quelqu'un pourrait-il m'expliquer un peu ces lignes ? Existe-t-il une documentation expliquant les mots clés ?
Partager