mirror of
https://github.com/revng/revng
synced 2026-06-21 14:07:57 +00:00
Introduce model::Register::getSize
This commit is contained in:
@@ -444,6 +444,149 @@ inline llvm::StringRef getRegisterName(Values V) {
|
||||
}
|
||||
}
|
||||
|
||||
/// Return the size of the register in bytes
|
||||
inline size_t getSize(Values V) {
|
||||
switch (V) {
|
||||
case Invalid:
|
||||
revng_abort();
|
||||
case eax_x86:
|
||||
case ebx_x86:
|
||||
case ecx_x86:
|
||||
case edx_x86:
|
||||
case esi_x86:
|
||||
case edi_x86:
|
||||
case ebp_x86:
|
||||
case esp_x86:
|
||||
return 4;
|
||||
case rax_x86_64:
|
||||
case rbx_x86_64:
|
||||
case rcx_x86_64:
|
||||
case rdx_x86_64:
|
||||
case rbp_x86_64:
|
||||
case rsp_x86_64:
|
||||
case rsi_x86_64:
|
||||
case rdi_x86_64:
|
||||
case r8_x86_64:
|
||||
case r9_x86_64:
|
||||
case r10_x86_64:
|
||||
case r11_x86_64:
|
||||
case r12_x86_64:
|
||||
case r13_x86_64:
|
||||
case r14_x86_64:
|
||||
case r15_x86_64:
|
||||
case xmm0_x86_64:
|
||||
case xmm1_x86_64:
|
||||
case xmm2_x86_64:
|
||||
case xmm3_x86_64:
|
||||
case xmm4_x86_64:
|
||||
case xmm5_x86_64:
|
||||
case xmm6_x86_64:
|
||||
case xmm7_x86_64:
|
||||
return 8;
|
||||
case r0_arm:
|
||||
case r1_arm:
|
||||
case r2_arm:
|
||||
case r3_arm:
|
||||
case r4_arm:
|
||||
case r5_arm:
|
||||
case r6_arm:
|
||||
case r7_arm:
|
||||
case r8_arm:
|
||||
case r9_arm:
|
||||
case r10_arm:
|
||||
case r11_arm:
|
||||
case r12_arm:
|
||||
case r13_arm:
|
||||
case r14_arm:
|
||||
return 4;
|
||||
case x0_aarch64:
|
||||
case x1_aarch64:
|
||||
case x2_aarch64:
|
||||
case x3_aarch64:
|
||||
case x4_aarch64:
|
||||
case x5_aarch64:
|
||||
case x6_aarch64:
|
||||
case x7_aarch64:
|
||||
case x8_aarch64:
|
||||
case x9_aarch64:
|
||||
case x10_aarch64:
|
||||
case x11_aarch64:
|
||||
case x12_aarch64:
|
||||
case x13_aarch64:
|
||||
case x14_aarch64:
|
||||
case x15_aarch64:
|
||||
case x16_aarch64:
|
||||
case x17_aarch64:
|
||||
case x18_aarch64:
|
||||
case x19_aarch64:
|
||||
case x20_aarch64:
|
||||
case x21_aarch64:
|
||||
case x22_aarch64:
|
||||
case x23_aarch64:
|
||||
case x24_aarch64:
|
||||
case x25_aarch64:
|
||||
case x26_aarch64:
|
||||
case x27_aarch64:
|
||||
case x28_aarch64:
|
||||
case x29_aarch64:
|
||||
case lr_aarch64:
|
||||
case sp_aarch64:
|
||||
return 8;
|
||||
case v0_mips:
|
||||
case v1_mips:
|
||||
case a0_mips:
|
||||
case a1_mips:
|
||||
case a2_mips:
|
||||
case a3_mips:
|
||||
case s0_mips:
|
||||
case s1_mips:
|
||||
case s2_mips:
|
||||
case s3_mips:
|
||||
case s4_mips:
|
||||
case s5_mips:
|
||||
case s6_mips:
|
||||
case s7_mips:
|
||||
case gp_mips:
|
||||
case sp_mips:
|
||||
case fp_mips:
|
||||
case ra_mips:
|
||||
return 4;
|
||||
case r0_systemz:
|
||||
case r1_systemz:
|
||||
case r2_systemz:
|
||||
case r3_systemz:
|
||||
case r4_systemz:
|
||||
case r5_systemz:
|
||||
case r6_systemz:
|
||||
case r7_systemz:
|
||||
case r8_systemz:
|
||||
case r9_systemz:
|
||||
case r10_systemz:
|
||||
case r11_systemz:
|
||||
case r12_systemz:
|
||||
case r13_systemz:
|
||||
case r14_systemz:
|
||||
case r15_systemz:
|
||||
case f0_systemz:
|
||||
case f1_systemz:
|
||||
case f2_systemz:
|
||||
case f3_systemz:
|
||||
case f4_systemz:
|
||||
case f5_systemz:
|
||||
case f6_systemz:
|
||||
case f7_systemz:
|
||||
case f8_systemz:
|
||||
case f9_systemz:
|
||||
case f10_systemz:
|
||||
case f11_systemz:
|
||||
case f12_systemz:
|
||||
case f13_systemz:
|
||||
case f14_systemz:
|
||||
case f15_systemz:
|
||||
return 8;
|
||||
}
|
||||
}
|
||||
|
||||
inline Values fromName(llvm::StringRef Name) {
|
||||
return getValueFromYAMLScalar<Values>(Name);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user