Enumerations

enum class RegisterID : uint32_t
Name Value Comments
kUnknown 0 --
kARMv8_x0 1000

General purpose

kARMv8_x1 1001

General purpose

kARMv8_x2 1002

General purpose

kARMv8_x3 1003

General purpose

kARMv8_x4 1004

General purpose

kARMv8_x5 1005

General purpose

kARMv8_x6 1006

General purpose

kARMv8_x7 1007

General purpose

kARMv8_x8 1008

General purpose

kARMv8_x9 1009

General purpose

kARMv8_x10 1010

General purpose

kARMv8_x11 1011

General purpose

kARMv8_x12 1012

General purpose

kARMv8_x13 1013

General purpose

kARMv8_x14 1014

General purpose

kARMv8_x15 1015

General purpose

kARMv8_x16 1016

General purpose

kARMv8_x17 1017

General purpose

kARMv8_x18 1018

General purpose

kARMv8_x19 1019

General purpose

kARMv8_x20 1020

General purpose

kARMv8_x21 1021

General purpose

kARMv8_x22 1022

General purpose

kARMv8_x23 1023

General purpose

kARMv8_x24 1024

General purpose

kARMv8_x25 1025

General purpose

kARMv8_x26 1026

General purpose

kARMv8_x27 1027

General purpose

kARMv8_x28 1028

General purpose

kARMv8_x29 1029

General purpose

kARMv8_lr 1030

General purpose

kARMv8_sp 1031

General purpose

kARMv8_pc 1032

General purpose

kARMv8_cpsr 1034

This register doesn't exist in ARMv8, but it's used as an abstraction for
accessing the PSTATE. It's functionally equivalent to SPSR_EL1.

kARMv8_w0 1035

General-purpose aliases (low 32-bits).

kARMv8_w1 1036

General-purpose aliases (low 32-bits).

kARMv8_w2 1037

General-purpose aliases (low 32-bits).

kARMv8_w3 1038

General-purpose aliases (low 32-bits).

kARMv8_w4 1039

General-purpose aliases (low 32-bits).

kARMv8_w5 1040

General-purpose aliases (low 32-bits).

kARMv8_w6 1041

General-purpose aliases (low 32-bits).

kARMv8_w7 1042

General-purpose aliases (low 32-bits).

kARMv8_w8 1043

General-purpose aliases (low 32-bits).

kARMv8_w9 1044

General-purpose aliases (low 32-bits).

kARMv8_w10 1045

General-purpose aliases (low 32-bits).

kARMv8_w11 1046

General-purpose aliases (low 32-bits).

kARMv8_w12 1047

General-purpose aliases (low 32-bits).

kARMv8_w13 1048

General-purpose aliases (low 32-bits).

kARMv8_w14 1049

General-purpose aliases (low 32-bits).

kARMv8_w15 1050

General-purpose aliases (low 32-bits).

kARMv8_w16 1051

General-purpose aliases (low 32-bits).

kARMv8_w17 1052

General-purpose aliases (low 32-bits).

kARMv8_w18 1053

General-purpose aliases (low 32-bits).

kARMv8_w19 1054

General-purpose aliases (low 32-bits).

kARMv8_w20 1055

General-purpose aliases (low 32-bits).

kARMv8_w21 1056

General-purpose aliases (low 32-bits).

kARMv8_w22 1057

General-purpose aliases (low 32-bits).

kARMv8_w23 1058

General-purpose aliases (low 32-bits).

kARMv8_w24 1059

General-purpose aliases (low 32-bits).

kARMv8_w25 1060

General-purpose aliases (low 32-bits).

kARMv8_w26 1061

General-purpose aliases (low 32-bits).

kARMv8_w27 1062

General-purpose aliases (low 32-bits).

kARMv8_w28 1063

General-purpose aliases (low 32-bits).

kARMv8_w29 1064

General-purpose aliases (low 32-bits).

kARMv8_w30 1065

General-purpose aliases (low 32-bits).

kARMv8_x30 1066

Alias for "LR" above.

kARMv8_tpidr 1067

Thread Pointer/ID register

kARMv8_fpcr 1100

Control register.

kARMv8_fpsr 1101

Status register.

kARMv8_v0 1200 --
kARMv8_v1 1201 --
kARMv8_v2 1202 --
kARMv8_v3 1203 --
kARMv8_v4 1204 --
kARMv8_v5 1205 --
kARMv8_v6 1206 --
kARMv8_v7 1207 --
kARMv8_v8 1208 --
kARMv8_v9 1209 --
kARMv8_v10 1210 --
kARMv8_v11 1211 --
kARMv8_v12 1212 --
kARMv8_v13 1213 --
kARMv8_v14 1214 --
kARMv8_v15 1215 --
kARMv8_v16 1216 --
kARMv8_v17 1217 --
kARMv8_v18 1218 --
kARMv8_v19 1219 --
kARMv8_v20 1220 --
kARMv8_v21 1221 --
kARMv8_v22 1222 --
kARMv8_v23 1223 --
kARMv8_v24 1224 --
kARMv8_v25 1225 --
kARMv8_v26 1226 --
kARMv8_v27 1227 --
kARMv8_v28 1228 --
kARMv8_v29 1229 --
kARMv8_v30 1230 --
kARMv8_v31 1231 --
kARMv8_d0 1232

Double-precision aliases.

kARMv8_d1 1233

Double-precision aliases.

kARMv8_d2 1234

Double-precision aliases.

