
- •Память с адресной организацией (с произвольным доступом).
- •Непосредственная адресация
- •Когда может произойти стековый доступ к памяти
- •Как происходит стековый доступ к памяти
- •Регистровый файл
- •Счетчик команд
- •Идея базовой адресации – достижение позиционной независимости. (к 50-51)
- •Непосредственная адресация
- •3. Проверки и передача управления.
- •3.4. Команда организации цикла
- •Переполнение при действиях над целыми числами.
- •Целые со знаком: дополнительный код
- •Сложение и вычитание
- •Поддержка действий с повышенной разрядностью
- •Как перейти от представления с однарной точностью к представлению с двойной ?
- •Особые случаи при действиях над числами пт
- •Неточный результат - округление и его виды
- •Численное антипереполнение, денормализованные и ненормализованные числа, псевдонуль.
- •Действия с бесконечностями
- •Регистр состояния программы (Program status register)
- •Счетчик команд
- •Способы синхронизации: программный опрос состояния versus прерывания
- •Таймерная подсистема
- •Основной счетчик
- •Техника измерения времени (чтение счетчика)
- •Ассоциативная память
Переполнение при действиях над целыми числами.
Когда может произойти переполнение разрядной сетки ? (Смотрим на простых примерах - на сложении.). На нашей круговой диаграмме представления чисел в ограниченной разрядной сетке действиям сложения и вычитания чисел можно сопоставить действия сложения и вычитания углов.
При сложении беззнаковых чисел - переполнение происходит, если при действии пересекается граница разрыва 11...11 00...00.
При сложении чисел со знаком: если знаки разные - переполнения быть не может.
Если знаки одинаковые, и знак результата...
Совпадает со знаками операндов - переполнения нет противоположен знаку операндов - переполнение есть.
При действиях над числами со знаком переполнение происходит, если пересекаем границу разрыва 011..11 - 10..00. Для регистрации этих фактов в процессоре обычно делают два триггера (чаще всего они входят в состав регистра состояний). Содержимое этих триггеров называют битами признаков или флагами. Флаги переключаются автоматически при выполнении действий в АЛУ.
C (или cf -от CARRY - перенос) регистрирует при выполнении многих операций перенос/заем из старшего (знакового) разряда за границу разрядной сетки.
V (или of от OVerFlow - переполнение) - регистрирует перенос/заем в старший (знаковый) разряд.
Если диапазона представимых значений не хватает, можно искусственно увеличить разрядность - хранить величины в нескольких машинных словах - тогда действия над ними, даже такие простые, как сложение и вычитание потребуют большего количества действий.
В некоторых процессорах используется арифметика «с насыщением» (saturation)/
Какое действие надо выполнить с двоичным однобайтовым операндом, чтобы представить его в двухбайтовой разрядной сетке:
хз
Как, глядя на двоичное представление целочисленного результата последней выполненной команды, определить, знаковый это операнд или беззнаковый
Никак, инфа 100%
Какое действие надо выполнить с двоичным однобайтовым операндом, чтобы представить его в четырехбайтовой разрядной сетке (название операции и в чем она состоит)?
хз
Что следует сделать, чтобы поменять знак двоичного числа при использовании дополнительного кода?
Целые со знаком: дополнительный код
Диапазон представимых значений в N-битовой сетке
HEX |
BIN |
DEC |
К предыд. зн. |
|
10...00*) |
100...000 |
-2N-1 |
-1 |
Наименьшее отрицательное число |
..... |
..... |
..... |
|
|
1..FFE |
|
-2 |
-1 |
|
1..FFF |
111...111 |
-1 |
-1 |
|
00...00 |
000...000 |
0 |
-1 |
Нуль |
00...01 |
000...001 |
1 |
-1 |
|
00...02 |
000...010 |
2 |
-1 |
|
..... |
..... |
|
|
|
0..FFF |
011...111 |
2N-1-1 |
-1 |
Наибольшее положительное число |
Естественный способ представления отрицательных чисел можно получить, последовательно вычитая 1 из нуля. Полученное представление отрицательных чисел называется дополнительным кодом (английский эквивалентный термин: two’scomplement). Представление чисел со знаком в дополнительном коде также будет циклическим.
Обратите внимание на то, что в выбранной разрядной сетке используются для представления чисел все кодовые комбинации, т.е. любой последовательности единиц и нулей в коде соответствует какое-то числовое значение. (При представлении чисел в форматах плавающей точки это будет не так !)
Граница между положительными и отрицательными числами на числовом круге выбирается так, чтобы диапазон был симметричен относительно нуля. Однако полной симметрии не получается. Наименьшее отрицательное число не имеет положительного эквивалента. Кроме того, при такой границе, как показано в таблице и на круговой диаграмме, старший бит кода играет роль знакового: 0 соответствует положительным числам, а 1 - отрицательным.
Как поменять знак числа: -k = -1 -k +1 = (-1 -k) +1
Действие (-1 -k) всегда возможно, и никогда не требует заема. Его можно реализовать инвертированием кода. Это легко увидеть, выполнив вычитание «столбиком»: результат есть инверсия вычитаемого:
-
1 1 1 1 . . . 1 1 _1 0 0 1 . . . 0 1_ - вычитаемое 0 1 1 0 . . . 1 0 - результат – инверсия вычитаемогоСмена знака наименьшего отрицательного числа 100..00 даст неверный результат. Это следствие того факта, что диапазон представимых значений в дополнительном коде несимметричен (отрицательных чисел на одно больше, нежели положительных). По этой причине это значение часто используется для специальных целей (например в стандарте на числа с плавающей точкой для изображения значения «неопределенность»).
Опишите особенности реализации команд целочисленной арифметики в цифровых устройствах.