У меня была идея эмулировать процессор ARM для запуска разных программ. Для начала я хотел эмулировать процессор и запустить, например, простой "привет мир", написанный на C.

К сожалению, я не нашел ответа с помощью Google и т.д.

Можно ли запустить, например, C-File, используя эмулятор процессора ARM?

Я думал об эмуляции процессора без графического интерфейса - просто используя командную строку, на которой я хочу запустить C-файл.

2 ответа2

1

Ваш вопрос состоял в том, можете ли вы протестировать данный C-файл на архитектуре процессора, отличной от машины, на которой вы работаете. Например, у вас может быть компьютер под управлением Windows с процессором Intel, но вы хотите попробовать программу на платформе ARM. Это, конечно, можно сделать.

Следует отметить, что код C никогда не запускается непосредственно на процессоре; сначала он должен быть переведен (скомпилирован) в машинный код, так как разные платформы требуют разные машинные коды для того же. Это то, что делает компилятор.

Вы можете указать компилятору компилировать ваш код в другую целевую платформу. Это называется кросс-компиляцией. В этом посте, например, описывается, как кросс-компилировать программу Hello World в ARM с помощью компилятора arm-linux-gnueabi-gcc (который можно получить в Ubuntu из apt install gcc-arm-linux-gnueabi).

Я должен добавить, что такого рода вещи под хостами Linux несколько проще, чем с Windows, но, возможно, это личный уклон.

После кросс-компиляции вашей программы вы можете протестировать ее на целевой платформе. Для этого вам, конечно, понадобится эмулятор ЦП, но одного этого эмулятора будет недостаточно, так как вам нужна операционная система поверх него *, которая может загрузить соответствующую скомпилированную программу C и выполнить ее как процесс. ARM Lab VM делает это для ARM. Это виртуальная машина, которая эмулирует платформу ARM на любой хост-платформе.

* Если эта программа сама по себе «голая», то есть она работает без промежуточной операционной системы.

0

Ответ - нет. Процессор понимает только инструкции процессора, он же язык ассемблера. Когда у вас есть C-файл, и вы хотите его запустить, вам нужен интерпретатор, чтобы процессор понимал сценарий. Это означает, что скрипт скомпилирован в двоичный исполняемый файл, представляющий собой список инструкций по сборке, которые будет понятен процессору.

Но если ваш эмулятор ЦП имеет некоторый интерфейс и операционную систему, вы можете использовать эту операционную систему для запуска компилятора, и в этом случае вы можете запустить C-File через компилятор. Но операционная система - это графический интерфейс, которого вы хотите избежать, так что ... это возвращает меня к первому абзацу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .