Rev 7597 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7597 | Rev 7693 | ||
---|---|---|---|
Line 5... | Line 5... | ||
5 | All rights reserved. |
5 | All rights reserved. |
6 | *) |
6 | *) |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | MODULE BIN; |
8 | MODULE BIN; |
Line 9... | Line 9... | ||
9 | 9 | ||
Line 10... | Line 10... | ||
10 | IMPORT LISTS, MACHINE, CHL := CHUNKLISTS, ARITH, UTILS; |
10 | IMPORT LISTS, CHL := CHUNKLISTS, ARITH, UTILS; |
Line 136... | Line 136... | ||
136 | FOR i := 3 TO 0 BY -1 DO |
136 | FOR i := 3 TO 0 BY -1 DO |
137 | x := LSL(x, 8) + CHL.GetByte(array, idx + i) |
137 | x := LSL(x, 8) + CHL.GetByte(array, idx + i) |
138 | END; |
138 | END; |
Line 139... | Line 139... | ||
139 | 139 | ||
- | 140 | IF UTILS.bit_depth = 64 THEN |
|
- | 141 | x := LSL(x, 16); |
|
- | 142 | x := LSL(x, 16); |
|
140 | IF UTILS.bit_depth = 64 THEN |
143 | x := ASR(x, 16); |
141 | x := MACHINE.Int32To64(x) |
144 | x := ASR(x, 16) |
Line 142... | Line 145... | ||
142 | END |
145 | END |
143 | 146 | ||
Line 149... | Line 152... | ||
149 | VAR |
152 | VAR |
150 | i: INTEGER; |
153 | i: INTEGER; |
Line 151... | Line 154... | ||
151 | 154 | ||
152 | BEGIN |
155 | BEGIN |
153 | FOR i := 0 TO 3 DO |
156 | FOR i := 0 TO 3 DO |
154 | CHL.SetByte(array, idx + i, MACHINE.Byte(x, i)) |
157 | CHL.SetByte(array, idx + i, UTILS.Byte(x, i)) |
155 | END |
158 | END |
Line 156... | Line 159... | ||
156 | END put32le; |
159 | END put32le; |
157 | 160 | ||
158 | 161 | ||
Line 159... | Line 162... | ||
159 | PROCEDURE PutData32LE* (program: PROGRAM; x: INTEGER); |
162 | PROCEDURE PutData32LE* (program: PROGRAM; x: INTEGER); |
160 | VAR |
163 | VAR |
161 | i: INTEGER; |
164 | i: INTEGER; |
162 | 165 | ||
163 | BEGIN |
166 | BEGIN |
Line 164... | Line 167... | ||
164 | FOR i := 0 TO 3 DO |
167 | FOR i := 0 TO 3 DO |
165 | CHL.PushByte(program.data, MACHINE.Byte(x, i)) |
168 | CHL.PushByte(program.data, UTILS.Byte(x, i)) |
166 | END |
169 | END |
Line 167... | Line 170... | ||
167 | END PutData32LE; |
170 | END PutData32LE; |
168 | 171 | ||
169 | 172 | ||
170 | PROCEDURE PutData64LE* (program: PROGRAM; x: INTEGER); |
173 | PROCEDURE PutData64LE* (program: PROGRAM; x: INTEGER); |
171 | VAR |
174 | VAR |
Line 172... | Line 175... | ||
172 | i: INTEGER; |
175 | i: INTEGER; |
Line 201... | Line 204... | ||
201 | VAR |
204 | VAR |
202 | i: INTEGER; |
205 | i: INTEGER; |
Line 203... | Line 206... | ||
203 | 206 | ||
204 | BEGIN |
207 | BEGIN |
205 | FOR i := 0 TO 3 DO |
208 | FOR i := 0 TO 3 DO |
206 | CHL.PushByte(program.code, MACHINE.Byte(x, i)) |
209 | CHL.PushByte(program.code, UTILS.Byte(x, i)) |
207 | END |
210 | END |
Line 208... | Line 211... | ||
208 | END PutCode32LE; |
211 | END PutCode32LE; |
Line 215... | Line 218... | ||
215 | 218 | ||
216 | 219 | ||
217 | PROCEDURE Import* (program: PROGRAM; name: ARRAY OF CHAR; label: INTEGER); |
220 | PROCEDURE Import* (program: PROGRAM; name: ARRAY OF CHAR; label: INTEGER); |
218 | VAR |
- | |
Line 219... | Line 221... | ||
219 | imp: IMPRT; |
221 | VAR |
220 | i: INTEGER; |
222 | imp: IMPRT; |
221 | 223 | ||
Line 222... | Line 224... | ||
222 | BEGIN |
224 | BEGIN |
223 | CHL.PushByte(program.import, 0); |
225 | CHL.PushByte(program.import, 0); |
224 | CHL.PushByte(program.import, 0); |
226 | CHL.PushByte(program.import, 0); |
Line 225... | Line 227... | ||
225 | 227 | ||
226 | IF ODD(CHL.Length(program.import)) THEN |
228 | IF ODD(CHL.Length(program.import)) THEN |
227 | CHL.PushByte(program.import, 0) |
229 | CHL.PushByte(program.import, 0) |
228 | END; |
230 | END; |
229 | - | ||
230 | NEW(imp); |
- | |
231 | imp.nameoffs := CHL.Length(program.import); |
- | |
232 | imp.label := label; |
- | |
233 | LISTS.push(program.imp_list, imp); |
- | |
234 | - | ||
235 | i := 0; |
- | |
236 | WHILE name[i] # 0X DO |
231 | |
Line 237... | Line 232... | ||
237 | CHL.PushByte(program.import, ORD(name[i])); |
232 | NEW(imp); |
238 | INC(i) |
233 | imp.nameoffs := CHL.PushStr(program.import, name); |
Line 260... | Line 255... | ||
260 | 255 | ||
261 | 256 | ||
262 | PROCEDURE Export* (program: PROGRAM; name: ARRAY OF CHAR; label: INTEGER); |
257 | PROCEDURE Export* (program: PROGRAM; name: ARRAY OF CHAR; label: INTEGER); |
263 | VAR |
- | |
Line 264... | Line 258... | ||
264 | exp, cur: EXPRT; |
258 | VAR |
265 | i: INTEGER; |
259 | exp, cur: EXPRT; |
266 | - | ||
267 | BEGIN |
260 | |
268 | NEW(exp); |
- | |
269 | exp.nameoffs := CHL.Length(program.export); |
- | |
270 | exp.label := CHL.GetInt(program.labels, label); |
- | |
271 | 261 | BEGIN |
|
272 | i := 0; |
- | |
273 | WHILE name[i] # 0X DO |
- | |
274 | CHL.PushByte(program.export, ORD(name[i])); |
- | |
Line 275... | Line 262... | ||
275 | INC(i) |
262 | NEW(exp); |
276 | END; |
263 | exp.label := CHL.GetInt(program.labels, label); |
277 | CHL.PushByte(program.export, 0); |
264 | exp.nameoffs := CHL.PushStr(program.export, name); |
278 | 265 | ||
Line 387... | Line 374... | ||
387 | 374 | ||
388 | FOR i := 0 TO k - 1 DO |
375 | FOR i := 0 TO k - 1 DO |
389 | array[i + idx] := hexdgt(hex[2 * i]) * 16 + hexdgt(hex[2 * i + 1]) |
376 | array[i + idx] := hexdgt(hex[2 * i]) * 16 + hexdgt(hex[2 * i + 1]) |
Line 390... | Line 377... | ||
390 | END; |
377 | END; |
391 | 378 | ||
Line 392... | Line 379... | ||
392 | idx := idx + k |
379 | INC(idx, k) |
393 | END InitArray; |
380 | END InitArray; |