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

Обращение к операндам и битовым полям


При описании поведения инструкции необходимо знать конкретные значения операндов инструкции. В рассматриваемом языке эти значения можно получить двумя путями.

  • Путем использования просто имени операнда, как обычной переменной. Такая ссылка автоматически преобразуется в необходимый код, который извлечет нужное значение из машинного кода команды в процессе симуляции.
  • Путем непосредственного обращения к именованным битовым полям машинного слова. Это осуществляется с помощью использования синтаксиса:

    #[+]LLLL

    Здесь символ + является необязательным; если он есть, то закодированное число нужно трактовать как знаковое. На месте LLLL может быть любое количество подряд идущих букв в бинарном коде инструкции. При задании этих букв нужно следить, чтобы их положение в бинарном шаблоне команды определялось однозначно (см. ).

    Вот простой пример обращения к битовым полям инструкции: MOVE {XM0}({YAv} + {offset}), {GRs}

    с кодом:

    00DX-0100-01AA-RRRR-MMMM-MMMM

    Данная инструкция осуществляет пересылку в память с именем XM0 (это может быть память данных DM0 или TM0) регистра общего назначения GRs (в качестве GRs может выступать один из регистров общего назначения GR0,GR1,…, GRF). Адрес является суммой явно заданной константы offset и значения адресного регистра YAv (это может быть один из адресных регистров DA0 или TA0).

    Здесь кодирование соответствует операндам следующим образом:

    D : Destination memory field (XM0)
    AA : Destination address pointer field (YAv):
    RRRR : General register field (GRs):
    MMMMMMMM : offset field constant [-128;127]

    При описании поведения возможны следующие выражения:

    GRs, #RRRR, YAv + #+MMMMMMMM



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