kARMv8_d3 1235

Double-precision aliases.

kARMv8_d4 1236

Double-precision aliases.

kARMv8_d5 1237

Double-precision aliases.

kARMv8_d6 1238

Double-precision aliases.

kARMv8_d7 1239

Double-precision aliases.

kARMv8_d8 1240

Double-precision aliases.

kARMv8_d9 1241

Double-precision aliases.

kARMv8_d10 1242

Double-precision aliases.

kARMv8_d11 1243

Double-precision aliases.

kARMv8_d12 1244

Double-precision aliases.

kARMv8_d13 1245

Double-precision aliases.

kARMv8_d14 1246

Double-precision aliases.

kARMv8_d15 1247

Double-precision aliases.

kARMv8_d16 1248

Double-precision aliases.

kARMv8_d17 1249

Double-precision aliases.

kARMv8_d18 1250

Double-precision aliases.

kARMv8_d19 1251

Double-precision aliases.

kARMv8_d20 1252

Double-precision aliases.

kARMv8_d21 1253

Double-precision aliases.

kARMv8_d22 1254

Double-precision aliases.

kARMv8_d23 1255

Double-precision aliases.

kARMv8_d24 1256

Double-precision aliases.

kARMv8_d25 1257

Double-precision aliases.

kARMv8_d26 1258

Double-precision aliases.

kARMv8_d27 1259

Double-precision aliases.

kARMv8_d28 1260

Double-precision aliases.

kARMv8_d29 1261

Double-precision aliases.

kARMv8_d30 1262

Double-precision aliases.

kARMv8_d31 1263

Double-precision aliases.

kARMv8_s0 1264

Single-precision aliases.

kARMv8_s1 1265

Single-precision aliases.

kARMv8_s2 1266

Single-precision aliases.

kARMv8_s3 1267

Single-precision aliases.

kARMv8_s4 1268

Single-precision aliases.

kARMv8_s5 1269

Single-precision aliases.

kARMv8_s6 1270

Single-precision aliases.

kARMv8_s7 1271

Single-precision aliases.

kARMv8_s8 1272

Single-precision aliases.

kARMv8_s9 1273

Single-precision aliases.

kARMv8_s10 1274

Single-precision aliases.

kARMv8_s11 1275

Single-precision aliases.

kARMv8_s12 1276

Single-precision aliases.

kARMv8_s13 1277

Single-precision aliases.

kARMv8_s14 1278

Single-precision aliases.

kARMv8_s15 1279

Single-precision aliases.

kARMv8_s16 1280

Single-precision aliases.

kARMv8_s17 1281

Single-precision aliases.

kARMv8_s18 1282

Single-precision aliases.

kARMv8_s19 1283

Single-precision aliases.

kARMv8_s20 1284

Single-precision aliases.

kARMv8_s21 1285

Single-precision aliases.

kARMv8_s22 1286

Single-precision aliases.

kARMv8_s23 1287

Single-precision aliases.

kARMv8_s24 1289

Single-precision aliases.

kARMv8_s25 1290

Single-precision aliases.

kARMv8_s26 1291

Single-precision aliases.

kARMv8_s27 1292

Single-precision aliases.

kARMv8_s28 1293

Single-precision aliases.

kARMv8_s29 1294

Single-precision aliases.

kARMv8_s30 1295

Single-precision aliases.

kARMv8_s31 1296

Single-precision aliases.

kARMv8_id_aa64dfr0_el1 1300

Debug Feature Register 0.

kARMv8_mdscr_el1 1301

Debug System Control Register.

kARMv8_dbgbcr0_el1 1320

HW Registers.

kARMv8_dbgbcr1_el1 1321

HW Registers.

kARMv8_dbgbcr2_el1 1322

HW Registers.

kARMv8_dbgbcr3_el1 1323

HW Registers.

kARMv8_dbgbcr4_el1 1324

HW Registers.

kARMv8_dbgbcr5_el1 1325

HW Registers.

kARMv8_dbgbcr6_el1 1326

HW Registers.

kARMv8_dbgbcr7_el1 1327

HW Registers.

kARMv8_dbgbcr8_el1 1328

HW Registers.

kARMv8_dbgbcr9_el1 1329

HW Registers.

kARMv8_dbgbcr10_el1 1330

HW Registers.

kARMv8_dbgbcr11_el1 1331

HW Registers.

kARMv8_dbgbcr12_el1 1332

HW Registers.

kARMv8_dbgbcr13_el1 1333

HW Registers.

kARMv8_dbgbcr14_el1 1334

HW Registers.

kARMv8_dbgbcr15_el1 1335

HW Registers.

kARMv8_dbgbvr0_el1 1340

HW Registers.

kARMv8_dbgbvr1_el1 1341

HW Registers.

kARMv8_dbgbvr2_el1 1342

HW Registers.

kARMv8_dbgbvr3_el1 1343

HW Registers.

kARMv8_dbgbvr4_el1 1344

HW Registers.

kARMv8_dbgbvr5_el1 1345

HW Registers.

kARMv8_dbgbvr6_el1 1346

HW Registers.

kARMv8_dbgbvr7_el1 1347

HW Registers.

kARMv8_dbgbvr8_el1 1348

HW Registers.

kARMv8_dbgbvr9_el1 1349

HW Registers.

kARMv8_dbgbvr10_el1 1350

HW Registers.

kARMv8_dbgbvr11_el1 1351

HW Registers.

kARMv8_dbgbvr12_el1 1352

