optimize aligned address arithmetic
This commit is contained in:
parent
85f99fe411
commit
085fba137f
|
@ -26,6 +26,18 @@ const char keyb_codes[128] = {
|
||||||
byte keyb_matrix[8], keyb_key;
|
byte keyb_matrix[8], keyb_key;
|
||||||
static byte keyb_pmatrix[8];
|
static byte keyb_pmatrix[8];
|
||||||
|
|
||||||
|
bool key_pressed(char code)
|
||||||
|
{
|
||||||
|
return !(keyb_matrix[code >> 3] & (1 << (code & 7)));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool key_shift(void)
|
||||||
|
{
|
||||||
|
return
|
||||||
|
!(keyb_matrix[6] & 0x10) ||
|
||||||
|
!(keyb_matrix[1] & 0x80);
|
||||||
|
}
|
||||||
|
|
||||||
void keyb_poll(void)
|
void keyb_poll(void)
|
||||||
{
|
{
|
||||||
cia1.ddra = 0xff;
|
cia1.ddra = 0xff;
|
||||||
|
@ -65,9 +77,8 @@ void keyb_poll(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
keyb_key |= ~(((keyb_matrix[6] << 3) & keyb_matrix[1]) >> 1) & 0x40;
|
if (keyb_key && (!(keyb_matrix[1] & 0x80) || (!(keyb_matrix[6] & 0x10))))
|
||||||
// if (keyb_key && (!(keyb_matrix[1] & 0x80) || (!(keyb_matrix[6] & 0x10))))
|
keyb_key |= 0x40;
|
||||||
// keyb_key |= 0x40;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,6 +23,11 @@
|
||||||
#define KEY_F6 (139)
|
#define KEY_F6 (139)
|
||||||
#define KEY_F8 (140)
|
#define KEY_F8 (140)
|
||||||
|
|
||||||
|
#define KEY_CODE_CSR_RIGHT (2)
|
||||||
|
#define KEY_CODE_CSR_DOWN (7)
|
||||||
|
#define KEY_CODE_LSHIFT (15)
|
||||||
|
#define KEY_CODE_RSHIFT (48)
|
||||||
|
|
||||||
// map of keyboard codes to PETSCII, first 64 without shift
|
// map of keyboard codes to PETSCII, first 64 without shift
|
||||||
// second 64 with shift
|
// second 64 with shift
|
||||||
|
|
||||||
|
@ -38,6 +43,10 @@ extern byte keyb_key;
|
||||||
|
|
||||||
void keyb_poll(void);
|
void keyb_poll(void);
|
||||||
|
|
||||||
|
inline bool key_pressed(char code);
|
||||||
|
|
||||||
|
inline bool key_shift(void);
|
||||||
|
|
||||||
#pragma compile("keyboard.c")
|
#pragma compile("keyboard.c")
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -10205,8 +10205,6 @@ bool NativeCodeBasicBlock::OptimizeSimpleLoopInvariant(NativeCodeProcedure* proc
|
||||||
|
|
||||||
bool NativeCodeBasicBlock::OptimizeSimpleLoopInvariant(NativeCodeProcedure* proc, NativeCodeBasicBlock* prevBlock, NativeCodeBasicBlock* exitBlock)
|
bool NativeCodeBasicBlock::OptimizeSimpleLoopInvariant(NativeCodeProcedure* proc, NativeCodeBasicBlock* prevBlock, NativeCodeBasicBlock* exitBlock)
|
||||||
{
|
{
|
||||||
return false;
|
|
||||||
|
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
|
|
||||||
int ai = 0;
|
int ai = 0;
|
||||||
|
@ -13485,7 +13483,18 @@ bool NativeCodeBasicBlock::PeepHoleOptimizer(int pass)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
#if 1
|
||||||
|
if (pass > 1 && mIns[i].mMode == ASMIM_IMMEDIATE_ADDRESS && mIns[i].mLinkerObject && (mIns[i].mFlags & NCIF_LOWER) && !(mIns[i].mAddress & 0xff) && !(mIns[i].mLinkerObject->mAlignment & 0xff))
|
||||||
|
{
|
||||||
|
mIns[i].mMode = ASMIM_IMMEDIATE;
|
||||||
|
mIns[i].mAddress = 0;
|
||||||
|
mIns[i].mLinkerObject = nullptr;
|
||||||
|
mIns[i].mFlags &= ~NCIF_LOWER;
|
||||||
|
progress = true;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (progress)
|
if (progress)
|
||||||
|
|
Loading…
Reference in New Issue