Регистры PC и RPC. Регистр ST0, формат и назначение битов. Поразрядные поля регистра состояния ST1

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

31. Регистры PC и RPC.

Регистр - программный счетчик  (PC) всегда указывает на команду, которая в настоящее время обрабатывается – команда, которая только достигла фазы декодирования D2 конвейера. Как только команда достигает этой фазы конвейера, ее выполнение не может быть прервано сигналами прерываний.

Счетчик программного возврата (RPC). Когда операция вызова подпрограммы c использованием команды LCR выполнена, адрес возврата сохраняется в регистре RPC, а старое значение RPC сохраняется в стеке (в двух 16-разрядных операциях). Когда операция возврата из подпрограммы LRETR выполнена, адрес возврата считывается из регистра RPC, а значение из стека записывается в регистр RPC (в двух 16-разрядных операциях). Другие команды вызова подпрограмм не используют регистр RPC.

 32. Регистр ST0, формат и назначение битов.

C28x имеет два регистра состояния ST0 и ST1, которые содержат различные биты флагов и служебные биты. Эти регистры могут быть сохранены и загружены из памяти, чтобы статус ЦСП был сохранен и восстановлен в процессе выполнения  подпрограмм.

Регистры состояния организованы в соответствии с тем, как их содержимое изменяется в конвейере. Биты ST0 изменяются в фазе X конвейера; биты ST1 – в  фазе D2.

Поразрядные поля регистра состояния ST0:

OVC/OVCU (биты ST010-15) – счетчик переполнений. Режим установки этих флагов активен, когда выключен режим переполнения (флаг OVM = 0).

Счетчик переполнений ведет себя неодинаково для знаковых и беззнаковых операций.

Для знаковых операций (OVC), счетчик переполнения – 6-разрядный знаковый счетчик с амплитудой от -32 до 31. Когда происходит переполнение ACC в положительном направлении (от 7FFF FFFF16 до 8000 000016), OVC будет увеличен на 1. Когда происходит переполнение ACC в отрицательном направлении (от 8000 000016 до 7FFF FFFF16), OVC будет уменьшен на 1.

Для операций без знака (OVCU), счетчик будет инкрементирован при сложении, когда в аккумуляторе произошел перенос и декрементирован при вычитании, когда в аккумуляторе произошел заем.

При увеличении OVC после значения, равного 31, происходит его переполнение в значение -32. При уменьшении OVC из значения -32 происходит обратное переполнение в значение 31. При сбросе, OVC очищается. На OVC воздействуют переполнения только в регистре ACC, за исключением команд сравнения.

PM (бит ST07-9) – биты режима сдвига, задают сдвиговый режим выходных операций в регистре произведения P. Результат сдвига попадает в АЛУ или в память. После начальной установки все биты PM сброшены в 0.

V (бит ST06) – флаг переполнения. Если результат операции вызывает переполнение в регистре, хранящем результат, флаг V будет установлен и «защелкнут». Если переполнение не происходит, V не изменяется. Флаг V защелкнут, пока не будет очищен сбросом или командой условного перехода, которая проверяет V. Такой условный переход очищает V независимо от того, является ли проверенное условие (V = 0 или V = 1) истинным.

Переполнение происходит в ACC (и V установлен) если результат сложения или вычитания не может быть размещен в пределах диапазона знаковых чисел – от  8000 000016  до 7FFF FFFF16.

Переполнение происходит в АH, AL, или другом 16-разрядном регистре или в ячейке памяти, если результат сложения или вычитания не может быть размещен в пределах от 800016 до 7FFF16.

Команды CMP, CMPB и CMPL не воздействуют состояние флага V.

N (бит ST05) – флаг знака. N установлен, если результат операции – отрицательное число или сброшен, если результат – положительное число. После сброса N сброшен в 0. Если бит 31 ACC равен 0, ACC – положителен; если бит 31 равен 1, ACC отрицателен. Результат АH, AL, и других 16-разрядных регистров или данных в ячейках памяти также проверяются на отрицательное условие. Тогда значение бита 15 – знаковый разряд (1 указывает на отрицательное, 0 указывает на положительное число). Команда TEST ACC устанавливает флаг N, если значение в ACC отрицательно. Иначе команда сбрасывает флаг N.

Z (ST04) – флаг нуля. Z установлен, если результат некоторых операций – 0 или сброшен, если результат отличается от нуля. Это применяется к результатам, которые получены в ACC, АH, AL, другом регистре, или в ячейке памяти. После сброса, Z сброшен. Команда TEST ACC устанавливает Z, если значение в ACC – 0, иначе сбрасывает Z.

C (бит ST03) – флаг переноса. Этот флаг показывает, когда сложение, инкремент генерируют перенос, или когда вычитание, сравнение, декремент генерируют заем. Этот флаг также устанавливают операции программного сдвига ACC (команды ROR, ROL) и аппаратные сдвиги (barrel shift) в ACC, АH, и AL. В результате сложения/инкремента, C будет установлен, если генерируется перенос; иначе C будет сброшен. Имеется одно исключение: если используется команда ADD со сдвигом 16 (ADD ACC,loc16<<shift), C может устанавливаться, но не может  сбрасываться.

В результате вычитания/декремента/сравнения, C будет сброшен, если вычитание генерирует перенос; иначе C будет установлен. Имеется одно исключение: если используется команда SUB со сдвигом 16 (SUB ACC,loc16<<shift),  C может сбрасываться, но не может устанавливаться.

Этот бит может быть индивидуально установлен и очищен командами SETC C  и  CLRC C соответственно.  После начального сброса,  C сброшен в 0.

TC (бит ST02) – флаг тест/управление. Этот бит показывает результат тестирования, выполненного любой TBIT-командой (тест- бит) или командой NORM (нормализация).

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.