[Avida-SVN] r2178 - branches/dkdev/source/cpu
dknoester at myxo.css.msu.edu
dknoester at myxo.css.msu.edu
Sat Nov 3 06:21:46 PDT 2007
Author: dknoester
Date: 2007-11-03 09:21:46 -0400 (Sat, 03 Nov 2007)
New Revision: 2178
Modified:
branches/dkdev/source/cpu/cHardwareCPU.cc
branches/dkdev/source/cpu/cHardwareCPU.h
Log:
Added if->=.endif/else variant.
Modified: branches/dkdev/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/dkdev/source/cpu/cHardwareCPU.cc 2007-11-03 13:11:34 UTC (rev 2177)
+++ branches/dkdev/source/cpu/cHardwareCPU.cc 2007-11-03 13:21:46 UTC (rev 2178)
@@ -392,6 +392,7 @@
cInstEntryCPU("sorted?", &cHardwareCPU::Inst_Sorted),
cInstEntryCPU("if-less.end", &cHardwareCPU::Inst_IfLessEnd),
cInstEntryCPU("if-n-equ.end", &cHardwareCPU::Inst_IfNotEqualEnd),
+ cInstEntryCPU("if->=.end", &cHardwareCPU::Inst_IfGrtEquEnd),
// cInstEntryCPU("if-less.else", &cHardwareCPU::Inst_IfLessElse),
cInstEntryCPU("else", &cHardwareCPU::Inst_Else),
cInstEntryCPU("end-if", &cHardwareCPU::Inst_EndIf),
@@ -3975,6 +3976,14 @@
}
+bool cHardwareCPU::Inst_IfGrtEquEnd(cAvidaContext& ctx) {
+ const int x = FindModifiedRegister(REG_BX);
+ const int y = FindNextRegister(x);
+
+ if(GetRegister(x) < GetRegister(y)) { Else_TopHalf(); }
+ return true;
+}
+
void cHardwareCPU::Else_TopHalf() {
cHeadCPU else_head = Find("else");
cHeadCPU endif_head = Find("endif");
Modified: branches/dkdev/source/cpu/cHardwareCPU.h
===================================================================
--- branches/dkdev/source/cpu/cHardwareCPU.h 2007-11-03 13:11:34 UTC (rev 2177)
+++ branches/dkdev/source/cpu/cHardwareCPU.h 2007-11-03 13:21:46 UTC (rev 2178)
@@ -514,6 +514,7 @@
void Else_TopHalf();
bool Inst_IfLessEnd(cAvidaContext& ctx);
bool Inst_IfNotEqualEnd(cAvidaContext& ctx);
+ bool Inst_IfGrtEquEnd(cAvidaContext& ctx);
bool Inst_Else(cAvidaContext& ctx);
bool Inst_EndIf(cAvidaContext& ctx);
};
More information about the Avida-cvs
mailing list