Project

General

Profile

Task #5383

[minimips][model] Specification of the miniMIPS ISA

Added by Alexander Kamkin almost 6 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
-
Target version:
Start date:
10/24/2014
Due date:
% Done:

100%

Estimated time:
Detected in build:
svn
Published in build:
150305

Description

History

#1

Updated by Alexander Kamkin almost 6 years ago

Path to the model source code: src/main/arch/minimips/model/minimips.nml.

#2

Updated by Alexander Kamkin almost 6 years ago

To build the project, use ANT (http://ant.apache.org/).

#4

Updated by Platon Bibik almost 6 years ago

  • % Done changed from 0 to 10
#5

Updated by Alexander Kamkin almost 6 years ago

  • Subject changed from [arch] Specification of the miniMIPS ISA to [minimips][model] Specification of the miniMIPS ISA
#6

Updated by Andrei Tatarnikov almost 6 years ago

Вот он появился в r2735. При трансляции происходит куча ошибок:

Translating: src/main/arch/minimips/model/minimips.nml
Model name: minimips
Included: src/main/arch/minimips/model/minimips.nml
minimips.nml 48:22 ERROR (SYNTACTIC): "The 'REGISTER' symbol is not declared." 
minimips.nml 48:36 ERROR (SYNTACTIC): "The 'REGISTER' symbol is not declared." 
minimips.nml 48:50 ERROR (SYNTACTIC): "The 'REGISTER' symbol is not declared." 
minimips.nml 63:21 ERROR (SYNTACTIC): "The 'REGISTER' symbol is not declared." 
minimips.nml 63:35 ERROR (SYNTACTIC): "The 'REGISTER' symbol is not declared." 
/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/arch/minimips/model/minimips.nml line 64:77 mismatched character '\r' expecting '"'
minimips.nml 65:2 ERROR (PARSER): "/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/arch/minimips/model/minimips.nml line 65:2 mismatched input 'image' expecting STRING_CONST" 
minimips.nml 129:63 ERROR (PARSER): "/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/arch/minimips/model/minimips.nml line 129:63 missing RIGHT_PARENTH at 'rd'" 
minimips.nml 129:65 ERROR (PARSER): "/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/arch/minimips/model/minimips.nml line 129:65 mismatched input '.' expecting ASSIGN" 
minimips.nml 129:71 ERROR (PARSER): "/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/arch/minimips/model/minimips.nml line 129:71 mismatched input ')' expecting ASSIGN" 
minimips.nml 139:19 ERROR (PARSER): "/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/arch/minimips/model/minimips.nml line 139:19 no viable alternative at input ')'" 
minimips.nml 141:63 ERROR (PARSER): "/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/arch/minimips/model/minimips.nml line 141:63 missing RIGHT_PARENTH at 'rd'" 
minimips.nml 141:65 ERROR (PARSER): "/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/arch/minimips/model/minimips.nml line 141:65 mismatched input '.' expecting ASSIGN" 
minimips.nml 141:71 ERROR (PARSER): "/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/arch/minimips/model/minimips.nml line 141:71 mismatched input ')' expecting ASSIGN" 
minimips.nml 38:4 ERROR (SEMANTIC): "The 'temp' symbol is not declared." 
minimips.nml 38:4 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'temp'." 
minimips.nml 38:4 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'temp'." 
minimips.nml 38:9 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'temp = rs<31>::rs + rt<31>::rt'." 
minimips.nml 38:9 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'temp = rs<31>::rs + rt<31>::rt'." 
minimips.nml 38:9 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: '{

    temp = rs<31>::rs + rt<31>::rt; // concat with greatest significant bits in each, then add
    if temp<32> != temp<31> then    //true, if adding led to carrying into the concatenated bit (overflow happened)
      exception(IntegerOverflow);
    else
      rd = temp<31..0>;
    endif;

  }'." 
minimips.nml 34:2 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'action = {

    temp = rs<31>::rs + rt<31>::rt; // concat with greatest significant bits in each, then add
    if temp<32> != temp<31> then    //true, if adding led to carrying into the concatenated bit (overflow happened)
      exception(IntegerOverflow);
    else
      rd = temp<31..0>;
    endif;

  }'." 
