Я пытаюсь вручную загрузить шестнадцатеричный дамп файла elf, который я скомпилировал с помощью g ++, в разработанную мной симуляцию процессора. В стандартном файле elf есть 30 разделов, и я загружаю все 30 сегментов с учетом их правильного смещения в памяти. Затем я запускаю свой счетчик программ в начале раздела .text
(00400130), но мне кажется, что программа работает некорректно. Я довольно тщательно проверил дизайн своего процессора, используя SPIM как золотой стандарт. Странно то, что если я загружаю файл сборки в SPIM, а затем беру дизассемблированные разделы .text
и .data
, которые генерируются программой, загружаю их в память своего процессора, программы работают. Это отличается от того, что я хочу делать, потому что я хочу:
- написать программу на c ++
- скомпилируйте его с помощью mipseb-linux-g ++ (кросс-компилятор)
- шестнадцатеричный дамп всех разделов в отдельный файл
- читать файлы и загружать содержимое в "память" процессора
- запустить программу
Где в файле ELF я должен изначально разместить счетчик программы? Он у меня в начале .text
прямо сейчас. Кроме того, мне нужно включать только .text
и .data
, чтобы моя программа работала правильно? Что я здесь делаю не так?
objcopy -S input output
избавится от всего компоновщика / отладочного материала, который вам не важен, и сгенерирует файл (output
) того же формата, что и его входной аргумент (input
). - person Aidan Cully   schedule 23.06.2010objcopy -O binary -j .text input output.bin
) и сравнить содержимое памяти с данными в (в этом примере)output.bin
. - person Aidan Cully   schedule 23.06.2010