Simple:
Code:
$ gcc -S divide.c
// divide.s
.file "divide.c"
.text
.globl divide
.type divide, @function
divide:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $16, %rsp
movl %edi, -4(%rbp)
cmpl $1, -4(%rbp)
jle .L2
movl -4(%rbp), %eax
movl %eax, %edx
shrl $31, %edx
addl %edx, %eax
sarl %eax
movl %eax, %edi
call divide
jmp .L3
.L2:
movl -4(%rbp), %eax
.L3:
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size divide, .-divide
.ident "GCC: (Debian 13.2.0-10) 13.2.0"
.section .note.GNU-stack,"",@progbits