Используя отладчик GNU, как я могу пройти через операторы __asm__? - PullRequest
1 голос
/ 05 апреля 2011
  __asm__("\n\
    movl $1, %eax\n\
  "); 

Как пройти через __asm__, чтобы я мог распечатать регистры, чтобы увидеть, что они хранят?Прямо сейчас я поместил разрыв в строку __asm__, а затем попытался нажать stepi или si, и он не перешел в строку movl.Что я делаю не так?

1 Ответ

1 голос
/ 06 апреля 2011

si - это , шагая по инструкции movl (вы можете проверить это, набрав display/i $pc и наблюдая, как изменяется выходной сигнал.

Что не происходит (и что, вероятно, смутило вас) - это обновление исходного кода, потому что ваш код внутри asm () не имеет каких-либо примечаний к номеру строки, поэтому GDB не может сказать, какие строки должны отображаться.

Обычно компилятор помещает такие аннотации в сборку. Но здесь вы обошли компилятор. Если вы хотите, чтобы номера строк были правильными, вам придется добавить эти аннотации самостоятельно (что обычно не 'не стоит хлопот).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...