v8
3.25.30(node0.11.13)
V8 is Google's open source JavaScript engine
|
Go to the source code of this file.
Data Structures | |
class | Instruction |
class | Registers |
struct | Registers::RegisterAlias |
class | VFPRegisters |
Namespaces | |
v8 | |
v8::internal | |
Macros | |
#define | DECLARE_STATIC_TYPED_ACCESSOR(return_type, Name) |
#define | DECLARE_STATIC_ACCESSOR(Name) DECLARE_STATIC_TYPED_ACCESSOR(int, Name) |
Typedefs | |
typedef int32_t | Instr |
typedef uint32_t | SRegisterFieldMask |
Enumerations | |
enum | Condition { kNoCondition = -1, eq = 0 << 28, ne = 1 << 28, cs = 2 << 28, cc = 3 << 28, mi = 4 << 28, pl = 5 << 28, vs = 6 << 28, vc = 7 << 28, hi = 8 << 28, ls = 9 << 28, ge = 10 << 28, lt = 11 << 28, gt = 12 << 28, le = 13 << 28, al = 14 << 28, kSpecialCondition = 15 << 28, kNumberOfConditions = 16, hs = cs, lo = cc, eq = 0 << 28, ne = 1 << 28, hs = cs, lo = cc, mi = 4 << 28, pl = 5 << 28, vs = 6 << 28, vc = 7 << 28, hi = 8 << 28, ls = 9 << 28, ge = 10 << 28, lt = 11 << 28, gt = 12 << 28, le = 13 << 28, al = 14 << 28, nv = 15, no_condition = -1, overflow = 0, no_overflow = 1, below = 2, above_equal = 3, equal = 4, not_equal = 5, below_equal = 6, above = 7, negative = 8, positive = 9, parity_even = 10, parity_odd = 11, less = 12, greater_equal = 13, less_equal = 14, greater = 15, carry = below, not_carry = above_equal, zero = equal, not_zero = not_equal, sign = negative, not_sign = positive, kNoCondition = -1, overflow = 0, no_overflow = 1, Uless = 2, Ugreater_equal = 3, equal = 4, not_equal = 5, Uless_equal = 6, Ugreater = 7, negative = 8, positive = 9, parity_even = 10, parity_odd = 11, less = 12, greater_equal = 13, less_equal = 14, greater = 15, ueq = 16, nue = 17, cc_always = 18, carry = below, not_carry = above_equal, zero = equal, eq = 0 << 28, not_zero = not_equal, ne = 1 << 28, nz = not_equal, sign = negative, not_sign = positive, mi = 4 << 28, pl = 5 << 28, hi = 8 << 28, ls = 9 << 28, ge = 10 << 28, lt = 11 << 28, gt = 12 << 28, le = 13 << 28, hs = cs, lo = cc, al = 14 << 28, cc_default = kNoCondition, no_condition = -1, overflow = 0, no_overflow = 1, below = 2, above_equal = 3, equal = 4, not_equal = 5, below_equal = 6, above = 7, negative = 8, positive = 9, parity_even = 10, parity_odd = 11, less = 12, greater_equal = 13, less_equal = 14, greater = 15, always = 16, never = 17, carry = below, not_carry = above_equal, zero = equal, not_zero = not_equal, sign = negative, not_sign = positive, last_condition = greater } |
enum | Opcode { AND = 0 << 21, EOR = 1 << 21, SUB = 2 << 21, RSB = 3 << 21, ADD = 4 << 21, ADC = 5 << 21, SBC = 6 << 21, RSC = 7 << 21, TST = 8 << 21, TEQ = 9 << 21, CMP = 10 << 21, CMN = 11 << 21, ORR = 12 << 21, MOV = 13 << 21, BIC = 14 << 21, MVN = 15 << 21, SPECIAL = 0 << kOpcodeShift, REGIMM = 1 << kOpcodeShift, J = ((0 << 3) + 2) << kOpcodeShift, JAL = ((0 << 3) + 3) << kOpcodeShift, BEQ = ((0 << 3) + 4) << kOpcodeShift, BNE = ((0 << 3) + 5) << kOpcodeShift, BLEZ = ((0 << 3) + 6) << kOpcodeShift, BGTZ = ((0 << 3) + 7) << kOpcodeShift, ADDI = ((1 << 3) + 0) << kOpcodeShift, ADDIU = ((1 << 3) + 1) << kOpcodeShift, SLTI = ((1 << 3) + 2) << kOpcodeShift, SLTIU = ((1 << 3) + 3) << kOpcodeShift, ANDI = ((1 << 3) + 4) << kOpcodeShift, ORI = ((1 << 3) + 5) << kOpcodeShift, XORI = ((1 << 3) + 6) << kOpcodeShift, LUI = ((1 << 3) + 7) << kOpcodeShift, COP1 = ((2 << 3) + 1) << kOpcodeShift, BEQL = ((2 << 3) + 4) << kOpcodeShift, BNEL = ((2 << 3) + 5) << kOpcodeShift, BLEZL = ((2 << 3) + 6) << kOpcodeShift, BGTZL = ((2 << 3) + 7) << kOpcodeShift, SPECIAL2 = ((3 << 3) + 4) << kOpcodeShift, SPECIAL3 = ((3 << 3) + 7) << kOpcodeShift, LB = ((4 << 3) + 0) << kOpcodeShift, LH = ((4 << 3) + 1) << kOpcodeShift, LWL = ((4 << 3) + 2) << kOpcodeShift, LW = ((4 << 3) + 3) << kOpcodeShift, LBU = ((4 << 3) + 4) << kOpcodeShift, LHU = ((4 << 3) + 5) << kOpcodeShift, LWR = ((4 << 3) + 6) << kOpcodeShift, SB = ((5 << 3) + 0) << kOpcodeShift, SH = ((5 << 3) + 1) << kOpcodeShift, SWL = ((5 << 3) + 2) << kOpcodeShift, SW = ((5 << 3) + 3) << kOpcodeShift, SWR = ((5 << 3) + 6) << kOpcodeShift, LWC1 = ((6 << 3) + 1) << kOpcodeShift, LDC1 = ((6 << 3) + 5) << kOpcodeShift, PREF = ((6 << 3) + 3) << kOpcodeShift, SWC1 = ((7 << 3) + 1) << kOpcodeShift, SDC1 = ((7 << 3) + 5) << kOpcodeShift, COP1X = ((1 << 4) + 3) << kOpcodeShift } |
enum | MiscInstructionsBits74 { BX = 1 << 4, BXJ = 2 << 4, BLX = 3 << 4, BKPT = 7 << 4, CLZ = 1 << 4 } |
enum | { H = 1 << 5, S6 = 1 << 6, L = 1 << 20, S = 1 << 20, W = 1 << 21, A = 1 << 21, B = 1 << 22, N = 1 << 22, U = 1 << 23, P = 1 << 24, I = 1 << 25, B4 = 1 << 4, B5 = 1 << 5, B6 = 1 << 6, B7 = 1 << 7, B8 = 1 << 8, B9 = 1 << 9, B12 = 1 << 12, B16 = 1 << 16, B18 = 1 << 18, B19 = 1 << 19, B20 = 1 << 20, B21 = 1 << 21, B22 = 1 << 22, B23 = 1 << 23, B24 = 1 << 24, B25 = 1 << 25, B26 = 1 << 26, B27 = 1 << 27, B28 = 1 << 28, kCondMask = 15 << 28, kALUMask = 0x6f << 21, kRdMask = 15 << 12, kCoprocessorMask = 15 << 8, kOpCodeMask = 15 << 21, kImm24Mask = (1 << 24) - 1, kImm16Mask = (1 << 16) - 1, kImm8Mask = (1 << 8) - 1, kOff12Mask = (1 << 12) - 1, kOff8Mask = (1 << 8) - 1 } |
enum | SBit { SetCC = 1 << 20, LeaveCC = 0 << 20 } |
enum | SRegister { CPSR = 0 << 22, SPSR = 1 << 22 } |
enum | ShiftOp { LSL = 0 << 5, LSR = 1 << 5, ASR = 2 << 5, ROR = 3 << 5, RRX = -1, kNumberOfShifts = 4 } |
enum | SRegisterField { CPSR_c = CPSR | 1 << 16, CPSR_x = CPSR | 1 << 17, CPSR_s = CPSR | 1 << 18, CPSR_f = CPSR | 1 << 19, SPSR_c = SPSR | 1 << 16, SPSR_x = SPSR | 1 << 17, SPSR_s = SPSR | 1 << 18, SPSR_f = SPSR | 1 << 19 } |
enum | AddrMode { Offset = (8|4|0) << 21, PreIndex = (8|4|1) << 21, PostIndex = (0|4|0) << 21, NegOffset = (8|0|0) << 21, NegPreIndex = (8|0|1) << 21, NegPostIndex = (0|0|0) << 21, Offset = (8|4|0) << 21, PreIndex = (8|4|1) << 21, PostIndex = (0|4|0) << 21 } |
enum | BlockAddrMode { da = (0|0|0) << 21, ia = (0|4|0) << 21, db = (8|0|0) << 21, ib = (8|4|0) << 21, da_w = (0|0|1) << 21, ia_w = (0|4|1) << 21, db_w = (8|0|1) << 21, ib_w = (8|4|1) << 21, da_x = (0|0|0) << 21, ia_x = (0|4|0) << 21, db_x = (8|0|0) << 21, ib_x = (8|4|0) << 21, kBlockAddrModeMask = (8|4|1) << 21 } |
enum | LFlag { Long = 1 << 22, Short = 0 << 22 } |
enum | NeonDataType { NeonS8 = 0x1, NeonS16 = 0x2, NeonS32 = 0x4, NeonU8 = 1 << 24 | 0x1, NeonU16 = 1 << 24 | 0x2, NeonU32 = 1 << 24 | 0x4, NeonDataTypeSizeMask = 0x7, NeonDataTypeUMask = 1 << 24 } |
enum | NeonListType { nlt_1 = 0x7, nlt_2 = 0xA, nlt_3 = 0x6, nlt_4 = 0x2 } |
enum | NeonSize { Neon8 = 0x0, Neon16 = 0x1, Neon32 = 0x2, Neon64 = 0x3 } |
enum | SoftwareInterruptCodes { kCallRtRedirected = 0x10, kBreakpoint = 0x20, kStopCode = 1 << 23, call_rt_redirected = 0xfffff } |
enum | VFPRegPrecision { kSinglePrecision = 0, kDoublePrecision = 1 } |
enum | VFPConversionMode { kFPSCRRounding = 0, kDefaultRoundToZero = 1 } |
enum | VFPRoundingMode { RN = 0 << 22, RP = 1 << 22, RM = 2 << 22, RZ = 3 << 22, kRoundToNearest = RN, kRoundToPlusInf = RP, kRoundToMinusInf = RM, kRoundToZero = RZ } |
enum | CheckForInexactConversion { kCheckForInexactConversion, kDontCheckForInexactConversion, kCheckForInexactConversion, kDontCheckForInexactConversion } |
enum | Hint { no_hint = 0, no_hint = 0 } |
Functions | |
int | EncodeConstantPoolLength (int length) |
int | DecodeConstantPoolLength (int instr) |
Condition | NegateCondition (Condition cond) |
Condition | ReverseCondition (Condition cond) |
Hint | NegateHint (Hint ignored) |
Variables | |
const int | kConstantPoolMarkerMask = 0xfff000f0 |
const int | kConstantPoolMarker = 0xe7f000f0 |
const int | kConstantPoolLengthMaxMask = 0xffff |
const int | kCodeAgeJumpInstruction = 0xe51ff004 |
const int | kNumRegisters = 16 |
const int | kNumVFPSingleRegisters = 32 |
const int | kNumVFPDoubleRegisters = 32 |
const int | kNumVFPRegisters = kNumVFPSingleRegisters + kNumVFPDoubleRegisters |
const int | kPCRegister = 15 |
const int | kNoRegister = -1 |
const uint32_t | kStopCodeMask = kStopCode - 1 |
const uint32_t | kMaxStopCode = kStopCode - 1 |
const int32_t | kDefaultStopCode = -1 |
const uint32_t | kVFPExceptionMask = 0xf |
const uint32_t | kVFPInvalidOpExceptionBit = 1 << 0 |
const uint32_t | kVFPOverflowExceptionBit = 1 << 2 |
const uint32_t | kVFPUnderflowExceptionBit = 1 << 3 |
const uint32_t | kVFPInexactExceptionBit = 1 << 4 |
const uint32_t | kVFPFlushToZeroMask = 1 << 24 |
const uint32_t | kVFPDefaultNaNModeControlBit = 1 << 25 |
const uint32_t | kVFPNConditionFlagBit = 1 << 31 |
const uint32_t | kVFPZConditionFlagBit = 1 << 30 |
const uint32_t | kVFPCConditionFlagBit = 1 << 29 |
const uint32_t | kVFPVConditionFlagBit = 1 << 28 |
const uint32_t | kVFPRoundingModeMask = 3 << 22 |
const Instr | kPopInstruction |
const Instr | kPushRegPattern |
const Instr | kPopRegPattern |
const Instr | kVldrDPCMask |
const Instr | kVldrDPCPattern |
const Instr | kLdrRegFpOffsetPattern |
const Instr | kStrRegFpOffsetPattern |
const Instr | kLdrRegFpNegOffsetPattern |
const Instr | kStrRegFpNegOffsetPattern |
const Instr | kLdrStrInstrTypeMask |
const Instr | kLdrStrInstrArgumentMask |
const Instr | kLdrStrOffsetMask |
#define DECLARE_STATIC_ACCESSOR | ( | Name | ) | DECLARE_STATIC_TYPED_ACCESSOR(int, Name) |
Definition at line 521 of file constants-arm.h.
#define DECLARE_STATIC_TYPED_ACCESSOR | ( | return_type, | |
Name | |||
) |
Definition at line 515 of file constants-arm.h.