📄 os.xml
字号:
</summary>
</member>
<member name="M:Hanselman.CST352.OS.Popr">
<summary>
Pop the contents at the top of the stack into register r1
<pre>
35 r1
</pre>
</summary>
</member>
<member name="M:Hanselman.CST352.OS.MemoryClear">
<summary>
set the bytes starting at address r1 of length r2 to zero
<pre>
33 r1, r2
</pre>
</summary>
</member>
<member name="M:Hanselman.CST352.OS.Popm">
<summary>
Pop the contents at the top of the stack into the memory pointed to by register r1
<pre>
36 r1
</pre>
</summary>
</member>
<member name="M:Hanselman.CST352.OS.AcquireLock">
<summary>
Acquire the OS lock whose # is provided in register r1.
Icf the lock is not held by the current process
the operation is a no-op
<pre>
23 r1
</pre>
</summary>
</member>
<member name="M:Hanselman.CST352.OS.ReleaseLock">
<summary>
Release the OS lock whose # is provided in register r1.
Another process or the idle process
must be scheduled at this point.
if the lock is not held by the current process,
the instruction is a no-op
<pre>
24 r1
</pre>
</summary>
</member>
<member name="M:Hanselman.CST352.OS.SignalEvent">
<summary>
Signal the event indicated by the value in register r1
<pre>
30 r1
</pre>
</summary>
</member>
<member name="M:Hanselman.CST352.OS.WaitEvent">
<summary>
Wait for the event in register r1 to be triggered resulting in a context-switch
<pre>
31 r1
</pre>
</summary>
</member>
<member name="M:Hanselman.CST352.OS.MapSharedMem">
<summary>
Map the shared memory region identified by r1 and return the start address in r2
<pre>
29 r1, r2
</pre>
</summary>
</member>
<member name="M:Hanselman.CST352.OS.Alloc">
<summary>
Allocate memory of the size equal to r1 bytes and return the address of the new memory in r2.
If failed, r2 is cleared to 0.
<pre>
22 r1, r2
</pre>
</summary>
</member>
<member name="M:Hanselman.CST352.OS.FreeMemory">
<summary>
Free the memory allocated whose address is in r1
<pre>
28 r1
</pre>
</summary>
</member>
<member name="M:Hanselman.CST352.OS.StackPush(System.UInt32,System.UInt32)">
<summary>
Push a uint on the stack for this Process
</summary>
<param name="processid">The Process Id</param>
<param name="avalue">The uint for the stack</param>
</member>
<member name="M:Hanselman.CST352.OS.StackPop(System.UInt32)">
<summary>
Pop a uint off the stack for this Process
</summary>
<param name="processid">The Process ID</param>
<returns>the uint from the stack</returns>
</member>
<member name="T:Hanselman.CST352.OS.EventState">
<summary>
An event is either Signaled or NonSignaled
</summary>
</member>
<member name="F:Hanselman.CST352.OS.EventState.NonSignaled">
<summary>
Events are by default NonSignaled
</summary>
</member>
<member name="F:Hanselman.CST352.OS.EventState.Signaled">
<summary>
Events become Signaled, and Processes that are waiting on them wake up when Signaled
</summary>
</member>
<member name="T:Hanselman.CST352.Instruction">
<summary>
Represents a single line in a program, consisting of an <see cref="F:Hanselman.CST352.Instruction.OpCode"/>
and one or two optional parameters. An instruction can parse a raw instruction from a test file.
Tge instruction is then loaded into an <see cref="T:Hanselman.CST352.InstructionCollection"/> which is a member of
<see cref="T:Hanselman.CST352.Program"/>. The <see cref="T:Hanselman.CST352.InstructionCollection"/> is translated into bytes that are
loaded into the processes memory space. It's never used again, but it's a neat overly object oriented
construct that simplified the coding of the creation of a <see cref="T:Hanselman.CST352.Program"/> and complicated the
running of the whole system. It was worth it though.
</summary>
</member>
<member name="M:Hanselman.CST352.Instruction.ToString">
<summary>
Overridden method for pretty printing of Instructions
</summary>
<returns>A formatted string representing an Instruction</returns>
</member>
<member name="F:Hanselman.CST352.Instruction.OpCode">
<summary>
The OpCode for this Instruction
</summary>
</member>
<member name="F:Hanselman.CST352.Instruction.Param1">
<summary>
The first parameter to the opCode. May be a Constant or a Register value, or not used at all
</summary>
</member>
<member name="F:Hanselman.CST352.Instruction.Param2">
<summary>
The second parameter to the opCode. May be a Constant or a Register value, or not used at all
</summary>
</member>
<member name="M:Hanselman.CST352.Instruction.#ctor(System.String)">
<summary>
Public constructor for an Instruction
</summary>
<param name="rawInstruction">A raw string from a Program File.</param>
<example>Any one of the following lines is a valid rawInstruction
<pre>
1 r1 ; incr r1
2 r6, $16 ; add 16 to r6
26 r6 ; setPriority to r6
2 r2, $5 ; increment r2 by 5
3 r1, r2 ; add 1 and 2 and the result goes in 1
2 r2, $5 ; increment r2 by 5
6 r3, $99 ; move 99 into r3
7 r4, r3 ; move r3 into r4
11 r4 ; print r4
27 ; this is exit.
</pre>
</example>
</member>
<member name="T:Hanselman.CST352.InstructionType">
<summary>
This enum provides an easy conversion between numerical opCodes like "2" and text
and easy to remember consts like "Addi"
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Noop">
<summary>
No op
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Incr">
<summary>
Increments register
<pre>
1 r1
</pre>
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Addi">
<summary>
Adds constant 1 to register 1
<pre>
2 r1, $1
</pre>
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Addr">
<summary>
Adds r2 to r1 and stores the value in r1
<pre>
3 r1, r2
</pre>
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Pushr">
<summary>
Pushes contents of register 1 onto stack
<pre>
4 r1
</pre>
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Pushi">
<summary>
Pushes constant 1 onto stack
<pre>
5 $1
</pre>
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Movi">
<summary>
Moves constant 1 into register 1
<pre>
6 r1, $1
</pre>
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Movr">
<summary>
Moves contents of register2 into register 1
<pre>
7 r1, r2
</pre>
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Movmr">
<summary>
Moves contents of memory pointed to register 2 into register 1
<pre>
8 r1, r2
</pre>
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Movrm">
<summary>
Moves contents of register 2 into memory pointed to by register 1
<pre>
9 r1, r2
</pre>
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Movmm">
<summary>
Moves contents of memory pointed to by register 2 into memory pointed to by register 1
<pre>
10 r1, r2
</pre>
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Printr">
<summary>
Prints out contents of register 1
<pre>
11 r1
</pre>
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Printm">
<summary>
Prints out contents of memory pointed to by register 1
<pre>
12 r1
</pre>
</summary>
</member>
<member name="F:Hanselman.CST352.InstructionType.Jmp">
<summary>
Control transfers to the instruction whose address is r1 bytes relative to the current instruction.
r1 may be negative.
<pre>
13 r1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -