Системы счисления. Что такое «архитектура» компьютера

Содержание

Слайд 2

Краткое содержание предыдущей серии Что такое ассемблер? Что такое процессорные регистры

Краткое содержание предыдущей серии

Что такое ассемблер?
Что такое процессорные регистры и зачем

они нужны?
Как организована память?
Где хранится код?
А как он при этом выглядит?
Слайд 3

Краткое содержание сегодняшней серии Системы счисления Что такое «архитектура» компьютера Регистры

Краткое содержание сегодняшней серии
Системы счисления
Что такое «архитектура» компьютера
Регистры в ARM Cortex

M3
Набор команд Thumb 2
Способы адресации в ARM Cortex M3
Слайд 4

Системы счисления Что такое система счисления? Метод записи чисел. В зависимости

Системы счисления

Что такое система счисления?
Метод записи чисел.
В зависимости от основания системы

одна и та же запись означает разное число:
1005 =
1002 =

2510

410

Слайд 5

Двоичная система Широко применяется в информатике, программировании и т.д. Но почему?

Двоичная система

Широко применяется в информатике, программировании и т.д.
Но почему?
Потому что

компьютеры очень удобно делать из двоичных электронных компонентов.
Слайд 6

Двоичная система Почему люди не пользуются двоичной системой? По историческим причинам

Двоичная система

Почему люди не пользуются двоичной системой?
По историческим причинам
Относительно небольшие числа

в ней записываются очень длинно:
10 0111 0000 11112 = 999910
Слайд 7

А программисту зачем двоичная система? В низкоуровневом программировании бывает так, что

А программисту зачем двоичная система?
В низкоуровневом программировании бывает так, что число

не несет количественного смысла.
Вместо этого, каждый бит в двоичном представлении числа имеет свой смысл.
Слайд 8

Что делать, если часто нужно считать в двоичной системе? Нужно научиться

Что делать, если часто нужно считать в двоичной системе?

Нужно научиться быстро

переводить числа из одной системы в другую.
Как?
Быстро делить в уме
Использовать специальный софт (напр., калькулятор windows)
Использовать шестнадцатеричную или восьмеричную систему
Слайд 9

Шестнадцатеричная система (hexadecimal) В ней 16 цифр, 0..9, А,B,C,D,E и F.

Шестнадцатеричная система (hexadecimal)

В ней 16 цифр, 0..9, А,B,C,D,E и F.
В языке

С такие числа записываются с префиксом 0x:
0xFF
Но что все это дает?
Слайд 10

Шестнадцатеричная система (hexadecimal) 16 – это 24, поэтому каждая цифра в

Шестнадцатеричная система (hexadecimal)

16 – это 24, поэтому каждая цифра в hex’е

– это 4 цифры в двоичной системе!
И переводить числа очень легко:
0x1532

0001

0101

0011

0010

542610 перевести в двоичную систему в уме сложнее

Слайд 11

Если вам не легко То нужно научится считать в двоичной системе от 0 до F:

Если вам не легко

То нужно научится считать в двоичной системе от

0 до F:
Слайд 12

В языке С В языке С можно использовать три системы счисления:

В языке С

В языке С можно использовать три системы счисления:
Десятичную –

просто числа, без префиксов
Шестнадцатеричную – числа с префиксом 0x
Восьмеричную – с префиксом 0
В некоторых компиляторах есть нестандартный префикс 0b для двоичной системы
Слайд 13

Подвох Программист для красоты выровнял колонку цифр. И десятичное 37 превратилось в восьмеричное 037 == 31.

Подвох

Программист для красоты выровнял колонку цифр.
И десятичное 37 превратилось в

восьмеричное 037 == 31.
Слайд 14

ARM Advanced RISC Machines – британская компания ARMv1.. ARMv9 – архитектуры

ARM

Advanced RISC Machines – британская компания
ARMv1.. ARMv9 – архитектуры ЭВМ
ARM2...ARM11 и

Cortex – микропроцессорные ядра
ARM не производит физических устройств, только спецификации
Мы изучаем микроконтроллер STM32F103
ST Microelectronics – производитель чипа
32 – «битность»
F103 - серия
Cortex M3 – ядро (М – означает микроконтроллер) с архитектурой ARMv7
Слайд 15

Что же такое «архитектура компьютера»? Это сочетание многих системных решений об

Что же такое «архитектура компьютера»?

Это сочетание многих системных решений об устройстве

компьютера, концептуальная структура, которая включает в себя
Набор ассемблерных команд (instruction set)
«Битность»
Тип памяти (Гарвард или фон Нейман)
Количество и назначение шин
Общие принципы работы
И т. д.
Слайд 16

