Я пишу ядро для raspi3 и имитирую его с помощью QEMU4.0.0
Я знаю, что при написании ядра у вас обычно есть зацикленный код.В моем случае я делаю 3 из 4 моих эмулируемых ядер raspi3 с помощью:
1: wfe
b 1b
И в основной программе на C мое последнее ядро запускает цикл while(1)
, где он просто повторяет нажатия клавиш stdin
Однако мне пришло в голову, что причина для спин-блокировки ядер заключается в том, что они не выполняют код, который не должны делать, т.е. кодируют дальше в файле ядра сборки Aarch64.Разве я не могу просто отправить ядра в конец файла, где больше нет инструкций для запуска?
1:
//EOF
Я попробовал это, и оно скомпилировалось и запустилось (по крайней мере, в QEMU4.0.0), но теперь мне любопытно, что именно происходит, когда указатель инструкции не находит больше ничего сделать.
Что происходит, когда ядро достигает конца файла сборки?Это останавливается?Это начинает читать то, что является следующим в памяти?Разве эмулятор умнее меня и управляет им так, как не может это делать настоящее оборудование?