🗊Презентация Тип переменной и ее адрес. Циклы и ветвления

Нажмите для полного просмотра!
Тип переменной и ее адрес. Циклы и ветвления, слайд №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Тип переменной и ее адрес. Циклы и ветвления, слайд №34Тип переменной и ее адрес. Циклы и ветвления, слайд №35Тип переменной и ее адрес. Циклы и ветвления, слайд №36Тип переменной и ее адрес. Циклы и ветвления, слайд №37

Содержание

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

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


Слайд 1





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

Слайд 2





Краткое содержание предыдущей серии
Как в ассемблере осуществляется сложение и вычитание?
В чем опасность умножения?
А деления?
Как в ассемблере осуществляется сравнение двух чисел?
Описание слайда:
Краткое содержание предыдущей серии Как в ассемблере осуществляется сложение и вычитание? В чем опасность умножения? А деления? Как в ассемблере осуществляется сравнение двух чисел?

Слайд 3





Краткое содержание этой серии
Разбор полетов
Как же все-таки связан тип переменной и ее адрес
Подробнее о сравнениях и флагах
Как в ассемблере осуществляются циклы и ветвления
Операции языка С (продолжение)
Описание слайда:
Краткое содержание этой серии Разбор полетов Как же все-таки связан тип переменной и ее адрес Подробнее о сравнениях и флагах Как в ассемблере осуществляются циклы и ветвления Операции языка С (продолжение)

Слайд 4





Оформление
Описание слайда:
Оформление

Слайд 5





Вот так тоже не надо
Описание слайда:
Вот так тоже не надо

Слайд 6





Вот так тоже не надо
Описание слайда:
Вот так тоже не надо

Слайд 7





Вот так тоже не надо
Описание слайда:
Вот так тоже не надо

Слайд 8





Отступы
Описание слайда:
Отступы

Слайд 9





Отступы
Описание слайда:
Отступы

Слайд 10





Отступы
Описание слайда:
Отступы

Слайд 11





Отступы
Описание слайда:
Отступы

Слайд 12





Отступы
Описание слайда:
Отступы

Слайд 13





Как же связан тип переменной и ее адрес?
Адрес переменной кратен ее размеру в байтах!
Это называется «выравнивание» - alignment
Описание слайда:
Как же связан тип переменной и ее адрес? Адрес переменной кратен ее размеру в байтах! Это называется «выравнивание» - alignment

Слайд 14





Зачем нужно выравнивание?
Вспоминаем, как устроена память
Описание слайда:
Зачем нужно выравнивание? Вспоминаем, как устроена память

Слайд 15





Выравнивание
Как выглядит невыровненный доступ?
Описание слайда:
Выравнивание Как выглядит невыровненный доступ?

Слайд 16





Последствия
Выровненный доступ быстрее (особенно если есть кэш-память)
Невыровненный доступ поддерживается не всегда (в Cortex M3 – только к 4 и 2 байтам)
Байт всегда выровнен
Для выравнивания требуется больше памяти?
Нет, порядок расположения переменных компилятор может менять при оптимизации
Padding в структурах
Описание слайда:
Последствия Выровненный доступ быстрее (особенно если есть кэш-память) Невыровненный доступ поддерживается не всегда (в Cortex M3 – только к 4 и 2 байтам) Байт всегда выровнен Для выравнивания требуется больше памяти? Нет, порядок расположения переменных компилятор может менять при оптимизации Padding в структурах

Слайд 17





Что такое padding?
Порядок элементов внутри структуры менять нельзя (даже при оптимизации)
Но элементы должны быть выровнены!
Итог: размер структуры не всегда равен сумме размеров ее элементов
Padding – пустые байты между элементами
Обычно есть спец. слова вроде __packed, чтобы паддинг убрать (не стандартизированные)
Описание слайда:
Что такое padding? Порядок элементов внутри структуры менять нельзя (даже при оптимизации) Но элементы должны быть выровнены! Итог: размер структуры не всегда равен сумме размеров ее элементов Padding – пустые байты между элементами Обычно есть спец. слова вроде __packed, чтобы паддинг убрать (не стандартизированные)

Слайд 18





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

Слайд 19





Сравнения в ассемблере
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), аналог ==, компилятором используется редко
Описание слайда:
Сравнения в ассемблере 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), аналог ==, компилятором используется редко

Слайд 20





Как работает сравнение и зачем их два?
Мы хотим сравнить два числа А и В. 
Как узнать, какое из них больше с помощью арифметики?
Вычесть одно из другого! 
Если С = А-В отрицательное, значит А меньше В.
Команда CMP a,b это и делает (и обновляет регистр состояний).
Знак результата показывает флаг N (1 если Negative).
Описание слайда:
Как работает сравнение и зачем их два? Мы хотим сравнить два числа А и В. Как узнать, какое из них больше с помощью арифметики? Вычесть одно из другого! Если С = А-В отрицательное, значит А меньше В. Команда CMP a,b это и делает (и обновляет регистр состояний). Знак результата показывает флаг N (1 если Negative).

