forked from SarthakShah001/Compiler2K23
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcode.asm
More file actions
143 lines (124 loc) · 1.92 KB
/
code.asm
File metadata and controls
143 lines (124 loc) · 1.92 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
extern printf, scanf
section .data
int_val : db "%d" , 0
real_val : db "%lf" , 0
bool_val : db "%d" , 0
section .text
%macro pushAll 0
push RAX
push RBX
push RCX
push RDX
push RSP
push RBP
push RSI
push RDI
%endmacro
%macro popAll 0
pop RDI
pop RSI
pop RBP
pop RSP
pop RDX
pop RCX
pop RBX
pop RAX
%endmacro
pushAll
mov RDI , int_val
push RBP
mov RDX, RBP
sub RDX, 12
mov RAX, 0x0000_ffff_ffff_ffff
mov [RDX] , RAX
mov RSI, RDX
xor RAX, RAX
call scanf
pop RBP
popAll
pushAll
mov RDI , int_val
push RBP
mov RDX, RBP
sub RDX, 10
mov RAX, 0x0000_ffff_ffff_ffff
mov [RDX] , RAX
mov RSI, RDX
xor RAX, RAX
call scanf
pop RBP
popAll
pushAll
mov RAX , [RBP-0]
mov RBX , [RBP-2]
mul RBX
mov [RBP-15], RAX
popAll
pushAll
mov RAX , 2
mov RBX , [RBP-12]
mul RBX
mov [RBP-17], RAX
popAll
pushAll
popAll
pushAll
mov RAX , 3
mov RBX , [RBP-19]
sub RAX ,RBX
mov [RBP-21], RAX
popAll
pushAll
mov RAX , [RBP-21]
mov [RBP-8] , RAX
popAll
pushAll
mov RAX , [RBP-25]
mov [RBP-14] , RAX
popAll
pushAll
mov RAX , [RBP-8]
mov RBX , [RBP-10]
add RAX ,RBX
mov [RBP-27], RAX
popAll
pushAll
mov RAX , [RBP-27]
mov [RBP-5] , RAX
popAll
pushAll
mov RAX , [RBP-31]
mov [RBP-7] , RAX
popAll
global main
main:
ENTER 8,0
SUB RSP , 0
pushAll
mov RDI , int_val
push RBP
mov RDX, RBP
sub RDX, 0
mov RAX, 0x0000_ffff_ffff_ffff
mov [RDX] , RAX
mov RSI, RDX
xor RAX, RAX
call scanf
pop RBP
popAll
pushAll
mov RDI , int_val
push RBP
mov RDX, RBP
sub RDX, 2
mov RAX, 0x0000_ffff_ffff_ffff
mov [RDX] , RAX
mov RSI, RDX
xor RAX, RAX
call scanf
pop RBP
popAll
pushAll
popAll
leave
ret