#include <AlphaOperation.h>
Public メソッド | |
u64 | operator() (EmulatorUtility::OpEmulationState *opState) const |
AlphaOperation.h の 273 行で定義されています。
u64 Onikiri::AlphaLinux::Operation::AlphaInsxh< Type, TSrc1, TSrc2 >::operator() | ( | EmulatorUtility::OpEmulationState * | opState | ) | const [inline] |
AlphaOperation.h の 275 行で定義されています。
参照先 Type.
00276 { 00277 u64 lhs = TSrc1()(opState); 00278 u64 rhs = TSrc2()(opState); 00279 00280 int shift_cnt = static_cast<int>( (rhs & 0x7) << 3 ); 00281 int byte_loc = 64 - shift_cnt; 00282 u64 bit_mask; 00283 00284 if (shift_cnt + sizeof(Type)*8 > 64 ) { 00285 bit_mask = ~(~(u64)0 << (shift_cnt + sizeof(Type)*8 - 64)); 00286 } 00287 else { 00288 bit_mask = 0; 00289 } 00290 00291 u64 result; 00292 result = lhs >> (byte_loc & 0x3f); 00293 result &= bit_mask; 00294 00295 return result; 00296 }