-
Notifications
You must be signed in to change notification settings - Fork 28
/
lpcodeemitter_evalcase.inc
204 lines (202 loc) · 20.9 KB
/
lpcodeemitter_evalcase.inc
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
{
Author: Niels A.D
Project: Lape (https://github.com/nielsAD/lape)
License: GNU Lesser GPL (http://www.gnu.org/licenses/lgpl.html)
Redirects the input of 3 certain variables to the correct evaluation emitter function.
}
{%MainUnit lpvartypes.pas}
case d of
mmpPtr: case l of
mmpPtr: case r of
mmpNone: Result := _Eval__PtrD_PtrL_PtrR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.GlobalVar.Ptr, nil, Offset, Pos);
mmpPtr: Result := _Eval__PtrD_PtrL_PtrR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.GlobalVar.Ptr, Right.VarPos.GlobalVar.Ptr, Offset, Pos);
mmpVar: Result := _Eval__PtrD_PtrL_VarR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.GlobalVar.Ptr, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, Offset, Pos);
mmpStk: Result := _Eval__PtrD_PtrL_StkR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.GlobalVar.Ptr, Right.VarType.Size, -StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__PtrD_PtrL_PVarR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.GlobalVar.Ptr, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, Offset, Pos);
mmpPStk: Result := _Eval__PtrD_PtrL_PStkR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.GlobalVar.Ptr, Offset, Pos);
else e := True;
end;
mmpVar: case r of
mmpNone: Result := _Eval__PtrD_VarL_PtrR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, nil, Offset, Pos);
mmpPtr: Result := _Eval__PtrD_VarL_PtrR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarPos.GlobalVar.Ptr, Offset, Pos);
mmpVar: Result := _Eval__PtrD_VarL_VarR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, Offset, Pos);
mmpStk: Result := _Eval__PtrD_VarL_StkR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarType.Size, -StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__PtrD_VarL_PVarR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, Offset, Pos);
mmpPStk: Result := _Eval__PtrD_VarL_PStkR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Offset, Pos);
else e := True;
end;
mmpStk: case r of
mmpNone: Result := _Eval__PtrD_StkL_PtrR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarType.Size, nil, -StackIncL, Offset, Pos);
mmpPtr: Result := _Eval__PtrD_StkL_PtrR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarType.Size, Right.VarPos.GlobalVar.Ptr, -StackIncL, Offset, Pos);
mmpVar: Result := _Eval__PtrD_StkL_VarR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarType.Size, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, -StackIncL, Offset, Pos);
mmpStk: Result := _Eval__PtrD_StkL_StkR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarType.Size + Right.VarType.Size, Right.VarType.Size, -StackIncL - StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__PtrD_StkL_PVarR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarType.Size, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, -StackIncL, Offset, Pos);
mmpPStk: Result := _Eval__PtrD_StkL_PStkR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarType.Size, -StackIncL - StackIncR, Offset, Pos);
else e := True;
end;
mmpPVar: case r of
mmpNone: Result := _Eval__PtrD_PVarL_PtrR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, nil, Offset, Pos);
mmpPtr: Result := _Eval__PtrD_PVarL_PtrR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarPos.GlobalVar.Ptr, Offset, Pos);
mmpVar: Result := _Eval__PtrD_PVarL_VarR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, Offset, Pos);
mmpStk: Result := _Eval__PtrD_PVarL_StkR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarType.Size, -StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__PtrD_PVarL_PVarR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, Offset, Pos);
mmpPStk: Result := _Eval__PtrD_PVarL_PStkR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Offset, Pos);
else e := True;
end;
mmpPStk: case r of
mmpNone: Result := _Eval__PtrD_PStkL_PtrR(AProc, Dest.VarPos.GlobalVar.Ptr, nil, Offset, Pos);
mmpPtr: Result := _Eval__PtrD_PStkL_PtrR(AProc, Dest.VarPos.GlobalVar.Ptr, Right.VarPos.GlobalVar.Ptr, Offset, Pos);
mmpVar: Result := _Eval__PtrD_PStkL_VarR(AProc, Dest.VarPos.GlobalVar.Ptr, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, Offset, Pos);
mmpStk: Result := _Eval__PtrD_PStkL_StkR(AProc, Dest.VarPos.GlobalVar.Ptr, Left.VarType.Size + Right.VarType.Size, Right.VarType.Size, -StackIncL - StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__PtrD_PStkL_PVarR(AProc, Dest.VarPos.GlobalVar.Ptr, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, Offset, Pos);
mmpPStk: Result := _Eval__PtrD_PStkL_PStkR(AProc, Dest.VarPos.GlobalVar.Ptr, Offset, Pos);
else e := True;
end;
else e := True;
end;
mmpVar: case l of
mmpPtr: case r of
mmpNone: Result := _Eval__VarD_PtrL_PtrR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.GlobalVar.Ptr, nil, Offset, Pos);
mmpPtr: Result := _Eval__VarD_PtrL_PtrR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.GlobalVar.Ptr, Right.VarPos.GlobalVar.Ptr, Offset, Pos);
mmpVar: Result := _Eval__VarD_PtrL_VarR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.GlobalVar.Ptr, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, Offset, Pos);
mmpStk: Result := _Eval__VarD_PtrL_StkR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.GlobalVar.Ptr, Right.VarType.Size, -StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__VarD_PtrL_PVarR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.GlobalVar.Ptr, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, Offset, Pos);
mmpPStk: Result := _Eval__VarD_PtrL_PStkR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.GlobalVar.Ptr, Offset, Pos);
else e := True;
end;
mmpVar: case r of
mmpNone: Result := _Eval__VarD_VarL_PtrR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, nil, Offset, Pos);
mmpPtr: Result := _Eval__VarD_VarL_PtrR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarPos.GlobalVar.Ptr, Offset, Pos);
mmpVar: Result := _Eval__VarD_VarL_VarR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, Offset, Pos);
mmpStk: Result := _Eval__VarD_VarL_StkR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarType.Size, -StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__VarD_VarL_PVarR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, Offset, Pos);
mmpPStk: Result := _Eval__VarD_VarL_PStkR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Offset, Pos);
else e := True;
end;
mmpStk: case r of
mmpNone: Result := _Eval__VarD_StkL_PtrR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarType.Size, nil, -StackIncL, Offset, Pos);
mmpPtr: Result := _Eval__VarD_StkL_PtrR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarType.Size, Right.VarPos.GlobalVar.Ptr, -StackIncL, Offset, Pos);
mmpVar: Result := _Eval__VarD_StkL_VarR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarType.Size, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, -StackIncL, Offset, Pos);
mmpStk: Result := _Eval__VarD_StkL_StkR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarType.Size + Right.VarType.Size, Right.VarType.Size, -StackIncL - StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__VarD_StkL_PVarR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarType.Size, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, -StackIncL, Offset, Pos);
mmpPStk: Result := _Eval__VarD_StkL_PStkR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarType.Size, -StackIncL - StackIncR, Offset, Pos);
else e := True;
end;
mmpPVar: case r of
mmpNone: Result := _Eval__VarD_PVarL_PtrR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, nil, Offset, Pos);
mmpPtr: Result := _Eval__VarD_PVarL_PtrR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarPos.GlobalVar.Ptr, Offset, Pos);
mmpVar: Result := _Eval__VarD_PVarL_VarR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, Offset, Pos);
mmpStk: Result := _Eval__VarD_PVarL_StkR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarType.Size, -StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__VarD_PVarL_PVarR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, Offset, Pos);
mmpPStk: Result := _Eval__VarD_PVarL_PStkR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Offset, Pos);
else e := True;
end;
mmpPStk: case r of
mmpNone: Result := _Eval__VarD_PStkL_PtrR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, nil, Offset, Pos);
mmpPtr: Result := _Eval__VarD_PStkL_PtrR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Right.VarPos.GlobalVar.Ptr, Offset, Pos);
mmpVar: Result := _Eval__VarD_PStkL_VarR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, Offset, Pos);
mmpStk: Result := _Eval__VarD_PStkL_StkR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Left.VarType.Size + Right.VarType.Size, Right.VarType.Size, -StackIncL - StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__VarD_PStkL_PVarR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, Offset, Pos);
mmpPStk: Result := _Eval__VarD_PStkL_PStkR(AProc, Dest.VarPos.StackVar.Offset + Dest.VarPos.Offset, Offset, Pos);
else e := True;
end;
else e := True;
end;
mmpStk: case l of
mmpPtr: case r of
mmpNone: Result := _Eval__StkD_PtrL_PtrR(AProc, Left.VarPos.GlobalVar.Ptr, nil, StackIncD, Offset, Pos);
mmpPtr: Result := _Eval__StkD_PtrL_PtrR(AProc, Left.VarPos.GlobalVar.Ptr, Right.VarPos.GlobalVar.Ptr, StackIncD, Offset, Pos);
mmpVar: Result := _Eval__StkD_PtrL_VarR(AProc, Left.VarPos.GlobalVar.Ptr, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, StackIncD, Offset, Pos);
mmpStk: Result := _Eval__StkD_PtrL_StkR(AProc, Left.VarPos.GlobalVar.Ptr, Right.VarType.Size, StackIncD - StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__StkD_PtrL_PVarR(AProc, Left.VarPos.GlobalVar.Ptr, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, StackIncD, Offset, Pos);
mmpPStk: Result := _Eval__StkD_PtrL_PStkR(AProc, Left.VarPos.GlobalVar.Ptr, StackIncD - StackIncR, Offset, Pos);
else e := True;
end;
mmpVar: case r of
mmpNone: Result := _Eval__StkD_VarL_PtrR(AProc, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, nil, StackIncD, Offset, Pos);
mmpPtr: Result := _Eval__StkD_VarL_PtrR(AProc, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarPos.GlobalVar.Ptr, StackIncD, Offset, Pos);
mmpVar: Result := _Eval__StkD_VarL_VarR(AProc, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, StackIncD, Offset, Pos);
mmpStk: Result := _Eval__StkD_VarL_StkR(AProc, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarType.Size, StackIncD - StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__StkD_VarL_PVarR(AProc, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, StackIncD, Offset, Pos);
mmpPStk: Result := _Eval__StkD_VarL_PStkR(AProc, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, StackIncD - StackIncR, Offset, Pos);
else e := True;
end;
mmpStk: case r of
mmpNone: Result := _Eval__StkD_StkL_PtrR(AProc, Left.VarType.Size, nil, StackIncD - StackIncL, Offset, Pos);
mmpPtr: Result := _Eval__StkD_StkL_PtrR(AProc, Left.VarType.Size, Right.VarPos.GlobalVar.Ptr, StackIncD - StackIncL, Offset, Pos);
mmpVar: Result := _Eval__StkD_StkL_VarR(AProc, Left.VarType.Size, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, StackIncD - StackIncL, Offset, Pos);
mmpStk: Result := _Eval__StkD_StkL_StkR(AProc, Left.VarType.Size + Right.VarType.Size, Right.VarType.Size, StackIncD - StackIncL - StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__StkD_StkL_PVarR(AProc, Left.VarType.Size, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, StackIncD - StackIncL, Offset, Pos);
mmpPStk: Result := _Eval__StkD_StkL_PStkR(AProc, Left.VarType.Size, StackIncD - StackIncL - StackIncR, Offset, Pos);
else e := True;
end;
mmpPVar: case r of
mmpNone: Result := _Eval__StkD_PVarL_PtrR(AProc, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, nil, StackIncD, Offset, Pos);
mmpPtr: Result := _Eval__StkD_PVarL_PtrR(AProc, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarPos.GlobalVar.Ptr, StackIncD, Offset, Pos);
mmpVar: Result := _Eval__StkD_PVarL_VarR(AProc, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, StackIncD, Offset, Pos);
mmpStk: Result := _Eval__StkD_PVarL_StkR(AProc, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarType.Size, StackIncD - StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__StkD_PVarL_PVarR(AProc, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, StackIncD, Offset, Pos);
mmpPStk: Result := _Eval__StkD_PVarL_PStkR(AProc, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, StackIncD - StackIncR, Offset, Pos);
else e := True;
end;
mmpPStk: case r of
mmpNone: Result := _Eval__StkD_PStkL_PtrR(AProc, nil, StackIncD - StackIncL, Offset, Pos);
mmpPtr: Result := _Eval__StkD_PStkL_PtrR(AProc, Right.VarPos.GlobalVar.Ptr, StackIncD - StackIncL, Offset, Pos);
mmpVar: Result := _Eval__StkD_PStkL_VarR(AProc, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, StackIncD - StackIncL, Offset, Pos);
mmpStk: Result := _Eval__StkD_PStkL_StkR(AProc, Left.VarType.Size + Right.VarType.Size, Right.VarType.Size, StackIncD - StackIncL - StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__StkD_PStkL_PVarR(AProc, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, StackIncD - StackIncL, Offset, Pos);
mmpPStk: Result := _Eval__StkD_PStkL_PStkR(AProc, StackIncD - StackIncL - StackIncR, Offset, Pos);
else e := True;
end;
else e := True;
end;
mmpPVar: case l of
mmpPtr: case r of
mmpNone: Result := _Eval__PVarD_PtrL_PtrR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.GlobalVar.Ptr, nil, Offset, Pos);
mmpPtr: Result := _Eval__PVarD_PtrL_PtrR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.GlobalVar.Ptr, Right.VarPos.GlobalVar.Ptr, Offset, Pos);
mmpVar: Result := _Eval__PVarD_PtrL_VarR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.GlobalVar.Ptr, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, Offset, Pos);
mmpStk: Result := _Eval__PVarD_PtrL_StkR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.GlobalVar.Ptr, Right.VarType.Size, -StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__PVarD_PtrL_PVarR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.GlobalVar.Ptr, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, Offset, Pos);
mmpPStk: Result := _Eval__PVarD_PtrL_PStkR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.GlobalVar.Ptr, Offset, Pos);
else e := True;
end;
mmpVar: case r of
mmpNone: Result := _Eval__PVarD_VarL_PtrR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, nil, Offset, Pos);
mmpPtr: Result := _Eval__PVarD_VarL_PtrR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarPos.GlobalVar.Ptr, Offset, Pos);
mmpVar: Result := _Eval__PVarD_VarL_VarR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, Offset, Pos);
mmpStk: Result := _Eval__PVarD_VarL_StkR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarType.Size, -StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__PVarD_VarL_PVarR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, Offset, Pos);
mmpPStk: Result := _Eval__PVarD_VarL_PStkR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.StackVar.Offset + Left.VarPos.Offset, Offset, Pos);
else e := True;
end;
mmpStk: case r of
mmpNone: Result := _Eval__PVarD_StkL_PtrR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarType.Size, nil, -StackIncL, Offset, Pos);
mmpPtr: Result := _Eval__PVarD_StkL_PtrR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarType.Size, Right.VarPos.GlobalVar.Ptr, -StackIncL, Offset, Pos);
mmpVar: Result := _Eval__PVarD_StkL_VarR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarType.Size, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, -StackIncL, Offset, Pos);
mmpStk: Result := _Eval__PVarD_StkL_StkR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarType.Size + Right.VarType.Size, Right.VarType.Size, -StackIncL - StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__PVarD_StkL_PVarR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarType.Size, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, -StackIncL, Offset, Pos);
mmpPStk: Result := _Eval__PVarD_StkL_PStkR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarType.Size, -StackIncL - StackIncR, Offset, Pos);
else e := True;
end;
mmpPVar: case r of
mmpNone: Result := _Eval__PVarD_PVarL_PtrR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, nil, Offset, Pos);
mmpPtr: Result := _Eval__PVarD_PVarL_PtrR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarPos.GlobalVar.Ptr, Offset, Pos);
mmpVar: Result := _Eval__PVarD_PVarL_VarR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, Offset, Pos);
mmpStk: Result := _Eval__PVarD_PVarL_StkR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarType.Size, -StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__PVarD_PVarL_PVarR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, Offset, Pos);
mmpPStk: Result := _Eval__PVarD_PVarL_PStkR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarPos.StackVar.Offset, Left.VarPos.Offset, Offset, Pos);
else e := True;
end;
mmpPStk: case r of
mmpNone: Result := _Eval__PVarD_PStkL_PtrR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, nil, Offset, Pos);
mmpPtr: Result := _Eval__PVarD_PStkL_PtrR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Right.VarPos.GlobalVar.Ptr, Offset, Pos);
mmpVar: Result := _Eval__PVarD_PStkL_VarR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Right.VarPos.StackVar.Offset + Right.VarPos.Offset, Offset, Pos);
mmpStk: Result := _Eval__PVarD_PStkL_StkR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Left.VarType.Size + Right.VarType.Size, Right.VarType.Size, -StackIncL - StackIncR, Offset, Pos);
mmpPVar: Result := _Eval__PVarD_PStkL_PVarR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Right.VarPos.StackVar.Offset, Right.VarPos.Offset, Offset, Pos);
mmpPStk: Result := _Eval__PVarD_PStkL_PStkR(AProc, Dest.VarPos.StackVar.Offset, Dest.VarPos.Offset, Offset, Pos);
else e := True;
end;
else e := True;
end;
else e := True;
end;