QCM Pile et appels de fonctions/Corrige affiche
De Ensiwiki
.globl main main: pushl %ebp movl %esp, %ebp // Sauvegarde du registre non-scratch par // l'appelé pushl %ebx // On fait de la place pour : // 2 arguments du printf // 1 sauvegarde de registres subl $(8+4), %esp movl $chaine, %ecx // On n'utilise que %bl, mais on remplit // le reste de %ebx avec des 0. movl $0, %ebx while: cmpb $0, (%ecx) je fin_while movb (%ecx), %bl // On empile les arguments de printf // Sauvegarde de %ecx pushl %ecx pushl %ebx pushl $fmt call printf // Dépilage des arguments addl $8, %esp // Restauration de %ecx popl %ecx incl %ecx // équivalent à addl $1, %ecx jmp while fin_while: // Restauration de registres non-scratch. movl -4(%ebp), %ebx leave ret .data chaine: .asciz "Hello\n" fmt: .asciz "%c"