Слайд 21





А зачем CMN?
Вторым аргументом команды может быть регистр или число. Число должно лежать прямо в коде команды. 
А если это число отрицательное?
Из-за дополнительного кода в нем будет очень много единиц в старших битах.
Но A-(-B) = A+B!
CMN a,b – это сравнение a – (-b), через сложение. 
Если результат отрицательный, значит a < b. Флаг тот же.
Описание слайда:
А зачем CMN? Вторым аргументом команды может быть регистр или число. Число должно лежать прямо в коде команды. А если это число отрицательное? Из-за дополнительного кода в нем будет очень много единиц в старших битах. Но A-(-B) = A+B! CMN a,b – это сравнение a – (-b), через сложение. Если результат отрицательный, значит a < b. Флаг тот же.

Слайд 22





Что означает флаг V?
V – от слова oVerflow означает знаковое переполнение.
Зачем он нужен?
Знак при арифметических операциях может меняться неправильно.
Например:
int8_t a = -128; // 1000 0000 в двоичном коде
a = a-1; // чему равно а?
a будет равно +127, потому что -129 не влезает в один байт.
(можно сказать, что флаг С – тоже переполнение, только беззнаковое)
Описание слайда:
Что означает флаг V? V – от слова oVerflow означает знаковое переполнение. Зачем он нужен? Знак при арифметических операциях может меняться неправильно. Например: int8_t a = -128; // 1000 0000 в двоичном коде a = a-1; // чему равно а? a будет равно +127, потому что -129 не влезает в один байт. (можно сказать, что флаг С – тоже переполнение, только беззнаковое)

Слайд 23





Что означает флаг V?
Неверная смена знака – знаковое переполнение.
В языке С это undefined behavior.
При сравнениях это тоже может происходить (ведь сравнения – это вычитания).
Поэтому операции, которые используют результаты сравнений, проверяют и флаг V.
Описание слайда:
Что означает флаг V? Неверная смена знака – знаковое переполнение. В языке С это undefined behavior. При сравнениях это тоже может происходить (ведь сравнения – это вычитания). Поэтому операции, которые используют результаты сравнений, проверяют и флаг V.

Слайд 24





А какие команды используют результаты сравнений?
Где в языке С используется сравнение?
if – else
for, while, do-while
switch
Следовательно, команды ассемблера, которые реализуют циклы и ветвления, используют результаты сравнений.
В основном, это команды перехода (передачи управления).
Описание слайда:
А какие команды используют результаты сравнений? Где в языке С используется сравнение? if – else for, while, do-while switch Следовательно, команды ассемблера, которые реализуют циклы и ветвления, используют результаты сравнений. В основном, это команды перехода (передачи управления).

Слайд 25





Переходы в языке С
if – else
for
while
do – while
switch
goto
break, continue, return
вызов функции
Описание слайда:
Переходы в языке С if – else for while do – while switch goto break, continue, return вызов функции

Слайд 26





Несколько слов о goto
goto – оператор безусловного перехода:
... some code...
P:      // метка
... some code..
goto P; // безусловный переход к метке Р
Этот оператор есть в огромном количестве языков программирования, но используется крайне редко.
Описание слайда:
Несколько слов о goto goto – оператор безусловного перехода: ... some code... P: // метка ... some code.. goto P; // безусловный переход к метке Р Этот оператор есть в огромном количестве языков программирования, но используется крайне редко.

Слайд 27





goto
    "В течение нескольких лет я знаком с точкой зрения, что качество программистов это убывающая функция от плотности операторов go to в коде, который они пишут. 
    Недавно я понял почему использование оператора go to имеет такой катастрофический эффект, и теперь я убежден, что оператор go to следует убрать из всех языков программирования "высокого уровня" (то есть из всех за исключением, возможно, машинного кода)...“
Эдсгер Дейкстра
Описание слайда:
goto "В течение нескольких лет я знаком с точкой зрения, что качество программистов это убывающая функция от плотности операторов go to в коде, который они пишут. Недавно я понял почему использование оператора go to имеет такой катастрофический эффект, и теперь я убежден, что оператор go to следует убрать из всех языков программирования "высокого уровня" (то есть из всех за исключением, возможно, машинного кода)...“ Эдсгер Дейкстра

Слайд 28





goto позволяет писать «спагетти-код»
Описание слайда:
goto позволяет писать «спагетти-код»

Слайд 29





Типичный сценарий использования goto
http://xkcd.com/292/
Описание слайда:
Типичный сценарий использования goto http://xkcd.com/292/