minimips.nml 33:3 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'syntax = format(add, %s, %s, %s, rd.syntax, rs.syntax, rt.syntax)
  image = format(000000%s%s%s00000100000, rs.image, rt.image, rd.image)
  action = {

    temp = rs<31>::rs + rt<31>::rt; // concat with greatest significant bits in each, then add
    if temp<32> != temp<31> then    //true, if adding led to carrying into the concatenated bit (overflow happened)
      exception(IntegerOverflow);
    else
      rd = temp<31..0>;
    endif;

  }'." 
minimips.nml 33:3 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'op add (rd: REG, rs: REG, rt: REG)
  syntax = format(add, %s, %s, %s, rd.syntax, rs.syntax, rt.syntax)
  image = format(000000%s%s%s00000100000, rs.image, rt.image, rd.image)
  action = {

    temp = rs<31>::rs + rt<31>::rt; // concat with greatest significant bits in each, then add
    if temp<32> != temp<31> then    //true, if adding led to carrying into the concatenated bit (overflow happened)
      exception(IntegerOverflow);
    else
      rd = temp<31..0>;
    endif;

  }'." 
minimips.nml 48:24 ERROR (TREEWALKER): "/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/java/ru/ispras/microtesk/translator/simnml/grammar/SimnMLTreeWalker.g: node from line 48:24 mismatched tree node: rs expecting <DOWN>" 
minimips.nml 48:5 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: '(rd: REGISTER, rs: REGISTER, rt: REGISTER)'." 
minimips.nml 48:5 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'op sub (rd: REGISTER, rs: REGISTER, rt: REGISTER)
  syntax = format(sub, %s, %s, %s, rd.syntax, rs.syntax, rt.syntax)
  image = format(000000%s%s%s00000100010, rs.image, rt.image, rd.image)
  action = {

    temp = rs<31>::rs - rt<31>::rt; // concat with greatest significant bits in each, then substract
    if temp<32> != temp<31> then    // true, if substraction led to carrying into the concatenated bit (overflow happened)
      exception(IntegerOverflow);
    else
      rd = temp<31..0>;
    endif;

  }'." 
minimips.nml 63:23 ERROR (TREEWALKER): "/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/java/ru/ispras/microtesk/translator/simnml/grammar/SimnMLTreeWalker.g: node from line 63:23 mismatched tree node: rt expecting <DOWN>" 
minimips.nml 63:3 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: '(rs: REGISTER, rt: REGISTER, immediate: BYTE)'." 
minimips.nml 63:3 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'op addi (rs: REGISTER, rt: REGISTER, immediate: BYTE)
  syntax = format(
  image = format(000000%s%s%d00000000, rs.image, rt.image, immediate)
  action = {

    temp = rs<31>::rs + coerce(int(33), rt); // concat with greatest significant bits in each, then add
    if temp<32> != temp<31> then             // true, if adding led to carrying into the concatenated bit (overflow happened)
      exception(IntegerOverflow);
    else
      rd = temp<31..0>;
    endif;

  }'." 
minimips.nml 99:46 ERROR (SEMANTIC): "The immediate value offset does not provide any callable attributes." 
minimips.nml 103:9 ERROR (SEMANTIC): "The 'M' symbol is not declared." 
minimips.nml 103:9 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'M[address + offset * DATA_WORD_SIZE]'." 
minimips.nml 103:9 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'M[address + offset * DATA_WORD_SIZE]'." 
minimips.nml 103:9 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'M[address + offset * DATA_WORD_SIZE]'." 
minimips.nml 103:7 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'rt = M[address + offset * DATA_WORD_SIZE]'." 
minimips.nml 103:7 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'rt = M[address + offset * DATA_WORD_SIZE]'." 
minimips.nml 103:7 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: '{

    rt = M[address + offset * DATA_WORD_SIZE];

  }'." 
