Bump version to 1.1.44

This commit is contained in:
drmortalwombat 2021-10-31 20:39:28 +01:00
parent a52c869099
commit 214ebd93f2
6 changed files with 110 additions and 9 deletions

View File

@ -23,7 +23,7 @@ The goal is to implement the actual C standard and not some subset for performan
## Limits and Errors
There are still several open areas, but most targets have been reached. The current Dhrystone performance is 35 iterations per second with byte code (12259) and 203 iterations with native code (13572 Bytes).
There are still several open areas, but most targets have been reached. The current Dhrystone performance is 48 iterations per second with byte code (12275) and 245 iterations with native code (12688 Bytes).
### Language

View File

@ -7923,6 +7923,39 @@ bool NativeCodeBasicBlock::MoveStoreXUp(int at)
return done;
}
bool NativeCodeBasicBlock::MoveStoreHighByteDown(int at)
{
int i = at + 4;
while (i + 1 < mIns.Size())
{
if (mIns[i].mLive & LIVE_CPU_REG_Y)
return false;
if (mIns[i].ChangesZeroPage(mIns[at + 2].mAddress) || mIns[i].ChangesZeroPage(mIns[at + 2].mAddress + 1) || mIns[i].ChangesZeroPage(mIns[at + 3].mAddress))
return false;
if (mIns[i].UsesZeroPage(mIns[at + 3].mAddress))
return false;
if (mIns[i].ChangesGlobalMemory())
return false;
if (!(mIns[i].mLive & (LIVE_CPU_REG_A | LIVE_CPU_REG_Z)))
{
mIns.Insert(i + 1, mIns[at + 3]);
mIns.Insert(i + 1, mIns[at + 2]);
mIns.Insert(i + 1, mIns[at + 1]);
mIns[at + 1].mType = ASMIT_NOP; mIns[at + 1].mMode = ASMIM_IMPLIED; // LDY
mIns[at + 2].mType = ASMIT_NOP; mIns[at + 2].mMode = ASMIM_IMPLIED; // LDA (x), y
mIns[at + 3].mType = ASMIT_NOP; mIns[at + 3].mMode = ASMIM_IMPLIED; // STA T
return true;
}
i++;
}
return false;
}
bool NativeCodeBasicBlock::MoveLoadStoreUp(int at)
{
int j = at;
@ -8943,6 +8976,21 @@ bool NativeCodeBasicBlock::PeepHoleOptimizer(void)
}
}
#endif
// move high byte load down, if low byte is immediatedly needed afterwards
for (int i = 0; i + 4 < mIns.Size(); i++)
{
if (mIns[i + 0].mType == ASMIT_STA && mIns[i + 0].mMode == ASMIM_ZERO_PAGE &&
mIns[i + 1].mType == ASMIT_LDY && mIns[i + 1].mMode == ASMIM_IMMEDIATE &&
mIns[i + 2].mType == ASMIT_LDA && mIns[i + 2].mMode == ASMIM_INDIRECT_Y && mIns[i + 2].mAddress != mIns[i + 3].mAddress && mIns[i + 2].mAddress + 1 != mIns[i + 3].mAddress &&
mIns[i + 3].mType == ASMIT_STA && mIns[i + 3].mMode == ASMIM_ZERO_PAGE && mIns[i + 3].mAddress != mIns[i + 0].mAddress &&
mIns[i + 4].mType == ASMIT_LDA && mIns[i + 4].mMode == ASMIM_ZERO_PAGE && mIns[i + 4].mAddress == mIns[i + 0].mAddress && !(mIns[i + 4].mLive & LIVE_CPU_REG_Z))
{
if (MoveStoreHighByteDown(i))
changed = true;
}
}
bool progress = false;
do {

View File

@ -178,6 +178,7 @@ public:
bool FindGlobalAddress(int at, int reg, int& apos);
bool FindGlobalAddressSumY(int at, int reg, bool direct, int& apos, const NativeCodeInstruction * & ains, const NativeCodeInstruction*& iins, uint32 & flags);
bool MoveStoreXUp(int at);
bool MoveStoreHighByteDown(int at);
bool ValueForwarding(const NativeRegisterDataSet& data);

View File

@ -75,7 +75,7 @@ int main(int argc, const char** argv)
DWORD length = ::GetModuleFileNameA(NULL, basePath, sizeof(basePath));
#else
printf("Starting oscar64 1.1.43\n");
printf("Starting oscar64 1.1.44\n");
#ifdef __APPLE__
uint32_t length = sizeof(basePath);

View File

@ -25,8 +25,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,1,43,0
PRODUCTVERSION 1,1,43,0
FILEVERSION 1,1,44,0
PRODUCTVERSION 1,1,44,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -43,12 +43,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "oscar64"
VALUE "FileDescription", "oscar64 compiler"
VALUE "FileVersion", "1.1.43.0"
VALUE "FileVersion", "1.1.44.0"
VALUE "InternalName", "oscar64.exe"
VALUE "LegalCopyright", "Copyright (C) 2021"
VALUE "OriginalFilename", "oscar64.exe"
VALUE "ProductName", "oscar64"
VALUE "ProductVersion", "1.1.43.0"
VALUE "ProductVersion", "1.1.44.0"
END
END
BLOCK "VarFileInfo"

View File

@ -46,6 +46,12 @@
}
"Entry"
{
"MsmKey" = "8:_343F58F80DF84D40AE23457288C5D7D5"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_3AFDC86156F04AABB8D82218C17005F2"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@ -112,6 +118,12 @@
}
"Entry"
{
"MsmKey" = "8:_A32AAE4931564357A3222F04C8D99C2F"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
}
"Entry"
{
"MsmKey" = "8:_A566398810C1458E8E063A81FA88D46F"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@ -381,6 +393,26 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_343F58F80DF84D40AE23457288C5D7D5"
{
"SourcePath" = "8:..\\include\\c64\\keyboard.c"
"TargetName" = "8:keyboard.c"
"Tag" = "8:"
"Folder" = "8:_247D4CAD3CB843B3A8A4DC2D90F47C28"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3AFDC86156F04AABB8D82218C17005F2"
{
"SourcePath" = "8:..\\include\\c64\\vic.h"
@ -601,6 +633,26 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A32AAE4931564357A3222F04C8D99C2F"
{
"SourcePath" = "8:..\\include\\c64\\keyboard.h"
"TargetName" = "8:keyboard.h"
"Tag" = "8:"
"Folder" = "8:_247D4CAD3CB843B3A8A4DC2D90F47C28"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A566398810C1458E8E063A81FA88D46F"
{
"SourcePath" = "8:..\\include\\stddef.h"
@ -950,15 +1002,15 @@
{
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:oscar64"
"ProductCode" = "8:{9CDBFF70-1B69-46D4-AF9A-421A9A0A39A3}"
"PackageCode" = "8:{5E5D8444-E4D7-49D3-B597-D5F498EC44BE}"
"ProductCode" = "8:{25890560-0659-4815-9695-967059797606}"
"PackageCode" = "8:{277046A3-B4FB-4443-B541-4CA3F0FC51B8}"
"UpgradeCode" = "8:{9AB61EFF-ACAC-4079-9950-8D96615CD4EF}"
"AspNetVersion" = "8:2.0.50727.0"
"RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE"
"InstallAllUsers" = "11:FALSE"
"ProductVersion" = "8:1.1.43"
"ProductVersion" = "8:1.1.44"
"Manufacturer" = "8:oscar64"
"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:"