Source/Packages

Runtime.NativeCyclicRecordOffset

packages/execution/src/Runtime/NativeCyclicRecordOffset.alpha

51 lines2 declarations5.9 KiBSHA-256 2a951d684e15

def · lines 11–42

nativeCyclicRecordOffsetAssembly

Full file
System V arguments: destination, completed, iteration, count, record bytes, within-record offset. Return zero after storing one offset, or one without touching destination. Only caller-saved registers are used. Checking the product's high word and sign admits precisely the signed file-offset range.
11def nativeCyclicRecordOffsetAssembly : (family X86NativeAssembly) =
12  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeTestRegister64 (constructor X86NativeRegister64 X86NativeRCX) (constructor X86NativeRegister64 X86NativeRCX))
13  (constructor X86NativeAssembly X86NativeAssemblyJumpCondition (constructor X86NativeCondition X86NativeConditionZero) b"reject"
14  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeTestRegister64 (constructor X86NativeRegister64 X86NativeR8) (constructor X86NativeRegister64 X86NativeR8))
15  (constructor X86NativeAssembly X86NativeAssemblyJumpCondition (constructor X86NativeCondition X86NativeConditionZero) b"reject"
16  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeCompareRegister64 (constructor X86NativeRegister64 X86NativeR8) (constructor X86NativeRegister64 X86NativeR9))
17  (constructor X86NativeAssembly X86NativeAssemblyJumpCondition (constructor X86NativeCondition X86NativeConditionBelow) b"inside"
18  (constructor X86NativeAssembly X86NativeAssemblyJump b"reject"
19  (constructor X86NativeAssembly X86NativeAssemblyLabel b"inside"
20  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeMoveRegister64 (constructor X86NativeRegister64 X86NativeRSI) (constructor X86NativeRegister64 X86NativeR10))
21  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeAddRegister64 (constructor X86NativeRegister64 X86NativeRDX) (constructor X86NativeRegister64 X86NativeR10))
22  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeCompareRegister64 (constructor X86NativeRegister64 X86NativeRSI) (constructor X86NativeRegister64 X86NativeR10))
23  (constructor X86NativeAssembly X86NativeAssemblyJumpCondition (constructor X86NativeCondition X86NativeConditionBelow) b"reject"
24  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeMoveRegister64 (constructor X86NativeRegister64 X86NativeRCX) (constructor X86NativeRegister64 X86NativeRAX))
25  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeMultiplyRegister64Unsigned (constructor X86NativeRegister64 X86NativeR8))
26  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeTestRegister64 (constructor X86NativeRegister64 X86NativeRDX) (constructor X86NativeRegister64 X86NativeRDX))
27  (constructor X86NativeAssembly X86NativeAssemblyJumpCondition (constructor X86NativeCondition X86NativeConditionNotZero) b"reject"
28  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeTestRegister64 (constructor X86NativeRegister64 X86NativeRAX) (constructor X86NativeRegister64 X86NativeRAX))
29  (constructor X86NativeAssembly X86NativeAssemblyJumpCondition (constructor X86NativeCondition X86NativeConditionSign) b"reject"
30  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeMoveRegister64 (constructor X86NativeRegister64 X86NativeR10) (constructor X86NativeRegister64 X86NativeRAX))
31  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeClear32 (constructor X86NativeRegister64 X86NativeRDX))
32  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeDivideRegister64Unsigned (constructor X86NativeRegister64 X86NativeRCX))
33  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeMoveRegister64 (constructor X86NativeRegister64 X86NativeRDX) (constructor X86NativeRegister64 X86NativeRAX))
34  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeMultiplyRegister64Unsigned (constructor X86NativeRegister64 X86NativeR8))
35  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeAddRegister64 (constructor X86NativeRegister64 X86NativeR9) (constructor X86NativeRegister64 X86NativeRAX))
36  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeStoreMemory64 (constructor X86NativeRegister64 X86NativeRDI) (x86NativeDisplacement32FromNatural 0) (constructor X86NativeRegister64 X86NativeRAX))
37  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeClear32 (constructor X86NativeRegister64 X86NativeRAX))
38  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeReturn )
39  (constructor X86NativeAssembly X86NativeAssemblyLabel b"reject"
40  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeMoveImmediate32 (constructor X86NativeRegister64 X86NativeRAX) (x86NativeImmediate32FromNatural 1))
41  (constructor X86NativeAssembly X86NativeAssemblyEmit (constructor X86NativeInstruction X86NativeReturn )
42    (constructor X86NativeAssembly X86NativeAssemblyEnd)))))))))))))))))))))))))))))))

The compiler supplied declaration spans and resolved links from this source snapshot. This page does not assert that this file belongs to a checked closure.