2

私は現在、アセンブリ プログラミングのために GDB と NASM を使用しています。

残念ながら、GDB 内で EFlags レジスタ ニーモニック (ZF、AF、PF など) を確認できません。

代わりに 10 進数値が表示されています。eflags 0x246 582

10 進数を 2 進数に変換して自分でフラグを数えることはできると思いますが、これは他のすべての人が持っていると思われる機能にとっては大変な作業のようです。

オペレーティング·システム: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".
4

2 に答える 2

2

お使いの gdb のバージョンは非常に古いです。その機能が実装されていない場合に備えて、eflags の内容を出力するために使用している gdb 関数を次に示します。

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
于 2013-03-12T11:05:42.553 に答える
0

設定されたフラグを表示するには:

info registers eflags
于 2013-03-12T11:04:45.427 に答える