printf - это наихудший вызов библиотеки C для использования в самых разных направлениях: с плавающей запятой, строками строк, делением и т. Д. И т. Д., Избегайте его для подобных вещей.Я вижу, что вы только читали комментарии.
Чтобы ВИДЕТЬ запущенную программу, вам нужно моргнуть светодиодом или контактом на параллельном порту или отправить символы через последовательный порт, что значительно проще, чем программированиерегистрируется в графической карте и отлаживает этот код, не видя, что вы делаете успехи.
Теперь с x86 у вас есть слой, на самом деле не ОС, а слой с таким кодом, за которым вы можете делать простые вызовы, чтобы печатать символы на экране в текстовом режиме и ВИДЕТЬ свойпрограмма работает.Я вычеркнул это из pcemu_samples, но вам доступны все версии pcemu и dosbox и другие среды эмуляции x86, а также компьютер.Лучше всего начать с одной из сим-сред (dosbox, pcemu, etC) (если вы чувствуете, что должны начинать с x86, обратите внимание на эту тему, на самом деле я не рекомендую начинать с x86).Если бы вы делали x86, вы могли бы перейти с dosbox или чего-то в этом роде, а затем, вероятно, перейти на загрузочную флешку и продолжить свой путь оттуда.
встроенные процессоры, из которых есть много, много плат eval.имел за менее чем 50 долларов, некоторые хорошие за или менее 20 долларов.Но многие бесплатные симуляторы, которые вы можете изучить.У меня есть несколько вариантов, которые вы можете попробовать: thumbulator, amber_samples, pcemu_samples, вероятно, являются наиболее стабильными (с меньшей вероятностью придется отлаживать мои вещи, в основном отладки ваших вещей), затем другие, которые менее стабильны, meecoate, msp430sim и т. Д., Получат 5 долларов.вы - плата msp430, 10 долларов - плата ARM cortex-m3, 20 долларов - слишком мощная, чтобы называться микроконтроллером, платой микроконтроллера (на базе cortex-m4).И больше денег не дает вам быстрее или лучше, но больше вариантов.доски, которые могут работать под Linux, могут / будут больше мучить то, что вы пытаетесь выучить, оставайтесь на этом уровне.
ваш простой пример требует очень мало, вне кода, который компилятор создает для той функции, которая вам нужна как можно меньше.как одна инструкция для перехода от вектора сброса к точке входа основной функции.В идеале вы хотите настроить стек и в конечном итоге, возможно, обнулить .bss или скопировать .data и т. Д. Просто учитесь использовать инструменты (компилятор, ассемблер, компоновщик) для создания встроенного двоичного файла (даже если у вас нет оборудования / симулятора для запуска).) покажет вам (дизассемблирует), как соединить точки между reset и main () (вам не нужно называть его main, вы можете называть его как угодно, некоторые компиляторы, которые вы НЕ хотите называть main, будут выбрасывать лишнее мусорваш двоичный файл).