Загрузка данных


ЧТО ТАКОЕ С++
-Язык программирования общего назначения
-компилируемый язык 
-статически типиз-ый язык
-язык с поддержкой всех парадигм программирования
РОБОТОТЕХНИКА
-микроконтроллеры
-роботы
-устройства реального времени
ПРЕИМУЩЕСТВА С++
1.Производительность 
2.Контроль памяти 
3.Уровни абстрации
4.Кроссплатформенность
5.Большая экосистема
6.Долгая жизнь языка
РЕГИСТР ПРОЦЕССОРА
Регистры - это сверхбыстрые ячейки памяти внутри самого CPU. Процессор не может ваыполнять математические
операции напямую в оперативной памяти:он должен сначала загрузить данные в регистры.
-Регистры общего назначения (e.g, RAX, RBX в х86-64): Хранят временные данные, переменные и рез-ты вычислений
-Указатель команды (istruction Pointer - RIP/EIP). Хранит адрес памяти следущей инструкции которую нужно выполнить.
-Указатель стека (Stack Pointer-RSP/ESP). Хранит адрес вершины текущего стека.
КЭШ-ПАМЯТЬ (L1 L2 L3)
Процессор работает вс отни раз быстрее, чем оперативная память (RAM). Чтобы CPU не простаивал в ожидании данных, исп.
кэш-память
-Данные загружаются из RAM в кэш не по одному байту, а кэш-линиями (Cache Lines)-обычно по 64 байта за раз
АНАТОМИЯ ОПЕР-ОЙ ПАМЯТИ (RAM) ПРОЦЕССА
-Сегмент кода: Хранит скомп-ые машинные инструкции.Доступен только для чтения
-Сегмент данных: хранит глобальные данные и статические
СТЕК:АВТОМАТИЧЕСКАЯ ПАМЯТЬ 
Стек работает по принципу LIFO. Память выделяется и освобождается автоматически при вызове и выходе из функций.
КУЧА (НЕАР): ДИНАМИЧЕСКАЯ ПАМЯТЬ 
-Плюсы:Экстремально быстрый, автомат-ое управление (нет утечек)
-Минусы:Ограниченный размер.Попытка создать огромный массив на стеке приведет к ошибке Stack Overflow (перпол-ие библ-ки)
Куча-это большой пул системной памяти. В отличие от стека, время жизни объектов в куче не привязано к текущей функции.
Память выделяется и освобождается вручную программистом ( или средствами стандартной библиотеки).
ОПАСНОСТИ ПРИ РАБОТЕ С КУЧЕЙ 
-Утечка памяти: Если забыть вызвать delete память останется занятой до конца работы программы.
-Висячие указатели: Исп-ия указателя после того как память по нему уже была удалена.
-Фрагментация:Со временем память в куче выдел-ся и удаляется хаотично, из за чего она дробится на мелкие куски.
-Плюсы:Огромный размер
-Минусы:Медленная скорость
RUN
Препроцессинг(Чистый код(.i/.ii))
Компиляция(Код на асемблере(.s/./asm)
Ассемблирование(Объектный файл(.o/.obg))
Компановка(.exe))
Препроцессинг-это работа с текстом
ЭТАП 1 ПРЕПОЦЕССИНГ РАБОТА С ТЕКСТОМ 
Обрабатывает деерективы начинающиеся с# Подставляет файлы #include вместо строки #include<iostream> препроцессор копирует
и вставляет все одержимые заголовочные файла iostream прямо в файл раскрывает запросы #define заменяет текстовые макросы на 
их реальные значения
Управляет условной компиляции
Удалеят коментарии и пробелы
КОМПИЛЯЦИЯ
чистый текстС++ анализирует/ с точки зрения правил языка. Компилятор проверяет синтаксис,типы данных и оптимизирует код.
Переводит ассемблер 
Ускоряет и оптиммизирует код за счет разворачивания коротких циклов и удаление не использоваемого кода.
АССЕМБЛИРОВАНИЕ
Ассемблер-это просто транслятор.Каждой текстовой команде ассемблера создается объектный файл
КОМПОНОВКА/ЛИНОВКА
Линкер- это финальный сборщик, который объединяет все рарозненые объектные файлы и строение библиотеки в один момент.
Он находит заглушки и заменяет их на реальные адреса функций в памяти формирует последние сегменты файла