Я пытаюсь вручную загрузить hexdump файла эльфа, который я скомпилировал с помощью g ++, в разработанную мной имитацию процессора.В стандартном эльфийском файле 30 разделов, и я загружаю все 30 сегментов с учетом их правильного смещения в памяти.Затем я запускаю счетчик программ в начале раздела .text
(00400130), но кажется, что программа работает неправильно.Я довольно тщательно проверил дизайн своего процессора, используя SPIM в качестве золотого стандарта.Странно то, что, если я загружаю файл сборки в SPIM, а затем беру разобранные секции .text
и .data
, сгенерированные программным обеспечением, загружаю их в память моего процессора, программы работают.Это отличается от того, что я хочу сделать, потому что я хочу:
- написать программу на c ++
- скомпилировать ее, используя mipseb-linux-g ++ (кросс-компилятор)
- шестнадцатеричный дамп всех разделов в их собственный файл
- чтение файлов и загрузка содержимого в «память» процессора
- запуск программы
Где в файле ELF я должен разместитьмой счетчик программ изначально?У меня есть это в начале .text
прямо сейчас.Кроме того, мне нужно только включить .text
и .data
, чтобы моя программа работала правильно?Что я тут не так делаю?