Я пытаюсь написать небольшую функцию, чтобы GDB оценивал, что делает команда ASM, учитывая 2 переменные: начальное значение и конечное значение.
По сути, я пытаюсь заставить GDB делать si, пока не попадет в команду, которая делает то, что я ищу.
Скажем, например, я ищу следующую команду, которая добавляет от 1 до 34. Я знаю, что я мог бы вручную пройти и распечатать инструкции и перейти к си, но я бы предпочел, если это возможно, создать функцию, которая смотрит на инструкция ASM, а затем останавливается, если находит команду, которая делает это.
Поэтому при условии, что моя команда, которая соответствует, является ADD R1, R2, R3 и я ищу начальное значение 24 и конечное значение 55, если R2 = 24 и R3 = 31, и я знаю, что команда add, это будет моя очередь, чтобы остановить ,
Я думаю, что если бы я мог заставить GDB разбить команду x / i, я мог бы легко заставить ее это сделать, так как она могла бы разделить ADD, R1, R2 и R3, я мог бы оценить ее в своей собственной функции с помощью
если (($ R2 + R3) ==)
Проблема в том, что я не могу заставить GDB разорвать эту x / i строку на части ... и я думаю, что, возможно, ему придется каким-то образом передать ее из GDB во внешнюю программу.
Если у кого-то есть идея, я на все уши.