
- •Память с адресной организацией (с произвольным доступом).
- •Непосредственная адресация
- •Когда может произойти стековый доступ к памяти
- •Как происходит стековый доступ к памяти
- •Регистровый файл
- •Счетчик команд
- •Идея базовой адресации – достижение позиционной независимости. (к 50-51)
- •Непосредственная адресация
- •3. Проверки и передача управления.
- •3.4. Команда организации цикла
- •Переполнение при действиях над целыми числами.
- •Целые со знаком: дополнительный код
- •Сложение и вычитание
- •Поддержка действий с повышенной разрядностью
- •Как перейти от представления с однарной точностью к представлению с двойной ?
- •Особые случаи при действиях над числами пт
- •Неточный результат - округление и его виды
- •Численное антипереполнение, денормализованные и ненормализованные числа, псевдонуль.
- •Действия с бесконечностями
- •Регистр состояния программы (Program status register)
- •Счетчик команд
- •Способы синхронизации: программный опрос состояния versus прерывания
- •Таймерная подсистема
- •Основной счетчик
- •Техника измерения времени (чтение счетчика)
- •Ассоциативная память
Как перейти от представления с однарной точностью к представлению с двойной ?
Для положительных чисел просто - старшее слово - нулевое.
Для отрицательных - операция расширения знака (SignExtention). Ее действие состоит в заполнении старшего слова знаковыми битами младшего. В системе команд I*86 есть команды cbw преобразования 8 бит16 бит, cwdпреобразования 16 бит 32 бит и cdq(ConvertBytetoWordили WordtoDoubleили DoubletoQuad).
В некоторых архитектурах операция знака может быть совмещена воперацией загрузки регистра. Так сделано в архитектуре ARM
Опишите особенности команд целочисленного умножения в цифровых компьютерах.
Умножение/деление на степень основания системы счисления с помощью операции сдвига.
Частный случай умножения – умножение на степень 2-х, (т.е. на степень основания системы счисления) можно реализовать сдвигом операнда на соответствующее число разрядов влево для положительной степени или вправо для отрицательной. Для этого в системе команд может иметься команда арифметического сдвига. При арифметическом сдвиге вправо (деление на степень двойки) знаковый разряд числа сохраняет свое значение неизменным, а при сдвиге влево (умножение на степень двойки) правый конец операнда заполняется нулями. Если при сдвиге влево знаковый разряд операнда изменял свое значение – это означает, что при умножении произошло переполнение (выход за пределы диапазона представимых значений), это вызывает изменение флагов cf и/илиof
В системах команд почти всех современных процессорах есть команды умножения и деления, однако для знаковых и для беззнаковых операндов команды умножения (в отличие от команд сложения и вычитания) различаются. Это означает, что если два одни и те же двоичных слова интерпретировать в одном случае как беззнаковые сомножители, а в другом как сомножители со знаком, то результаты умножения в этих двух случаях будут различными по значению, а, следовательно, будут различаться и их двоичные представления.
Например, умножаем две кодовые комбинации (в 4-разрядной сетке):
1001 0011
При беззнаковой интерпретации это 9 3 = +27 0001 1011
При знаковой интерпретации это (-7) 3 = -21 1110 1011
В чем состоит особенность реализации команд целочисленного деления в ограниченной разрядной сетке ?
Деление
(2n) / (n) = (n)q(n)r, т.е. при целочисленном делении формируется не только частное, но и остаток, разрядность делимого вдвое больше, чем разрядности делителя, частного и остатка. Однако в борьбе с переполнением при формировании результата деления даже такое соотношение разрядностей не всегда помогает. Если делимое очень большое, а делитель маленький, частное выйдет за границу n-битовой сетки.
Представление данных в формате плавающей точки. Его особенности. Для чего в стандарт плавающей точки введены специальные значения (бесконечности, псевдонуль и т.п.).
Отметим снова некоторые свойства целочисленного формата представления величин:
а) разрешающая способность (минимальное изменение величины, которое можно отобразить), равна 1 (при любом числе разрядов n).
б) диапазон представимых значений однозначно определяется количеством разрядов n в разрядной сетке: 2n, т.е. разрешающая способность и диапазон связаны однозначно при данном количестве битов в представлении числа.
Число в формате ПТ можно представить как Мантисса основание (порядок).
Если определенным образом выбрано нормализованное представление, то при его записи в двоичном виде старший разряд мантиссы всегда двоичная 1 - ее можно не запоминать - сэкономим бит !!!
В чем состоит процедура нормализации: двигаем мантиссу, пока не получим нормализованного представления, и при этом корректируем порядок, для того, чтобы сохранить величину числа неизменной.
Пример: число 101101.110001000...b * 2d1010
Пусть выбрано нормализованное представление, в котором мантисса содержит один значащий разряд в целой части (всегда = 1).
При нормализации сдвигаем мантиссу вправо на 5 разрядов (это эквивалентно делению мантиссы на 25=32, и корректируем порядок (увеличиваем его на 5d=101b).
Нормализованное представление: 1.011011100010...b *2d1111.
Опуская неявный бит, получим мантиссу: 011011100010..., порядок ..01111.
Важное замечание 1: при нормализации, когда приходится сдвигать мантиссу вправо, возможна потеря точности при выходе младших битов мантиссы за границу ее разрядной сетки.
Важное замечание 2: нормализация не всегда возможна, если при коррекции порядка происходит выход за границу его разрядной сетки. Если получившееся число слишком велико, его просто нельзя представить в выбранном формате ПТ. Если число слишком мало, то его можно представить, но лишь в денормализованной форме.