Use ephemeral variable for literal operands
This commit is contained in:
parent
9ceac9ae5a
commit
bc55eadb82
12
dsim.c
12
dsim.c
|
@ -14,6 +14,8 @@
|
||||||
uint16_t ram[0x10000];
|
uint16_t ram[0x10000];
|
||||||
uint16_t ra, rb, rc, rx, ry, rz, ri, rj;
|
uint16_t ra, rb, rc, rx, ry, rz, ri, rj;
|
||||||
uint16_t rpc, rsp, rex, ria;
|
uint16_t rpc, rsp, rex, ria;
|
||||||
|
uint16_t lit; /* temporary storage for literal operands */
|
||||||
|
|
||||||
bool skip_next;
|
bool skip_next;
|
||||||
uint64_t ticks;
|
uint64_t ticks;
|
||||||
bool running;
|
bool running;
|
||||||
|
@ -109,13 +111,6 @@ struct dev_entry iodevs[] = {
|
||||||
{ 0x6d53647c, 0x62e037d3, 0x00000000, debug_irqh, NULL, NULL, NULL }, /* Debug device */
|
{ 0x6d53647c, 0x62e037d3, 0x00000000, debug_irqh, NULL, NULL, NULL }, /* Debug device */
|
||||||
};
|
};
|
||||||
|
|
||||||
uint16_t lit[] = {
|
|
||||||
0xffff, 0, 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
|
|
||||||
};
|
|
||||||
|
|
||||||
uint16_t *val(int operand, bool is_a)
|
uint16_t *val(int operand, bool is_a)
|
||||||
{
|
{
|
||||||
switch (operand) {
|
switch (operand) {
|
||||||
|
@ -195,7 +190,8 @@ uint16_t *val(int operand, bool is_a)
|
||||||
ticks++;
|
ticks++;
|
||||||
return &ram[rpc++]; /* FIXME: write to literal */
|
return &ram[rpc++]; /* FIXME: write to literal */
|
||||||
default:
|
default:
|
||||||
return &lit[operand-0x20];
|
lit = operand - 0x21;
|
||||||
|
return &lit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue