# command: lldb -b -o 'disassemble -n div10s' -o 'disassemble -n table_switch' -o 'disassemble -n mod8s' idioms-x86_64-O2.o # version: lldb-1703.0.236.21 (lldb) target create "idioms-x86_64-O2.o" Current executable set to '/private/tmp/aiefs-re/phases/13-tools-and-protocols/39-compiler-idioms-and-optimization/code/fixtures/idioms-x86_64-O2.o' (x86_64). (lldb) disassemble -n div10s idioms-x86_64-O2.o`div10s: idioms-x86_64-O2.o[0x10] <+0>: movslq %edi, %rax idioms-x86_64-O2.o[0x13] <+3>: imulq $0x66666667, %rax, %rax ; imm = 0x66666667 idioms-x86_64-O2.o[0x1a] <+10>: movq %rax, %rcx idioms-x86_64-O2.o[0x1d] <+13>: shrq $0x3f, %rcx idioms-x86_64-O2.o[0x21] <+17>: sarq $0x22, %rax idioms-x86_64-O2.o[0x25] <+21>: addl %ecx, %eax idioms-x86_64-O2.o[0x27] <+23>: retq (lldb) disassemble -n table_switch idioms-x86_64-O2.o`table_switch: idioms-x86_64-O2.o[0xd0] <+0>: movl $0xffffffff, %eax ; imm = 0xFFFFFFFF idioms-x86_64-O2.o[0xd5] <+5>: cmpl $0x6, %edi idioms-x86_64-O2.o[0xd8] <+8>: ja 0xe6 ; <+22> idioms-x86_64-O2.o[0xda] <+10>: movl %edi, %eax idioms-x86_64-O2.o[0xdc] <+12>: leaq (%rip), %rcx ; <+19> idioms-x86_64-O2.o[0xe3] <+19>: movl (%rcx,%rax,4), %eax idioms-x86_64-O2.o[0xe6] <+22>: retq (lldb) disassemble -n mod8s idioms-x86_64-O2.o`mod8s: idioms-x86_64-O2.o[0x90] <+0>: movl %edi, %eax idioms-x86_64-O2.o[0x92] <+2>: leal 0x7(%rax), %ecx idioms-x86_64-O2.o[0x95] <+5>: testl %edi, %edi idioms-x86_64-O2.o[0x97] <+7>: cmovnsl %edi, %ecx idioms-x86_64-O2.o[0x9a] <+10>: andl $-0x8, %ecx idioms-x86_64-O2.o[0x9d] <+13>: subl %ecx, %eax idioms-x86_64-O2.o[0x9f] <+15>: retq