Обращение к состоянию процессора и системы
Состояние процессора и системы задается значением регистров и всех памятей системы. Обращение к этим ресурсам происходит следующим образом.
- Обращения к памяти осуществляются с помощью макроса:
MEM(memory_name, address)
Здесь memory_name обозначает индекс памяти, а address - адрес, по которому идет обращение.
- Обращение к регистрам производится путем использования макросов вида:
<register_type>(register_name)
Здесь register_type - тип регистра, а register_name - имя или код регистра этого типа.
Например, для описанной выше инструкции MOVE XM0(YAv + offset), GRs поведение можно задать так:
MEM(XM0, ARN(YAv)+offset) := GRN(GRs);
Здесь YAv - адресный регистр типа ARN, а GRs - регистр общего назначения типа GRN.
Стоит обратить внимание на операцию «:=», использованную в данном примере. Эта операция необходима, если в левой или правой части присваивания используется ресурс системы (регистр или память). При этом обращение транслируется в соответствующие функции доступа (set/get), которые, кроме собственно чтения/записи значения, обеспечивают сбор необходимых статистик для профилировки.
Допустимые типы памятей и регистров, их разрядность и размер задаются разработчиком общей части симулятора.