«ПК» в справочном листе Mips - PullRequest
       125

«ПК» в справочном листе Mips

1 голос
/ 06 октября 2019

Я практикую преобразование инструкции Mips (beq $ t5, $ s0, loop) в двоичный файл на основе справочного листа Mips, и есть ряд инструкций (ПК = ПК + 4 + адрес ветви) для вычисления непосредственногозначение для инструкции типа «I», и оно продолжает ссылаться на «ПК».

Что означает ПК? Похоже, я должен искать, где в памяти хранится метка «петля»: в частности, найти этот адрес памяти.

1 Ответ

2 голосов
/ 06 октября 2019

В архитектурах Intel это называется указателем инструкций, а не счетчиком программ. Любое имя относится к одной и той же вещи: регистр, который идентифицирует адрес текущей / следующей инструкции, которую процессор должен выполнить.

Чрезмерно упрощая (т. Е. Предполагая, что нет конвейерного процессора) в начале тактового цикла, ПК хранит адрес инструкции, которая будет выполняться в течение тактового цикла, то есть текущей инструкции. К концу тактового цикла регистр ПК обновляется для хранения адреса инструкции, которая будет выполняться в следующем тактовом цикле.

PC = PC + 4 описывает последовательное выполнение, используемоескажем, add, addi, и не взятыми условными ветвями: он говорит, что следующий ПК будет ссылаться на инструкцию на 4 байта после текущей - что для (нормального) последовательного потока, ПК шагает вперед на 4 байта за раз.

Выражение PC = PC + 4 + branch address несколько неверно - оно должно сказать PC = PC + 4 + offset, где смещение является непосредственным в инструкции I-типа, более конкретно, подписанным(знак увеличен с 16 бит до 32 бит) немедленно * 4.

В этой формуле PC в правой части = относится к текущей инструкции: адресbeq инструкция, в то время как PC на левой стороне относится к следующему ПК, выполняемому после beq. Эта формула описывает адрес инструкции, которая должна выполняться следующим образом, когда берется ветвь, поскольку это условная ветвь (если ветвь не берется, то PC = PC + 4 описывает последовательное выполнение).

Для условных ветвей значение длянепосредственное значение -1 будет переходить к себе, 0 - к следующей инструкции, а 1 - пропустить одну инструкцию вперед.

...