Программирование для встроенных систем - статьи

Обращение к состоянию процессора и системы


Состояние процессора и системы задается значением регистров и всех памятей системы. Обращение к этим ресурсам происходит следующим образом.

  • Обращения к памяти осуществляются с помощью макроса:

    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), которые, кроме собственно чтения/записи значения, обеспечивают сбор необходимых статистик для профилировки.

    Допустимые типы памятей и регистров, их разрядность и размер задаются разработчиком общей части симулятора.



    Содержание раздела