Я пытаюсь научить программированию сборки NASM. Однако у меня только Chromebook с процессором ARM. У меня xubuntu работает на нем с crunton. Однако как я могу настроить среду эмуляции x86, чтобы начать работу? Я также хочу иметь возможность использовать отладчик.Запуск программы nasm на ARM linux
ответ
Попробуйте bochs или qemu.
Если вы только на хромонике, возможно, без большого количества оперативной памяти, вы, вероятно, просто хотите запустить очень минимальную систему Linux внутри вашей эмулируемой среды x86. Не полный графический интерфейс xubuntu в среде эмуляции x86.
Для обучения x86 вы должны начать с 32 или 64-битной ASM, либо для функций, которые вы вызываете с C, либо как автономная программа. (Либо действительно автономный, где вы не связываетесь со стандартным временем выполнения или библиотекой C, и пишите свой собственный в asm, а также создавайте свои собственные системные вызовы или просто пишите main
в asm и завершаете свою программу ret
от main
.)
bochs имеет встроенный отладчик, но использование его было бы более подходящим для отладки ядра или загрузчика. IDK что-нибудь об отладчике Insight, но если он может удаленно отлаживать, запуск двоичного кода ARM изначально, подключенный к цели, которую вы хотите отлаживать, может иметь смысл.
Вы могли написать x86 ASM, что вы загружаете непосредственно (вместо Linux образа), но тогда вы бы только BIOS вызовов доступны, и процессор начнет в 16-битном режиме реального времени с сегментированной памятью и все это дерьмо это в основном бесполезно, чтобы узнать за исключением для записи загрузчиков.
Bochs звук хороший выбор. Надеюсь, что я могу использовать отладчик insight с удаленной отладкой bochs. – darklord
@ darklord: Я думал, что у вас будет Insight для подключения к программе пользовательского пространства внутри bochs, через TCP или что-то еще. Как gdb или что-то в этом роде. Если вы подключаетесь к bochs, вы будете отлаживать всю систему, включая прерывания и потоки ядра, а не только написанную вами программу. –
QEMU имеет функцию эмуляции пользовательского режима, которая может использоваться для запуска Linux-программ x86 на ARM Linux или любой другой комбинации поддерживаемых архитектур.
Вы также можете рассмотреть возможность обучения ассемблеру ARM. Архитектура ARM намного более проста, чем византийская x86. – fuz
Я настоятельно рекомендую сначала руку, а затем x86 в какой-то будущей дате (если вообще когда-либо), вы можете эмулировать либо на любом, либо на том, чтобы это не было препятствием для входа. –
Хм .. Я изучаю x86, потому что я учусь с книгой «Шаг за шагом». Не знаю, что ARM намного проще. – darklord