HW Registers.

kARMv8_dbgbvr13_el1 1353

HW Registers.

kARMv8_dbgbvr14_el1 1354

HW Registers.

kARMv8_dbgbvr15_el1 1355

HW Registers.

kARMv8_dbgwcr0_el1 1360

HW Watchpoints.

kARMv8_dbgwcr1_el1 1361

HW Watchpoints.

kARMv8_dbgwcr2_el1 1362

HW Watchpoints.

kARMv8_dbgwcr3_el1 1363

HW Watchpoints.

kARMv8_dbgwcr4_el1 1364

HW Watchpoints.

kARMv8_dbgwcr5_el1 1365

HW Watchpoints.

kARMv8_dbgwcr6_el1 1366

HW Watchpoints.

kARMv8_dbgwcr7_el1 1367

HW Watchpoints.

kARMv8_dbgwcr8_el1 1368

HW Watchpoints.

kARMv8_dbgwcr9_el1 1369

HW Watchpoints.

kARMv8_dbgwcr10_el1 1370

HW Watchpoints.

kARMv8_dbgwcr11_el1 1371

HW Watchpoints.

kARMv8_dbgwcr12_el1 1372

HW Watchpoints.

kARMv8_dbgwcr13_el1 1373

HW Watchpoints.

kARMv8_dbgwcr14_el1 1374

HW Watchpoints.

kARMv8_dbgwcr15_el1 1375

HW Watchpoints.

kARMv8_dbgwvr0_el1 1380

HW Watchpoints.

kARMv8_dbgwvr1_el1 1381

HW Watchpoints.

kARMv8_dbgwvr2_el1 1382

HW Watchpoints.

kARMv8_dbgwvr3_el1 1383

HW Watchpoints.

kARMv8_dbgwvr4_el1 1384

HW Watchpoints.

kARMv8_dbgwvr5_el1 1385

HW Watchpoints.

kARMv8_dbgwvr6_el1 1386

HW Watchpoints.

kARMv8_dbgwvr7_el1 1387

HW Watchpoints.

kARMv8_dbgwvr8_el1 1388

HW Watchpoints.

kARMv8_dbgwvr9_el1 1389

HW Watchpoints.

kARMv8_dbgwvr10_el1 1390

HW Watchpoints.

kARMv8_dbgwvr11_el1 1391

HW Watchpoints.

kARMv8_dbgwvr12_el1 1392

HW Watchpoints.

kARMv8_dbgwvr13_el1 1393

HW Watchpoints.

kARMv8_dbgwvr14_el1 1394

HW Watchpoints.

kARMv8_dbgwvr15_el1 1395

HW Watchpoints.

kX64_rax 2000

General purpose

kX64_rbx 2001

General purpose

kX64_rcx 2002

General purpose

kX64_rdx 2003

General purpose

kX64_rsi 2004

General purpose

kX64_rdi 2005

General purpose

kX64_rbp 2006

General purpose

kX64_rsp 2007

General purpose

kX64_r8 2008

General purpose

kX64_r9 2009

General purpose

kX64_r10 2010

General purpose

kX64_r11 2011

General purpose

kX64_r12 2012

General purpose

kX64_r13 2013

General purpose

kX64_r14 2014

General purpose

kX64_r15 2015

General purpose

kX64_rip 2016

General purpose

kX64_rflags 2017

General purpose

kX64_ah 2018

General purpose aliases.

kX64_al 2019

General purpose aliases.

kX64_ax 2020

General purpose aliases.

kX64_eax 2021

General purpose aliases.

kX64_bh 2022

General purpose aliases.

kX64_bl 2023

General purpose aliases.

kX64_bx 2024

General purpose aliases.

kX64_ebx 2025

General purpose aliases.

kX64_ch 2026

General purpose aliases.

kX64_cl 2027

General purpose aliases.

kX64_cx 2028

General purpose aliases.

kX64_ecx 2029

General purpose aliases.

kX64_dh 2030

General purpose aliases.

kX64_dl 2031

General purpose aliases.

kX64_dx 2032

General purpose aliases.

kX64_edx 2033

General purpose aliases.

kX64_si 2034

General purpose aliases.

kX64_esi 2035

General purpose aliases.

kX64_di 2036

General purpose aliases.

kX64_edi 2037

General purpose aliases.

kX64_fsbase 2038

Segment registers

kX64_gsbase 2039

Segment registers

kX64_fcw 2100

Control word.

kX64_fsw 2101

Status word.

kX64_ftw 2102

Tag word.
2103 reserved

kX64_fop 2104

Opcode.

kX64_fip 2105

Instruction pointer.

kX64_fdp 2106

Data pointer.

kX64_st0 2110

The x87/MMX state. For x87 the each "st" entry has the low 80 bits used for
the register contents. For MMX, the low 64 bits are used.
The higher bits are unused.

kX64_st1 2111

The x87/MMX state. For x87 the each "st" entry has the low 80 bits used for
the register contents. For MMX, the low 64 bits are used.
The higher bits are unused.

kX64_st2 2112

The x87/MMX state. For x87 the each "st" entry has the low 80 bits used for
the register contents. For MMX, the low 64 bits are used.
The higher bits are unused.

kX64_st3 2113

The x87/MMX state. For x87 the each "st" entry has the low 80 bits used for
the register contents. For MMX, the low 64 bits are used.
The higher bits are unused.

kX64_st4 2114

