Actions
Bug #10011
openНеобходима возможность преобразования конструкции if-then-else в mir представление
Start date:
12/24/2019
Due date:
% Done:
0%
Estimated time:
Detected in build:
svn
Platform:
Published in build:
Description
Пример:
inline calls PASS: inline 'general_rev_op_32.action' PASS: inline call 'REG_32.read' PASS: inline call 'general_rev.action' ******************************************************************************** ATTENTION! An unexpected error has occurred: java.lang.IllegalArgumentException: Bit vector sizes do not match: 1 != 6. The program will be terminated. Please contact us at: microtesk-support@ispras.ru We are sorry for the inconvenience. Exception stack: java.lang.IllegalArgumentException: Bit vector sizes do not match: 1 != 6. at ru.ispras.fortress.data.types.bitvector.BitVectorMath.checkEqualSize(BitVectorMath.java:926) at ru.ispras.fortress.data.types.bitvector.BitVectorMath.transform(BitVectorMath.java:902) at ru.ispras.fortress.data.types.bitvector.BitVectorMath.add(BitVectorMath.java:682) at ru.ispras.microtesk.translator.mir.BvOpcode$1.evalBitVector(Instruction.java:412) at ru.ispras.microtesk.translator.mir.BvOpcode.evalConst(Instruction.java:512) at ru.ispras.microtesk.translator.mir.EvalContext.visit(EvalContext.java:74) at ru.ispras.microtesk.translator.mir.Instruction$Assignment.accept(Instruction.java:30) at ru.ispras.microtesk.translator.mir.EvalContext.eval(EvalContext.java:59) at ru.ispras.microtesk.translator.mir.InlinePass.apply(InlinePass.java:28) at ru.ispras.microtesk.translator.mir.MirPassDriver.apply(MirPassDriver.java:46) at ru.ispras.microtesk.translator.mir.MirPassDriver.run(MirPassDriver.java:56) at ru.ispras.microtesk.translator.mir.MirTransHandler.processIr(MirTransHandler.java:72) 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)
var V_var[card(6)] internal op general_rev (x: DWORD, rev_op: card(2), size: BIT) action = { if rev_op == RevOp_REV16 then V_var = 0b001000; elif rev_op == RevOp_REV32 then V_var = 0b011000; elif rev_op == RevOp_REV64 then V_var = 0b111000; elif rev_op == RevOp_RBIT then ---> V_var = if size == 0 then coerce(card(6), 0b111111) else coerce(card(6), 0b011111) endif; endif;
Actions