2013-03-12 3 views
1

В настоящее время я работаю с GDB и NASM для программирования сборки.GDB Не отображается EFlags Mnemonics

К сожалению, я не могу видеть учетную запись регистра EFlags (ZF, AF, PF и т. Д.) Внутри GDB.

Я показывается десятичное значение вместо: eflags 0x246 582

Я уверен, что я мог бы преобразовать десятичное в двоичное и считать флагами себя, но это, кажется, много работы для функции, что каждый еще кажется иметь?

Операционная система: Mountain Lion 10.8.2

GDB Версия:

GNU gdb 6.3.50-20050815 (Apple version gdb-1824) (Thu Nov 15 10:42:43 UTC 2012) 
Copyright 2004 Free Software Foundation, Inc. 
GDB is free software, covered by the GNU General Public License, and you are 
welcome to change it and/or distribute copies of it under certain conditions. 
Type "show copying" to see the conditions. 
There is absolutely no warranty for GDB. Type "show warranty" for details. 
This GDB was configured as "x86_64-apple-darwin". 

ответ

1

Ваша версия GDB очень старый. В случае, если эта функциональность не реализована, вот функция gdb, которую я использую для печати содержимого eflags:

define eflags 
    printf "  OF <%d> DF <%d> IF <%d> TF <%d>",\ 
      (($eflags >> 0xB) & 1), (($eflags >> 0xA) & 1), \ 
      (($eflags >> 9) & 1), (($eflags >> 8) & 1) 
    printf " SF <%d> ZF <%d> AF <%d> PF <%d> CF <%d>\n",\ 
      (($eflags >> 7) & 1), (($eflags >> 6) & 1),\ 
      (($eflags >> 4) & 1), (($eflags >> 2) & 1), ($eflags & 1) 
    printf "  ID <%d> VIP <%d> VIF <%d> AC <%d>",\ 
      (($eflags >> 0x15) & 1), (($eflags >> 0x14) & 1), \ 
      (($eflags >> 0x13) & 1), (($eflags >> 0x12) & 1) 
    printf " VM <%d> RF <%d> NT <%d> IOPL <%d>\n",\ 
      (($eflags >> 0x11) & 1), (($eflags >> 0x10) & 1),\ 
      (($eflags >> 0xE) & 1), (($eflags >> 0xC) & 3) 
end 
document eflags 
Print EFLAGS register. (x86) 
end 
+0

Это отлично поработало, спасибо большое. Я бы обновился до 7,5, но это вызывает еще больше проблем с Mountain Lion. –

0

Чтобы увидеть набор флагов:

info registers eflags 
+0

Это имеет тот же результат, что и выше. –