Описание поведенческой модели процессора 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Описание поведенческой модели процессора



 

Операторы и операнды для описания поведения инструкций, массивов аргументов и функций

 

Арифметические и логические операции

В PPDL предусмотрены следующие операции над целыми числами:

       Арифметические операции: ‘+’ (сложение),’-‘ (вычитание),’*’(умножение),/ (деление),

       Логические побитовые операции: ‘&’(логическое «И»),|(логическое «ИЛИ), ’^’ (побитовое сложение), ‘~’(отрицание)

       Операция присвоения: =

       Операции сдвига: ‘<<’ (логический сдвиг влево),>> (логический сдвиг вправо),

       Операции сравнения: ‘<’ (меньше), ‘>’ (больше),’==’ (равно),’!=’(не равно),

       Операция отрицания: ‘!’

       Условный оператор: ‘?’  

 

 

Операторы условного выполнения

 

В PPDL предусмотрены операторы условного выполнения:

if(cond) expr else expr

 

Для выполнения последовательности операций внутри условия используются фигурные скобки:

       If(cond)

       {

       expr1;

       expr2;

       …              

       }

       else

       {

       expr1;

       expr2;

       …            

       }

       Работа операторов if-else полностью аналогична работе соответствующих операторов в языках С\С++

Операторы преобразования типов данных и преобразование к знаковому числу

 

По умолчанию все целочисленные операторы являются беззнаковыми. Для приведения выражения к знаковому типу применяется оператор signed. Пример:

R = (signed) A + (signed)B; // сложение двух чисел с учетом знака

 

 

В PPDL предусмотрены операторы:

bits2f – интерпретация целого числа как число типа float

bits2d - интерпретация целого числа как число типа double

bitsf – *представление числа типа float как битовый вектор

bitsd - *представление числа типа double как битовый вектор

 

* В ppdl регистры или FIFO блоки могут быть только целочисленными. Поэтому, при записи результата выражения, имеющего тип float или double, чтобы избежать округления результата и записать результат «как есть», необходимо применить оператор bitsf (для результата типа float) или bitsd (для результата типа double).

Оператор цикла for

for (begin; end_condition; increment)

{

for_body;

}

Где:

       Begin – начальная инициализация

       end_condition – условие продолжение цикла

       increment – изменение счетчиков по окончании каждой итерации цикла

 

Поведение оператора for в ppdl полностью аналогично поведению for в языках C/С++.  

Оператор ожидания следующего такта: wait

       Оператор wait останавливает выполнение инструкции или функции на один такт. В симуляторе при вызове wait

Оператор выбора switch/case

       Конструкция switch/case предназначена для выбора

 

switch(exp)

{

       case const1:

exp1;

exp2;

break;

 

       case const2:

exp1;

exp2;

break;

           

case constN:

exp1;

exp2;

break;

 

       default:

exp1;

exp2;

break;

 

}

 

 

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

exp[bit_num] –обращение (чтение или запись) к биту с номером bit_num.

exp[start_bit:end_bit] –обращение (чтение или запись) к битам начиная со start_bit заканчивая end_bit включительно.

 

В качестве выражения exp могут выступать:

1. Аргументы инструкции, описанные в коде команды (см. ниже)

2. Регистры процессора

3. Элементы ФИФО блоков

4. Ячейки памяти, доступные через шины памяти по адресу.

5. Константы

6. Элементы списка – регистры, ФИФО или ячейки памяти

Оператор конкатенации подвыражений

Оператор '[exp1,exp2]’ объединяет пару выражений exp1 (старшая часть) и exp2 (младшая часть) в значение (если в правой части выражения) или переменную (если в левой части выражения). Размер объединенной переменной в битах равен сумме размеров составляющих выражений.

Например, если мы имеем два регистра ar0 и gr0 размером по 32 бита каждый, то в конструкции

int64 x =[ar0,gr0];

в старшие 32 бита x будет записано значение ar0, а в младшие – значение gr0

 

При присвоении паре регистров

[ar0, gr0 ] = 0x55555555AAAAAAA;

…после выполнения выражения в ar0 будет записано 0x55555555, а в gr0 – 0xAAAAAAAA

 

Допустимо использование вложенных операторов конкатенации, например

[gr0, [gr1,gr2 ]].

 

В текущей версии PPDL максимальный размер конкатенированного выражения не должен превышать 64 бита.



Поделиться:


Последнее изменение этой страницы: 2021-07-18; просмотров: 28; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.80.187 (0.005 с.)