Project

General

Profile

Bug #10653

MicroTESK mode: IsaPrimitive cannot be converted

Added by Alexander Protsenko 11 months ago. Updated 11 months ago.

Status:
New
Priority:
Normal
Category:
nML Translator
Target version:
Start date:
12/28/2020
Due date:
% Done:

0%

Estimated time:
Detected in build:
git
Platform:
Published in build:

Description

Пример кода:

reg RRR [256, LONG]

mode V4 (i: card(4)) = RRR[i]
  syntax = format("v%s", i)
  image  = format("%4s", i)

mode V8 (i: card(8)) = RRR[i]
  syntax = format("v%s", i)
  image  = format("%8s", i)

mode VX = V8
        | V4

let MOV_OPCODE = 0x1

internal op mov_bug (opcode: card(8), vd: VX, vs: VX)
  syntax = format("mov %s, %s", vd.syntax, vs.syntax)
  image  = format("%8s%s%s", opcode, vd.image, vs.image)
  action = {
    vd = vs;
  }

op mov_bug_v4 (vd: V4, vs: V4)
  syntax = format("%s", mov_bug(MOV_OPCODE, vd, vs).syntax)
  image  = format("%s", mov_bug(MOV_OPCODE, vd, vs).image)
  action = {
    mov_bug(MOV_OPCODE, vd, vs).action;
  }

Ошибка:

MicroTESK\microtesk-mips64\build\generated-src\models\src\java\ru\ispras\microtesk\model\mips64\decoder\DecoderMov_bug_v4.java:69: error: incompatible types: IsaPrimitive cannot be converted to V4
    vd = mov_bug_instance.vd;
                         ^
MicroTESK\microtesk-mips64\build\generated-src\models\src\java\ru\ispras\microtesk\model\mips64\decoder\DecoderMov_bug_v4.java:70: error: incompatible types: IsaPrimitive cannot be converted to V4
    vs = mov_bug_instance.vs;
                         ^
2 errors

FAILURE: Build failed with an exception.

#1

Updated by Alexander Kamkin 11 months ago

image = format("%s", mov_bug(MOV_OPCODE, vd, vs).image) -> image = mov_bug(MOV_OPCODE, vd, vs).image

#2

Updated by Alexander Protsenko 11 months ago

op mov_bug_v4 (vd: V4, vs: V4)
  syntax = format("%s", mov_bug(MOV_OPCODE, vd, vs).syntax)
  image  = mov_bug(MOV_OPCODE, vd, vs).image
  action = {
    mov_bug(MOV_OPCODE, vd, vs).action;
  }
mips64_mmu.nml 54:18 ERROR (PARSER): "MicroTESK\microtesk-mips64\build\target\arch\mips64\model\mips64_mmu.nml line 54:18 mismatched input '(' expecting DOT" 
mips64_mmu.nml 54:29 ERROR (PARSER): "MicroTESK\microtesk-mips64\build\target\arch\mips64\model\mips64_mmu.nml line 54:29 mismatched input ',' expecting ASSIGN" 
********************************************************************************
ATTENTION! An unexpected error has occurred:
org.antlr.runtime.tree.RewriteEmptyStreamException: rule attrDef

The program will be terminated. Please contact us at: 
microtesk-support@ispras.ru
We are sorry for the inconvenience.

Exception stack:

org.antlr.runtime.tree.RewriteEmptyStreamException: rule attrDef
    at org.antlr.runtime.tree.RewriteRuleElementStream._next(RewriteRuleElementStream.java:158)
    at org.antlr.runtime.tree.RewriteRuleElementStream.nextTree(RewriteRuleElementStream.java:145)
    at ru.ispras.microtesk.translator.nml.grammar.NmlParser.attrDefRev(NmlParser.java:3149)
    at ru.ispras.microtesk.translator.nml.grammar.NmlParser.attrDefList(NmlParser.java:3028)
    at ru.ispras.microtesk.translator.nml.grammar.NmlParser.opDef(NmlParser.java:2098)
    at ru.ispras.microtesk.translator.nml.grammar.NmlParser.procSpec(NmlParser.java:591)
    at ru.ispras.microtesk.translator.nml.grammar.NmlParser.procSpecRev(NmlParser.java:388)
    at ru.ispras.microtesk.translator.nml.grammar.NmlParser.startRule(NmlParser.java:283)
    at ru.ispras.microtesk.translator.nml.NmlTranslator.startParserAndWalker(NmlTranslator.java:156)
    at ru.ispras.microtesk.translator.nml.NmlTranslator.start(NmlTranslator.java:126)
    at ru.ispras.microtesk.translator.Translator.translate(Translator.java:201)
    at ru.ispras.microtesk.MicroTESK.translate(MicroTESK.java:150)
    at ru.ispras.microtesk.MicroTESK.runTask(MicroTESK.java:142)
    at ru.ispras.microtesk.MicroTESK.main(MicroTESK.java:80)

********************************************************************************

Also available in: Atom PDF