The x87/MMX state. For x87 the each "st" entry has the low 80 bits used for
the register contents. For MMX, the low 64 bits are used.
The higher bits are unused.

kX64_st5 2115

The x87/MMX state. For x87 the each "st" entry has the low 80 bits used for
the register contents. For MMX, the low 64 bits are used.
The higher bits are unused.

kX64_st6 2116

The x87/MMX state. For x87 the each "st" entry has the low 80 bits used for
the register contents. For MMX, the low 64 bits are used.
The higher bits are unused.

kX64_st7 2117

The x87/MMX state. For x87 the each "st" entry has the low 80 bits used for
the register contents. For MMX, the low 64 bits are used.
The higher bits are unused.

kX64_mm0 2120

Although these are technically vector registers, they're aliased on top of the x87 (fp*)
registers so must be in the same category.

kX64_mm1 2121

Although these are technically vector registers, they're aliased on top of the x87 (fp*)
registers so must be in the same category.

kX64_mm2 2122

Although these are technically vector registers, they're aliased on top of the x87 (fp*)
registers so must be in the same category.

kX64_mm3 2123

Although these are technically vector registers, they're aliased on top of the x87 (fp*)
registers so must be in the same category.

kX64_mm4 2124

Although these are technically vector registers, they're aliased on top of the x87 (fp*)
registers so must be in the same category.

kX64_mm5 2125

Although these are technically vector registers, they're aliased on top of the x87 (fp*)
registers so must be in the same category.

kX64_mm6 2126

Although these are technically vector registers, they're aliased on top of the x87 (fp*)
registers so must be in the same category.

kX64_mm7 2127

Although these are technically vector registers, they're aliased on top of the x87 (fp*)
registers so must be in the same category.

kX64_mxcsr 2200

Control and Status register.

kX64_zmm0 2400

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm1 2401

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm2 2402

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm3 2403

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm4 2404

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm5 2405

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm6 2406

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm7 2407

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm8 2408

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm9 2409

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm10 2410

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm11 2411

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm12 2412

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm13 2413

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm14 2414

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm15 2415

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm16 2416

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm17 2417

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm18 2418

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm19 2419

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm20 2420

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm21 2421

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm22 2422

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm23 2423

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm24 2424

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm25 2425

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm26 2426

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm27 2427

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm28 2428

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm29 2429

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm30 2430

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_zmm31 2431

SSE/AVX (512 bit, 128- and 256-bit variants will use the low bits of these).

kX64_xmm0 2432

Vector aliases.

kX64_xmm1 2433

Vector aliases.

kX64_xmm2 2434

Vector aliases.

kX64_xmm3 2435

Vector aliases.

kX64_xmm4 2436

Vector aliases.

kX64_xmm5 2437

Vector aliases.

kX64_xmm6 2438

Vector aliases.

kX64_xmm7 2439

Vector aliases.

kX64_xmm8 2440

Vector aliases.

kX64_xmm9 2441

Vector aliases.

kX64_xmm10 2442

Vector aliases.

kX64_xmm11 2443

Vector aliases.

kX64_xmm12 2444

Vector aliases.

kX64_xmm13 2445

Vector aliases.

kX64_xmm14 2446

Vector aliases.

kX64_xmm15 2447

Vector aliases.

kX64_xmm16 2448

Vector aliases.

kX64_xmm17 2449

Vector aliases.

kX64_xmm18 2450

Vector aliases.

kX64_xmm19 2451

Vector aliases.

kX64_xmm20 2452

Vector aliases.

kX64_xmm21 2453

Vector aliases.

kX64_xmm22 2454

Vector aliases.

kX64_xmm23 2455

Vector aliases.

kX64_xmm24 2456

Vector aliases.

kX64_xmm25 2457

Vector aliases.

kX64_xmm26 2458

Vector aliases.

kX64_xmm27 2459

Vector aliases.

kX64_xmm28 2460

Vector aliases.

kX64_xmm29 2461

Vector aliases.

kX64_xmm30 2462

Vector aliases.

kX64_xmm31 2463

Vector aliases.

kX64_ymm0 2464

Vector aliases.

kX64_ymm1 2465

Vector aliases.

kX64_ymm2 2466

Vector aliases.

kX64_ymm3 2467

Vector aliases.

kX64_ymm4 2468

Vector aliases.

kX64_ymm5 2469

Vector aliases.

kX64_ymm6 2470

Vector aliases.

kX64_ymm7 2471

Vector aliases.

kX64_ymm8 2472

Vector aliases.

kX64_ymm9 2473

Vector aliases.

kX64_ymm10 2474

Vector aliases.

kX64_ymm11 2475

Vector aliases.

kX64_ymm12 2476

Vector aliases.

kX64_ymm13 2477

Vector aliases.

kX64_ymm14 2478

Vector aliases.

kX64_ymm15 2479

Vector aliases.

kX64_ymm16 2480

Vector aliases.

kX64_ymm17 2481

Vector aliases.

kX64_ymm18 2482

Vector aliases.

kX64_ymm19 2483

Vector aliases.

kX64_ymm20 2484

Vector aliases.

kX64_ymm21 2485

Vector aliases.

kX64_ymm22 2486

Vector aliases.

kX64_ymm23 2487

Vector aliases.

kX64_ymm24 2488

Vector aliases.

kX64_ymm25 2489

Vector aliases.

kX64_ymm26 2490

Vector aliases.

kX64_ymm27 2491

Vector aliases.

kX64_ymm28 2492

Vector aliases.

kX64_ymm29 2493

