Task #4656
closed[translator] Возможность инстанцирования операций в других операциях
100%
Description
Цель - возможность выделения общей функциональность в операции.
Предположим, требуется выделить проверку условий возникновения исключений в отдельную операцию и вызывать ее из action-блоков инструкций.
op ExceptionChecker(flags: Flags) // возможны параметры action = { ... } // синтаксис не нужен
Сейчас для вызова одной операции из другой у родительской операции нужно заводить параметр. Соответственно, параметр нужно указывать в тестовом шаблоне (что уже кривовато); есть шанс, что он будет указан некорректно (это никуда не годится).
Другой вариант - создать инстанс требуемой операции и осуществить вызов.
op ADD(src1: REG, src2: REG, dst: REG) syntax = format("slozhenie %s %s %s", src1.syntax, src2.syntax, dst.syntax) action = { ExceptionChecker(0xDEAD).action; checker.action; ... }
Режимы с возвращаемым значением можно использовать в выражениях:
mode TypeOf(x: IMMEDIATE) = x<13..12>
if(TypeOf(x) == X) ... endif
Updated by Alexander Kamkin over 10 years ago
- Due date set to 05/31/2014
- Target version set to 2.1
Updated by Andrei Tatarnikov almost 10 years ago
- Status changed from New to Open
- Priority changed from Normal to High
Updated by Andrei Tatarnikov almost 10 years ago
- % Done changed from 0 to 20
r2923, r2928 - support in grammar (syntactic structures are recognized, but no useful action is performed yet).
Updated by Andrei Tatarnikov almost 10 years ago
- % Done changed from 20 to 80
First workable implementation: r2940, r2941, r2942
Updated by Andrei Tatarnikov almost 10 years ago
TODO: implement checks to make sure that arguments match the signature of the MODE/OP being created - see Bug #5542.
Updated by Andrei Tatarnikov almost 10 years ago
- Status changed from Open to Resolved
- % Done changed from 80 to 100
Updated by Andrei Tatarnikov almost 10 years ago
- Status changed from Resolved to Closed
- Published in build set to 141230