.text .globl main main: sub $16, %rsp # on alloue deux mots sur la pile movq $3, 8(%rsp) # x alloué en sp + 8 mov 8(%rsp), %rdi imul 8(%rsp), %rdi call print_int movq $3, 8(%rsp) # x alloué en sp+8 mov 8(%rsp), %rax add %rax, %rax mov %rax, (%rsp) # y alloué en sp imul 8(%rsp), %rax # x * y dans %rax mov %rax, %rdi # et sauvé dans %rdi mov 8(%rsp), %rax add $3, %rax mov %rax, (%rsp) # z également alloué en sp mov $0, %rdx mov (%rsp), %rax idivq %rax # divise %rdx::%rax par %rax dans %rax add %rax, %rdi call print_int add $16, %rsp mov $0, %rax # on termine proprement ret ## une routine pour afficher un entier (%rdi) avec printf print_int: mov %rdi, %rsi mov $message, %rdi # arguments pour printf mov $0, %rax call printf ret .data message: .string "%d\n" ## Local Variables: ## compile-command: "gcc local.s && ./a.out" ## End: