Компиляция в MIPS-код процедуры на языке С, работающей с числами с плавающей точкой, принадлежащими двумерным матрицам
Также вам может показаться, что такая тема как http://office.realty-guide.ru/ никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт office.realty-guide.ru. Тема аренда офиса в Москве там представлена весьма широко. На том сайте можно узнать много интересного на тему аренда офиса в Москве. Что означает вообще тема аренда офиса в Москве, где найти аренда офиса в Москве - про это написано на сайте office.realty-guide.ru. Это очень важная для многих людей тема - аренда офиса в Москве. Спасибо сайту office.realty-guide.ru за информацию на тему аренда офиса в Москве.
Большинство вычислений, производимых числами с плавающей точкой, осуществляется с двойной точностью. Давайте выполним перемножение матриц X = X + Y Z. Предположим, что X, Y и 2 - это прямоугольные матрицы, имеющие в каждом измерении по 32 элемента.
Уточнение. Рассмотренное в примере размещение массива, называемое развертыванием по строкам, используется в языке С и многих других языках программирования. В Фортране вместо этого используется развертывание по столбцам, в соответствии с чем массив хранится по столбцам.
Уточнение. Изначально для операций с двойной точностью могут использоваться только 16 из 32 MIPS-регистров, предназначенных для чисел с плавающей точкой : SfO, Sf2, Jf4 Sf30.
Двойная точность в вычислениях достигается за счет использования пар этих регистров, способных хранить числа с одинарной точностью. FP-регистры с нечетными номерами используются только для загрузки и хранения правых половин 64-разрядных чисел с плавающей точкой. В MIPS-32 к набору инструкций добавлены инструкции 1.а и s.d. В MIPS-32 также добавлены версии всех инструкций с плавающей точкой, где одна инструкция приводит к двум параллельным операциям с числами с плавающей точкой над двумя 32-разрядными операндами внутри 64-разрядных регистров.
Например, add ps SfO. tf2. Sf4 является эквивалентом инструкции add.s $f0. if2, $4, за которой следует инструкция add s $fl. $f3. Jf5.
Уточнение. Еще одна причина разделения регистров для работы с целыми числами и регистров для чисел с плавающей точкой состоит в том, что микропроцессоры в 1980-х годах не имели достаточного количества транзисторов, чтобы блок для работы с числами с плавающей точкой поместился на том же самом чипе, что и блок для работы с целыми числами. Поэтому блок для работы с числами с плавающей точкой, включая и соответствующие регистры, был доступен в качестве второго чипа. Такие дополнительные ускорители назывались сопроцессорами, что объясняет происхождение акронима для загрузки в MIPS чисел с плавающей точкой: Iwcl означает «загрузить слово в сопроцессор 1» — load word to coprocessor 1, то есть в блок арифметики с плавающей точкой. С начала 1990-х годов у микропроцессоров появился встроенный блок арифметики с плавающей тонкой, и поэтому термин сопроцессор образует одно целое с сумматором и основной памятью.
Уточнение. Как уже упоминалось в разделе 3.4, ускорение операции деления дается намного труднее, чем ускорение умножения. Кроме технологии SRT, есть еще одна технология, позволяющее ускорить работу устройства деления, так называемый метод простых итераций Ньютона, при котором деление превращено в нахождение нуля функции для определения величины, обратной 1/х, которая затем перемножается с другим операндом. Технология итерации не позволяет провести нужное округление без вычисления множества дополнительных разрядов. Эту проблему путем вычисления сверхточной обратной величины решает микросхема П.
Уточнение. В языке Java стандарт IEEE 754 используется посредством упоминания в своих определениях типов данных и операций, касающихся чисел с плавающей точкой в Java. Поэтому код, приведенный в первом примере, возможно, неплохо бь подошел для создания метода класса, переводящего значения из шкалы по Фаренгейту в шкалу по Цельсию.
Во втором примере используются многомерные массивы, которые напряму в Java не поддерживаются. Язык Java позволяет создавать массивы массивов, не каждый массив должен иметь свою собственную длину, в отличие от многомерных массивов в языке С. Как и в тех примерах, которые приводились в главе 2, Java версия этого второго примера потребует немалого объема кода для проверки грант; массивов, включая вычисление новой дтины в конце доступа к строке. Кроме этого потребуется проверка на то, что ссылка на объект не является пустой.
Опубликовал katy
June 28 2015 16:33:24 ·
0 Комментариев ·
2829 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.