Слайд 30





Ветвление и циклы в ассемблере
Безусловные переходы
Условные переходы
Другие команды с условным исполнением
Сравнение с переходом
Команда IT (If-then), «придающая условность»
В некоторых ассемблерах есть спец. команды для циклов (напр. loop)
Описание слайда:
Ветвление и циклы в ассемблере Безусловные переходы Условные переходы Другие команды с условным исполнением Сравнение с переходом Команда IT (If-then), «придающая условность» В некоторых ассемблерах есть спец. команды для циклов (напр. loop)

Слайд 31





Условное исполнение
Что это такое?
Это когда команда выполняется по условию!
Какие бывают условия?
Сочетания флагов состояния!
Условие задается постфиксом. 
Список постфиксов см. cortex m3 user guide стр. 61 табл. 3-4
Описание слайда:
Условное исполнение Что это такое? Это когда команда выполняется по условию! Какие бывают условия? Сочетания флагов состояния! Условие задается постфиксом. Список постфиксов см. cortex m3 user guide стр. 61 табл. 3-4

Слайд 32





Условное исполнение
Примеры постфиксов и расшифровка:
LT – Less Then (если меньше, знаковое)
GE – Greater or Equal (если больше или равно, знаковое)
HI – Higher (если больше, беззнаковое)
NE – Not Equal (не равно)
MI – Minus (отрицательный результат)
Пример:
CMP         R3, #0x07; сравнить содержимое R3 и число 7
BGE          0x080003BA ; Если R3 >= 7 – перейти по адресу
MOVS      r0, #0x01
Описание слайда:
Условное исполнение Примеры постфиксов и расшифровка: LT – Less Then (если меньше, знаковое) GE – Greater or Equal (если больше или равно, знаковое) HI – Higher (если больше, беззнаковое) NE – Not Equal (не равно) MI – Minus (отрицательный результат) Пример: CMP R3, #0x07; сравнить содержимое R3 и число 7 BGE 0x080003BA ; Если R3 >= 7 – перейти по адресу MOVS r0, #0x01

Слайд 33





Условное исполнение
В некоторых наборах команд (например, ARMv5) почти все команды могли иметь условное исполнение.
В ARMv7 «сами по себе» условны только команды перехода. Для придания «условности» остальным командам используется команда IT. C ее помощью до 4 команд могут быть выполнены по условию:
CMP    R4, 5      ; сравнить R4 и число 5
ITTE   NE         ; три следующие команды – условные
ADDNE  R0, R0, R1 ; (если не равно – R0=R0+R1)
ADDNE  R2, R2, #1 ; (если не равно – R2=R2+1)
MOVEQ  R2, R3     ; (иначе – R2=R3)
Описание слайда:
Условное исполнение В некоторых наборах команд (например, ARMv5) почти все команды могли иметь условное исполнение. В ARMv7 «сами по себе» условны только команды перехода. Для придания «условности» остальным командам используется команда IT. C ее помощью до 4 команд могут быть выполнены по условию: CMP R4, 5 ; сравнить R4 и число 5 ITTE NE ; три следующие команды – условные ADDNE R0, R0, R1 ; (если не равно – R0=R0+R1) ADDNE R2, R2, #1 ; (если не равно – R2=R2+1) MOVEQ R2, R3 ; (иначе – R2=R3)

Слайд 34





Команды перехода
Названия в разных ассемблерах разное, суть одна и та же
В x86 – команда jmp (от слова jump)
В ARM – команда B (от слова branch)
В некоторых ассемблерах специальной команды нет, используется запись в регистр-счетчик команд. В ARM так делать можно, но не рекомендуется.
Описание слайда:
Команды перехода Названия в разных ассемблерах разное, суть одна и та же В x86 – команда jmp (от слова jump) В ARM – команда B (от слова branch) В некоторых ассемблерах специальной команды нет, используется запись в регистр-счетчик команд. В ARM так делать можно, но не рекомендуется.

Слайд 35





Команда B
B адрес – переход по адресу (±16 Мб от текущего положения)
BX r0– переход по адресу, который храниться в r0
Условные переходы:
BLT – переход, если «меньше или равно»
BGE – переход, если «больше или равно» и т.д.
BL и BLX – переход в функцию (а зачем отдельная команда?)
Описание слайда:
Команда B B адрес – переход по адресу (±16 Мб от текущего положения) BX r0– переход по адресу, который храниться в r0 Условные переходы: BLT – переход, если «меньше или равно» BGE – переход, если «больше или равно» и т.д. BL и BLX – переход в функцию (а зачем отдельная команда?)

Слайд 36





Ветвление
Описание слайда:
Ветвление

Слайд 37





Цикл
Описание слайда:
Цикл



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