This commit is contained in:
julianb0 2019-07-15 20:47:44 +02:00
parent 778c56cc60
commit 498e46ddc8
No known key found for this signature in database
GPG Key ID: DDF8325C95299A62
1 changed files with 4 additions and 9 deletions

13
ka/ABI
View File

@ -73,7 +73,7 @@ Aside from the DF flag, a function cannot assume anything about the state
of the flags in the FLG register. of the flags in the FLG register.
Passing parameters is done using the following registers, in that order: Passing parameters is done using the following registers, in that order:
a0-a15 a0-a7
The stack is never used for argument passing, except for variadic functions, The stack is never used for argument passing, except for variadic functions,
cf the next section. If you need to pass large structures of data, pass cf the next section. If you need to pass large structures of data, pass
@ -85,10 +85,10 @@ and require more registers, use the following registers, in that order:
The following registers are volatile; the calling function cannot assume The following registers are volatile; the calling function cannot assume
that they will be left unmodified by the called function: that they will be left unmodified by the called function:
rax, rcx, rdx, r8-r15, a0-a15 rax, rcx, rdx, r8-r15, a0-a7
The following registers are nonvolatile; the called function must preserve them: The following registers are nonvolatile; the called function must preserve them:
rbx, rsi, rdi, n0-n15, rbp, rsp rbx, rsi, rdi, n0-n7, rbp, rsp
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
@ -125,12 +125,7 @@ The 'inv' register cannot be referenced by machine code except when specified
as an offset register in the [reg+reg(*/+...)] memory formats; in these case, as an offset register in the [reg+reg(*/+...)] memory formats; in these case,
'inv' can be assumed to be always null. 'inv' can be assumed to be always null.
The following registers can only be used by the supervisor: (TO BE COMPLETED)
- Fast global variables for the supervisor:
sa0-sa3
The following registers cannot be referenced by machine code at all:
px0-px1, fc0-fc2, cr0-cr3
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#