$ gcc -S 20120713.c -O3 -o - -masm=intel -fno-asynchronous-unwind-tables -fno-dwarf2-cfi-asm .file "20120713.c" .intel_syntax noprefix .text .p2align 4,,15 .globl interp_switch .type interp_switch, @function interp_switch: mov eax, esi .p2align 4,,10 .p2align 3 .L2: cmp BYTE PTR [rdi], 6 jbe .L13 .L3: rep ret .p2align 4,,10 .p2align 3 .L13: movzx edx, BYTE PTR [rdi] jmp [QWORD PTR .L10[0+rdx*8]] .section .rodata .align 8 .align 4 .L10: .quad .L3 .quad .L4 .quad .L5 .quad .L6 .quad .L7 .quad .L8 .quad .L9 .text .p2align 4,,10 .p2align 3 .L8: add eax, 7 .p2align 4,,10 .p2align 3 .L11: add rdi, 1 jmp .L2 .p2align 4,,10 .p2align 3 .L7: mov edx, eax shr edx, 31 add eax, edx sar eax jmp .L11 .p2align 4,,10 .p2align 3 .L6: add eax, eax jmp .L11 .p2align 4,,10 .p2align 3 .L5: sub eax, 1 jmp .L11 .p2align 4,,10 .p2align 3 .L4: add eax, 1 jmp .L11 .p2align 4,,10 .p2align 3 .L9: neg eax jmp .L11 .size interp_switch, .-interp_switch .p2align 4,,15 .globl interp_cgoto .type interp_cgoto, @function interp_cgoto: movzx eax, BYTE PTR [rdi] mov rdx, QWORD PTR dispatch_table.1604[0+rax*8] mov eax, esi jmp rdx .p2align 4,,10 .p2align 3 .L16: rep ret .p2align 4,,10 .p2align 3 .L17: movzx edx, BYTE PTR [rdi+1] add eax, 1 mov rdx, QWORD PTR dispatch_table.1604[0+rdx*8] .p2align 4,,10 .p2align 3 .L18: add rdi, 1 jmp rdx .p2align 4,,10 .p2align 3 .L19: movzx edx, BYTE PTR [rdi+1] sub eax, 1 mov rdx, QWORD PTR dispatch_table.1604[0+rdx*8] add rdi, 1 jmp rdx .p2align 4,,10 .p2align 3 .L20: movzx edx, BYTE PTR [rdi+1] add eax, eax mov rdx, QWORD PTR dispatch_table.1604[0+rdx*8] add rdi, 1 jmp rdx .p2align 4,,10 .p2align 3 .L21: mov edx, eax shr edx, 31 add eax, edx movzx edx, BYTE PTR [rdi+1] sar eax mov rdx, QWORD PTR dispatch_table.1604[0+rdx*8] add rdi, 1 jmp rdx .p2align 4,,10 .p2align 3 .L22: movzx edx, BYTE PTR [rdi+1] add eax, 7 mov rdx, QWORD PTR dispatch_table.1604[0+rdx*8] add rdi, 1 jmp rdx .p2align 4,,10 .p2align 3 .L23: movzx edx, BYTE PTR [rdi+1] neg eax mov rdx, QWORD PTR dispatch_table.1604[0+rdx*8] add rdi, 1 jmp rdx .size interp_cgoto, .-interp_cgoto .section .rodata .align 32 .type dispatch_table.1604, @object .size dispatch_table.1604, 56 dispatch_table.1604: .quad .L16 .quad .L17 .quad .L19 .quad .L20 .quad .L21 .quad .L22 .quad .L23 .ident "GCC: (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1" .section .note.GNU-stack,"",@progbits