vova7890
Oct 13 2012, 22:10
Всем привет. В общем, озадачился я реализацией сией фукнции на ARMv5. Функция, помимо зеркалирования памяти(ну тут понятно, можно через mmu), должна уметь зеракалировать файлы. Идея в реализации одна - обрабатывать датааборты на чтение виртуально "не существующей" памяти и там уже читать файл, предварительно вернувшись в usr режим и продолжая выполнять чтение уже в контексте программы. Но, чтобы определить, что, как, куда и откуда читает, нужно узнать тип инструкции и адрес чтения/ записи. Вот этот момент меня и интересует. Получается, нужно какбы "эмулировать" инструкцию, тоесть узнать какой тип данных она пишет/читает(byte, hword, word) и номера регистров с которых читают и куда пишут. Я правильно понимаю логику, или есть более простые пути нежели емулировать инструкции? Пытался найти ответ в исходниках линукса, ничего интересного так и не нашёл. Если тут и вправду нужна эмуляция, подскажите где можно посмотреть реализцию. А то в этих опкодах чёрт ногу сломит...
vova7890
Oct 14 2012, 18:28
Отвечу сам себе - нужно использовать сопроцессор-mmu и смотреть в сторону FSR регистра, чтобы получить от mmu тип исключения и адрес.