🗊 Презентация Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие

Нажмите для полного просмотра!
Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №1 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №2 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №3 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №4 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №5 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №6 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №7 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №8 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №9 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №10 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №11 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №12 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №13 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №14 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №15 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №16 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №17 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №18 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №19 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №20 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №21 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №22 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №23 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №24 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №25 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №26 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №27 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №28 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №29 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №30 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №31 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №32 Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие, слайд №33

Содержание

Вы можете ознакомиться и скачать презентацию на тему Числа со знаком. Операции в языке С. Ассемблерные команды, им соответствующие. Доклад-сообщение содержит 33 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Есть ли у вас вопросы?
Описание слайда:
Есть ли у вас вопросы?

Слайд 2


Краткое содержание предыдущей серии Как в ассемблере cortex m3 организована работа с памятью? Зачем нужны длинные команды? Какое бывает поведение в...
Описание слайда:
Краткое содержание предыдущей серии Как в ассемблере cortex m3 организована работа с памятью? Зачем нужны длинные команды? Какое бывает поведение в С? Что такое отступы?

Слайд 3


Краткое содержание этой серии Числа со знаком Операции в языке С Ассемблерные команды, им соответствующие
Описание слайда:
Краткое содержание этой серии Числа со знаком Операции в языке С Ассемблерные команды, им соответствующие

Слайд 4


Комментарии в Кейле Ne pishite kommentarii translitom Чтобы включить русский язык: edit -> configuration -> encoding (UTF8) edit -> configuration ->...
Описание слайда:
Комментарии в Кейле Ne pishite kommentarii translitom Чтобы включить русский язык: edit -> configuration -> encoding (UTF8) edit -> configuration -> colors&fonts -> c/c++ editor -> font (courier new) Or just comment your code in english, that would be nice.

Слайд 5


Двоичные числа Допустим, у нас есть сетка из 4 разрядов. Сколько различных чисел мы можем хранить с ее помощью? 24 т.е. 16 Для чисел без знака...
Описание слайда:
Двоичные числа Допустим, у нас есть сетка из 4 разрядов. Сколько различных чисел мы можем хранить с ее помощью? 24 т.е. 16 Для чисел без знака диапазон выглядит вот так:

Слайд 6


Двоичные числа Допустим, у нас есть сетка из 4 разрядов. Но мы хотим хранить числа со знаком. Сколько различных чисел мы сможем хранить? по-прежнему...
Описание слайда:
Двоичные числа Допустим, у нас есть сетка из 4 разрядов. Но мы хотим хранить числа со знаком. Сколько различных чисел мы сможем хранить? по-прежнему 24 т.е. 16 Но диапазон будет неизбежно другой! Например, 8 отрицательных чисел и 8 неотрицательных.

Слайд 7


Как хранить знак? Как хранить знак, если у вас есть только биты? Например, назначить один бит знаковым! А в остальных хранить модуль числа. Этот...
Описание слайда:
Как хранить знак? Как хранить знак, если у вас есть только биты? Например, назначить один бит знаковым! А в остальных хранить модуль числа. Этот способ называется «прямой код» - «sign and magnitude».

Слайд 8


Прямой код Плюсы: «Интуитивно понятен для человека» Удобен при программировании на ассемблере Используется в стандарте IEEE 754 – т.е. для...
Описание слайда:
Прямой код Плюсы: «Интуитивно понятен для человека» Удобен при программировании на ассемблере Используется в стандарте IEEE 754 – т.е. для представления чисел с плавающей точкой Минусы: Два способа записи для числа 0 (+0 и -0) Сложная схемотехника для арифметических операций с числами разного знака Позиция знакового бита зависит от количества разрядов (т.е. от типа переменной). Но можно сделать знаковым нулевой бит!

Слайд 9


А как еще можно хранить знак? Что должно быть? -1 + 1 должно быть равно 0 -2 + 1 должно быть равно -1 (и далее, по индукции) Вспоминаем о свойствах...
Описание слайда:
А как еще можно хранить знак? Что должно быть? -1 + 1 должно быть равно 0 -2 + 1 должно быть равно -1 (и далее, по индукции) Вспоминаем о свойствах арифметики на ограниченной разрядной сетке.

