@@ -248,7 +248,7 @@ pub enum RiscVRegister {
248248 /// Temporaries
249249 T2 ,
250250 #[ strum( serialize = "s0" , serialize = "fp" ) ]
251- /// Saved register/frame pointer
251+ /// Saved register/frame pointer R29
252252 S0FP ,
253253 #[ strum( serialize = "s1" ) ]
254254 /// Saved registers
@@ -335,58 +335,60 @@ impl Default for ArmRegister {
335335
336336/// ARM Registers
337337/// https://developer.arm.com/documentation/dui0056/d/using-the-procedure-call-standard/register-roles-and-names/register-names
338+ /// Image of instructions https://duetorun.com/blog/arm/images/AArch64-registers.png
339+ /// - https://duetorun.com/blog/20230601/a64-regs/#user_program_registers
338340#[ derive( Debug , EnumString ) ]
339341pub enum ArmRegisterName {
342+ #[ strum( serialize = "wzr" , serialize = "xzr" ) ]
343+ /// Zero register. Hardware special.
344+ Zero ,
340345 #[ strum( serialize = "pc" ) ]
341- /// Program counter.
346+ /// Program counter. Hardware special register.
342347 Pc ,
343- #[ strum( serialize = "lr" ) ]
344- /// Link register.
345- Lr ,
346348 #[ strum( serialize = "sp" ) ]
347- /// Stack pointer.
349+ /// Stack pointer. Hardware special register.
348350 Sp ,
349- #[ strum( serialize = "ip " ) ]
350- /// Intra-procedure-call scratch register.
351- Ip ,
352- # [ strum ( serialize = "v8" ) ]
353- /// ARM-state variable register 8.
354- V8 ,
355- # [ strum ( serialize = "sl" ) ]
356- /// ARM-state variable register 7. Stack limit pointer in stack-checked variants.
357- Sl ,
358- # [ strum ( serialize = "sb" ) ]
359- /// ARM-state variable register 6. Static base in RWPI variants.
360- Sb ,
361- # [ strum ( serialize = "v5" ) ]
362- /// ARM-state variable register 5.
363- V5 ,
364- # [ strum ( serialize = "v4" ) ]
365- /// Variable register 4.
366- V4 ,
367- # [ strum ( serialize = "v3" ) ]
368- /// Variable register 3.
369- V3 ,
370- # [ strum ( serialize = "v2" ) ]
371- /// Variable register 2.
372- V2 ,
373- # [ strum ( serialize = "v1" ) ]
374- /// Variable register 1.
375- V1 ,
376- # [ strum ( serialize = "a4" ) ]
377- /// Argument/result/scratch register 4.
378- A4 ,
379- # [ strum ( serialize = "a3" ) ]
380- /// Argument/result/scratch register 3.
381- A3 ,
382- # [ strum ( serialize = "a2" ) ]
383- /// Argument/result/scratch register 2.
384- A2 ,
385- # [ strum ( serialize = "a1" ) ]
386- /// Argument/result/scratch register 1.
387- A1 ,
388- # [ strum ( serialize = "wzr" , serialize = "xzr" ) ]
389- Zero ,
351+ #[ strum( serialize = "lr " ) ]
352+ /// Link register. X30. Hardware special register.
353+ Lr ,
354+ // Parameter passing and/or scratch registers (volatile)
355+ X0 ,
356+ X1 ,
357+ X2 ,
358+ X3 ,
359+ X4 ,
360+ X5 ,
361+ X6 ,
362+ X7 ,
363+ // Caller-Saved scratch registers (volatile)
364+ /// XR
365+ X8 ,
366+ X9 ,
367+ X10 ,
368+ X11 ,
369+ X12 ,
370+ X13 ,
371+ X14 ,
372+ X15 ,
373+ /// IP0
374+ X16 ,
375+ /// IP1
376+ X17 ,
377+ /// PR
378+ X18 ,
379+ // Caller-Saved registers (non-volatile)
380+ X19 ,
381+ X20 ,
382+ X21 ,
383+ X22 ,
384+ X23 ,
385+ X24 ,
386+ X25 ,
387+ X26 ,
388+ X27 ,
389+ X28 ,
390+ /// FP
391+ X29 ,
390392}
391393
392394impl Default for ArmRegisterName {
0 commit comments