Actions
Bug #10004
closedjava.lang.IllegalStateException: Boolean data is not convertible to BitVector (Не ясно где тут BitVector)
Start date:
12/23/2019
Due date:
% Done:
0%
Estimated time:
Detected in build:
svn
Platform:
Published in build:
2.5.0-beta-191226
Description
Код с ошибкой:
--> if coerce(card(3), ArchitectureRevision) >= coerce(card(3), 0x2) && C0_SRSCTL_HSS > coerce(card(4), 0x0) && C0_STATUS_BEV == coerce(BIT, 0x0) then C0_SRSCTL_CSS = C0_SRSCTL_PSS; endif;
... TRANSLATE: nML -> MIR: ei.decode TRANSLATE: nML -> MIR: ei2.action TRANSLATE: nML -> MIR: ei2.init TRANSLATE: nML -> MIR: ei2.decode TRANSLATE: nML -> MIR: eret.action ******************************************************************************** ATTENTION! An unexpected error has occurred: java.lang.IllegalStateException: Boolean data is not convertible to BitVector. The program will be terminated. Please contact us at: microtesk-support@ispras.ru We are sorry for the inconvenience. Exception stack: java.lang.IllegalStateException: Boolean data is not convertible to BitVector. at ru.ispras.fortress.data.Data.checkConvertibleTo(Data.java:528) at ru.ispras.fortress.data.Data.getBitVector(Data.java:417) at ru.ispras.fortress.expression.NodeValue.getBitVector(NodeValue.java:324) at ru.ispras.microtesk.translator.mir.NmlIrTrans.newConstant(NmlIrTrans.java:324) at ru.ispras.microtesk.translator.mir.NmlIrTrans.access$300(NmlIrTrans.java:43) at ru.ispras.microtesk.translator.mir.NmlIrTrans$TransRvalue.lookUp(NmlIrTrans.java:499) at ru.ispras.microtesk.translator.mir.NmlIrTrans$TransRvalue.translateMapping(NmlIrTrans.java:420) at ru.ispras.microtesk.translator.mir.NmlIrTrans$TransRvalue.onOperationEnd(NmlIrTrans.java:357) at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:173) at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123) at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:160) at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123) at ru.ispras.fortress.expression.ExprTreeWalker.visit(ExprTreeWalker.java:93) at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:307) at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:793) at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:178) at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:800) at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:178) at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:95) at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:52) at ru.ispras.microtesk.translator.mir.MirTransHandler.processIr(MirTransHandler.java:49) at ru.ispras.microtesk.translator.mir.MirTransHandler.processIr(MirTransHandler.java:30) at ru.ispras.microtesk.translator.Translator.processIr(Translator.java:84) at ru.ispras.microtesk.translator.nml.NmlTranslator.start(NmlTranslator.java:133) at ru.ispras.microtesk.translator.Translator.translate(Translator.java:201) at ru.ispras.microtesk.MicroTESK.translate(MicroTESK.java:168) at ru.ispras.microtesk.MicroTESK.runTask(MicroTESK.java:141) at ru.ispras.microtesk.MicroTESK.main(MicroTESK.java:79) ******************************************************************************** :translateMips64 FAILED
Заменен на вариант:
if coerce(card(3), ArchitectureRevision) >= coerce(card(3), 0x2) then if C0_SRSCTL_HSS > coerce(card(4), 0x0) then if C0_STATUS_BEV == coerce(BIT, 0x0) then C0_SRSCTL_CSS = C0_SRSCTL_PSS; endif; endif; endif;
Так же исправлено в операции MIPS: rotr, rotrv
Actions