@@ -26,6 +26,7 @@ use crate::{
2626 calling_convention:: CoreCallingConvention ,
2727 data_buffer:: DataBuffer ,
2828 disassembly:: InstructionTextToken ,
29+ ffi:: INVALID_REGISTER ,
2930 function:: Function ,
3031 platform:: Platform ,
3132 rc:: * ,
@@ -665,6 +666,13 @@ impl CoreArchitecture {
665666 pub fn name ( & self ) -> String {
666667 unsafe { BnString :: into_string ( BNGetArchitectureName ( self . handle ) ) }
667668 }
669+
670+ pub fn register_stack_for_register ( & self , reg : CoreRegister ) -> Option < CoreRegisterStack > {
671+ match unsafe { BNGetArchitectureRegisterStackForRegister ( self . handle , reg. id ( ) . 0 ) } {
672+ INVALID_REGISTER => None ,
673+ reg_stack => CoreRegisterStack :: new ( * self , RegisterStackId :: from ( reg_stack) ) ,
674+ }
675+ }
668676}
669677
670678unsafe impl Send for CoreArchitecture { }
@@ -967,14 +975,14 @@ impl Architecture for CoreArchitecture {
967975
968976 fn stack_pointer_reg ( & self ) -> Option < CoreRegister > {
969977 match unsafe { BNGetArchitectureStackPointerRegister ( self . handle ) } {
970- 0xffff_ffff => None ,
978+ INVALID_REGISTER => None ,
971979 reg => Some ( CoreRegister :: new ( * self , reg. into ( ) ) ?) ,
972980 }
973981 }
974982
975983 fn link_reg ( & self ) -> Option < CoreRegister > {
976984 match unsafe { BNGetArchitectureLinkRegister ( self . handle ) } {
977- 0xffff_ffff => None ,
985+ INVALID_REGISTER => None ,
978986 reg => Some ( CoreRegister :: new ( * self , reg. into ( ) ) ?) ,
979987 }
980988 }
@@ -1257,7 +1265,7 @@ pub trait ArchitectureExt: Architecture {
12571265 let name = name. to_cstr ( ) ;
12581266
12591267 match unsafe { BNGetArchitectureRegisterByName ( self . as_ref ( ) . handle , name. as_ptr ( ) ) } {
1260- 0xffff_ffff => None ,
1268+ INVALID_REGISTER => None ,
12611269 reg => self . register_from_id ( reg. into ( ) ) ,
12621270 }
12631271 }
@@ -2130,7 +2138,7 @@ where
21302138 if let Some ( reg) = custom_arch. stack_pointer_reg ( ) {
21312139 reg. id ( ) . 0
21322140 } else {
2133- 0xffff_ffff
2141+ INVALID_REGISTER
21342142 }
21352143 }
21362144
@@ -2143,7 +2151,7 @@ where
21432151 if let Some ( reg) = custom_arch. link_reg ( ) {
21442152 reg. id ( ) . 0
21452153 } else {
2146- 0xffff_ffff
2154+ INVALID_REGISTER
21472155 }
21482156 }
21492157
@@ -2198,7 +2206,7 @@ where
21982206 result. firstTopRelativeReg = reg. id ( ) . 0 ;
21992207 result. topRelativeCount = count as u32 ;
22002208 } else {
2201- result. firstTopRelativeReg = 0xffff_ffff ;
2209+ result. firstTopRelativeReg = INVALID_REGISTER ;
22022210 result. topRelativeCount = 0 ;
22032211 }
22042212
0 commit comments