Что такое «битность»? 32-битный компьютер обладает: 32-битными регистрами 32-битной шиной адреса

Что такое «битность»?

32-битный компьютер обладает:
32-битными регистрами
32-битной шиной адреса
32-битной шиной данных
Возможно, не

все сразу – т.е. понятие это несколько расплывчато.
Слайд 17

Типы архитектур CISC – Complex Instruction Set Computer RISC – Restricted Instruction Set Computer

Типы архитектур

CISC – Complex Instruction Set Computer
RISC – Restricted Instruction Set

Computer
Слайд 18

Типы архитектур

Типы архитектур

Слайд 19

Архитектура ARMv7 RISC-подобная Набор команд Thumb-2 (совместим с Thumb из ARMv4)

Архитектура ARMv7

RISC-подобная
Набор команд Thumb-2 (совместим с Thumb из ARMv4)
32 бита
фон Неймановская

память (единое адресное пространство)
13 регистров общего назначения
Endianness (и еще многое) на выбор производителя
Слайд 20

Набор команд Thumb 2 Большая часть команд длиной 2 байта, есть

Набор команд Thumb 2

Большая часть команд длиной 2 байта, есть команды

в 4 байта (мнемоники единообразные)
Большая часть команд выполняется за 2 такта (дольше – умножение, деление, множественная загрузка/сохранение и т.д.)
Только целочисленная арифметика
Подробности - ARMv7-M Architecture Reference Manual
Слайд 21

Регистры в ARM Cortex M3

Регистры в ARM Cortex M3

Слайд 22

Помните машину Тьюринга?

Помните машину Тьюринга?

Слайд 23

Как выглядит ассемблер в Keil Команда movs r0, #0x05 – поместить

Как выглядит ассемблер в Keil

Команда movs r0, #0x05 – поместить (от

слова move) в регистр R0 число 5
Слайд 24

Подробнее о команде Итак, 0x080003A4 2005 MOVS r0,#0x05 означает «по адресу

Подробнее о команде

Итак, 0x080003A4 2005 MOVS r0,#0x05
означает «по адресу 0x8003A4 хранится:

положить в регистр R0 число 5»
А откуда берется число пять?
Оно лежит прямо в коде команды! 2005
Это называется «непосредственная» адресация (immediate)
Слайд 25

Подробнее о команде Итак, 0x080003A4 2005 MOVS r0,#0x05 означает «по адресу

Подробнее о команде

Итак, 0x080003A4 2005 MOVS r0,#0x05
означает «по адресу 0x8003A4 хранится:

положить в регистр R0 число 5»
А где написано, что R0?
Тоже в команде! 2005
Это «регистровая адресация» – один из операндов – регистр и его номер указан прямо в команде.
Слайд 26

Структура команды (на примере 16-битной mov) 0x2005 = 0010 0000 0000

Структура команды (на примере 16-битной mov)

0x2005 = 0010 0000 0000 0101
Пять

старших бит показывают что это, собственно, команда mov
Биты 10, 9 и 8 задают номер регистра
Биты с 7 по 0 задают непосредственный операнд

Поразительным образом все, что делает команда, указано прямо в команде!

Слайд 27

А какая вообще бывает адресация? Косвенность, теоретически, может наращиваться бесконечно -

А какая вообще бывает адресация?

Косвенность, теоретически, может наращиваться бесконечно - по

адресу лежит адрес, по которому лежит адрес, по которому...
(указатель на указатель на указатель...)
Слайд 28

Абсолютная адресация в Cortex M3 Команды имеют длину 2 или 4

Абсолютная адресация в Cortex M3

Команды имеют длину 2 или 4 байта.


Адреса имеют длину 4 байта.
Как же положить адрес прямо в команду?
А никак. В Cortex M3 такого способа адресации нет!
Что же делать?
Слайд 29

Косвенно-регистровая адресация Синтаксис – квадратные скобки LDR R0, [R1,#0x00] – считать

Косвенно-регистровая адресация

Синтаксис – квадратные скобки
LDR R0, [R1,#0x00] – считать в регистр

R0 значение, лежащее по адресу «то, что в R1 + 0»
Смещение лежит прямо в команде и может быть от 0 до 4095.
Для адресации глобальных переменных часто используется регистр РС. Но почему?
Слайд 30

Немножко о компиляции языка С Каждый файл .c компилируется отдельно от

Немножко о компиляции языка С

Каждый файл .c компилируется отдельно от остальных

и превращается в файл .o – «объектный файл»
Линкер разрешает зависимости между файлами, проставляет вызовы функций
Линкер размещает объектные файлы в памяти
Вывод?
Линкеру удобно положить адрес переменной рядом с кодом, который к ней обращается. Если они в одном файле.