public inline nothrow ulong |
BitCount(ulong x) |
public nothrow void |
DisableAllInterrupts(Registers& regs) |
public nothrow void |
EnableAllInterrupts(Registers& regs) |
public inline nothrow void |
ExtractDigitsFromPageNumber(ulong pageNum, ushort& digit0, ushort& digit1, ushort& digit2) |
public String<char> |
FormatInstruction(ulong address, byte opCode, byte x, byte y, byte z, Formatter& formatter) |
public nothrow String<char> |
GetInterruptName(int irq) |
public Machine& |
GetMachine() |
public nothrow ulong |
GetMaxStackSize(ushort addressSpaceNumber) |
public nothrow int |
GetOpCode(const String<char>& opCodeName) |
public nothrow const String<char>& |
GetOpCodeName(byte opCode) |
public inline nothrow ulong |
GetPageNumber(ulong address) |
public String<char> |
GetProtectionStr(Protection protection) |
public inline nothrow byte |
GetSegmentIndex(ulong virtualAddress) |
public inline nothrow ulong |
GetSegmentPart(ulong virtualAddress) |
public nothrow bool |
GetUseTranslationCache() |
public nothrow bool |
GrowStack(ushort addressSpaceNumber) |
public nothrow void |
InvokePageFault(Registers& regs, ulong virtualAddress, Protection pageProtection, Protection access) |
public nothrow bool |
IsProcessorInKernelMode(Registers& regs) |
public nothrow bool |
IssuePageFault() |
public nothrow Protection |
MakeDefaultPageProtection(byte segmentIndex) |
public inline nothrow ulong |
MakeInterruptHandlerPtrAddress(byte irq) |
public inline nothrow ulong |
MakePageTableEntry(ulong pageAddress, ushort addressSpaceNumber, Protection protection) |
public inline nothrow ushort |
MakeSegmentOffset(byte segmentIndex) |
public inline nothrow ulong |
MakeVirtualTranslationRegisterValue(ulong rootPageAddress, ushort addressSpaceNumber) |
public inline nothrow ulong |
PackProtection(Protection pageProtection, Protection protection) |
public void |
Panic(const String<char>& message) |
public nothrow bool |
PanicThrows() |
public nothrow void |
PrintAddressValues(bool get, ushort addressSpaceNumber, ulong pageAddress, int entryIndex, ulong sourcePageNumber) |
public nothrow byte |
ReadMemoryByte(ulong address) |
public nothrow uint |
ReadMemoryUInt(ulong address) |
public nothrow ulong |
ReadMemoryULong(ulong address) |
public nothrow ushort |
ReadMemoryUShort(ulong address) |
public inline nothrow byte |
SaturatingSubtraction(byte x, byte y) |
public inline nothrow uint |
SaturatingSubtraction(uint x, uint y) |
public inline nothrow ulong |
SaturatingSubtraction(ulong x, ulong y) |
public inline nothrow ushort |
SaturatingSubtraction(ushort x, ushort y) |
public nothrow void |
SetKernelGrowStackFunction(KernelGrowStackFunction kernelGrowStackFunction_) |
public nothrow void |
SetKernelMaxStackSizeFunction(KernelMaxStackSizeFunction kernelMaxStackSizeFunction_) |
public nothrow void |
SetKernelShutdownFunc(KernelShutdownFunc kernelShutdownFunc_) |
public nothrow void |
SetProcessorToKernelMode(Registers& regs) |
public nothrow void |
SetProcessorToUserMode(Registers& regs) |
public nothrow void |
SetSecurityViolation(Registers& regs, ulong virtualAddress) |
public nothrow void |
SetStartUserTimeFunction(StartUserTimeFunction fun) |
public nothrow void |
SetStopUserTimeFunction(StopUserTimeFunction fun) |
public nothrow void |
SetUseTranslationCacheValue(bool use) |
public inline nothrow void |
UnpackPageTableEntry(ulong pte, ulong& pageAddress, ushort& addressSpaceNumber, Protection& protection) |
public inline nothrow void |
UnpackProtection(ulong packedValue, Protection& pageProtection, Protection& protection) |
public inline nothrow void |
UnpackVirtualTranslationRegisterValue(ulong virtualTranslationRegisterValue, ulong& rootPageAddress, ushort& addressSpaceNumber) |
public inline nothrow bool |
UseTranslationCache() |
public nothrow void |
WriteMemoryByte(ulong address, byte b) |
public nothrow void |
WriteMemoryUInt(ulong address, uint u) |
public nothrow void |
WriteMemoryULong(ulong address, ulong u) |
public nothrow void |
WriteMemoryUShort(ulong address, ushort s) |
public const byte |
ADD = 0x20u |
public const byte |
ADDI = 0x21u |
public const byte |
ADDU = 0x22u |
public const byte |
ADDUI = 0x23u |
public const ulong |
ALL_INTERRUPT_BITS = 0xFFFFFFFFFFFFFFFFu |
public const byte |
AND = 0xC8u |
public const byte |
ANDI = 0xC9u |
public const byte |
ANDN = 0xCAu |
public const byte |
ANDNH = 0xECu |
public const byte |
ANDNI = 0xCBu |
public const byte |
ANDNL = 0xEFu |
public const byte |
ANDNMH = 0xEDu |
public const byte |
ANDNML = 0xEEu |
public const byte |
BDIF = 0xD0 |
public const byte |
BDIFI = 0xD1u |
public const byte |
BEV = 0x4Eu |
public const byte |
BEVB = 0x4Fu |
public const byte |
BN = 0x40u |
public const byte |
BNB = 0x41u |
public const byte |
BNN = 0x48u |
public const byte |
BNNB = 0x49u |
public const byte |
BNP = 0x4Cu |
public const byte |
BNPB = 0x4Du |
public const byte |
BNZ = 0x4Au |
public const byte |
BNZB = 0x4Bu |
public const byte |
BOD = 0x46u |
public const byte |
BODB = 0x47u |
public const byte |
BP = 0x44u |
public const byte |
BPB = 0x45u |
public const byte |
BZ = 0x42u |
public const byte |
BZB = 0x43u |
public const byte |
CALL = 0xBEu |
public const byte |
CALLI = 0xBFu |
public const ulong |
CLOCK_BIT = cast<ulong>(1u) << irqClock |
public const byte |
CMP = 0x30u |
public const byte |
CMPI = 0x31u |
public const byte |
CMPU = 0x32u |
public const byte |
CMPUI = 0x33u |
public const ulong |
COW_BIT = cast<ulong>(1u) << irqCOW |
public const byte |
CSEV = 0x6Eu |
public const byte |
CSEVI = 0x6Fu |
public const byte |
CSN = 0x60u |
public const byte |
CSNI = 0x61u |
public const byte |
CSNN = 0x68u |
public const byte |
CSNNI = 0x69u |
public const byte |
CSNP = 0x6Cu |
public const byte |
CSNPI = 0x6Du |
public const byte |
CSNZ = 0x6Au |
public const byte |
CSNZI = 0x6Bu |
public const byte |
CSOD = 0x66u |
public const byte |
CSODI = 0x67u |
public const byte |
CSP = 0x64u |
public const byte |
CSPI = 0x65u |
public const byte |
CSWAP = 0x94u |
public const byte |
CSWAPI = 0x95u |
public const byte |
CSZ = 0x62u |
public const byte |
CSZI = 0x63u |
public const ulong |
DISK_BIT = cast<ulong>(1u) << irqDisk |
public const byte |
DIV = 0x1Cu |
public const byte |
DIVI = 0x1Du |
public const byte |
DIVU = 0x1Eu |
public const byte |
DIVUI = 0x1Fu |
public const byte |
FADD = 0x04u |
public const byte |
FCMP = 0x01u |
public const byte |
FCMPE = 0x11u |
public const byte |
FDIV = 0x14u |
public const byte |
FEQL = 0x03u |
public const byte |
FEQLE = 0x13u |
public const byte |
FINT = 0x17u |
public const byte |
FIX = 0x05u |
public const byte |
FIXU = 0x07u |
public const byte |
FLOT = 0x08u |
public const byte |
FLOTI = 0x09u |
public const byte |
FLOTU = 0x0Au |
public const byte |
FLOTUI = 0x0Bu |
public const byte |
FMUL = 0x10u |
public const byte |
FREM = 0x16u |
public const byte |
FSQRT = 0x15u |
public const byte |
FSUB = 0x06u |
public const byte |
FUN = 0x02u |
public const byte |
FUNE = 0x12u |
public const byte |
GET = 0xFEu |
public const byte |
GETA = 0xF4u |
public const byte |
GETAB = 0xF5u |
public const byte |
GO = 0x9Eu |
public const byte |
GOI = 0x9Fu |
public const byte |
I16ADDU = 0x2Eu |
public const byte |
I16ADDUI = 0x2Fu |
public const byte |
I2ADDU = 0x28u |
public const byte |
I2ADDUI = 0x29u |
public const byte |
I4ADDU = 0x2Au |
public const byte |
I4ADDUI = 0x2Bu |
public const byte |
I8ADDU = 0x2Cu |
public const byte |
I8ADDUI = 0x2Du |
public const byte |
INCH = 0xE4u |
public const byte |
INCL = 0xE7u |
public const byte |
INCMH = 0xE5u |
public const byte |
INCML = 0xE6u |
public const byte |
JMP = 0xF0u |
public const byte |
JMPB = 0xF1u |
public const ulong |
KEYBOARD_BIT = cast<ulong>(1u) << irqKeyboard |
public const ulong |
K_BIT = cast<ulong>(1u) << irqK |
public const byte |
LDB = 0x80u |
public const byte |
LDBI = 0x81u |
public const byte |
LDBU = 0x82u |
public const byte |
LDBUI = 0x83u |
public const byte |
LDHT = 0x92u |
public const byte |
LDHTI = 0x93u |
public const byte |
LDO = 0x8Cu |
public const byte |
LDOI = 0x8Du |
public const byte |
LDOU = 0x8Eu |
public const byte |
LDOUI = 0x8Fu |
public const byte |
LDSF = 0x90u |
public const byte |
LDSFI = 0x91u |
public const byte |
LDT = 0x88u |
public const byte |
LDTI = 0x89u |
public const byte |
LDTU = 0x8Au |
public const byte |
LDTUI = 0x8Bu |
public const byte |
LDUNC = 0x96u |
public const byte |
LDUNCI = 0x97u |
public const byte |
LDVTS = 0x98u |
public const byte |
LDVTSI = 0x99u |
public const byte |
LDW = 0x84u |
public const byte |
LDWI = 0x85u |
public const byte |
LDWU = 0x86u |
public const byte |
LDWUI = 0x87u |
public const ulong |
MACHINE_INTERRUPT_BITS = R_BIT | W_BIT | X_BIT | N_BIT | K_BIT | COW_BIT | S_BIT | P_BIT |
public const byte |
MOR = 0xDCu |
public const byte |
MORI = 0xDDu |
public const byte |
MUL = 0x18u |
public const byte |
MULI = 0x19u |
public const byte |
MULU = 0x1Au |
public const byte |
MULUI = 0x1Bu |
public const byte |
MUX = 0xD8u |
public const byte |
MUXI = 0xD9u |
public const byte |
MXOR = 0xDEu |
public const byte |
MXORI = 0xDFu |
public const byte |
NAND = 0xCCu |
public const byte |
NANDI = 0xCDu |
public const byte |
NEG = 0x34u |
public const byte |
NEGI = 0x35u |
public const byte |
NEGU = 0x36u |
public const byte |
NEGUI = 0x37u |
public const byte |
NOR = 0xC4u |
public const byte |
NORI = 0xC5u |
public const byte |
NXOR = 0xCEu |
public const byte |
NXORI = 0xCFu |
public const ulong |
N_BIT = cast<ulong>(1u) << irqN |
public const byte |
ODIF = 0xD6u |
public const byte |
ODIFI = 0xD7u |
public const byte |
OR = 0xC0u |
public const byte |
ORH = 0xE8u |
public const byte |
ORI = 0xC1u |
public const byte |
ORL = 0xEBu |
public const byte |
ORMH = 0xE9u |
public const byte |
ORML = 0xEAu |
public const byte |
ORN = 0xC2u |
public const byte |
ORNI = 0xC3u |
public const byte |
PBEV = 0x5Eu |
public const byte |
PBEVB = 0x5Fu |
public const byte |
PBN = 0x50u |
public const byte |
PBNB = 0x51u |
public const byte |
PBNN = 0x58u |
public const byte |
PBNNB = 0x59u |
public const byte |
PBNP = 0x5Cu |
public const byte |
PBNPB = 0x5Du |
public const byte |
PBNZ = 0x5Au |
public const byte |
PBNZB = 0x5Bu |
public const byte |
PBOD = 0x56u |
public const byte |
PBODB = 0x57u |
public const byte |
PBP = 0x54u |
public const byte |
PBPB = 0x55u |
public const byte |
PBZ = 0x52u |
public const byte |
PBZB = 0x53u |
public const byte |
PREGO = 0x9Cu |
public const byte |
PREGOI = 0x9Du |
public const byte |
PRELD = 0x9Au |
public const byte |
PRELDI = 0x9Bu |
public const byte |
PREST = 0xBAu |
public const byte |
PRESTI = 0xBBu |
public const byte |
PUSHJ = 0xF2u |
public const byte |
PUSHJB = 0xF3u |
public const byte |
PUT = 0xF6u |
public const byte |
PUTI = 0xF7u |
public const ulong |
P_BIT = cast<ulong>(1u) << irqP |
public const byte |
RESUME = 0xF9u |
public const byte |
RET = 0xF8u |
public const ulong |
R_BIT = cast<ulong>(1u) << irqR |
public const byte |
SADD = 0xDAu |
public const byte |
SADDI = 0xDBu |
public const byte |
SAVE = 0xFAu |
public const byte |
SETH = 0xE0u |
public const byte |
SETL = 0xE3u |
public const byte |
SETMH = 0xE1u |
public const byte |
SETML = 0xE2u |
public const byte |
SFLOT = 0x0Cu |
public const byte |
SFLOTI = 0x0Du |
public const byte |
SFLOTU = 0x0Eu |
public const byte |
SFLOTUI = 0x0Fu |
public const byte |
SL = 0x38u |
public const byte |
SLI = 0x39u |
public const byte |
SLU = 0x3Au |
public const byte |
SLUI = 0x3Bu |
public const ulong |
SOFTWARE_INTERRUPT_BIT = cast<ulong>(1u) << irqSoftware |
public const byte |
SR = 0x03Cu |
public const byte |
SRI = 0x3Du |
public const byte |
SRU = 0x3Eu |
public const byte |
SRUI = 0x3Fu |
public const byte |
STB = 0xA0u |
public const byte |
STBI = 0xA1u |
public const byte |
STBU = 0xA2u |
public const byte |
STBUI = 0xA3u |
public const byte |
STCO = 0xB4u |
public const byte |
STCOI = 0xB5u |
public const byte |
STHT = 0xB2u |
public const byte |
STHTI = 0xB3u |
public const byte |
STO = 0xACu |
public const byte |
STOI = 0xADu |
public const byte |
STOU = 0xAEu |
public const byte |
STOUI = 0xAFu |
public const byte |
STSF = 0xB0u |
public const byte |
STSFI = 0xB1u |
public const byte |
STT = 0xA8u |
public const byte |
STTI = 0xA9u |
public const byte |
STTU = 0xAAu |
public const byte |
STTUI = 0xABu |
public const byte |
STUNC = 0xB6u |
public const byte |
STUNCI = 0xB7u |
public const byte |
STW = 0xA4u |
public const byte |
STWI = 0xA5u |
public const byte |
STWU = 0xA6u |
public const byte |
STWUI = 0xA7u |
public const byte |
SUB = 0x24u |
public const byte |
SUBI = 0x25u |
public const byte |
SUBU = 0x26u |
public const byte |
SUBUI = 0x27u |
public const byte |
SWYM = 0xFDu |
public const byte |
SYNC = 0xFCu |
public const byte |
SYNCD = 0xB8u |
public const byte |
SYNCDI = 0xB9u |
public const byte |
SYNCID = 0xBCu |
public const byte |
SYNCIDI = 0xBDu |
public const ulong |
S_BIT = cast<ulong>(1u) << irqS |
public const byte |
TDIF = 0xD4u |
public const byte |
TDIFI = 0xD5u |
public const byte |
TRAP = 0x00u |
public const byte |
TRIP = 0xFFu |
public const byte |
UNSAVE = 0xFBu |
public const byte |
WDIF = 0xD2u |
public const byte |
WDIFI = 0xD3u |
public const ulong |
W_BIT = cast<ulong>(1u) << irqW |
public const byte |
XOR = 0xC6u |
public const byte |
XORI = 0xC7u |
public const ulong |
X_BIT = cast<ulong>(1u) << irqX |
public const byte |
ZSEV = 0x7Eu |
public const byte |
ZSEVI = 0x7Fu |
public const byte |
ZSN = 0x70u |
public const byte |
ZSNI = 0x71u |
public const byte |
ZSNN = 0x78u |
public const byte |
ZSNNI = 0x79u |
public const byte |
ZSNP = 0x7Cu |
public const byte |
ZSNPI = 0x7Du |
public const byte |
ZSNZ = 0x7Au |
public const byte |
ZSNZI = 0x7Bu |
public const byte |
ZSOD = 0x76u |
public const byte |
ZSODI = 0x77u |
public const byte |
ZSP = 0x74u |
public const byte |
ZSPI = 0x75u |
public const byte |
ZSZ = 0x72u |
public const byte |
ZSZI = 0x73u |
public const ulong |
addressSpaceMask = (cast<ulong>(1u) << numAddressSpaceBits) - 1u |
public const ulong |
bootProcAddress = kernelBaseAddress + dataSegmentBaseAddress |
public const ulong |
dataSegmentBaseAddress = 0x2000000000000000u |
public const byte |
dataSegmentIndex = 1u |
public const byte |
firstGlobalReg = 248u |
public const ulong |
interruptVectorBaseAddress = kernelDataBaseAddress + dataSegmentBaseAddress + 512u |
public const ulong |
interruptVectorEndAddress = interruptVectorBaseAddress + cast<ulong>(irqMax) * 8u |
public const ulong |
invalidAddrSpaceMask = ~addressSpaceMask |
public const ulong |
invalidAddress = cast |
public const byte |
irqCOW = 37u |
public const byte |
irqClock = 1u |
public const byte |
irqDisk = 2u |
public const int |
irqFirstSetBegin = 0 |
public const int |
irqFirstSetEnd = 4 |
public const byte |
irqK = 36u |
public const byte |
irqKeyboard = 3u |
public const byte |
irqMax = 64u |
public const byte |
irqN = 35u |
public const byte |
irqP = 39u |
public const byte |
irqR = 32u |
public const byte |
irqS = 38u |
public const int |
irqSecondSetBegin = 32 |
public const int |
irqSecondSetEnd = 40 |
public const byte |
irqSoftware = 0u |
public const byte |
irqW = 33u |
public const byte |
irqX = 34u |
public const ushort |
kernelAddressSpaceNumber = 0u |
public const ulong |
kernelBaseAddress = 0x8000000000000000u |
public const ulong |
kernelDataBaseAddress = kernelBaseAddress |
public const ulong |
m2Mask = ~cast |
public const ulong |
m4Mask = ~cast |
public const ulong |
m8Mask = ~cast |
public const ushort |
maxDigit = 511u |
public const int |
maxTraps = 256 |
public const byte |
numAddressSpaceBits = 10u |
public const ushort |
numDirectEntries = numSegmentPageEntriesInRootPage - 3u |
public const ushort |
numDirectTranslationCaches = 16u |
public const byte |
numProtectionBits = 3u |
public const byte |
numPteBits = 9u |
public const ushort |
numPtesInPage = 512u |
public const ushort |
numSegmentPageEntriesInRootPage = numPtesInPage / numSegments |
public const byte |
numSegments = 4u |
public const int |
numTranslationCacheEntries = 4096 |
public const int |
numTranslationCacheIndexSegmentEntries = 1024 |
public const byte |
numVirtualAddressBits = 48u |
public const byte |
pageOffsetBits = 12u |
public const ulong |
pageOffsetMask = 0x0FFFu |
public const ulong |
pageSize = 0x1000u |
public const ulong |
poolSegmentBaseAddress = 0x4000000000000000u |
public const byte |
poolSegmentIndex = 2u |
public const ulong |
protectionMask = (cast<ulong>(1u) << numProtectionBits) - 1u |
public const ushort |
pteOffsetMask = 0x1FFu |
public const byte |
regAX = 255u |
public const byte |
regBX = 254u |
public const byte |
regCX = 253u |
public const byte |
regDX = 252u |
public const byte |
regEX = 251u |
public const byte |
regFP = 249u |
public const byte |
regIX = 248u |
public const byte |
regSP = 250u |
public const byte |
segmentNumberMask = 0x03u |
public const byte |
segmentNumberShift = 61u |
public const ulong |
stackSegmentBaseAddress = 0x6000000000000000u |
public const byte |
stackSegmentIndex = 3u |
public const ulong |
textSegmentBaseAddress = 0x0000000000000000u |
public const byte |
textSegmentIndex = 0u |
public const ulong |
translationCacheIndexMask = (4096u / numSegments) - 1u |
public const ulong |
trapTableBaseAddress = interruptVectorEndAddress |
public const ulong |
trapTableEndAddress = trapTableBaseAddress + cast<ulong>(maxTraps) * 8u |
public const ulong |
trapXMask = 0x0000000000FF0000u |
public const byte |
trapXShift = 16u |
public const ulong |
trapYMask = 0x000000000000FF00u |
public const byte |
trapYShift = 8u |
public const ulong |
trapZMask = 0x00000000000000FFu |
public const byte |
trapZShift = 0u |
public const ulong |
virtualAddressBase = cast<ulong>(1u) << numVirtualAddressBits |
public const ulong |
virtualAddressBaseMask = virtualAddressBase - 1u |