Я хочу найти общее количество машинных инструкций приложения Android. Я изучил класс Debug.InstructionCount Android SDK, но я считаю, что он предоставляет информацию об инструкциях Dalvik VM (а не инструкциях машинного уровня, которые фактически выполняются на процессоре). Мне нужна эта информация, чтобы оценить время, необходимое для выполнения приложения Android на конкретном процессоре (с использованием фиксированной частоты). Я знаю, что разные типы инструкций занимают переменные циклы, из-за чего время вычислений нельзя точно оценить, но я все же хочу поэкспериментировать. Спасибо
Как найти общее количество инструкций программы?
Ответы (1)
Мое решение включает в себя написание симулятора набора инструкций, запуск приложения и подсчет инструкций. Уже существуют симуляторы avr с открытым исходным кодом, которые вы можете просто использовать/модифицировать для этого.
В конце концов, чтобы сделать это, вы должны следовать потоку инструкций, поэтому либо вы на самом деле моделируете его, и это автоматически решает, сколько раз код действительно проходит через цикл и т. д., либо вы пишете дизассемблер (который половина симулятора) и в основном следовать потоку кода в порядке выполнения (на самом деле намного проще, чем полный дизассемблер или симулятор), но вам приходится иметь дело со всеми возможными путями кода и циклами, когда вы находите разные пути и подсчитываете разные пути. С минимальными усилиями вы можете найти кратчайший путь и знать, что код никогда не будет быстрее этого.