Программирование
В действительности компьютеры понимают только один язык - машинный код - бинарный поток единиц и нулей.
Система команд (машинный язык) - совокупность машинных команд процессора.
Программы обычно существуют в двух формах. Первая форма представляет собой исходный код - понятный человеку текст, состоящий из серий инструкций, написанных на языке программирования, например, на Си. Чтобы стать исполняемым, исходный код должен быть преобразован во вторую форму: двоичные (бинарные) инструкции на языке машины, понятные для компьютера.
Два значения понятия "программы" обычно считаются синонимами, так как в процессе компиляции и сборки исходный код преобразуется в семантически эквивалентный двоичный машинный код.
Linux, стандарты и нормативная база
В первую очередь разработчики Linux (то есть ядра, библиотеки glibc и инструментария) стремятся соответствовать различным стандартам UNIX, особенно POSIX и Single UNIX Specification.
Из-за наличия нескольких распространителей Linux, а также из-за того, что реализаторы ядра не контролируют содержимое дистрибутивов, "стандартной" коммерческой версии Linux не существует. Ядро отдельного дистрибутива Linux обычно базируется на некоторой версии ядра Linux из основной ветки разработки с набором необходимых изменений.
Кроме знания языков программирования необходимо иметь под рукой необходимый инструментарий для изучения, написания и отладки самих программ. В минимальный набор для написания программы входит ЛЮБОЙ текстовый редактор, компилятор и компонвщик (он же линковщик). Таким набором может быть например редактор VIM, компилятор GCC и компоновщик LD. Если у вас ничего этого нет, то можно установить всё из репозитария (# apt-get install vim gcc binutils) или скачать с сайтов разработчиков.
Архитектура x64 процессоров Интел
Описание архитектурыСоздание программ для архитектуры Intel (PDF (english))
Системная шина
How do computers work? CPU, ROM, RAM, address bus, data bus, control bus, address decoding.Процесс
ОписаниеУстройство памяти
устройство памятиIDE и редакторы
Редактор VIM (сайт)- книга Vim (Рус)
- книга Hacking Vim 7.2 (Eng)
- Best Vim Tips (шпаргалка по настройкам)
IntelliJ IDEA
Android Studio
Ассемблеры
nasm - Netwide Assembler (сайт)gas
Языки
CJava
Платформы
AndroidКомпиляторы
GCC - GNU Compiler CollectionLLVM - Low Level Virtual Machine
Создание своего компилятора
Компоновщики
ld (входит в пакет binutils)Руководство новичка по эксплуатации компоновщика (Хабр)
Отладчик
gdb (сайт, PDF (english))Дополнительно
ОпределенияТерминология
Памятка
Передаём АРГУМЕНТЫ,
foo(arg1, arg2);
а принимаем ПАРАМЕТРЫ
int foo(int par1, int par2) {
return par1 + par2;
}
Вызывающий код передаёт аргументы. Метод использует параметры.