Программирование

Кроме знания языков программирования необходимо иметь под рукой необходимый инструментарий для изучения, написания и отладки самих программ. В минимальный набор для написания программы входит ЛЮБОЙ текстовый редактор, компилятор и компонвщик (он же линковщик). Таким набором может быть например редактор VIM, компилятор GCC и компоновщик LD. Если у вас ничего этого нет, то можно установить всё из репозитария (# apt-get install vim gcc binutils) или скачать с сайтов разработчиков.

Архитектура x64 процессоров Интел

Описание архитектуры
Создание программ для архитектуры Intel (PDF (english))

Устройство памяти

устройство памяти

IDE и редакторы

Редактор VIM (сайт)
- книга Vim (Рус)
- книга Hacking Vim 7.2 (Eng)
- Best Vim Tips (шпаргалка по настройкам)

IntelliJ IDEA
Android Studio

Ассемблеры

nasm - Netwide Assembler (сайт)
gas

Языки

C
Java

Платформы

Android

Компиляторы

GCC - GNU Compiler Collection
LLVM - Low Level Virtual Machine

Компоновщики

ld (входит в пакет binutils)
Руководство новичка по эксплуатации компоновщика (Хабр)

Отладчик

gdb (сайт, PDF (english))

Дополнительно

Определения
Терминология

Памятка

Передаём АРГУМЕНТЫ,

foo(arg1, arg2);

а принимаем ПАРАМЕТРЫ

int foo(int par1, int par2) {
    return par1 + par2;
}

Вызывающий код передаёт аргументы. Метод использует параметры.