2013-02-15 3 views
2

Я пытаюсь записать двоичный код MIPS для машинных инструкций, связанных с регистром с плавающей запятой. Но пока я могу найти код операции для инструкций с плавающей запятой, я не могу узнать, какие числа относятся к какому регистру с плавающей запятой. Моя книга и Интернет могут сказать мне, какой номер я буду использовать, если захочу обратиться к $ t1, но я не могу найти никакой информации о том, как я буду ссылаться на $ f1.Какие регистры числа представляют собой регистры с плавающей запятой в MIPS?

ответ

3

Имеется 32 регистра с плавающей запятой: $f0 .. $f31. Но каждая операция с плавающей запятой выполняется (в ранних MIPS-процессорах) в отдельном процессоре, FPU (модуль с плавающей точкой), поэтому вы не можете получать регистры с плавающей запятой с обычной (целочисленной) командой. FPU регистрирует команды FPU и регистры CPU для команд CPU.

Существует фотография и прозрачного описание http://www.cim.mcgill.ca/~langer/273/12-coprocessors.pdf

команды Всех FPU кодируются как сопроцессор, инструкции для сопроцессора 1 (CP1) Проверки первых и последних страниц http://www.cs.sunysb.edu/~lw/spim/MIPSinstHex.pdf

Поля футов (5) фс (5) fd (5) - коды регистров (все имеют ширину 5 бит). $ f0 будет кодироваться как 0; $ f31 как 31 (dec) или 0x1f (hex). Для двух регистровых значений (64-битный двойной формат) записывается только номер первого регистра из пары регистров (допускается только разрешенный номер: 0,2 ..30).

Подробные таблицы опкодов здесь: http://www.math.unipd.it/~sperduti/ARCHITETTURE-1/mips32.pdf (страница A-73)

+0

спасибо! «Я принял» этот ответ? Я не уверен, как это сделать, но я хотел бы ... –

+0

Да, зеленый символ «v» означает, что ответ принят – osgx

Смежные вопросы