TempleOSTS_140317.ISO
This commit is contained in:
1 parent
2d2a65d572
commit
7ef616a20e
1416 files changed
+223873
-53917
No files matched your search
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
This is a JIT file, not AOT.
|
||||
|
||||
Asm labels can only be defined once
|
||||
in a task. Hit F5 to spawn a new task
|
||||
each time and run it.
|
||||
|
||||
These are many useful kernel
|
||||
routines $LK,"::/Kernel/Str1a.CPP",A="FF:::/Kernel/Str1a.CPP,PUT_CHARS"$
|
||||
intended to be called from
|
||||
asm. Generally, they preserve
|
||||
regs.
|
||||
|
||||
You can call any routine you
|
||||
like, C or asm, if you import it.
|
||||
Be aware that C routines do not
|
||||
preserve RAX,RBX,RCX,RDX,R8,R9.
|
||||
When calling from the shell or
|
||||
from C, preserve all other regs.
|
||||
|
||||
*/
|
||||
|
||||
asm {
|
||||
//Opcodes are slightly different to make writing my x86_64 assembler easier.
|
||||
//See $LK,"::/Compiler/OpCodes.TXT"$.
|
||||
|
||||
USE64 //Defaults to 64, but this is a good habit.
|
||||
|
||||
MY_WORLD_MSG:
|
||||
//Define U8 does not put terminating zeros
|
||||
//on strings.
|
||||
DU8 "World\n",0;
|
||||
|
||||
//My convention is to put an underscore
|
||||
//on C callable routines.
|
||||
_HELLO_WORLD::
|
||||
PUSH RSI //See $LK,"REG_VARS_MASK",A="MN:REG_VARS_MASK"$ & $LK,"REG_NON_PTR_MASK",A="MN:REG_NON_PTR_MASK"$
|
||||
MOV RCX,10
|
||||
@@05: MOV RAX,RCX
|
||||
CALL PUT_HEX_U8
|
||||
MOV RAX,CH_SPACE
|
||||
CALL PUT_CHARS
|
||||
MOV RAX,'Hello ' //Supports multi-byte char consts
|
||||
CALL PUT_CHARS
|
||||
//We broke it in two pieces to show different ways.
|
||||
MOV RSI,MY_WORLD_MSG
|
||||
CALL PUT_STR
|
||||
LOOP @@05
|
||||
POP RSI
|
||||
RET
|
||||
};
|
||||
|
||||
Call(_HELLO_WORLD);
|
||||
Reference in new issue
Block a user