Слайд 10


Сложение в ограниченной разрядной сетке Допустим, что у нас есть 4 двоичных разряда. В них можно представить только 16 разных чисел. А что будет,...
Описание слайда:
Сложение в ограниченной разрядной сетке Допустим, что у нас есть 4 двоичных разряда. В них можно представить только 16 разных чисел. А что будет, если мы возьмем число 15 и прибавим к нему 1? Должно получится 16, но для этого нужен пятый разряд. А его нет. Поэтому бит просто «потеряется». Это называется переполнение (сверху) – integer overflow.

Слайд 11


Сложение в ограниченной разрядной сетке. Получилось, что в сетке из четырех разрядов 15 + 1 = 0. Почему бы не отобрать двоичное представление числа...
Описание слайда:
Сложение в ограниченной разрядной сетке. Получилось, что в сетке из четырех разрядов 15 + 1 = 0. Почему бы не отобрать двоичное представление числа 15 и не сказать, что так мы теперь кодируем -1? А как представить -2? Так, чтобы -2+1 было равно -1. По индукции, получаем следующее

Слайд 12


11112 + 1 = 0 это -1 + 1 11112 + 1 = 0 это -1 + 1 11102 + 1 = 1111 2 это -2 + 1 11012 + 1 = 1110 2 это -3 + 1 ... но нужно ведь когда-то остановится!...
Описание слайда:
11112 + 1 = 0 это -1 + 1 11112 + 1 = 0 это -1 + 1 11102 + 1 = 1111 2 это -2 + 1 11012 + 1 = 1110 2 это -3 + 1 ... но нужно ведь когда-то остановится! Удобно, если количество отрицательных и неотрицательных чисел одинаковое. Тогда наименьшее отрицательное число будет 10002 – равное -8 Оставшиеся числа отдадим под неотрицательные.

Слайд 13


Дополнительный код
Описание слайда:
Дополнительный код

Слайд 14


Дополнительный код На английском – «two’s complement» – «дополнение до двух». Плюсы: Удобная арифметика – вычитание через сложение! Единственная...
Описание слайда:
Дополнительный код На английском – «two’s complement» – «дополнение до двух». Плюсы: Удобная арифметика – вычитание через сложение! Единственная запись числа 0 Простая смена знака схемотехникой (инвертировать все биты и прибавить 1) Единица в старшем бите означает, что число отрицательное Минусы: Не очень-то удобно для человека Отрицательных чисел на 1 больше чем положительных Запись одинаковых чисел зависит от разрядной сетки!

Слайд 15


Отрицательные числа Но это не единственные способы! Обратный код Нега-двоичная система (по основанию -2) ... Сюрприз: Стандарт языка С не описывает,...
Описание слайда:
Отрицательные числа Но это не единственные способы! Обратный код Нега-двоичная система (по основанию -2) ... Сюрприз: Стандарт языка С не описывает, как именно хранятся числа со знаком!

Слайд 16


Арифметические операции в С +, -, *, / и % их комбинации с = (+=, -+ и т.д.) ++ и -- (пост- и пред-) сравнения индекс (a[3]), который на самом деле...
Описание слайда:
Арифметические операции в С +, -, *, / и % их комбинации с = (+=, -+ и т.д.) ++ и -- (пост- и пред-) сравнения индекс (a[3]), который на самом деле сложение и разыменование % - взятие остатка от деления

Слайд 17


