|
|
@@ -383,6 +383,21 @@ void ir_emit_sym_to_stack(struct ir *ir, ssize_t offset, struct sym *src)
|
|
383
|
383
|
}
|
|
384
|
384
|
}
|
|
385
|
385
|
|
|
|
386
|
+void ir_emit_sym_to_sym(struct ir *ir, struct sym *dst, struct sym *src)
|
|
|
387
|
+{
|
|
|
388
|
+ switch (dst->irs.loc) {
|
|
|
389
|
+ case LOC_REG:
|
|
|
390
|
+ ir_emit_sym_to_reg(ir, dst->irs.reg, src);
|
|
|
391
|
+ break;
|
|
|
392
|
+ case LOC_STACK:
|
|
|
393
|
+ ir_emit_sym_to_stack(ir, dst->irs.stack, src);
|
|
|
394
|
+ break;
|
|
|
395
|
+ default:
|
|
|
396
|
+ assert(0);
|
|
|
397
|
+ break;
|
|
|
398
|
+ }
|
|
|
399
|
+}
|
|
|
400
|
+
|
|
386
|
401
|
void ir_emit_read_to_sym(struct ir *ir, struct sym *dst, uint16_t src)
|
|
387
|
402
|
{
|
|
388
|
403
|
struct irstate *irs = &dst->irs;
|
|
|
@@ -453,21 +468,6 @@ void ir_emit_bzero(struct ir *ir, ssize_t offset, size_t size)
|
|
453
|
468
|
assert(size == 0);
|
|
454
|
469
|
}
|
|
455
|
470
|
|
|
456
|
|
-void ir_emit_sym_to_sym(struct ir *ir, struct sym *dst, struct sym *src)
|
|
457
|
|
-{
|
|
458
|
|
- switch (dst->irs.loc) {
|
|
459
|
|
- case LOC_REG:
|
|
460
|
|
- ir_emit_sym_to_reg(ir, dst->irs.reg, src);
|
|
461
|
|
- break;
|
|
462
|
|
- case LOC_STACK:
|
|
463
|
|
- ir_emit_sym_to_stack(ir, dst->irs.stack, src);
|
|
464
|
|
- break;
|
|
465
|
|
- default:
|
|
466
|
|
- assert(0);
|
|
467
|
|
- break;
|
|
468
|
|
- }
|
|
469
|
|
-}
|
|
470
|
|
-
|
|
471
|
471
|
int16_t ir_alloc_label (struct ir *ir)
|
|
472
|
472
|
{
|
|
473
|
473
|
return ir->next_label--;
|