Vector aliases.

kX64_ymm30 2494

Vector aliases.

kX64_ymm31 2495

Vector aliases.

kX64_dr0 2600

Debug.

kX64_dr1 2601

Debug.

kX64_dr2 2602

Debug.

kX64_dr3 2603

Debug.

kX64_dr6 2606

dr4 is reserved.
dr5 is reserved.

kX64_dr7 2607

dr4 is reserved.
dr5 is reserved.

kRiscv64_zero 3000

General purpose

kRiscv64_ra 3001

General purpose

kRiscv64_sp 3002

General purpose

kRiscv64_gp 3003

General purpose

kRiscv64_tp 3004

General purpose

kRiscv64_t0 3005

General purpose

kRiscv64_t1 3006

General purpose

kRiscv64_t2 3007

General purpose

kRiscv64_s0 3008

General purpose

kRiscv64_s1 3009

General purpose

kRiscv64_a0 3010

General purpose

kRiscv64_a1 3011

General purpose

kRiscv64_a2 3012

General purpose

kRiscv64_a3 3013

General purpose

kRiscv64_a4 3014

General purpose

kRiscv64_a5 3015

General purpose

kRiscv64_a6 3016

General purpose

kRiscv64_a7 3017

General purpose

kRiscv64_s2 3018

General purpose

kRiscv64_s3 3019

General purpose

kRiscv64_s4 3020

General purpose

kRiscv64_s5 3021

General purpose

kRiscv64_s6 3022

General purpose

kRiscv64_s7 3023

General purpose

kRiscv64_s8 3024

General purpose

kRiscv64_s9 3025

General purpose

kRiscv64_s10 3026

General purpose

kRiscv64_s11 3027

General purpose

kRiscv64_t3 3028

General purpose

kRiscv64_t4 3029

General purpose

kRiscv64_t5 3030

General purpose

kRiscv64_t6 3031

General purpose

kRiscv64_x0 3032

General purpose aliases

kRiscv64_x1 3033

General purpose aliases

kRiscv64_x2 3034

General purpose aliases

kRiscv64_x3 3035

General purpose aliases

kRiscv64_x4 3036

General purpose aliases

kRiscv64_x5 3037

General purpose aliases

kRiscv64_x6 3038

General purpose aliases

kRiscv64_x7 3039

General purpose aliases

kRiscv64_x8 3040

General purpose aliases

kRiscv64_x9 3041

General purpose aliases

kRiscv64_x10 3042

General purpose aliases

kRiscv64_x11 3043

General purpose aliases

kRiscv64_x12 3044

General purpose aliases

kRiscv64_x13 3045

General purpose aliases

kRiscv64_x14 3046

General purpose aliases

kRiscv64_x15 3047

General purpose aliases

kRiscv64_x16 3048

General purpose aliases

kRiscv64_x17 3049

General purpose aliases

kRiscv64_x18 3050

General purpose aliases

kRiscv64_x19 3051

General purpose aliases

kRiscv64_x20 3052

General purpose aliases

kRiscv64_x21 3053

General purpose aliases

kRiscv64_x22 3054

General purpose aliases

kRiscv64_x23 3055

General purpose aliases

kRiscv64_x24 3056

General purpose aliases

kRiscv64_x25 3057

General purpose aliases

kRiscv64_x26 3058

General purpose aliases

kRiscv64_x27 3059

General purpose aliases

kRiscv64_x28 3060

General purpose aliases

kRiscv64_x29 3061

General purpose aliases

kRiscv64_x30 3062

General purpose aliases

kRiscv64_x31 3063

General purpose aliases

kRiscv64_pc 3064

PC

kRiscv64_fcsr 3100

FP Control and Status Register

kRiscv64_ft0 3101

FP, not hooked up yet.

kRiscv64_ft1 3102

FP, not hooked up yet.

kRiscv64_ft2 3103

FP, not hooked up yet.

kRiscv64_ft3 3104

FP, not hooked up yet.

kRiscv64_ft4 3105

FP, not hooked up yet.

kRiscv64_ft5 3106

FP, not hooked up yet.

kRiscv64_ft6 3107

FP, not hooked up yet.

kRiscv64_ft7 3108

FP, not hooked up yet.

kRiscv64_fs0 3109

FP, not hooked up yet.

kRiscv64_fs1 3110

FP, not hooked up yet.

kRiscv64_fa0 3111

FP, not hooked up yet.

kRiscv64_fa1 3112

FP, not hooked up yet.

kRiscv64_fa2 3113

FP, not hooked up yet.

kRiscv64_fa3 3114

FP, not hooked up yet.

kRiscv64_fa4 3115

FP, not hooked up yet.

kRiscv64_fa5 3116

FP, not hooked up yet.

kRiscv64_fa6 3117

FP, not hooked up yet.

kRiscv64_fa7 3118

FP, not hooked up yet.

kRiscv64_fs2 3119

FP, not hooked up yet.

kRiscv64_fs3 3120

FP, not hooked up yet.

kRiscv64_fs4 3121

FP, not hooked up yet.

kRiscv64_fs5 3122

FP, not hooked up yet.

kRiscv64_fs6 3123

FP, not hooked up yet.

kRiscv64_fs7 3124

FP, not hooked up yet.

kRiscv64_fs8 3125

FP, not hooked up yet.

kRiscv64_fs9 3126

FP, not hooked up yet.

kRiscv64_fs10 3127

FP, not hooked up yet.

