Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
26 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
205.50 kB
Просмотров:
63
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Язык Си стандарты, основные](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img0.jpg)
Содержание слайда: Язык Си: стандарты, основные концепции. Исполнение программы.
№2 слайд![Стандарты языка Си Начало -х](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img1.jpg)
Содержание слайда: Стандарты языка Си
Начало 70-х: появление языка Си
1978: Kernighan, Ritchie (K&R)
1989: ANSI C (C89)
1999: C99
2011: C11
№3 слайд![Основные требования к языку](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img2.jpg)
Содержание слайда: Основные требования к языку Си
(мои «измышлизмы»)
Язык должен быть эффективным как ассемблер
На нем должно быть удобно программировать по сравнению с ассемблером
Программы должны быть переносимы на уровне исходных текстов
№4 слайд![Основные концепции языка Си](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img3.jpg)
Содержание слайда: Основные концепции языка Си
Си - язык сравнительно "низкого" уровня
Си - "маленький" язык c однопроходным компилятором
Си предполагает, что программист знает, что делает
№5 слайд![Использование языка Си](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img4.jpg)
Содержание слайда: Использование языка Си
Разработка операционных систем
UNIX, Windows, Linux, …
СУБД
Oracle*, MySQL*, SQL Server*, PostgreSQL
Компиляторы, интерпретаторы
Python, Ruby, Eiffel**, …
Встроенные системы
ПО с открытым исходным кодом
№6 слайд![Почему стоит изучать язык Си](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img5.jpg)
Содержание слайда: Почему стоит изучать язык Си
№7 слайд![Пример простой программы . .](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img6.jpg)
Содержание слайда: Пример простой программы
1. /*
2. Первая программа на Си
3. */
4.
5. #include <stdio.h>
6.
7. int main(void)
8. {
9. puts(“Hello, world!”);
10.
11. return 0;
12. }
№8 слайд![Структура простой программы](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img7.jpg)
Содержание слайда: Структура простой программы
Даже в простой программе можно выделить черты, которые будут присущи любой программе на Си:
директивы;
функции;
операторы.
№9 слайд![Получение исполняемого файла](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img8.jpg)
Содержание слайда: Получение исполняемого файла
№10 слайд![Получение исполняемого файла](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img9.jpg)
Содержание слайда: Получение исполняемого файла
№11 слайд![A обработка препроцессором](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img10.jpg)
Содержание слайда: A1: обработка препроцессором
Препроцессор выполняет:
вырезание комментариев;
текстовые замены (директива define);
включение файлов (директива include).
Файл, получаемый в результате работы препроцессора, называется единицей трансляции.
cpp –o hello.i hello.c (или cpp hello.c > hello.i)
hello.c – 181 байт, hello.i – 19271 байт
№12 слайд![Результат работы](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img11.jpg)
Содержание слайда: Результат работы препроцессора
...
int __attribute__((__cdecl__)) __attribute__ ((__nothrow__))
puts (const char*);
...
int main(void)
{
puts("Hello, world!");
return 0;
}
№13 слайд![](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img12.jpg)
№14 слайд![Результат работы компилятора](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img13.jpg)
Содержание слайда: Результат работы компилятора
...
.section .rdata,"dr"
LC0:
.ascii "Hello, world!\0"
.text
...
mov DWORD PTR [esp], OFFSET FLAT:LC0
call _puts
mov eax, 0
№15 слайд![A ассемблирование в объектный](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img14.jpg)
Содержание слайда: A3: ассемблирование в объектный файл
Ассемблер выполняет перевод программы на языке ассемблера в исполнимый машинный код.
В результате работы ассемблера получается объектный файл: блоки машинного кода и данных, с неопределенными адресами ссылок на данные и процедуры в других объектных модулях, а также список своих процедур и данных.
as –o hello.o hello.s
hello.c – 181 байт, hello.o – 1858 байт
№16 слайд![Результат работы ассемблера b](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img15.jpg)
Содержание слайда: Результат работы ассемблера
00000000 b .bss
00000000 d .data
00000000 r .eh_frame
00000000 r .rdata
00000000 r .rdata$zzz
00000000 t .text
U ___main
U __filbuf
U __flsbuf
U __imp___iob
U _fgetpos
U _fopen
0000013b T _fopen64
00000155 T _ftello64
00000000 T _getc
0000008e T _getchar
00000185 T _main
00000041 T _putc
000000dc T _putchar
U _puts
№17 слайд![](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img16.jpg)
№18 слайд![Опции компилятора и](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img17.jpg)
Содержание слайда: Опции компилятора и компоновщика
gcc [опции] [выходной_файл] файл_1 [файл_2]
-std=name (в нашем случае name = c99)
-pedantic
-Wall
-Werror
-c (--compile)
-o <имя>
-g[level] (--debug)
№19 слайд![](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img18.jpg)
№20 слайд![](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img19.jpg)
№21 слайд![Представление о формате](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img20.jpg)
Содержание слайда: Представление о формате исполняемого файла
№22 слайд![Запуск программы](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img21.jpg)
Содержание слайда: Запуск программы
№23 слайд![Запуск программы](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img22.jpg)
Содержание слайда: Запуск программы
№24 слайд![Абстрактная память и процесс.](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img23.jpg)
Содержание слайда: Абстрактная память и процесс.
№25 слайд![Функция main int main void](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img24.jpg)
Содержание слайда: Функция main
int main(void);
int main(int, char** argv);
№26 слайд![Литература Черновик стандарта](/documents_6/8358e82505ca7bfcae004ca49f36d7bd/img25.jpg)
Содержание слайда: Литература
Черновик стандарта C99
Dennis M. Ritchie, The Development of the C Language
Артур Гриффитс, GCC: Настольная книга пользователей, программистов и системных администраторов.
John R. Levine, Linkers & Loaders
David Drysdale, Beginner's Guide to Linkers (есть перевод на хабре)