Встроенная ягодичная самоокультура от компилятора чипов до операционной системы Wang Litao Wang Litao, встроенного ученика в электронном прессе, занимаясь справочностью по разработке языковых сотрудников C в рамках Linux
Вес товара: ~0.7 кг. Указан усредненный вес, который может отличаться от фактического. Не включен в цену, оплачивается при получении.
- Информация о товаре
- Фотографии
Параметры продукта
Номер ISBN: 9787121408564
Название: Встроенная C -языковая самооценка: от чипов, компиляторов до операционных систем
Цена: 118,00 Юань
Редактор: Ван Литао
Название издательства: электронная индустрия пресса
краткое введение
Это продвинутая учебная книга, специально созданная для встроенных читателей.Обучение этой книги больше не является основной грамматикой языка C, а серией знаний, связанных с встроенным и C -языком.Автор использует язык C в качестве отправной точки, и обсуждает множество основных теорий и навыков, необходимых для встроенного развития, и стремится помочь читателям создать полную систему знаний и дерево навыков, необходимые для создания встроенной разработки с нуля.Эта книга начинается с производственного процесса и принципа работы базового процессора, до компьютерной архитектуры, анализа задних компиляций программы CC, компиляции программы, эксплуатации и регтирования динамических изменений памяти стека во время работы программы, GNU C Компилятор из грамматики расширения компилятора GNU C, гибкое использование указателей, объектно -ориентированные идеи программирования C -языка, модульные идеи программирования на языке C, многогранные идеи программирования C -языка, концепции процессов, тем и корпорации, От нижней части до верхнего уровня, от чипов, оборудования, оборудования, оборудования, оборудования, оборудования, оборудования, оборудования, оборудования, оборудования, оборудования, оборудования и фреймворков охватывают почти все точки знания встроенной разработки.
Оглавление
Глава 1 работники хотят быть хорошими, и они должны сначала принести пользу своим инструментам
1.1 Инструмент редактирования кода: Vim
1.1.1 Установить Vim
1.1.2 VIM обычно используются команды
1.1.3 Файл конфигурации VIM: VIMRC
1.1.4 Картирование кнопки VIM
1.2 Инструмент компиляции программы: сделать
1.2.1 Используйте IDE для компиляции C программ
1.2.2 Используйте GCC для компиляции C -исходных программ
1.2.3 Используйте программу сборки
1.3 Инструмент управления кодом: git
1.3.1 Что такое система управления версиями
1.3.2 Установка и конфигурация GIT
1.3.3 GIT Обычно используемые команды
Глава 2 Принципы компьютерных архивов и принципов работы процессора
2.1 Как родился чип?
2.1.1 от песка до монокристаллического кремния
2.1.2 Принцип работы PN Knot
2.1.3 от PN до CHIP
2.1.4 Чип -пакет
2.2 Как разработать процессор
2.2.1 Компьютерный теоретический краеугольный камень: машина Тьюринга
2.2.2 Внутренняя структура и принцип работы ЦП и принцип работы
2.2.3 Процесс проектирования процессора
2.3 Компьютерная архитектура
2.3.1 Feng Feng·Нокаман архитектура
2.3.2 ХАВАЛ АРХИТЕКТУРА
2.3.3 Гибридная архитектура
2.4 Улучшение производительности процессора: механизм кеша
2.4.1 Принцип работы кеша
2.4.2 Уровень первый кеш и 2 -й кэш
2.4.3 Почему у некоторых процессоров нет кэша
2.5 Улучшение производительности процессора: филиальная линия
2.5.1 Принципы сборочной линии работы
2.5.2 Ультра -точная технология Waterline
2.5.3 Приключения Filial Line
2.5.4 Прогноз филиала
2.5.5 Выполнение случайного порядка
2.5.6 Симд и Неон
2.5.7 Единственный запуск и многократный запуск
2.6 Multi -Core CPU
2.6.1 Узкое место одного процессора.
2.6.2 Multi -Nuclear Connection Technology на фильме
2.6.3 Big.little Structure
2.6.4 Объединенная технология
2.6.5 Ядер ЦП, тем лучше, тем лучше
После 2,7 Эра Мура: повышение гетерогенных расчетов
2.7.1 Что такое гетерогенный расчет
2.7.2 GPU
2.7.3 DSP
2.7.4 FPGA
2.7.5 TPU
2.7.6 NPU
2.7.7 XPU эпохи Мура после эры Мура
2.8 Автобус и адрес
2.8.1 Суть адреса
2.8.2 Концепция автобуса
2.8.3 Бизнес
2.9 Набор инструкций и микроорганизированная архитектура
2.9.1 Что такое набор инструкций
2.9.2 Что такое микро архитектура
2.9.3 Примечания директивы: язык компиляции
Глава 3 Архитектура и язык Ассамблеи
3.1 Архитектура рука
3.2 Инструкция по сборке руки
3.2.1 Инструкции по доступе к хранению
3.2.2 Инструкции по передаче данных
3.2.3 Инструкции по эксплуатации арифметической логики
3.2.4.
3.2.5 Инструкции по сравнению
3.2.6 Инструкции по выполнению условий
3.2.7
3.3 Метод адресации ARM
3.3.1 Адрес приема
3.3.2 Непосредственное обращение
3.3.3. Регистрационная адресация адресации
3.3.4 Косвенная адресация реестра
3.3.5 Адрес базового адреса
3.3.6 Multi -Register Address
3.3.7 Относительная адресация
3.4
3.4.1 LDR Pseudo инструкция
3.4.2 АДР псевдо инструкция
3.5 Дизайн программы сборки ARM
3.5.1 Формат программы сборки ARM
3.5.2 Символы и этикетки
3.5.3 Псевдо -операция
3.6 C Язык и гибридное программирование языка ассамблеи
3.6.1 Правила ATPCS
3.6.2 Встроение кода в программу C
3.6.3 Позвоните в программу C в программе сборки
3.7 Язык Ассамблеи GNU ARM
3.7.1 Перезамените компилятор
3.7.2 Псевдо -операция компилятора GNU ARM
3.7.3 Метка языка языка ассамблеи GNU
3.7.4.
3.7.5 Основной формат данных
3.7.6 Определение данных
3.7.7 Анализ анализа кода кода
Глава 4 Предисловие к компиляции, ссылке, установке и эксплуатации
4.1 от источника до двоичных файлов
4.2 Процесс предварительной обработки
4.3 программная компиляция
4.3.1 от C -файла в файлы сборки
4.3.2 Процесс компиляции
4.3.3 Таблицы символов и регулирование таблиц
4.4 Ссылка процесса
4.4.1 Сборка сегмента
4.4.2 Разрешение символов
4.4.3 Сброс
4.5 Установка программы
4.5.1 Суть установки программы
4.5.2. Сделайте пакет установки программного обеспечения под Linux
4.5.3 Использовать программное обеспечение для онлайн-установки APT-GET
4.5.4 Сделайте программный пакет установки под Windows
4.6 Программа запуска
4.6.1 Программа, работающая в среде операционной системы
4.6.2 Программа, работающая в среде голого металла
4.6.3. Анализ функций Import Program Main ()
4.6.4 Маленькие секреты в абзацах BSS
4.7 Статическая библиотека ссылки
4.8 Динамическая ссылка
4.8.1 Код, который не имеет ничего общего с адресом
4.8.2 Глобальная таблица смещения
4.8.3 Задержка привязки
4.8.4 Библиотека обмена
4.9 ПЛОКИ -В принципе работы
4.10 Механизм работы модуля ядра Linux
4.11 Компиляция ядра Linux и анализ начала
4.12 Анализ сброса U-Boot
4.13 Обычно используемый набор инструментов Binutils
Глава 5 застраховать управление стеком запаса
5.1 «Жилеты» запускаются программой: процесс
5.2 Управление памятью в среде Linux
5.3 Управление стеком
5.3.1 Инициализация стека
5.3.2 Функциональный вызов
5.3.3 Передача параметров
5.3.4 Участие в реальных абзацах
5.3.5 стека и область применения
5.3.6 Принцип переполнения переполнения стека
5.4 Управление упаковкой памяти
5.4.1 Управление пакетной памятью в среде голого металла
5.4.2 Управление памятью о куче UC/ОС
5.4.3 Управление памятью Linux свали
5.4.4 Процедуры тестирования упаковки памяти
5.4.5 Реализуйте свой собственный менеджер свай
5,5 MMAP. Исследование зоны картирования
5.5.1 Сопоставление файла в память
5.5.2 Анализ механизма реализации картирования MMAP
5.5.3. Сопоставьте устройство на память
5.5.4 Multi -Процесс распределения динамической библиотеки
5.6 Утечка и профилактика памяти
5.6.1 Пример утечки памяти
5.6.2 Предотвратить утечку памяти
5.6.3 Обнаружение утечки памяти: Mtrace
5.6.4 Утечка памяти в широком смысле
5.7 Обычные ошибки памяти и обнаружение
5.7.1 Всегда есть ошибка, заставляя слезы полными лица
5.7.2 Используйте ошибку отладки отладки дампа дамп
5.7.3 Что такое штамповка памяти
5.7.4 Монитор шага памяти: mProtect
5.7.5 Артефакт обнаружения памяти: Valgrind
Глава 6 GNU C Компилятор Расширение синтрофии
6.1 C Language Standard и компилятор
6.1.1 Что такое стандарт языка C
6.1.2 содержание языковых стандартов C
6.1.3 Процесс разработки языковых стандартов C
6.1.4 Поддержка компилятора для языковых стандартов C
6.1.5 Расширение компилятора на языковом стандарте C
6.2 Укажите инициализацию
6.2.1 Укажите инициализированные элементы массива
6.2.2 Укажите членов структуры инициализации
6.2.3 Регистрация драйвера Linux Core
6.2.4 Укажите преимущества инициализации
6.3 Макро конструкция «острое оружие»: выражение утверждения
6.3.1 Выражение, оператор и кодовый блок
6.3.2 Выражение заявления
6.3.3 Используйте выражение оператора в определении определения макроса
6.3.4 выражение заявления в ядре
6.4 TypeOF и Macro Container_of
6.4.1 TypeOF Ключевое слово
6.4.2 Примеры используйте тип
6.4.3 MACRO Container_of в ядре Linux
6.4.4 Анализ реализации макроса Container_of
6,5 массива нулевой длины
6.5.1 Что такое массив нулевой длины
6.5.2 Пример использования массива в массиве нулевой длины
6.5.3 массив нулевой длины в ядре
6.5.4 Мышление: указатель и массив нулевой длины
6.6 Объявление о свойствах: раздел
6.6.1 Ключевые слова расширения компилятора GNU C: __attribute__
6.6.2 Свойства: раздел
6.6.3 Анализ самоизвучивания U-Boot
6.7 Объявление о свойствах: выровненная
6.7.1 Выравнивание адреса: выравнивание
6.7.2 Выравнивание структуры
6.7.3 Мысль: будет ли компилятор выровнен в соответствии с указанием выровненным?
6.7.4 Свойства: упаковано
6.7.5 Выровненное, упакованное заявление в ядре
6.8 Объявление о свойствах: формат
6.8.1 Проверка формата функции женьшеня
6.8.2 Разработка и реализация функции последствий
6.8.3 Реализация функции печати журнала
6.9 Свойства Декларация: Слабая
6.9.1 Сильные символы и слабые символы
6.9.2 Сильные символы и слабые символы функций
6.9.3 Цель слабых символов
6.9.4 Свойства: псевдоним
6.10 Внутренняя функция союза
6.10.1 Объявление о свойствах: Noinline
6.10.2 Что такое функция внутреннего соединения
6.10.3 Внутренние объединенные функции и макрос
6.10.4 Обработка функции внутреннего соединения компилятора
6.10.5 Мысль: почему функция внутреннего соединения определяется в файле заголовка
6.11 Функция здания
6.11.1 Что такое встроенная функция
6.11.2 Общая встроенная функция
6.11.3 Встроенная функция стандартной библиотеки
6.11.4 Встроенная -ин функция: __ buldin_constant_p (n)
6.11.5 Встроенный -ин функция: __uiltin_expect (exp, c)
6.11.6 Скорее всего и маловероятным в ядре Linux
6.12 Макро переменного параметра
6.12.1 Что такое макрос параметра переменной
6.12.2 Продолжайте улучшать наш макрос
6.12.3 Еще один способ написания макроса макрос.
6.12.4 Макрос параметра переменной в ядре
Глава 7 Хранение данных и точка
7.1 Тип данных и хранение данных
7.1.1 Большой режим и режим небольшого конца
7.1.2 Существуют символы и не -символы
7.1.3 Переполнение данных
7.1.4 Преобразование типа данных
7.2 Выравнивание данных
7.2.1 Зачем вам нужно выравнивание данных
7.2.2 Выравнивание структуры
7.2.3 Выравнивание консорциума
7.3 Портативные данные
7.4 тип size_t в ядре Linux
7.5 Почему многие люди любят использовать Typedef при программировании
7.5.1 Основное использование Typedef
7.5.2. Преимущество использования Typedef
7.5.3 Места, чтобы обратить внимание на использование Typedef
7.5.4 Typedef
7.5.5 Как избежать злоупотребления Typedef из -за большого количества злоупотреблений
7.6 Тип встречи
7.6.1 Три метода использования перечисления
7.6.2 Сущность просветления
7.6.3 Метический тип в ядре Linux
7.6.4 Используйте места, чтобы обратить внимание на
7.7 постоянные и переменные
7.7.1 Суть переменных
7.7.2 Постоянное хранение
7.7.3 Постоянное складывание
7.8 от переменных до указателя
7.8.1 Суть указателя
7.8.2 Некоторые сложные заявления указателя
7.8.3 Тип указателя и операция
7.9 «Неоднозначные» отношения между указателями и массивом
7.9.1 Оператор RICTION []
7.9.2 Суть названия массива
7.9.3 Указатель и указатель массива
7.10 Указатель и структура
7.11 Second -Указатель LEVEL
7.11.1 Измените значение переменной указателя
7.11.2 Двухмерный указатель и массив указателя
7.11.3 Вторичный указатель и двухмерный массив
7.12 Указатель функций
7.13 Re -Instronding void
Глава 8 Программирование мыслей об объекте -object -ориентировано
8.1 Повторное использование кода и многоуровневые мысли
8.2 Объект -ориентированная основание программирования
8.2.1 Что такое ООП
8.2.2 Классовая упаковка и экземпляр
8.2.3 Наследование и полиморфизм
8.2.4 Виртуальные функции и чистые виртуальные функции
8.3 OOP мысли в ядре Linux: пакет
8.3.1 C Реализация языкового моделирования
8.3.2 Абстракция и упаковка связанного списка
8.3.3 Модель управления оборудованием
8.3.4 Модель устройства шины
8.4 OOP мысли в ядре Linux: наследование
8.4.1 Наследование и частные указатели
8.4.2 Класс наследования и абстрактного
8.4.3 Наследование и интерфейс
8.5 OOP мысли в ядре Linux: полиморфизм
Глава 9 Модульные программирующие мысли о языке C
9.1 Компиляция и связь модуля
9.2 Разделение системного модуля
9.2.1 Метод деления модуля
9.2.2
9.2.3 Планирование разумной структуры каталога
9.3 Пакет модуля
9.4 Глубокий анализ файлов заголовков
9.4.1 Основная концепция
9.4.2 Скрытая декларация
9.4.3 Разработка и определение переменных
9.4.4 Как отличить определение и декларацию
9.4.5.
9.4.6 Определение и согласованность утверждения
9.4.7 Путь файла заголовка
9.4.8 Файлы головки в ядре Linux
9.4.9 Функция внутреннего соединения в файле
9.5 Принципы проектирования модулей
9.6 НИЗКАЯ НЕПРАВИЛЬНОЕ СЛОВЫ: GOTO
9.7 Связь между модулями
9.7.1 Глобальные переменные
9.7.2 Функция возврата
9.7.3 Асинхронное общение
9.8 Advanced Design модуля
9.8.1 Cross -Platform Design
9.8.2 Структура
9.9 модульное программирование в эпоху AIOT
Глава 10 Много -Таски Программирование мыслей и операционных систем на языке C
10.1 Multi -Tasking Bare Metal реализация
10.1.1 Реализация моделирования с несколькими
10.1.2 Измените частоту выполнения задачи
10.1.3 Измените время выполнения задачи
10.2 Основные принципы операционной системы
10.2.1 Принцип принципа работы планировщика
10.2.2 Функциональный стек и стек процессов
10.2.3 Реализующая функция
10.2.4 Критическая область и критические ресурсы
10.3 прерывание
10.3.1 Процесс прерывания лечения
10.3.2 Стек процессов и стек прерываний
10.3.3 Реализация функции прерывания
10.4 Системный вызов
10.4.1 API операционной системы
10.4.2 Управление операционной системой
10.4.3 Режим привилегии ЦП
10.4.4 Интерфейс системного вызова Linux
10.5 Откройте тайну файловой системы
10.5.1 Что такое файловая система
10.5.2 монтаж файловой системы
10.5.3 Файловая система
10.6 Интерфейс памяти и отображение
10.6.1 память и интерфейс
10.6.2 Картирование хранения
10.6.3 Метод встроенного начала
10.7 Память и внешнее оборудование
10.7.1 память и внешняя память
10.7.2 Внешнее оборудование
10.7.3 Порт ввода/вывода и память ввода/вывода
10.8 Зарегистрировать операцию
10.8.1 -bit операционная приложение
10.8.2 РЕГИСТРАЦИИ Операции
10.8.3 домен
10.9 Блок управления памятью MMU
10.9.1 Преобразование адреса
10.9.2 Управление разрешениями
10.10 Процесс, нить и коратика
10.10.1 Процесс
10.10.2 Поток
10.10.3 БИЛЕР НИЗКИ
10.10.4 Coroutine
10.10.5 Резюме