| 1237 | } |
| 1238 | |
| 1239 | pub fn set_reg_split<'a, H, L, E>( |
| 1240 | &'a self, |
| 1241 | size: usize, |
| 1242 | hi_reg: H, |
| 1243 | lo_reg: L, |
| 1244 | expr: E, |
| 1245 | ) -> ExpressionBuilder<'a, A, VoidExpr> |
| 1246 | where |
| 1247 | H: Into<LowLevelILRegister<A::Register>>, |
| 1248 | L: Into<LowLevelILRegister<A::Register>>, |
| 1249 | E: LiftableLowLevelILWithSize<'a, A>, |
| 1250 | { |
| 1251 | use binaryninjacore_sys::BNLowLevelILOperation::LLIL_SET_REG_SPLIT; |
| 1252 | |
| 1253 | // TODO verify valid id |
| 1254 | let hi_reg = hi_reg.into().id(); |
| 1255 | let lo_reg = lo_reg.into().id(); |
| 1256 | |
| 1257 | let expr = E::lift_with_size(self, expr, size); |
| 1258 | |
| 1259 | ExpressionBuilder { |
| 1260 | function: self, |
| 1261 | op: LLIL_SET_REG_SPLIT, |
| 1262 | size, |
| 1263 | // TODO: Make these optional? |
| 1264 | flag_write: FlagWriteId(0), |
| 1265 | op1: hi_reg.0 as u64, |
| 1266 | op2: lo_reg.0 as u64, |
| 1267 | op3: expr.index.0 as u64, |
| 1268 | op4: 0, |
| 1269 | _ty: PhantomData, |
| 1270 | } |
| 1271 | } |
| 1272 | |
| 1273 | pub fn flag( |
| 1274 | &self, |