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 ## 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 ### Language

View File

@ -7923,6 +7923,39 @@ bool NativeCodeBasicBlock::MoveStoreXUp(int at)
return done; 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) bool NativeCodeBasicBlock::MoveLoadStoreUp(int at)
{ {
int j = at; int j = at;
@ -8943,6 +8976,21 @@ bool NativeCodeBasicBlock::PeepHoleOptimizer(void)
} }
} }
#endif #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; bool progress = false;
do { do {

View File

@ -178,6 +178,7 @@ public:
bool FindGlobalAddress(int at, int reg, int& apos); 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 FindGlobalAddressSumY(int at, int reg, bool direct, int& apos, const NativeCodeInstruction * & ains, const NativeCodeInstruction*& iins, uint32 & flags);
bool MoveStoreXUp(int at); bool MoveStoreXUp(int at);
bool MoveStoreHighByteDown(int at);
bool ValueForwarding(const NativeRegisterDataSet& data); 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)); DWORD length = ::GetModuleFileNameA(NULL, basePath, sizeof(basePath));
#else #else
printf("Starting oscar64 1.1.43\n"); printf("Starting oscar64 1.1.44\n");
#ifdef __APPLE__ #ifdef __APPLE__
uint32_t length = sizeof(basePath); uint32_t length = sizeof(basePath);

View File

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

View File

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