minimips.nml 107:2 ERROR (TREEWALKER): "/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/java/ru/ispras/microtesk/translator/simnml/grammar/SimnMLTreeWalker.g: node from line 107:2 mismatched tree node: op expecting <UP>" 
minimips.nml 99:2 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'action = {

    rt = M[address + offset * DATA_WORD_SIZE];

  }'." 
minimips.nml 98:5 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'syntax = format(lb %s, %d(%s), rt.syntax, offset.syntax, address.syntax)
  image = format(100011%s%s%d00000000, address.image, rt.image, offset)
  action = {

    rt = M[address + offset * DATA_WORD_SIZE];

  }'." 
minimips.nml 98:5 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'op lb (rt: REG, address: REG, offset: BYTE)
  syntax = format(lb %s, %d(%s), rt.syntax, offset.syntax, address.syntax)
  image = format(100011%s%s%d00000000, address.image, rt.image, offset)
  action = {

    rt = M[address + offset * DATA_WORD_SIZE];

  }'." 
minimips.nml 117:58 ERROR (SEMANTIC): "The immediate value immed does not provide any callable attributes." 
minimips.nml 129:17 ERROR (SEMANTIC): "Incorrect format specification. The number of arguments specified in the format string (3) does not match to the number of provided argumens (2)." 
minimips.nml 139:14 ERROR (TREEWALKER): "/home/andrewt/Documents/ISPRAS/src/microtesk/trunk/microtesk/src/main/java/ru/ispras/microtesk/translator/simnml/grammar/SimnMLTreeWalker.g: node from after line 139:14 mismatched tree node: UP expecting <DOWN>" 
minimips.nml 139:14 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'card()'." 
minimips.nml 139:8 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'card()'." 
minimips.nml 139:5 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: '(addr: card())'." 
minimips.nml 139:5 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'op j (addr: card())
  syntax = format(slt %s, %s, %s, rd.syntax, rs.syntax, rt.syntax)
  image = format(000010%s%s%s00000101010, rs.image, rt.image rd.image)
  action = {

    BRANCH = 1;
    JMPADDR = 4 * immed;
  }'." 
minimips.nml 150:3 ERROR (SEMANTIC): "The 'add' item of the 'Operations' OR-rule is not defined or is not a OP definition." 
minimips.nml 150:3 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'op Operations = add
              | sub
              | addi

              | and
              | or

              | lw
              | sw
              //is it suitable here?   | lui

              | beq

              | slt
              | slti

              | j'." 
minimips.nml 170:22 ERROR (SEMANTIC): "The 'Operations' primitive is not defined or does not have the 'OP' type." 
minimips.nml 170:13 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'Operations'." 
minimips.nml 170:3 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: '(command: Operations)'." 
minimips.nml 170:3 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'op miniMips (command: Operations)
  syntax = command.syntax
  image  = command.image
  action = {

    REGISTERS[0] = 0;
    BRANCH = 0;
    command.action;

    if BRANCH == 0 then
      // If the flag is not set, proceeds to the next instruction 
      PC = PC + 4;
    else
      // Otherwise, transfers control to the jump address
      PC = JMPADDR;
    endif;
  }'." 
minimips.nml 188:5 ERROR (SEMANTIC): "The 'miniMips' item of the 'instruction' OR-rule is not defined or is not a OP definition." 
minimips.nml 188:5 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'op instruction = miniMips'." 
#7

Updated by Alexander Kamkin almost 6 years ago

Система команд minimips:

(OP_SPECIAL, "100000", '0', '0', OP_ADD  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- ADD
(OP_NORMAL , "001000", '0', '0', OP_ADD  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '1', '0', '1', LVL_EX , '1', '0', D_RT), -- ADDI
(OP_NORMAL , "001001", '0', '0', OP_ADDU , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_EX , '1', '0', D_RT), -- ADDIU
(OP_SPECIAL, "100001", '0', '0', OP_ADDU , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- ADDU
(OP_SPECIAL, "100100", '0', '0', OP_AND  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- AND
(OP_NORMAL , "001100", '0', '0', OP_AND  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_EX , '1', '0', D_RT), -- ANDI
(OP_NORMAL , "000100", '1', '0', OP_EQU  , '0', '0', '1', OFS_SESH, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_DI , '0', '0', D_RT), -- BEQ
(OP_REGIMM , "000001", '1', '0', OP_LPOS , '0', '0', '1', OFS_SESH, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_DI , '0', '0', D_RT), -- BGEZ
(OP_REGIMM , "010001", '1', '1', OP_LPOS , '0', '0', '1', OFS_SESH, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_EX , '1', '0', D_31), -- BGEZAL
(OP_NORMAL , "000111", '1', '0', OP_SPOS , '0', '0', '1', OFS_SESH, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_DI , '0', '0', D_RT), -- BGTZ
(OP_NORMAL , "000110", '1', '0', OP_LNEG , '0', '0', '1', OFS_SESH, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_DI , '0', '0', D_RT), -- BLEZ
(OP_REGIMM , "000000", '1', '0', OP_SNEG , '0', '0', '1', OFS_SESH, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_DI , '0', '0', D_RT), -- BLTZ
(OP_REGIMM , "010000", '1', '1', OP_SNEG , '0', '0', '1', OFS_SESH, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_EX , '1', '0', D_31), -- BLTZAL
(OP_NORMAL , "000101", '1', '0', OP_NEQU , '0', '0', '1', OFS_SESH, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_DI , '0', '0', D_RT), -- BNE
(OP_SPECIAL, "001101", '0', '0', OP_OUI  , '0', '0', '0', OFS_PCRL, IT_BREAK, '0', '0', '1', '1', '0', '0', LVL_DI , '0', '0', D_RT), -- BREAK
(OP_COP0   , "000001", '0', '0', OP_OP2  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '1', '1', '0', '0', LVL_DI , '1', '1', D_00), -- COP0
(OP_NORMAL , "000010", '1', '0', OP_OUI  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '1', '1', '0', '0', LVL_DI , '0', '0', D_RT), -- J
(OP_NORMAL , "000011", '1', '1', OP_OUI  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '1', '1', '0', '0', LVL_EX , '1', '0', D_31), -- JAL
(OP_SPECIAL, "001001", '1', '1', OP_OUI  , '0', '0', '0', OFS_NULL, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_EX , '1', '0', D_RD), -- JALR
(OP_SPECIAL, "001000", '1', '0', OP_OUI  , '0', '0', '0', OFS_NULL, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_DI , '0', '0', D_RT), -- JR
(OP_NORMAL , "001111", '0', '0', OP_LUI  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '1', '1', '0', '0', LVL_EX , '1', '0', D_RT), -- LUI
(OP_NORMAL , "100011", '0', '0', OP_OUI  , '1', '0', '0', OFS_SEXT, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_MEM, '1', '0', D_RT), -- LW
(OP_NORMAL , "110000", '0', '0', OP_OUI  , '1', '0', '0', OFS_SEXT, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_MEM, '1', '1', D_RT), -- LWC0
(OP_COP0   , "000000", '0', '0', OP_OP2     , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '1', '1', '0', '0', '0', LVL_DI , '1', '0', D_RD), -- MFC0
(OP_SPECIAL, "010000", '0', '0', OP_MFHI , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '1', '1', '0', '0', LVL_EX , '1', '0', D_RD), -- MFHI
(OP_SPECIAL, "010010", '0', '0', OP_MFLO , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '1', '1', '0', '0', LVL_EX , '1', '0', D_RD), -- MFLO
(OP_COP0   , "000100", '0', '0', OP_OP2  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '1', '0', '0', '0', LVL_DI , '1', '1', D_RD), -- MTC0
(OP_SPECIAL, "010001", '0', '0', OP_MTHI , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_DI , '0', '0', D_RT), -- MTHI
(OP_SPECIAL, "010011", '0', '0', OP_MTLO , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_DI , '0', '0', D_RT), -- MTLO
(OP_SPECIAL, "011000", '0', '0', OP_MULT , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '0', '0', D_RT), -- MULT
(OP_SPECIAL, "011001", '0', '0', OP_MULTU, '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '0', '0', D_RT), -- MULT
(OP_SPECIAL, "100111", '0', '0', OP_NOR  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- NOR
(OP_SPECIAL, "100101", '0', '0', OP_OR   , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- OR
(OP_NORMAL , "001101", '0', '0', OP_OR   , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_EX , '1', '0', D_RT), -- ORI
(OP_SPECIAL, "000000", '0', '0', OP_SLL  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '1', '0', '1', '0', LVL_EX , '1', '0', D_RD), -- SLL
(OP_SPECIAL, "000100", '0', '0', OP_SLL  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- SLLV
(OP_SPECIAL, "101010", '0', '0', OP_SLT  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- SLT
(OP_NORMAL , "001010", '0', '0', OP_SLT  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '1', '0', '1', LVL_EX , '1', '0', D_RT), -- SLTI
(OP_NORMAL , "001011", '0', '0', OP_SLTU , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '1', '0', '1', LVL_EX , '1', '0', D_RT), -- SLTIU
(OP_SPECIAL, "101011", '0', '0', OP_SLTU , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- SLTU
(OP_SPECIAL, "000011", '0', '0', OP_SRA  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '1', '0', '1', '0', LVL_EX , '1', '0', D_RD), -- SRA
(OP_SPECIAL, "000111", '0', '0', OP_SRA  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- SRAV
(OP_SPECIAL, "000010", '0', '0', OP_SRL  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '1', '0', '1', '0', LVL_EX , '1', '0', D_RD), -- SRL
(OP_SPECIAL, "000110", '0', '0', OP_SRL  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- SRLV
(OP_SPECIAL, "100010", '0', '0', OP_SUB  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- SUB
(OP_SPECIAL, "100011", '0', '0', OP_SUBU , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- SUBU
(OP_NORMAL , "101011", '0', '0', OP_OP2  , '1', '1', '0', OFS_SEXT, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_DI , '0', '0', D_RT), -- SW
(OP_NORMAL , "111000", '0', '0', OP_OP2  , '1', '1', '0', OFS_SEXT, IT_NOEXC, '0', '1', '0', '0', '0', '0', LVL_DI , '0', '0', D_RT), -- SWC0
(OP_SPECIAL, "001100", '0', '0', OP_OUI  , '0', '0', '0', OFS_PCRL, IT_SCALL, '0', '0', '1', '1', '0', '0', LVL_DI , '0', '0', D_RT), -- SYSC
(OP_SPECIAL, "100110", '0', '0', OP_XOR  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '0', '0', '0', LVL_EX , '1', '0', D_RD), -- XOR
(OP_NORMAL , "001110", '0', '0', OP_XOR  , '0', '0', '0', OFS_PCRL, IT_NOEXC, '0', '0', '0', '1', '0', '0', LVL_EX , '1', '0', D_RT)  -- XORI
#8

Updated by Platon Bibik over 5 years ago

  • % Done changed from 10 to 50
#9

Updated by Andrei Tatarnikov over 5 years ago

miniMIPS was included in the build script (r2781).

#10

Updated by Platon Bibik over 5 years ago

It is necessary to declare two operations with name "jalr" (second one takes an implicit parameter rd), but translator says that it is impossible to declare two operations with identical names.

#11

Updated by Alexander Kamkin over 5 years ago

There are two ways to solve the problem:

  1. You can declare two operations with different names with identical names in format.
  2. You can ignore jalr with the implicit parameter (there is no such instruction in MIPS - it's just a syntax sugaring).

My suggestion is 2.

#12

Updated by Andrei Tatarnikov over 5 years ago

Fixed some issues that caused our tests to fail - r2884. Be careful!

#13

Updated by Andrei Tatarnikov over 5 years ago

Found more bugs - r2914 and r2915(jumps did not work)!

#14

Updated by Andrei Tatarnikov over 5 years ago

  • Status changed from New to Resolved
  • % Done changed from 50 to 100

Made an update related to PC assigning and delay slot issues: r3228.

Now, as I can see, the specification is ready.

#15

Updated by Andrei Tatarnikov over 5 years ago

  • Status changed from Resolved to Closed
  • Published in build set to 150305

Also available in: Atom PDF