-
Notifications
You must be signed in to change notification settings - Fork 0
/
executor.s
76 lines (76 loc) · 1.3 KB
/
executor.s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
.file "executor.c"
.section .rodata
.LC0:
.string "in instruction %d \n"
.LC1:
.string "__RETURN"
.text
.globl executor
.type executor, @function
executor:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $32, %rsp
movq %rdi, -24(%rbp)
movq %rsi, -32(%rbp)
movq $0, -8(%rbp)
movq $0, -16(%rbp)
cmpq $0, -32(%rbp)
jne .L2
movl $0, %eax
call createVar@PLT
movq %rax, -32(%rbp)
.L2:
movq -32(%rbp), %rdx
movq -24(%rbp), %rax
movq %rdx, %rsi
movq %rax, %rdi
call executeLine@PLT
movq %rax, -16(%rbp)
jmp .L3
.L4:
movq -16(%rbp), %rax
movl (%rax), %eax
movl %eax, %esi
leaq .LC0(%rip), %rdi
movl $0, %eax
call printf@PLT
movq -32(%rbp), %rdx
movq -16(%rbp), %rax
movq %rdx, %rsi
movq %rax, %rdi
call executeLine@PLT
movq %rax, -16(%rbp)
.L3:
cmpq $0, -16(%rbp)
jne .L4
movq -32(%rbp), %rax
leaq .LC1(%rip), %rsi
movq %rax, %rdi
call getVar@PLT
movq %rax, -8(%rbp)
movq -32(%rbp), %rax
movq %rax, %rdi
movl $0, %eax
call freeVarList@PLT
cmpq $0, -8(%rbp)
jne .L5
movl $0, %eax
jmp .L6
.L5:
movq -8(%rbp), %rax
movl 32(%rax), %eax
.L6:
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size executor, .-executor
.ident "GCC: (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406"
.section .note.GNU-stack,"",@progbits