Перекусил немного.
Я обычно код тестирую на своём arm ноуте, да и пишу тамже, он у меня как тестовый полигон, поэтому я привык к arm синтаксису GNU Assembler, x86 не юзаю поэтому мне намного комфортней показывать примеры с arm ассемблером, последующие Ассемблерные вставки для arm процессора, переделать их вообще не сложно
Итоговая рабочая программа для arm будет выглядеть так:
void _start() {
//Тут код программы
// Выход
__asm__(
"mov r0, #0;" // Возращаемое значение - 0
"mov r7, #1;" // Номер системного вызова - 1 (exit)
"swi 0;" // Системный вызов ядра
);
}Можно скомпилировать, только обязательно с опцией -nostdlib, эта опция убирает glibc
И запустить, все что сделает программа это за пуститься и остановится с кодом 0
Чего ж мы hello world то не написали, на самом деле просто вывести hello world нельзя, функции printf и puts, отсутствуют, да и вообще у нас есть всего несколько функций, одна из них __asm__ которая делает вставку кода на асме, абсолютно все нужно делать самому, все что у нас есть это системные вызовы, все делается через них, linux имеет более трёхсот системных вызовов и exit среди них.
Короче все, навеселился.
Пошел отдыхать