kRiscv64_fs11 3128

FP, not hooked up yet.

kRiscv64_ft8 3129

FP, not hooked up yet.

kRiscv64_ft9 3130

FP, not hooked up yet.

kRiscv64_ft10 3131

FP, not hooked up yet.

kRiscv64_ft11 3132

FP, not hooked up yet.

kRiscv64_f0 3133

FP alias

kRiscv64_f1 3134

FP alias

kRiscv64_f2 3135

FP alias

kRiscv64_f3 3136

FP alias

kRiscv64_f4 3137

FP alias

kRiscv64_f5 3138

FP alias

kRiscv64_f6 3139

FP alias

kRiscv64_f7 3140

FP alias

kRiscv64_f8 3141

FP alias

kRiscv64_f9 3142

FP alias

kRiscv64_f10 3143

FP alias

kRiscv64_f11 3144

FP alias

kRiscv64_f12 3145

FP alias

kRiscv64_f13 3146

FP alias

kRiscv64_f14 3147

FP alias

kRiscv64_f15 3148

FP alias

kRiscv64_f16 3149

FP alias

kRiscv64_f17 3150

FP alias

kRiscv64_f18 3151

FP alias

kRiscv64_f19 3152

FP alias

kRiscv64_f20 3153

FP alias

kRiscv64_f21 3154

FP alias

kRiscv64_f22 3155

FP alias

kRiscv64_f23 3156

FP alias

kRiscv64_f24 3157

FP alias

kRiscv64_f25 3158

FP alias

kRiscv64_f26 3159

FP alias

kRiscv64_f27 3160

FP alias

kRiscv64_f28 3161

FP alias

kRiscv64_f29 3162

FP alias

kRiscv64_f30 3163

FP alias

kRiscv64_f31 3164

FP alias

Defined at line 12 of file ../../src/developer/debug/shared/register_id.h

enum class Platform : uint32_t
Name Value
kUnknown 0
kFuchsia 1
kLinux 2
kMac 3

Only append to this list, the values are encoded in the IPC protocol which has stability

guarantees.

Defined at line 14 of file ../../src/developer/debug/shared/platform.h

enum class Arch : uint32_t
Name Value
kUnknown 0
kX64 1
kArm64 2
kRiscv64 3

Only append to this list, the values are encoded in the IPC protocol which has stability

guarantees.

Defined at line 14 of file ../../src/developer/debug/shared/arch.h

enum class SpecialRegisterType
Name Value Comments
kNone 0 --
kIP 1

Instruction Pointer

kSP 2

Stack Pointer

kTP 3

Thread Pointer

Defined at line 25 of file ../../src/developer/debug/shared/register_info.h

enum class WatchType : uint32_t
Name Value
kChannel 0
kFdio 1
kProcessExceptions 2
kJobExceptions 3
kSocket 4
kEventPair 5

Defined at line 30 of file ../../src/developer/debug/shared/message_loop_fuchsia.h

enum class RegisterFormat
Name Value Comments
kGeneral 0

General register that might hold any integer or an address.

kFloat 1

Floating-point number.

kVector 2

Vector registers that hold multiple values.

kVoidAddress 3

Registers that point to void*.

kWordAddress 4

Registers that point to uint64_t.

kSpecial 5

Things like flag registers that neither hold addresses nor numbers.

Note that we separate out "void" addresses and "word" addresses so the debugger frontend can

assign types to register values when appropriate.

Defined at line 34 of file ../../src/developer/debug/shared/register_info.h

enum class LogCategory
Name Value Comments
kAgent 0

Associated with general Debug Agent events.

kArchArm64 1

Associated with low-level arm64 events.

kArchx64 2

Associated with low-level x64 events.

kBreakpoint 3

Associated with the lifetime of breakpoints.

kJob 4

Associated with job events and filtering.

kMessageLoop 5

Tracking of events within the message loop.
Normally only required for debugging it.

kProcess 6

Mainly tracks the lifetime of a process.

kRemoteAPI 7

Log the received and sent remote API calls.

kSession 8

Associated with the zxdb client session.

kSetting 9

Associated with debugging the setting stores.

kTest 10

Associated with logging on tests.

kTiming 11

Will output all TIME_BLOCK() entries.
This is mostly used to profile how much time the overall functionality
of the debugger is taking.

kThread 12

Associated with threads (exception, state, etc.)

kWatchpoint 13

Associated with watchpoints.

kWorkerPool 14

Associated with the multithreaded work pool.

kDebugAdapter 15

Associated with debug adapter.

kBuildIDIndex 16

Associated with the build ID index.

kProcessSymbols 17

Associated with process symbols.

kModuleSymbols 18

Associated with module symbols.

kSystemSymbols 19

Associated with system symbols.

kDownloadManager 20

Associated with the download manager.

kAll 21

All the previous categories are enabled.
Log statements in this category will always be outputting if debug logging is enabled.

kNone 22

Used for any log statements for which the category could not be found.

Log Categories ----------------------------------------------------------------------------------

Defined at line 35 of file ../../src/developer/debug/shared/logging/debug.h

enum class LogSeverity
Name Value
kInfo 0
kWarn 1
kError 2

Implementation ----------------------------------------------------------------------------------

Defined at line 50 of file ../../src/developer/debug/shared/logging/logging.h

enum class RegisterCategory : uint32_t
Name Value Comments
kNone 0 --
kGeneral 1 --
kFloatingPoint 2 --
kVector 3 --
kDebug 4 --
kLast 5

