1
2
3
4
5
6
7
8
9
10 == code
11
12
13
14
15
16
17 55/push . . . . . . . .
18 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
19
20 68/push . . . . . . . 5/imm32
21 e8/call . . . . . . factorial/disp32
22
23 5a/pop . . . . . . . .
24
25 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
26 5d/pop . . . . . . . .
27
28
29 89/copy 3/mod/direct 3/rm32/EBX . . . 0/r32/EAX . .
30 b8/copy . . . . . . . 1/imm32
31 cd/syscall . . . . . . . 0x80/imm8
32
33
34 factorial:
35
36 b8/copy . . . . . . . 1/imm32
37
38 81 7/subop/compare 1/mod/*+disp8 4/rm32/sib 4/base/ESP 4/index/none . . 4/disp8 1/imm32
39 7e/jump-if-<= . . . . . . $factorial:exit/disp8
40
41 8b/copy 1/mod/*+disp8 4/rm32/sib 4/base/ESP 4/index/none 3/r32/EBX 4/disp8 .
42 81 5/subop/subtract 3/mod/direct 3/rm32/EBX . . . . . 1/imm32
43
44 55/push . . . . . . . .
45 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
46
47 53/push . . . . . . . .
48 e8/call . . . . . . factorial/disp32
49
50 5e/pop . . . . . . . .
51
52 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
53 5d/pop . . . . . . . .
54
55 8b/copy 1/mod/*+disp8 4/rm32/sib 4/base/ESP 4/index/none 2/r32/EDX 4/disp8 .
56
57 f7 4/subop/multiply 1/mod/*+disp8 4/rm32/sib 4/base/ESP 4/index/none 4/disp8 .
58
59 $factorial:exit:
60 c3/return
61
62