Jawaban:
info registersmemperlihatkan semua register; info registers eaxhanya menunjukkan register eax. Perintah dapat disingkati r
info registers eax. Saya tidak yakin apakah ini berbeda untuk versi gdb yang berbeda.
register read [eax]
display. Untuk misalnya display $eax.
Ada juga:
info all-registers
Kemudian Anda bisa mendapatkan nama register yang Anda minati - sangat berguna untuk menemukan register spesifik platform (seperti NEON Q ... di ARM).
eax, ecxdan register standar lainnya disembunyikan oleh info registers. Ini mungkin jawaban yang diterima.
info registersperlihatkan register.display $esplanjutkan tampilan register esp di baris perintah gdb.layout regslanjutkan tampilkan register, dengan mode TUI.Perintah Gdb :
i r <register_name>: cetak satu register, misalnya i r rax,i r eaxi r <register_name_1> <register_name_2> ...: cetak beberapa register, misalnya i r rdi rsi,i r: cetak semua register kecuali register titik mengambang & vektor (xmm, ymm, zmm).i r a: cetak semua register, sertakan floating point & vector register (xmm, ymm, zmm).i r f: cetak semua register mengambang FPU ( st0-7dan beberapa lainnya f*)Grup register lain selain a( all) dan f( float) dapat ditemukan dengan:
maint print reggroups
sebagaimana didokumentasikan di: https://sourceware.org/gdb/current/onlinedocs/gdb/Registers.html#Registers
Kiat :
xmm0~ xmm15, 128 bit, hampir setiap mesin modern memilikinya, dirilis pada tahun 1999.ymm0~ ymm15, 256 bit, mesin baru biasanya memilikinya, mereka dirilis pada 2011.zmm0~ zmm31, adalah 512 bit, pc normal mungkin tidak memilikinya ( seperti tahun 2016 ), mereka dirilis pada 2013, dan terutama digunakan di server sejauh ini.p $eax bekerja pada GDB 7.7.1
Pada GDB 7.7.1, perintah yang Anda coba berfungsi:
set $eax = 0
p $eax
# $1 = 0
set $eax = 1
p $eax
# $2 = 1
Sintaks ini juga dapat digunakan untuk memilih antara anggota serikat yang berbeda misalnya untuk register titik mengambang ARM yang dapat berupa titik mengambang atau bilangan bulat:
p $s0.f
p $s0.u
Dari dokumen :
Nama apa pun yang didahului oleh '$' dapat digunakan untuk variabel kenyamanan, kecuali itu adalah salah satu nama register khusus mesin yang telah ditentukan.
dan :
Anda bisa merujuk ke konten register mesin, dalam ekspresi, sebagai variabel dengan nama yang dimulai dengan '$'. Nama register berbeda untuk setiap mesin; gunakan register info untuk melihat nama yang digunakan pada mesin Anda.
Tapi sejauh ini saya belum beruntung dengan register kontrol: OSDev 2012 http://f.osdev.org/viewtopic.php?f=1&t=25968 || Permintaan fitur 2005 https://www.sourceware.org/ml/gdb/2005-03/msg00158.html || alt.lang.asm 2013 https://groups.google.com/forum/#!topic/alt.lang.asm/JC7YS3Wu31I
Register floating point ARM
Lihat: /reverseengineering/8992/floating-point-registers-on-arm/20623#20623
$ sintaks .
layout regagar gdb memperlihatkan tabel semua register integer dan flag, dengan menyoroti yang diubah oleh instruksi sebelumnya. Lihat stackoverflow.com/tags/x86/info misalnya.