#include <AlphaOperation.h>
Public メソッド | |
u64 | operator() (EmulatorUtility::OpEmulationState *opState) const |
AlphaOperation.h の 232 行で定義されています。
u64 Onikiri::AlphaLinux::Operation::AlphaExtxh< Type, TSrc1, TSrc2 >::operator() | ( | EmulatorUtility::OpEmulationState * | opState | ) | const [inline] |
AlphaOperation.h の 234 行で定義されています。
参照先 Type.
00235 { 00236 u64 result = 0; 00237 u64 lhs = TSrc1()(opState); 00238 u64 rhs = TSrc2()(opState); 00239 00240 int shift_cnt = static_cast<int>( (rhs & 0x7) << 3 ); 00241 int byte_loc = 64 - shift_cnt; 00242 result = lhs << (byte_loc & 0x3f); 00243 00244 // To avoid a optimization bug in VS2010 SP1. 00245 // Left shift is mistakenly done on u16 value... 00246 if( (size_t)( byte_loc & 0x3f ) >= sizeof(Type)*8 ){ 00247 result = 0; 00248 } 00249 00250 return static_cast<Type>(result); 00251 }