Not an element, for marking the max size.

Categories --------------------------------------------------------------------------------------

Defined at line 133 of file ../../src/developer/debug/shared/register_info.h

Records

Functions

  • bool StringStartsWith (std::string_view str, std::string_view begins_with)

    Returns true if the first argument begins in exactly the second.

    Defined at line 11 of file ../../src/developer/debug/shared/string_util.cc

  • const char * ExceptionTypeToString (uint32_t type)

    Defined at line 9 of file ../../src/developer/debug/shared/zircon_utils.cc

  • bool IsDebuggerAttached ()

    Return whether there's a debugger attached to the current process.

    Defined at line 13 of file ../../src/lib/debug/debug.cc

  • RegisterValue CreateRegisterWithTestData (RegisterID id, size_t length)

    Creates a register with a data pattern within it. The pattern will 0x010203 ... (little-endian).

    Defined at line 9 of file ../../src/developer/debug/shared/register_test_support.cc

  • const char * ZxStatusToString (zx_status_t status)

    Defined at line 13 of file ../../src/developer/debug/shared/zx_status.cc

  • bool StringEndsWith (std::string_view str, std::string_view ends_with)

    Returns true if the first argument ends in exactly the second.

    Defined at line 15 of file ../../src/developer/debug/shared/string_util.cc

  • std::string HandleTypeToString (uint32_t handle_type)

    Converts a uint32_t handle type to a string. Returns "<unknown>" on failure.

    Defined at line 9 of file ../../src/developer/debug/shared/handle_info.cc

  • bool StringContains (std::string_view haystack, std::string_view needle)

    Defined at line 19 of file ../../src/developer/debug/shared/string_util.cc

  • Platform CurrentSystemPlatform ()

    Returns the platform of the currently executing code. Note: for the zxdb frontend, this will tell

    you the platform that the zxdb frontend is running on, not the platform being debugged.

    Defined at line 9 of file ../../src/developer/debug/shared/platform.cc

  • std::string CachePolicyToString (uint32_t cache_policy)

    Decodes a ZX_CACHE_POLICY_* enum.

    Defined at line 75 of file ../../src/developer/debug/shared/handle_info.cc

  • const char * PlatformToString (Platform p)

    Defined at line 21 of file ../../src/developer/debug/shared/platform.cc

  • void WaitForDebugger (uint32_t seconds)

    Wait until a debugger attaches, and then issue a breakpoint. The debugger can

    continue the execution.

    If there's no debugger attached within |seconds| seconds, the breakpoint will

    still be issued and the process will crash.

    Defined at line 23 of file ../../src/lib/debug/debug.cc

  • const char * ArchToString (Arch a)

    Defined at line 9 of file ../../src/developer/debug/shared/arch.cc

  • std::vector<std::string> HandleRightsToStrings (uint32_t handle_rights)

    Returns a vector of strings, one for each right set.

    Defined at line 90 of file ../../src/developer/debug/shared/handle_info.cc

  • void SetDebugLogging (bool )

    Activate this flag to activate debug output.

    Defined at line 115 of file ../../src/developer/debug/shared/logging/debug.cc

  • bool IsDebugLoggingActive ()

    Defined at line 111 of file ../../src/developer/debug/shared/logging/debug.cc

  • void BreakIntoDebuggerIfAttached ()

    If a debugger is attached, trigger a breakpoint. Do nothing otherwise.

    Defined at line 31 of file ../../src/lib/debug/debug.cc

  • const char * PlatformProcessIdName (Platform p, bool caps)

    Returns the string to use for a process or thread ID on the given platform. When caps is set, the

    result will be all caps, otherwise it will be all lowercase.

    Defined at line 35 of file ../../src/developer/debug/shared/platform.cc

  • std::vector<std::string> VmoFlagsToStrings (uint32_t flags)

    Converts a bitmask of ZX_INFO_VMO_* to a list of strings.

    Defined at line 128 of file ../../src/developer/debug/shared/handle_info.cc

  • const char * PlatformThreadIdName (Platform p, bool caps)

    Defined at line 47 of file ../../src/developer/debug/shared/platform.cc

  • Status ZxStatus (zx_status_t s)

    If there is an error and no message is given, the ZX_* constant will be queried and used.

    If given, the message will be used for most display purposes instead of the platform value, so

    if the value is important and you use a custom message, it should be manually included.

    These are split rather than using default values to avoid creating empty std::strings in the

    common case.

    Defined at line 35 of file ../../src/developer/debug/shared/status.cc

  • Status ZxStatus (zx_status_t s, std::string msg)

    Defined at line 48 of file ../../src/developer/debug/shared/status.cc

  • Status ErrnoStatus (int en)

    As with the ZxStatus version above, this will automatically use the strerror() string if no

    message is given.

    Defined at line 75 of file ../../src/developer/debug/shared/status.cc

  • Status ErrnoStatus (int en, std::string msg)

    Defined at line 82 of file ../../src/developer/debug/shared/status.cc

  • const char * WatchTypeToString (WatchType )

    Defined at line 533 of file ../../src/developer/debug/shared/message_loop_fuchsia.cc

  • bool operator< (const FileLineFunction & a, const FileLineFunction & b)

    Comparison function for use in set and map.

    Defined at line 12 of file ../../src/developer/debug/shared/logging/file_line_function.cc

  • bool operator== (const FileLineFunction & a, const FileLineFunction & b)

    Defined at line 28 of file ../../src/developer/debug/shared/logging/file_line_function.cc

  • bool operator!= (const FileLineFunction & a, const FileLineFunction & b)

    Defined at line 32 of file ../../src/developer/debug/shared/logging/file_line_function.cc

  • template <class BidirectionalIterator, class T, class CompareLess, class CompareEqual>
    BidirectionalIterator LargestLessOrEqual (BidirectionalIterator first, BidirectionalIterator last, const T & val, CompareLess less, CompareEqual equals)

    Returns an iterator pointing to the largest element in [first, last) less than or equal to the

    given |val|. As with std::lower_bound, the range [first, last) must be sorted according to

    the |less| comparator.

    If the query matches exactly a sequence of equal items, the first duplicate will be returned. If

    the query value matches a sequence of duplicates and does not exactly equal to them (it's

    returning the previous item), the last of the sequence will be returned.

    For example, if you had a sorted range of addresses and you want to know which one begins the

    range which an address falls into:

    std::vector

    <AddressRecord

    > ranges;

    int64_t address;

    auto found = LargestLessOrEqual(

    ranges.begin(), ranges.end(), address,

    [](const AddressRecord

    &

    record, uint64_t addr) { return record.addr

    <

    addr; },

    [](const AddressRecord

    &

    record, uint64_t addr) { return record.addr == addr; });

    For simple types, you can pass |std::less

    <T

    >()| and |std::equal_to

    <T

    >()| from

    <functional

    > for

    the comparators.

    Defined at line 34 of file ../../src/developer/debug/shared/largest_less_or_equal.h

  • const RegisterInfo * InfoForRegister (RegisterID id)

    Defined at line 603 of file ../../src/developer/debug/shared/register_info.cc

  • const RegisterInfo * InfoForRegister (Arch arch, const std::string & name)

    Defined at line 620 of file ../../src/developer/debug/shared/register_info.cc

  • const char * RegisterIDToString (RegisterID )

    Defined at line 686 of file ../../src/developer/debug/shared/register_info.cc

  • RegisterID StringToRegisterID (Arch arch, const std::string & )

    Defined at line 697 of file ../../src/developer/debug/shared/register_info.cc

  • RegisterID GetSpecialRegisterID (Arch , SpecialRegisterType )

    Returns the register ID for the given special register.

    Defined at line 637 of file ../../src/developer/debug/shared/register_info.cc

  • SpecialRegisterType GetSpecialRegisterType (RegisterID id)

    Returns the special register type for a register ID.

    Defined at line 715 of file ../../src/developer/debug/shared/register_info.cc

  • const RegisterInfo * DWARFToRegisterInfo (Arch , uint32_t dwarf_reg_id)

    Converts the ID number used by DWARF to our register info. Returns null if not found.

    Defined at line 734 of file ../../src/developer/debug/shared/register_info.cc

  • Arch GetArchForRegisterID (RegisterID )

    Find out what arch a register ID belongs to

    Defined at line 704 of file ../../src/developer/debug/shared/register_info.cc

  • bool IsGeneralRegister (RegisterID )

    Returns true if the given register is a "general" register. General

    registers are sent as part of the unwind frame data. Other registers must

    be requested specially from the target.

    Defined at line 753 of file ../../src/developer/debug/shared/register_info.cc

  • cpp20::span<const uint8_t> GetRegisterData (const std::vector<RegisterValue> & regs, RegisterID id)

    Gets the data for the given register from the array.

    This does two things. It searches for either the requested register or the canonical register.

    If it's a different canonical register (like you're asking for the a 32 bits pseudoregister out

    of a 64 bit register), the relevant bits will be extracted.

    If found, the return value will be the range of data within the data owned by |regs|

    corresponding to the requested register. If the source data is truncated, the result will be

    truncated also so it may have less data than expected.

    If the register is not found, the returned view will be empty.

    Defined at line 817 of file ../../src/developer/debug/shared/register_info.cc

  • void SetLogCategories (std::initializer_list<LogCategory> )

    Defined at line 123 of file ../../src/developer/debug/shared/logging/debug.cc

  • std::string DR6ToString (uint64_t dr6)

    Debug functions -------------------------------------------------------------

    Defined at line 16 of file ../../src/developer/debug/shared/arch_x86.cc

  • Status::Type MapFuchsiaError (zx_status_t * status)

    Map some Fuchsia errors to their cross-platform equivalents. Resets the status to 0 if a

    non-platform error was generated.

    Defined at line 16 of file ../../src/developer/debug/shared/status.cc

  • std::string DR7ToString (uint64_t dr7)

    Defined at line 24 of file ../../src/developer/debug/shared/arch_x86.cc

  • const char * RegisterCategoryToString (RegisterCategory )

    Defined at line 762 of file ../../src/developer/debug/shared/register_info.cc

  • RegisterCategory RegisterIDToCategory (RegisterID )

    Defined at line 780 of file ../../src/developer/debug/shared/register_info.cc

  • bool CreateLocalNonBlockingPipe (fbl::unique_fd * out_end, fbl::unique_fd * in_end)

    Creates a nonblocking temporary pipe pipe and assigns the two ends of it to the two out

    parameters. Returns true on success.

    Defined at line 24 of file ../../src/developer/debug/shared/message_loop.cc

  • Status::Type MapErrnoError (int * en)

    Map some errno values to their cross-platform equivalents. Resets the status to 0 if a

    non-platform error was generated.

    Defined at line 59 of file ../../src/developer/debug/shared/status.cc