Skip to content

Instantly share code, notes, and snippets.

@indutny
Created April 9, 2012 14:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save indutny/cf7cc8c01e4834848b7c to your computer and use it in GitHub Desktop.
Save indutny/cf7cc8c01e4834848b7c to your computer and use it in GitHub Desktop.
0x000000010012f8f1: push %rbp ; Entry starts here
0x000000010012f8f2: mov %rsp,%rbp
0x000000010012f8f5: sub $0x70,%rsp
0x000000010012f8fc: mov %rsp,%r8
0x000000010012f8ff: mov %rbp,%r9
0x000000010012f902: sub $0x8,%r9
0x000000010012f909: push %r8
0x000000010012f90b: mov $0x1,%r14
0x000000010012f915: jmpq 0x10012f928
0x000000010012f91a: mov %r14,0x0(%r8)
0x000000010012f921: add $0x8,%r8
0x000000010012f928: cmp %r9,%r8
0x000000010012f92b: jle 0x10012f91a
0x000000010012f931: pop %r8
0x000000010012f933: xor %r14,%r14
0x000000010012f936: xor %r8,%r8
0x000000010012f939: xor %r9,%r9
0x000000010012f93c: mov %rax,-0x8(%rbp)
0x000000010012f943: mov $0x30,%rax
0x000000010012f94d: push %rax
0x000000010012f94e: mov $0x4,%rax
0x000000010012f958: push %rax
0x000000010012f959: mov $0x10012f270,%r14
0x000000010012f963: rex.WB callq *%r14
0x000000010012f966: nop
0x000000010012f967: mov %rsi,0x7(%rax)
0x000000010012f96e: movq $0x0,0xf(%rax)
0x000000010012f979: mov %rax,%rsi
0x000000010012f97c: mov -0x8(%rbp),%rax ; Entry ends here
0x000000010012f983: mov $0x100200118,%r14
0x000000010012f98d: rex.WB cmpb $0x0,0x0(%r14)
0x000000010012f995: je 0x10012f9a9
0x000000010012f99b: mov $0x10012f000,%r14
0x000000010012f9a5: rex.WB callq *%r14
0x000000010012f9a8: nop
0x000000010012f9a9: mov $0x14,%rax
0x000000010012f9b3: mov $0x0,%rbx
0x000000010012f9bd: mov %rax,%rcx
0x000000010012f9c0: mov %rbx,%rdx
0x000000010012f9c3: mov %rcx,%rax
0x000000010012f9c6: mov %rbx,-0x8(%rbp)
0x000000010012f9cd: mov $0x2,%rbx
0x000000010012f9d7: mov -0x8(%rbp),%rcx
0x000000010012f9de: mov %rcx,-0x10(%rbp)
0x000000010012f9e5: mov %rax,-0x18(%rbp)
0x000000010012f9ec: mov %rdx,-0x20(%rbp)
0x000000010012f9f3: mov $0x10012f350,%r14
0x000000010012f9fd: rex.WB callq *%r14
0x000000010012fa00: nop
0x000000010012fa01: mov %rax,%r8
0x000000010012fa04: mov -0x10(%rbp),%rcx
0x000000010012fa0b: mov -0x18(%rbp),%rax
0x000000010012fa12: mov -0x20(%rbp),%rdx
0x000000010012fa19: mov %r8,%rbx
0x000000010012fa1c: mov %rax,-0x20(%rbp)
0x000000010012fa23: mov %r8,%rax
0x000000010012fa26: mov -0x20(%rbp),%r8
0x000000010012fa2d: mov %rcx,-0x18(%rbp)
0x000000010012fa34: mov %rax,-0x10(%rbp)
0x000000010012fa3b: mov %r8,-0x8(%rbp)
0x000000010012fa42: mov %rbx,-0x28(%rbp)
0x000000010012fa49: mov %rdx,-0x30(%rbp)
0x000000010012fa50: mov $0x10012f5c0,%r14
0x000000010012fa5a: nop
0x000000010012fa5b: rex.WB callq *%r14
0x000000010012fa5e: nop
0x000000010012fa5f: rex.W cmpb $0x0,0x7(%rax)
0x000000010012fa67: mov -0x18(%rbp),%rcx
0x000000010012fa6e: mov -0x10(%rbp),%rax
0x000000010012fa75: mov -0x8(%rbp),%r8
0x000000010012fa7c: mov -0x28(%rbp),%rbx
0x000000010012fa83: mov -0x30(%rbp),%rdx
0x000000010012fa8a: je 0x10012fcd8
0x000000010012fa90: mov $0x14,%r9
0x000000010012fa9a: mov %r9,%r10
0x000000010012fa9d: mov %r12,%r11
0x000000010012faa0: mov %rbx,%r13
0x000000010012faa3: mov %rax,-0x30(%rbp)
0x000000010012faaa: mov %r10,%rax
0x000000010012faad: mov -0x30(%rbp),%r10
0x000000010012fab4: mov %rbx,-0x30(%rbp)
0x000000010012fabb: mov $0x2,%rbx
0x000000010012fac5: mov -0x30(%rbp),%r9
0x000000010012facc: mov %rdx,-0x28(%rbp)
0x000000010012fad3: mov %rcx,-0x8(%rbp)
0x000000010012fada: mov %r10,-0x10(%rbp)
0x000000010012fae1: mov %rax,-0x18(%rbp)
0x000000010012fae8: mov %r12,-0x20(%rbp)
0x000000010012faef: mov %r13,-0x38(%rbp)
0x000000010012faf6: mov %r8,-0x40(%rbp)
0x000000010012fafd: mov %r9,-0x48(%rbp)
0x000000010012fb04: mov %r11,-0x50(%rbp)
0x000000010012fb0b: mov $0x10012f350,%r14
0x000000010012fb15: rex.WB callq *%r14
0x000000010012fb18: nop
0x000000010012fb19: mov %rax,%rdx
0x000000010012fb1c: mov -0x8(%rbp),%rcx
0x000000010012fb23: mov -0x10(%rbp),%r10
0x000000010012fb2a: mov -0x18(%rbp),%rax
0x000000010012fb31: mov -0x20(%rbp),%r12
0x000000010012fb38: mov -0x38(%rbp),%r13
0x000000010012fb3f: mov -0x40(%rbp),%r8
0x000000010012fb46: mov -0x48(%rbp),%r9
0x000000010012fb4d: mov -0x50(%rbp),%r11
0x000000010012fb54: mov %rdx,%rbx
0x000000010012fb57: mov %rax,-0x50(%rbp)
0x000000010012fb5e: mov %rdx,%rax
0x000000010012fb61: mov -0x50(%rbp),%rdx
0x000000010012fb68: mov %rcx,-0x48(%rbp)
0x000000010012fb6f: mov %r10,-0x40(%rbp)
0x000000010012fb76: mov %rdx,-0x38(%rbp)
0x000000010012fb7d: mov %r12,-0x20(%rbp)
0x000000010012fb84: mov %r13,-0x18(%rbp)
0x000000010012fb8b: mov %rbx,-0x10(%rbp)
0x000000010012fb92: mov %r8,-0x8(%rbp)
0x000000010012fb99: mov %r9,-0x30(%rbp)
0x000000010012fba0: mov %r11,-0x58(%rbp)
0x000000010012fba7: mov $0x10012f5c0,%r14
0x000000010012fbb1: rex.WB callq *%r14
0x000000010012fbb4: nop
0x000000010012fbb5: rex.W cmpb $0x0,0x7(%rax)
0x000000010012fbbd: mov -0x48(%rbp),%rcx
0x000000010012fbc4: mov -0x40(%rbp),%r10
0x000000010012fbcb: mov -0x38(%rbp),%rdx
0x000000010012fbd2: mov -0x20(%rbp),%r12
0x000000010012fbd9: mov -0x18(%rbp),%r13
0x000000010012fbe0: mov -0x10(%rbp),%rbx
0x000000010012fbe7: mov -0x8(%rbp),%r8
0x000000010012fbee: mov -0x30(%rbp),%r9
0x000000010012fbf5: mov -0x58(%rbp),%r11
0x000000010012fbfc: je 0x10012fcbc
0x000000010012fc02: mov %r11,%rax
0x000000010012fc05: mov %rbx,-0x58(%rbp)
0x000000010012fc0c: mov $0x2,%rbx
0x000000010012fc16: mov -0x58(%rbp),%r11
0x000000010012fc1d: mov %r10,-0x30(%rbp)
0x000000010012fc24: mov %rdx,-0x8(%rbp)
0x000000010012fc2b: mov %r12,-0x10(%rbp)
0x000000010012fc32: mov %r13,-0x18(%rbp)
0x000000010012fc39: mov %r11,-0x20(%rbp)
0x000000010012fc40: mov %r8,-0x38(%rbp)
0x000000010012fc47: mov %r9,-0x40(%rbp)
0x000000010012fc4e: mov %rax,-0x48(%rbp)
0x000000010012fc55: mov $0x10012f680,%r14
0x000000010012fc5f: rex.WB callq *%r14
0x000000010012fc62: nop
0x000000010012fc63: mov %rax,%rcx
0x000000010012fc66: mov -0x30(%rbp),%r10
0x000000010012fc6d: mov -0x8(%rbp),%rdx
0x000000010012fc74: mov -0x10(%rbp),%r12
0x000000010012fc7b: mov -0x18(%rbp),%r13
0x000000010012fc82: mov -0x20(%rbp),%r11
0x000000010012fc89: mov -0x38(%rbp),%r8
0x000000010012fc90: mov -0x40(%rbp),%r9
0x000000010012fc97: mov -0x48(%rbp),%rax
0x000000010012fc9e: mov %rcx,%r12
0x000000010012fca1: mov %r11,%rdx
0x000000010012fca4: mov -0x28(%rbp),%rax
0x000000010012fcab: mov %r8,%r13
0x000000010012fcae: mov %rax,%r11
0x000000010012fcb1: mov %r10,%rax
0x000000010012fcb4: mov %rdx,%r10
0x000000010012fcb7: jmpq 0x10012faa3
0x000000010012fcbc: mov %r11,%rax
0x000000010012fcbf: mov %r9,%r8
0x000000010012fcc2: mov %rax,-0x28(%rbp)
0x000000010012fcc9: mov %r8,%rcx
0x000000010012fccc: mov -0x28(%rbp),%rdx
0x000000010012fcd3: jmpq 0x10012f9c3
0x000000010012fcd8: mov %rdx,-0x28(%rbp)
0x000000010012fcdf: mov -0x28(%rbp),%rax
0x000000010012fce6: mov %rbp,%rsp
0x000000010012fce9: pop %rbp
0x000000010012fcea: retq
i = 10
k = 0
while (--i) {
j = 10
while (--j) {
k = k + 1
}
}
return k
[Block#0
1: [Entry]
3: *[0 [imm 0x14]] = [LoadRoot]
5: *[1 [st:0]] = [StoreLocal *[0 [imm 0x14]]]
9: *[2 [imm 0x0]] = [LoadRoot]
11: *[3 [st:1]] = [StoreLocal *[2 [imm 0x0]]]
15: [Goto]
[]>*>[1]]
[Block#1 @[1,6]:17 @[3,16]:18
19: *[4 [imm 0x2]] = [LoadRoot]
21: *[5 [st:-1]] = [BinOp *[17 [st:0]] *[4 [imm 0x2]]]
23: *[6 [st:0]] = [StoreLocal *[5 [st:-1]]]
27: [BranchBool *[5 [st:-1]]]
[0,6]>*>[2,3]]
[Block#2
29: *[7 [imm 0x14]] = [LoadRoot]
31: *[8 [st:2]] = [StoreLocal *[7 [imm 0x14]]]
35: [Goto]
[1]>*>[4]]
[Block#4 @[8,11]:15 @[14,18]:16 @[6,17]:19
39: *[9 [imm 0x2]] = [LoadRoot]
41: *[10 [st:-1]] = [BinOp *[15 [st:2]] *[9 [imm 0x2]]]
43: *[11 [st:2]] = [StoreLocal *[10 [st:-1]]]
47: [BranchBool *[10 [st:-1]]]
[2,5]>*>[5,6]]
[Block#5
51: *[12 [imm 0x2]] = [LoadRoot]
53: *[13 [st:-1]] = [BinOp *[16 [st:1]] *[12 [imm 0x2]]]
55: *[14 [st:1]] = [StoreLocal *[13 [st:-1]]]
59: [Goto]
[4]>*>[4]]
[Block#6
61: [Goto]
[4]>*>[1]]
[Block#3
65: [Return *[18 [st:1]]]
[1]>*>[]]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment