.globl main main: mov $100*1000*1000, %ecx # repetition count mov $31, %eax pushl $31 pushl $31 pushl $31 pushl $31 mov %esp, %ebp ## A proposed generic addition operation for Bicicleta, a ## highly dynamic language, using LSB tags. add_four_times: test $1, %al jz 1f testb $1, (%ebp) jnz 2f 1: call generic_add 2: add (%ebp), %eax dec %eax add $4, %ebp test $1, %al jz 1f testb $1, (%ebp) jnz 2f 1: call generic_add 2: add (%ebp), %eax dec %eax add $4, %ebp test $1, %al jz 1f testb $1, (%ebp) jnz 2f 1: call generic_add 2: add (%ebp), %eax dec %eax add $4, %ebp test $1, %al jz 1f testb $1, (%ebp) jnz 2f 1: call generic_add 2: add (%ebp), %eax dec %eax add $4, %ebp ## Cleanup: repush the four ints onto %ebp sub $16, %ebp loop add_four_times pushl $0 call exit generic_add: call abort