По-моему на C. Возможно, какие-то низкоуровневые вещи на ассемблере. По крайней мере Торвальдс начинал именно с ассемблера. Модули и программы в основном пишутся на С++, С и др. С-образных языках, но программисты под линукс пишут на том, что знают, то есть программы и модули могут быть написаны на всех существующих языках ( java, perl, python, Delphi и пр.).
Там где есть блокнот. В большинстве случаев этого для программирования достаточно
Самый хорошей вариант это интернет,но только на официальных сайтах.
Для ознакомления с языком, по-моему, лучше всего зайдите на YouTube и посмотрите уроки, все очень толково объясняется. Скачайте компилятор, без него ничего не получится, советую Visual Studio Express Edition (бесплатная версия). Из литературы, наиболее доступно все изложено в книге автора Лафоре. В тегах Вы поставили также C#, так вот, не путайте языки C (си), C++ и C# - это разные языки, хоть и очень похожи. Начинайте с языка C++, он очень похож на Си (это более ранняя версия) во многом ничем не отличается, по мере изучения все поймете, главное не сдавайтесь, все, что будете смотреть на видео обязательно печатайте самостоятельно вживую, так лучше и быстрее запомните. И еще раз - видео и книга Лафоре. Удачи!
P.S. C# очень классный и удобный язык, обязательно уделите ему внимание, но не раньше, чем научитесь работать с классами в C++ (когда дойдете до этого раздела, сами все поймете).
Мнемоника (легко запоминающееся символьное название) ассемблерной команды LEA говорит сама за себя. Эта аббревиатура, составленная из английских слов "Load Effective Address", по-русски означает "Загрузить эффективный адрес".
Данные команда LEA записывает в регистры. Но, в отличие от команды MOV ("Move" — переместить, переслать), она не копирует в регистр значение (содержимое ячейки с адресом), она заносит в регистр исполнительный адрес своего второго операнда, предварительно его вычисляя. Вообще, первым операндом этой команды может быть любой регистр общего назначения, а вторым — также любое адресное выражение, без или с модификаторами. При этом флаги не изменяются.
LEA использует механизм блока адресации процессора, а MOV — арифметико-логический блок.
Где применяется команда LEA:
- При выводе строк по операции OUTSTR;
- При пересылке в регистр значения регистра-модификатора, +/— какое-то число;
- Для получения адреса процедур по ссылке;
- Для передачи параметров по ссылке.
Вот всё, что удалось вспомнить.