forked from AbleOS/ableos
fixing the useles register alloc when loading
This commit is contained in:
parent
25807c7281
commit
1c088e2839
|
@ -8,7 +8,7 @@ use {
|
||||||
parser::{self, find_symbol, idfl, CtorField, Expr, ExprRef, FileId, Pos},
|
parser::{self, find_symbol, idfl, CtorField, Expr, ExprRef, FileId, Pos},
|
||||||
HashMap,
|
HashMap,
|
||||||
},
|
},
|
||||||
std::{collections::BTreeMap, fmt::Display, ops::Range, rc::Rc, u32},
|
std::{collections::BTreeMap, fmt::Display, ops::Range, rc::Rc},
|
||||||
};
|
};
|
||||||
|
|
||||||
type Offset = u32;
|
type Offset = u32;
|
||||||
|
@ -2209,8 +2209,8 @@ impl Codegen {
|
||||||
},
|
},
|
||||||
left.loc,
|
left.loc,
|
||||||
)
|
)
|
||||||
} else if left.loc.is_ref() {
|
} else if left.loc.is_ref() && left.loc.is_reg() {
|
||||||
(self.loc_to_reg(&left.loc, lsize), dbg!(self.ci.regs.allocate()), left.loc)
|
(self.loc_to_reg(&left.loc, lsize), self.ci.regs.allocate(), left.loc)
|
||||||
} else {
|
} else {
|
||||||
let lhs = self.loc_to_reg(left.loc, lsize);
|
let lhs = self.loc_to_reg(left.loc, lsize);
|
||||||
(lhs.as_ref(), lhs, Loc::default())
|
(lhs.as_ref(), lhs, Loc::default())
|
||||||
|
|
|
@ -15,14 +15,12 @@ use {
|
||||||
core::fmt,
|
core::fmt,
|
||||||
std::{
|
std::{
|
||||||
cell::RefCell,
|
cell::RefCell,
|
||||||
cmp,
|
|
||||||
collections::{hash_map, BTreeMap},
|
collections::{hash_map, BTreeMap},
|
||||||
fmt::{Display, Write},
|
fmt::{Display, Write},
|
||||||
hash::{Hash as _, Hasher},
|
hash::{Hash as _, Hasher},
|
||||||
mem,
|
mem,
|
||||||
ops::{self, Range},
|
ops::{self, Range},
|
||||||
rc::Rc,
|
rc::Rc,
|
||||||
u32,
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -34,21 +34,21 @@ main:
|
||||||
JMP :1
|
JMP :1
|
||||||
2: CP r33, r0
|
2: CP r33, r0
|
||||||
LD r33, r254, 4a, 4h
|
LD r33, r254, 4a, 4h
|
||||||
CP r34, r0
|
CP r32, r0
|
||||||
LD r34, r254, 8a, 4h
|
LD r32, r254, 8a, 4h
|
||||||
ADD32 r32, r33, r34
|
ADD32 r33, r33, r32
|
||||||
CP r34, r0
|
CP r32, r0
|
||||||
LD r34, r254, 0a, 1h
|
LD r32, r254, 0a, 1h
|
||||||
ADD32 r32, r32, r34
|
ADD32 r33, r33, r32
|
||||||
CP r34, r0
|
CP r32, r0
|
||||||
LD r34, r254, 1a, 1h
|
LD r32, r254, 1a, 1h
|
||||||
ADD32 r32, r32, r34
|
ADD32 r33, r33, r32
|
||||||
CP r34, r0
|
CP r32, r0
|
||||||
LD r34, r254, 2a, 1h
|
LD r32, r254, 2a, 1h
|
||||||
ADD32 r32, r32, r34
|
ADD32 r33, r33, r32
|
||||||
CP r34, r0
|
CP r32, r0
|
||||||
LD r34, r254, 3a, 1h
|
LD r32, r254, 3a, 1h
|
||||||
ADD32 r1, r32, r34
|
ADD32 r1, r33, r32
|
||||||
1: LD r31, r254, 12a, 32h
|
1: LD r31, r254, 12a, 32h
|
||||||
ADDI64 r254, r254, 44d
|
ADDI64 r254, r254, 44d
|
||||||
JALA r0, r31, 0a
|
JALA r0, r31, 0a
|
||||||
|
|
|
@ -18,19 +18,19 @@ main:
|
||||||
ADDI64 r254, r254, 48d
|
ADDI64 r254, r254, 48d
|
||||||
JALA r0, r31, 0a
|
JALA r0, r31, 0a
|
||||||
deinit:
|
deinit:
|
||||||
ADDI64 r254, r254, -32d
|
ADDI64 r254, r254, -24d
|
||||||
ST r31, r254, 0a, 32h
|
ST r31, r254, 0a, 24h
|
||||||
CP r32, r2
|
CP r32, r2
|
||||||
LD r2, r32, 0a, 8h
|
LD r2, r32, 0a, 8h
|
||||||
LD r33, r32, 16a, 8h
|
LD r33, r32, 16a, 8h
|
||||||
MULI64 r34, r33, 8d
|
MULI64 r33, r33, 8d
|
||||||
CP r3, r34
|
CP r3, r33
|
||||||
LI64 r4, 8d
|
LI64 r4, 8d
|
||||||
JAL r31, r0, :free
|
JAL r31, r0, :free
|
||||||
CP r1, r32
|
CP r1, r32
|
||||||
JAL r31, r0, :new
|
JAL r31, r0, :new
|
||||||
LD r31, r254, 0a, 32h
|
LD r31, r254, 0a, 24h
|
||||||
ADDI64 r254, r254, 32d
|
ADDI64 r254, r254, 24d
|
||||||
JALA r0, r31, 0a
|
JALA r0, r31, 0a
|
||||||
free:
|
free:
|
||||||
ADDI64 r254, r254, -40d
|
ADDI64 r254, r254, -40d
|
||||||
|
@ -62,10 +62,10 @@ push:
|
||||||
ST r34, r32, 16a, 8h
|
ST r34, r32, 16a, 8h
|
||||||
JMP :2
|
JMP :2
|
||||||
1: LD r34, r32, 16a, 8h
|
1: LD r34, r32, 16a, 8h
|
||||||
MULI64 r35, r34, 2d
|
MULI64 r34, r34, 2d
|
||||||
ST r35, r32, 16a, 8h
|
ST r34, r32, 16a, 8h
|
||||||
2: LD r35, r32, 16a, 8h
|
2: LD r34, r32, 16a, 8h
|
||||||
MULI64 r34, r35, 8d
|
MULI64 r34, r34, 8d
|
||||||
CP r2, r34
|
CP r2, r34
|
||||||
LI64 r3, 8d
|
LI64 r3, 8d
|
||||||
JAL r31, r0, :malloc
|
JAL r31, r0, :malloc
|
||||||
|
@ -77,37 +77,37 @@ push:
|
||||||
3: LD r35, r32, 0a, 8h
|
3: LD r35, r32, 0a, 8h
|
||||||
CP r36, r34
|
CP r36, r34
|
||||||
LD r37, r32, 0a, 8h
|
LD r37, r32, 0a, 8h
|
||||||
LD r39, r32, 8a, 8h
|
LD r38, r32, 8a, 8h
|
||||||
MULI64 r39, r39, 8d
|
MULI64 r38, r38, 8d
|
||||||
ADD64 r38, r37, r39
|
ADD64 r37, r37, r38
|
||||||
7: JNE r35, r38, :5
|
7: JNE r35, r37, :5
|
||||||
JMP :6
|
JMP :6
|
||||||
5: CP r39, r36
|
5: CP r38, r36
|
||||||
CP r37, r35
|
CP r39, r35
|
||||||
BMC r37, r39, 8h
|
BMC r39, r38, 8h
|
||||||
ADDI64 r35, r35, 8d
|
ADDI64 r35, r35, 8d
|
||||||
ADDI64 r36, r36, 8d
|
ADDI64 r36, r36, 8d
|
||||||
JMP :7
|
JMP :7
|
||||||
6: LD r39, r32, 8a, 8h
|
6: LD r38, r32, 8a, 8h
|
||||||
LI64 r37, 0d
|
LI64 r39, 0d
|
||||||
JEQ r39, r37, :8
|
JEQ r38, r39, :8
|
||||||
LD r2, r32, 0a, 8h
|
LD r2, r32, 0a, 8h
|
||||||
LD r37, r32, 8a, 8h
|
LD r39, r32, 8a, 8h
|
||||||
MULI64 r39, r37, 8d
|
MULI64 r39, r39, 8d
|
||||||
CP r3, r39
|
CP r3, r39
|
||||||
LI64 r4, 8d
|
LI64 r4, 8d
|
||||||
JAL r31, r0, :free
|
JAL r31, r0, :free
|
||||||
8: ST r34, r32, 0a, 8h
|
8: ST r34, r32, 0a, 8h
|
||||||
0: LD r34, r32, 0a, 8h
|
0: LD r34, r32, 0a, 8h
|
||||||
LD r37, r32, 8a, 8h
|
LD r39, r32, 8a, 8h
|
||||||
MULI64 r37, r37, 8d
|
MULI64 r39, r39, 8d
|
||||||
ADD64 r39, r34, r37
|
ADD64 r34, r34, r39
|
||||||
CP r37, r39
|
CP r39, r34
|
||||||
ST r33, r37, 0a, 8h
|
ST r33, r39, 0a, 8h
|
||||||
LD r37, r32, 8a, 8h
|
LD r39, r32, 8a, 8h
|
||||||
ADDI64 r37, r37, 1d
|
ADDI64 r39, r39, 1d
|
||||||
ST r37, r32, 8a, 8h
|
ST r39, r32, 8a, 8h
|
||||||
CP r1, r39
|
CP r1, r34
|
||||||
4: LD r31, r254, 0a, 72h
|
4: LD r31, r254, 0a, 72h
|
||||||
ADDI64 r254, r254, 72d
|
ADDI64 r254, r254, 72d
|
||||||
JALA r0, r31, 0a
|
JALA r0, r31, 0a
|
||||||
|
|
|
@ -114,16 +114,16 @@ rect_line:
|
||||||
0: LD r34, r254, 8a, 8h
|
0: LD r34, r254, 8a, 8h
|
||||||
LD r35, r254, 0a, 8h
|
LD r35, r254, 0a, 8h
|
||||||
4: LD r36, r254, 8a, 8h
|
4: LD r36, r254, 8a, 8h
|
||||||
LD r38, r254, 16a, 8h
|
LD r37, r254, 16a, 8h
|
||||||
ADD64 r37, r36, r38
|
ADD64 r36, r36, r37
|
||||||
JNE r34, r37, :2
|
JNE r34, r36, :2
|
||||||
JMP :3
|
JMP :3
|
||||||
2: LI64 r37, 1d
|
2: LI64 r36, 1d
|
||||||
LI64 r38, 10d
|
LI64 r37, 10d
|
||||||
ADD64 r37, r37, r38
|
ADD64 r36, r36, r37
|
||||||
LI64 r38, 1d
|
LI64 r37, 1d
|
||||||
LI64 r36, 2d
|
LI64 r38, 2d
|
||||||
ADD64 r37, r38, r36
|
ADD64 r36, r37, r38
|
||||||
ADDI64 r34, r34, 1d
|
ADDI64 r34, r34, 1d
|
||||||
JMP :4
|
JMP :4
|
||||||
3: ADDI64 r33, r33, 1d
|
3: ADDI64 r33, r33, 1d
|
||||||
|
|
Loading…
Reference in a new issue