## on calcule dans %rsi, car c'est le second argument pour printf .text .globl main main: mov $4, %rdi # 4 + 6 add $6, %rdi call print_int mov $21, %rdi # 21 * 2 imul $2, %rdi call print_int mov $21, %rdi # ou encore avec un décalage sal $1, %rdi call print_int mov $0, %rdx # 4 + 7 / 2 mov $7, %rax mov $2, %rbx idivq %rbx # divise %rdx::%rax par %rbx, dans %rax mov $4, %rdi add %rax, %rdi call print_int mov $7, %rdi # ou encore avec un décalage sar $1, %rdi add $4, %rdi call print_int mov $0, %rdx # 3 - 6 * (10 / 5) mov $10, %rax mov $5, %rbx idivq %rbx # divise %rdx::%rax par %rbx dans %rax imul $6, %rax mov $3, %rdi sub %rax, %rdi call print_int 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 -no-pie arith1-v1.s && ./a.out" ## End: