Skip to content

Кастомные команды для последней лабы

Arthur Kupriyanov edited this page Aug 3, 2019 · 2 revisions

Поддержка кастомных команд

Для восьмой лабораторной работы необходимо создать свои команды в БЭВМ.

Чтобы не писать команду через WORD - используйте определения кастомных команд:

  • ACOM - арифметическая команда 7###
  • BRCOM - команда перехода D###
  • FC## - FF## - безадресная разрабатывается

Examples

  • ACOM F3 -> WORD 70F3
  • BRCOM AA -> WORD D0AA

Пост-интерпретатор

При интерпретации кода происходит проверка всех строк на совпадение на эти команды:

    if (line[col].matches("(ACOM|BRCOM)")){
        line = compileUserCustomCommand(line);
    }
    private String[] compileUserCustomCommand(String[] line){
        int addr;
        try {
            addr = Integer.parseInt(line[1], 16);
        } catch (NumberFormatException e){
            return line;
        }
        if (line[0].toUpperCase().equals("ACOM")){
            return ("WORD " + Integer.toString(Integer.parseInt("7000", 16) + addr, 16)).split(" ");
        } else if (line[0].toUpperCase().equals("BRCOM")) {
            return ("WORD " + Integer.toString(Integer.parseInt("D000", 16) + addr, 16)).split(" ");
        } else {
            return line;
        }
    }

Как видно из исходников, эта команда заменяется на WORD 7###, а затем компилируется дальше.