Арифметика в ассемблере Целочисленная (в Cortex M3 «родная») С плавающей точкой (в Cortex M3 организована программно) Векторная (в Cortex M3...
Описание слайда:
Арифметика в ассемблере Целочисленная (в Cortex M3 «родная») С плавающей точкой (в Cortex M3 организована программно) Векторная (в Cortex M3 отсутствует) SIMD (single instruction multiple data) (в Cortex M3 отсутствует) Дальше речь только о целочисленной арифметике, для которой есть специализированные инструкции

Слайд 18


Арифметика в ассемблере Сложение ADD r0, r1, r2 – сложение с переполнением (overflow) (короткая и длинная версии) ADDW – длинная версия, поддерживает...
Описание слайда:
Арифметика в ассемблере Сложение ADD r0, r1, r2 – сложение с переполнением (overflow) (короткая и длинная версии) ADDW – длинная версия, поддерживает 12-битовый непосредственный операнд (wide) ADDS – сложение с обновлением регистра состояния (Status); вообще S – это постфикс ADC – сложение с учетом флага Carry (переноса) ADCS - ? ADDWS и ADDWC - ... отсутствуют.

Слайд 19


Арифметика в ассемблере Что еще за флаг Carry? Пусть мы складываем два десятичных числа из 3 цифр. Сколько цифр нам понадобиться (в худшем случае),...
Описание слайда:
Арифметика в ассемблере Что еще за флаг Carry? Пусть мы складываем два десятичных числа из 3 цифр. Сколько цифр нам понадобиться (в худшем случае), чтобы записать результат? 4. Почему? Потому что в худшем случае: 999 + 999 = 1998 Это работает и в двоичном коде, ведь 1+1 = 10.

Слайд 20


Арифметика в ассемблере Что еще за флаг Carry? Флаг Carry (он же бит переноса) и есть этот дополнительный двоичный разряд при сложении. Флаг Carry...
Описание слайда:
Арифметика в ассемблере Что еще за флаг Carry? Флаг Carry (он же бит переноса) и есть этот дополнительный двоичный разряд при сложении. Флаг Carry находится в регистре состояний. Префикс S у команды означает, что «команда влияет на регистр статуса» – в том числе, может установить флаг Carry Т.е. ADDS r0, r1,r2 – складывает содержимое двух регистров и может установить флаг переноса. Происходит точное сложение, без выхода за разрядную сетку!

Слайд 21


Арифметика в ассемблере Что еще за флаг Carry? ADC – сложение с учетом бита переноса (он просто прибавляется к слагаемым). И зачем это нужно? Чтобы...
Описание слайда:
Арифметика в ассемблере Что еще за флаг Carry? ADC – сложение с учетом бита переноса (он просто прибавляется к слагаемым). И зачем это нужно? Чтобы складывать 64-битные (или еще более длинные) числа! Сначала складываются младшие 32 бита (с выставлением бита переноса), потом складываются старшие 32 бита с учетом переноса!

Слайд 22


Арифметика в ассемблере Какие еще есть флаги? С – флаг Carry (перенос) N – флаг Negative (отрицательный результат) Z – флаг Zero (результат 0) V –...
Описание слайда:
Арифметика в ассемблере Какие еще есть флаги? С – флаг Carry (перенос) N – флаг Negative (отрицательный результат) Z – флаг Zero (результат 0) V – флаг oVerflow (знаковое переполнение, «неверная» смена знака) Есть и другие, но к арифметике они не относятся

Слайд 23


Примеры Для простоты, пусть у нас есть регистры из 4 бит Сложение без переноса (ADD):
Описание слайда:
Примеры Для простоты, пусть у нас есть регистры из 4 бит Сложение без переноса (ADD):

Слайд 24


Примеры Для простоты, пусть у нас есть регистры из 4 бит Сложение с обновлением регистра состояний (ADDS):
Описание слайда:
Примеры Для простоты, пусть у нас есть регистры из 4 бит Сложение с обновлением регистра состояний (ADDS):

Слайд 25


Примеры Пусть у нас есть регистры из 4 бит, но мы хотим складывать 8-битные числа. Пусть мы хотим сложить 0011 1111 + 0001 0001 (63+17). Складывать...
Описание слайда:
Примеры Пусть у нас есть регистры из 4 бит, но мы хотим складывать 8-битные числа. Пусть мы хотим сложить 0011 1111 + 0001 0001 (63+17). Складывать придется по частям. Сначала младшие биты, потом старшие

Слайд 26


Арифметика в ассемблере Вычитание SUB r0, r1, r2 – вычитание, короткая и длинная версии (r0 = r1-r2) c переполнением снизу (underflow) SUBW – длинная...
Описание слайда:
Арифметика в ассемблере Вычитание SUB r0, r1, r2 – вычитание, короткая и длинная версии (r0 = r1-r2) c переполнением снизу (underflow) SUBW – длинная версия с 12-битовым непосредственным операндом SUBS – вычитание с обновлением регистра состояния SBC – вычитанием с учетом Carry (если carry = 0 – вычесть еще 1) RSB r0,r1,r2 –> r0 = r2-r1 (вычитание наоборот). SBCS, RSBS – понятно RSBC, RSBW, SUBWS.. - отсутствуют

Слайд 27


Арифметика в ассемблере Сложение и вычитание А где в сложении и вычитании учитывался знак? А нигде. Но почему? Потому что целые отрицательные числа в...
Описание слайда:
Арифметика в ассемблере Сложение и вычитание А где в сложении и вычитании учитывался знак? А нигде. Но почему? Потому что целые отрицательные числа в архитектуре ARMv7 хранятся в дополнительном коде! А числа в дополнительном коде можно складывать и вычитать, не обращая внимания на знак.

Слайд 28


Арифметика в ассемблере Умножение Допустим, мы умножаем 2 трехзначных числа. Сколько потребуется цифр, чтобы хранить результат? 6, к сожалению...
Описание слайда:
Арифметика в ассемблере Умножение Допустим, мы умножаем 2 трехзначных числа. Сколько потребуется цифр, чтобы хранить результат? 6, к сожалению Почему? Потому что 999*999 = 998 001 Вывод: int32+int32 поместится в int32 (и бит carry) int32*int32 поместится только в int64

Слайд 29


Арифметика в ассемблере Умножение
Описание слайда:
Арифметика в ассемблере Умножение

Слайд 30


Арифметика в ассемблере Деление Делить в дополнительном коде, не обращая внимания на знак, к сожалению, нельзя. На ноль тоже делить нельзя...? Но при...
Описание слайда:
Арифметика в ассемблере Деление Делить в дополнительном коде, не обращая внимания на знак, к сожалению, нельзя. На ноль тоже делить нельзя...? Но при делении можно не беспокоится, что результат не влезет в разрядную сетку.. правда? К сожалению, нельзя: int16_t a = -32768; int16_t b = -1; a = a/b; // ???

Слайд 31


Арифметика в ассемблере Деление UDIV r0, r1, r2 r0 = r1/r2 (беззнаковое деление) SDIV r0,r1,r2 r0 = r1/r2 (знаковое деление) На ноль делить нельзя....
Описание слайда:
Арифметика в ассемблере Деление UDIV r0, r1, r2 r0 = r1/r2 (беззнаковое деление) SDIV r0,r1,r2 r0 = r1/r2 (знаковое деление) На ноль делить нельзя. Деление целочисленное, поэтому 1/2 = 0. А как же сделать операцию % ? a % b эквивалентно temp = a/b; result = a - temp*b; (так вот зачем нужен MLS!)

Слайд 32


Деление в С Помните: целочисленное деление на ноль – undefined behavior % (остаток от деления) для отрицательных чисел может быть неожиданным для вас...
Описание слайда:
Деление в С Помните: целочисленное деление на ноль – undefined behavior % (остаток от деления) для отрицательных чисел может быть неожиданным для вас 30 % 4 = -30 % -4 = -30 % 4 = 30 % -4 = Стандарт определяет его как implementation-defined.

Слайд 33


Сравнения в ассемблере CMP r0, r1 temp = r0 – r1, обновить регистр состояний, отбросить temp (аналогично SUBS temp, r0,r1) CMN r0,r1 temp = r0 + r1,...
Описание слайда:
Сравнения в ассемблере CMP r0, r1 temp = r0 – r1, обновить регистр состояний, отбросить temp (аналогично SUBS temp, r0,r1) CMN r0,r1 temp = r0 + r1, обновить регистр состояний, отбросить temp (аналогично ADDS temp, r0,r1) TEQ r0,r1 (test equality), аналог ==, компилятором используется редко



Похожие презентации
Mypresentation.ru
Загрузить презентацию