Изучение Си (урок 2(

X

Xamil

Original poster
Давай посмотрим ,как выглядит наша программа внутри
Вот пример одной из программ:

C:
#include <stdio.h>

int main()
 {
  int i;
  for(i=0; i < 10 ; i++){
    printf("Hello UFO!\n");
  }
  return 0;
}
Чтоб посмотреть на внутренности, нам нужен отладчик, я буду использовать GDB
ЗАпускаем его через терминал



Bash:
$gdb  -q ./ExampleGdb.out

---------------------------------------------------------------------------------
|  0. 0x0000000000001135 <+0>:    push   rbp                                        |
|  1. 0x0000000000001136 <+1>:    mov    rbp,rsp                                    |
|  2. 0x0000000000001139 <+4>:    sub    rsp,0x10                                    |
|  3. 0x000000000000113d <+8>:    mov    DWORD PTR [rbp-0x4],0x0                    |
|  4. 0x0000000000001144 <+15>:    mov    DWORD PTR [rbp-0x4],0x1                    |   
|  5. 0x000000000000114b <+22>:    jmp    0x1167 <main+50>                            |
|  6. 0x000000000000114d <+24>:    mov    eax,DWORD PTR [rbp-0x4]                    |
|  7. 0x0000000000001150 <+27>:    mov    esi,eax                                    |
|  8. 0x0000000000001152 <+29>:    lea    rdi,[rip+0xeab]        # 0x555555556004    |
|  9. 0x0000000000001159 <+36>:    mov    eax,0x0                                    |
| 10. 0x000000000000115e <+41>:    call   0x1030 <printf@plt>                        |
| 11. 0x0000000000001163 <+46>:    add    DWORD PTR [rbp-0x4],0x1                    |
| 12. 0x0000000000001167 <+50>:    cmp    DWORD PTR [rbp-0x4],0x9                    |
| 13. 0x000000000000116b <+54>:    jle    0x114d <main+24>                            |
| 14. 0x000000000000116d <+56>:    mov    eax,0x0                                    |
| 15. 0x0000000000001172 <+61>:    leave                                              |
| 16. 0x0000000000001173 <+62>:    ret                                                |
---------------------------------------------------------------------------------
Строки №0 -> №2 - Пролог функции.
Строка №3 - Инициализация переменной.Регистер RIP содержит адресс памяти , указывабщий на команду дизассемблированого когда функции main().Значение 0 будет помещено в регистр rbp-4 Именно здесь хранится переменная i.
Строка№8 - в адрессе 0x555555556004 , хранится наш текст
Строка №11 - Начало счетчика цикла.Поместили значение 1 в регистр rbp-4


Также не нужно вдаваться в подробности, мы просто посмотрели как компьютер понимает нашу программу, зная Assembler вам не составит труда понять, что написано на верху.

Следующее о чем хотелось бы рассказать- это циклы и условные операторы, о них рассказывать много не надо, думаю большинство читателей понимают как они устроены, поэтому в крации/
Есть 3 цикла while, until и for:
while и until, это циклы с определенным условием

C:
while( Ты голоден)
{
    Найти еду;
    Съесть еду;
}

* until(Ты сыт)

{
    Найти еду;
    Съесть еду;
}
Цикл for
C:
* for(время = 1; время < 5 ; время++)
{
    Проехать 1 милю прямо;
}

Основные концепкии Программирования
  1. Переменные
  2. Арифметические операторы
  3. Операторы Сравнения
  4. Функции
Переменные
  • int (unsigned short)
  • float (unsigned short)
  • double (unsigned short)
  • char
Арифметические оперции
  • +
  • -
  • *
  • /
  • %
i+=12;
i-=12;
i*=12;
i/=12;
i%=12;
Операторы сравнения
  • <
  • >
  • <=
  • >=
  • ==
  • !=
  • ||
  • &&
Функции

C:
Инициализация Функции/\


int function(int a);

Фунциця/\

int function(a)

{


return 0;

}
 
Название темы
Автор Заголовок Раздел Ответы Дата
X Изучение Си (урок 6) С/C++ 1
X Изучение Си (урок 5) С/C++ 0
X Изучение Си (урок 4) С/C++ 0
X Изучение Си (урок 3) С/C++ 0
X Изучение Си (урок 1) С/C++ 1
wrangler65 Изучение загрузчиков вредоносного ПО LNK: случайный анализ Вирусология 0
Z Подскажите, как и с чего начать изучение кибер безопасности? Вопросы и интересы 10
E Интересно С чего начать изучение информационной безопасности в 2020 году Полезные статьи 0
A Книга для изучение c# .NET 3
N С чего начать изучение DDOS ? Вопросы и интересы 9
N Изучение C++(видео уроки) С/C++ 1
R Изучение JavaScript с нуля Другие ЯП 4
S Изучение html, css!!! Другие ЯП 2
El_IRBIS Интересно Требуется СИ специалист. Предоставляю работу. Ищу специалиста. 0
Support81 План Си Цзиньпина: как превратить хакеров в государственный актив Новости в сети 0
C Фича для СИ) СИ/Фишинг/Мошенничество 1
H Алгоритм вируса "Стелс" на Си(С). 2020 Вирусология 0
ev0117434 Интересно Пак голосовых девушки для СИ СИ/Фишинг/Мошенничество 10
V [СИ] - Эффект Бранума СИ/Фишинг/Мошенничество 0
T Качественно впариваем любую малварь с помощью СИ Полезные статьи 1
V Качественно впариваем любую малварь с помощью СИ СИ/Фишинг/Мошенничество 1
T Схема на СИ от 20.000 в неделю Полезные статьи 1
H СИ при шантаже [КАК?] Вопросы и интересы 11
J Обучение СИ часть 2 | Безопастность Полезные статьи 2
J Обучение СИ от сеоблога | Часть 1 Полезные статьи 0
G Добыча селфи с паспортом при помощи СИ Полезные статьи 0
Z Метод добычи токена вк с помощью СИ! СИ/Фишинг/Мошенничество 2
M Книги по СИ Полезные статьи 7
Ф Книга по СИ(социальная инженерия) Полезные статьи 19
Admin Схема торговли с помощью СИ СИ/Фишинг/Мошенничество 0
G 26 книг,чтобы поднять уровень СИ! Полезные статьи 12
NickelBlack Заработок с партнерки пользуясь СИ. Спам, рассылки, трафик, SEO 0
Admin СИ, НЛП, Впаривание малвари, как заразить вирусом Полезные статьи 0
Support81 Урок не выучен: Onyx теряет $3,8 млн из-за старой уязвимости Новости в сети 0
Ж HTML/CSS, Урок 2 Другие ЯП 3
Ж Садись присаживайся, курс по HTML/CSS, урок 1 Другие ЯП 1
K Уроки по XSS: Урок 3. Контексты внедрения XSS Уязвимости и взлом 0
K Уроки по XSS: Урок 2. Скрытая передача данных, перехват нажатия клавиш, изменение внешнего вида сайта, подцепление на BeEF, фишинг, подсказки обхода ф Уязвимости и взлом 0
K Уроки по XSS: Урок 1. Основы XSS и поиск уязвимых к XSS сайтов Уязвимости и взлом 0
A Delphi. Урок 17. Типы С/C++ 0
A Delphi. Урок 16. Исключительные ситуации С/C++ 0
A Delphi. Урок 15. Математические операции С/C++ 0
A Delphi. Урок 14. Работа со списками строк TStringList или «сложные» типы С/C++ 0
A Delphi. Урок 13. Работа со строками С/C++ 0
A Delphi. Урок 12. Преобразование числа в строку и строки в число С/C++ 0
A Delphi для начинающих. Урок 11. Процедуры и функции С/C++ 0
A Delphi для начинающих. Урок 10. Циклы. Работа с массивами С/C++ 0
A Delphi для начинающих – Урок 9 – Массивы С/C++ 0
A Delphi для начинающих – Урок 8 – Условия. Оператор Case С/C++ 0
A Delphi для начинающих – Урок 7 – Условия. Оператор IF С/C++ 0

Название темы