Запуск программы Nasm на ARM Linux
Я пытаюсь научить себя программированию ассемблера с NASM. Однако у меня есть только Chromebook с процессором ARM. У меня есть xubuntu, работающий на нем с Крюнтоном. Однако, как я могу настроить среду эмуляции x86, чтобы начать себя? Я также хочу иметь возможность использовать Insight Debugger.
2 ответа
Попробуйте bochs или qemu.
Если вы работаете только на Chromebook, возможно, без большого количества оперативной памяти, вы, вероятно, просто хотите запустить очень минимальную систему Linux в своей эмулированной среде x86. Не полная установка графического интерфейса пользователя xubuntu в эмулированной среде x86.
Для изучения x86 вы должны начать с 32- или 64-битного ASM, либо для функций, которые вы вызываете из C, либо в качестве отдельной программы. (Либо действительно автономный, где вы не связываетесь со стандартной средой выполнения C или библиотекой, а пишете свои собственные _start
в ASM, и сделать свои собственные системные вызовы, или просто написать main
в ASM и завершить вашу программу с ret
от main
.)
В bochs есть встроенный отладчик, но его использование будет более подходящим для отладки ядра или загрузчика. IDK может что-нибудь сказать об отладчике Insight, но если он может отлаживать удаленно, запускать двоичный файл ARM непосредственно с подключением к цели, которую вы хотите отлаживать, может иметь смысл.
Вы можете написать x86 asm, который загружается напрямую (вместо образа Linux), но тогда у вас будут доступны только вызовы BIOS, и ЦП будет запускаться в 16-битном реальном режиме с сегментированной памятью и всем тем дерьмом, которое в принципе бесполезно изучать, кроме для написания загрузчиков.
QEMU имеет функцию эмуляции пользовательского режима, которую можно использовать для запуска программ x86 Linux в ARM Linux или любой другой комбинации поддерживаемых архитектур.