GCC - The Complete Reference (537669), страница 78
Текст из файла (страница 78)
Операнд 5 содержит указатель на цепочку ссылок на метку для данной метки. Операнд б — это уникальный идентификатор. Операнд 7 содержит имя, которое пользователь присвоил этой метке, если такое имя существует. Операнд 8 представляет собой альтернативное имя метки для внутреннего использования. согпраге '2' "ее" Два операнла этой инструкции вычисляются и сравниваются между собой. Если значения операндов равны, инструкция в результате дает ноль.
В противном случае результатом выполнения инструкции будет ненулевое значение. сопса1 'о' "ее" Производится объединение (конкатенация) двух выражений таким образом, что в результате формируется значение с количеством бит, равным сумме бит в исходных выражениях. Эта инструкция используется для комплексных чисел и, как правило, присутствует в коде языка КТЕ, но не в окончательной цепочке инструкций. сопд 'х' "Ее" Обычный условный оператор. Операнд О предстапляет собой вектор пар выражений. Сначала вычисляются первые элементы каждой пары. Во втором элементе пары содержат условное выражение, результат вычисления которого равен нулю прн выполнении условия и ненулевому значению в противном случае.
Если ни одна нз пар операнда О не дает екие, то в качестве условного выражения используется операнд 1. сопд ехес 'х' "ее" Условное выражение и блок кода, который выполняется, если условие соблюдапся. Условное выражение не дает побочных эффектов. Операнд О содержит условное выражение, а операнд 1 — выполняемую инструкцию.
соп5к о е Выражение, которое дает константу. Это приводит к тому, что выражение восприннмается компилятором не как выражение, транслируемое в окончательный код, а квк константа. сопй доиЫе 'о' "тпгтпг" Числовая константа с плавающей точкой. Операнды представляют собой цепочка значений, составляющих полное значение числа двойной точности. Синтаксис хнструкции представлен в виде "мм", там не менее, он может варьировать от "мм" Во "инммм" в зависимости от формата чисел с плавающей точкой на целевой платформе. 352 Часть 111. Внутренняя структура и окружение СОП5$ !ПФ О ЪЧ Числовая целочисленная константа.
сопЬС 5Сг!пя О $ Числовая строковая константа. В настоящее время оиа используется только в качестве атрибутов. сопй тгес1ог 'х' нГ Константа, представляющая собой вектор (массив). соп51ап1 р гСх 'х' "е" Выражение Ьи11Е1п сопяеапв р. Это выражение создается при генерации инструкций языка ВТ! только при использовании оптимизации и удаляется прн первом проходе СЗЕ. тейпе аьгп а11г!ЬиСед 'х' "Ч" Устанавливает атрибуты для инструкций языка ассемблера.
Операнд 0 представляет собой вектор, содержащий список атрибутов. с!ейпе а11г 'х' "ые" Эта инструкция используется только в описаниях машин и используется для задания атрибутов инструкций. Операнд 0 содержит имя устанавливаемого атрибута Операнд ! представляет собой список возможных значений атрибута, разделенных запятыми. Операнд 2 — это выражение, которое будет использоваться для установки значения атрибута по умолчанию. с!ет!Пе аи1огпаС!Оп 'х' "ь" Эта инструкция применяется только в описаниях машин для задания имени автомата, используемого для конвейерного распознавания опасных ситуаций.
Имя автомата используется в инструкциях оек 1пе ори ип1е и еей1пе цттеку ори ов1е. Операнд 0 содержит список имен, разделенных запятыми. с!ейпе Ьураы 'х' "!дд5" Эта инструкция используется только в описаниях машин для установки задержки между различными наборами инструкций. Операнд О содержит значение задержки. Операнд 1 представляет собой список имен инструкций, разделенных запятыми, на которых начинается действие задержки. Операнд 2 — это список имен инструкций, разделенных запятыми, на которых заканчивается действие задержки. Операнд 3 содержит имя необязательной функции, которая в качестве аргументов принимает две инструкции и возвращает значение обхода.
Если обход игнорируется, возвращается нулевое значение. с!ейпе сопс! ехес 'х' "Едд" Определение метаоперацни условного выполнения, предназначенной для генерирования новых экземпляров оек1пе 1пвп. Операнд 0 содержит выражение, ко- Глава йб. Язык регистрового переноса 3 5 3 торое будет использоваться для сравнения. Операнд 1 — это условное выражение языка С, которое для выполнения сравнения должно давать ненулевое значение. Операнд 2 представляет собой блок кода на языке С или ассемблере, передаваемый в виде кода на языке ассемблера.
дей1пе сри ипй 'х' "ь5" Эта инструкция используется только в описаниях машин для определения имен функциональных блоков процессора. Операнд О представляет собой список имен функциональных блоков, разделенных запятыми. Операнд 1 — это имя автоматизации, соответствуюшее описанию кода бех1пе аисошас1ощ дей1пе де1ау 'х' "еЕ" Устанавливает необходимость задержек. Операнд 0 представляет собой условное выражение, значение которого равно екие, если инструкция требует указанное количество задержек.
Операнд 1 содержит вектор (длина которого равна утроенному количеству задержек), приводящий в соответствие каждой задержке три условия. Значение сгие первого условия указывает, что инструкция должна занять место задержки. Второе условие равно екав для тех инструкций, которые могут быть удалены, если выполнение кода пойдет по данной ветви. Третье условие равно схие для тех инструкций, которые могут быть удалены, если выполнение кода пойдет не по данаой ветви. дей1пе ехрапд 'х' "зЕяз" Устанавливает порядок генерирования блока инструкций для имени стандартной инструкции. Операнд 0 содержит имя стандартной инструкции.
Операнд 2 — выражение языка С, которое для выполнения этой операции должно давать ненулевое значение. Операнд 3 представляет собой код на языке С, выполняемый перед генерярованием инструкций. Это, например, может быть последовательность выражевнй языка НТ1. весу~опоя, которая будет использоваться при генерации кода. дей1пе йзпсйоп ипй 'х' "яй1ейЧ" Набор инструкций, требующих использования определенного функционального блока. То есть каждая из этих инструкций дает результат после некоторой задержки. Кроме того, на количество одновременно выполняемых инструкций данного типа может накладываться ограничение, что может быть вызвано наличием аналогичного ограничения для функционального блока процессора.
Для одного процессора может быть объявлено несколько инструкций бе11пе Сипсе1оп, тем не менее, первые операнды во всех инструкциях для одного и того же функционального блока должны быть одинаковыми. Операнд О содержит имя функционального блока процессора. Операнд 1 представляет собой количество идентичных функциональных блоков процессора. Операнд 2 — максимальное количество одновременно работающих функциональных блоков процессора. Число 0 указывает на то, что ограничение яа количество одновременно работающих блоков не установлено.
Число 1 говорит о том, что в любой момент времени только одна инструкция может пользоваться 12 А Гриффин 3 5 4 Часть !П. Внутренняя структура и окружение функциональным блоком. Операнд 3 представляет собой условное выражение, включающее атрибут функции. Если функция применима к данной инструкции, условное выражение должно давать ненулевое значение. Операнд 4 — это константное значение задержки, по истечении которой станет доступным результат инструкции, использующей функции.
Операнд 5 содержит константу — длительность задержки, по истечении которой другая инструкция может использовать этот же функциональный блок. Операнд 6, если он указан, представляет собой список выражений. Если одно из выражений дает ненулевое значение, значит, функциональный блок в настоящее время работает и необходимо вставить задержку с соответствующей длительностью. Если результаты вычисления всех выражений равны нулю, функциональный блок свободен и доступен для немедленного использования (при соблюдении условия, содержащегося в операнде 2).
дейпе !пВп 'х' "ьЕзТЧ" Эта инструкция используется только в описаниях машин и представляет собой определение одного вида инструкции. В качестве операнда О указывается имя инструкции. Если имя является нулевой строкой, инструкция указана в описании машины только для ее использования в сравнениях и не будет использоваться в выражениях языка КТ!.. Операнд 1 содержит шаблон выражения. Операнд 2 — это выражение языка С, указывающее дополнительные условия для распознавания данного шаблона. Если операнд 2 является нулевой строкой, дополнительные условия отсутствуют. Операнд 3 представляет собой код на языке ассемблера, определяющий, какое действие должно быть выполнено, если сравнение будет успешным.
Если выражение начинается с символа звездочки, используется код на языке С, а не ассемблера Операнд 4 представляет собой необязательный вектор атрибутов для данной инструкции (см. вес аеег и вес аеег а1еегпае1че). Нерпе (пыл апе! ьр!!1 'х' "ьЕ5ТВЕБЧн Определение инструкции и ее разделения. Эта инструкция получена с помощью конкатенации инструкций е!еНпе йпвп и «!еййпе вр11Е, используюшиходнн и тот же шаблон. Операнд 0 содержит имя инструкции. Если имя представлено нулевой строкой, инструкция указывается в описаниях машин только для сравнения и не будет применяться в выражениях языка КТ!..