Презентация Модель памяти в языке С. Функции в языке С. Функции в ассемблере онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Модель памяти в языке С. Функции в языке С. Функции в ассемблере абсолютно бесплатно. Урок-презентация на эту тему содержит всего 31 слайд. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Модель памяти в языке С. Функции в языке С. Функции в ассемблере
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:31 слайд
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:144.68 kB
- Просмотров:55
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№4 слайд
Содержание слайда: Модель оперативной памяти в языке С
Статическая область – ее размер известен при компиляции; там хранятся глобальные и статические (static) переменные, там могу хранится константы.
Куча – область, из которой выделяется динамическая память (malloc() в С, new в С++ ). Ее максимальный размер задается как-то (например, программист просто выбирает число).
Стек – его размер меняется при работе программы. Максимальный размер задается как-то.
Плохие ситуации: выход за границы стека, выход за границы кучи, встреча кучи и стека.
№5 слайд
Содержание слайда: Функции в языке С: объявление
Объявление (прототип) – declaration:
Что такое объявление?
Это «обещание», что где-то написано тело функции.
Пример: char foo(int a);
Где должно располагаться объявление?
До вызова. Т.е. выше по тексту.
В заголовочном файле (.h), если это глобальная функция.
В том же файле .с, если это функция static.
Объявление может быть совмещено с телом функции.
Ошибки линкера «undefined symbol имяФункции» означают, что есть объявление, но нет тела.
№6 слайд
Содержание слайда: Функции в языке С: объявление
void * foo(int a);
void * - тип возвращаемого значения
foo – имя функции
int a – тип и имя параметра (аргумента)
аргументов может быть много, они разделяются запятой
аргументов может быть переменное количество
; - обязательный элемент синтаксиса, если дальше нет тела функции
№11 слайд
Содержание слайда: Функции в ассемблере
Вызов функции в ассемблере: команды
BL address
BLX register
Переход с сохранением адреса возврата в регистре R14 (Link Register, LR).
Адрес возврата – адрес следующей команды после BL.
А по какому адресу нужно перейти, чтобы попасть в функцию?
По адресу первой инструкции в ее теле.
№12 слайд
Содержание слайда: Функции в ассемблере
Что нужно сделать, чтобы вызвать функцию?
Как-то передать параметры
Как-то передать управление
Как-то вернуться к месту вызова
Как-то вернуть значение
При этом:
Внутри функции тоже могут вызвать функцию
Может быть даже ту же самую (рекурсия)
Ничего не должно сломаться!
№13 слайд
Содержание слайда: Функции в ассемблере: что может сломаться?
Весь код в ассемблере использует регистры.
Код в функции тоже использует регистры.
int a = 1 + sin(3.14);
MOV r0, 1 ; собираюсь складывать 1 и синус
(вызов sin) ; вызываю sin
.. а если функция sin тоже использовала r0?
Что же делать?
№16 слайд
Содержание слайда: Функции в ассемблере
А не нужно ли сохранять что-нибудь еще?
Состояние LR для текущей функции (но это регистр)
Локальные переменные текущей функции?
Кстати, а где хранятся локальные переменные?
Локальные переменные хранятся:
В регистрах
В специальной статической области памяти
В стеке
Поэтому их не надо сохранять, но нужно не задеть случайно.
№21 слайд
Содержание слайда: Функции: соглашение о вызове
Как передаются параметры?
Как возвращается результат?
Кто сохраняет контекст?
Кто восстанавливает контекст?
Все это называется «соглашение о вызове».
Соглашение о вызове может быть разным в зависимости от процессора, ОС, языка, желания левой пятки (fastcall, stdcall...)
№22 слайд
Содержание слайда: Соглашение о вызове
В ARM – ARM Procedure Call Standard
(call convention) (очень упрощенно):
До четырех параметров передаются на регистрах (r0-r3); остальные через стек
Контекст сохраняет тот, кого вызвали
Восстанавливает контекст тот, кого вызвали
Возвращаемое значение передается через r0 (r0 и r1 для long long и double)
Т.е. слайды 18-19 были только для примера!
№23 слайд
Содержание слайда: Функции (в ARM): краткий итог
Параметры и локальные переменные хранятся в регистрах или в стеке
Доступ к переменным в стеке осуществляется через косвенно-регистровую адресацию (например, через SP)
Перед вызовом функции нужно сохранить контекст, после вызова – восстановить
Возвращаемое значение передается через регистр r0 (и r1)
№27 слайд
Содержание слайда: Как борются с минусами конвейера?
Зависимые инструкции:
Команда NOP (no operation)
Долгие инструкции:
Внеочередное исполнение
И команда NOP
Срывы из-за переходов:
Размотка циклов
Условное выполнение вместо условных переходов
Inlining функций вместо перехода
Предсказание переходов
И еще много всего
№29 слайд
Содержание слайда: Минусы функций: что же делать?
Чего НЕ НАДО делать:
оптимизировать раньше времени
использовать глобальные переменные вместо параметров
бездумно использовать макросы
вообще не использовать функции
Что следует делать:
думать до того, как писать код
написать и отладить, потом оптимизировать
включить оптимизацию в компиляторе
аккуратно использовать inline и макросы
Скачать все slide презентации Модель памяти в языке С. Функции в языке С. Функции в ассемблере одним архивом:
-
Функции в языке программирования VB
-
Особенности применения задач линейного программирования при моделировании процессов функционирования сложных систем. Раздел 3
-
Функции в языке СИ. Лекция 5
-
Моделирование движения математического маятника в среде с нелинейным сопротивлением на языке программирования Pascal
-
Создание и использование функций в языке Си
-
Программирование на языке ассемблер
-
Процедурные функции на языке CLIPS
-
Продукционная модель знаний в языке CLIPS. Факты и правила
-
Структура модели процессора. Регистры. Ассемблер. АЛУ. Микропрограммы. Цикл команды
-
Программирование на языке С. Работа со строками. Функции библиотеки algorithm