2021-07-03 05:07:57 +01:00
|
|
|
<!DOCTYPE HTML>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII">
|
2021-10-27 08:28:16 +01:00
|
|
|
<meta name="generator" content="ZealOS V1.04">
|
2021-07-03 05:07:57 +01:00
|
|
|
<style type="text/css">
|
2021-10-08 07:06:11 +01:00
|
|
|
body {background-color:#1f1f1f;}
|
|
|
|
.cF0{color:#e3e3e3;background-color:#1f1f1f;}
|
|
|
|
.cF1{color:#4f84a6;background-color:#1f1f1f;}
|
|
|
|
.cF2{color:#73a255;background-color:#1f1f1f;}
|
|
|
|
.cF3{color:#297582;background-color:#1f1f1f;}
|
|
|
|
.cF4{color:#b34f4b;background-color:#1f1f1f;}
|
|
|
|
.cF5{color:#8a52c3;background-color:#1f1f1f;}
|
|
|
|
.cF6{color:#b7822f;background-color:#1f1f1f;}
|
|
|
|
.cF7{color:#444444;background-color:#1f1f1f;}
|
|
|
|
.cF8{color:#6d6d6d;background-color:#1f1f1f;}
|
|
|
|
.cF9{color:#94bfde;background-color:#1f1f1f;}
|
|
|
|
.cFA{color:#a1ce97;background-color:#1f1f1f;}
|
|
|
|
.cFB{color:#6db4be;background-color:#1f1f1f;}
|
|
|
|
.cFC{color:#e88e88;background-color:#1f1f1f;}
|
|
|
|
.cFD{color:#ca94e8;background-color:#1f1f1f;}
|
|
|
|
.cFE{color:#d4b475;background-color:#1f1f1f;}
|
|
|
|
.cFF{color:#1f1f1f;background-color:#1f1f1f;}
|
2021-07-03 05:07:57 +01:00
|
|
|
</style>
|
|
|
|
</head>
|
|
|
|
<body>
|
2021-07-05 01:12:38 +01:00
|
|
|
<pre style="font-family:monospace;font-size:12pt">
|
2021-07-03 05:07:57 +01:00
|
|
|
<a name="l1"></a><span class=cF2>/*Asm labels can only be defined once</span><span class=cF0>
|
|
|
|
<a name="l2"></a></span><span class=cF2>in a task. <F5> will spawn a new task</span><span class=cF0>
|
|
|
|
<a name="l3"></a></span><span class=cF2>each time, so you don't get redefine</span><span class=cF0>
|
|
|
|
<a name="l4"></a></span><span class=cF2>error, like when repeatedly #including</span><span class=cF0>
|
|
|
|
<a name="l5"></a></span><span class=cF2>it from the cmd line.</span><span class=cF0>
|
|
|
|
<a name="l6"></a>
|
|
|
|
<a name="l7"></a></span><span class=cF2>These are many useful kernel</span><span class=cF0>
|
2021-07-26 20:29:49 +01:00
|
|
|
<a name="l8"></a></span><span class=cF2>routines </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/StrA.CC.html#l56"><span class=cF4>::/Kernel/StrA.CC</span></a><span class=cF0>
|
2021-07-03 05:07:57 +01:00
|
|
|
<a name="l9"></a></span><span class=cF2>intended to be called from</span><span class=cF0>
|
Rename abs_addres to abs_address.
Update documentation/comments to rename addr, fun, var, stmt, blk, desc, reg, seg, ptr, dup, clus, val, and bttn, to address, function, variable, statement, block, description, register, segment, pointer, duplicate, cluster, value, and button, respectively.
2021-10-07 02:35:32 +01:00
|
|
|
<a name="l10"></a></span><span class=cF2>asm. Generally, they</span><span class=cF0>
|
|
|
|
<a name="l11"></a></span><span class=cF2>preserve registers.</span><span class=cF0>
|
2021-07-03 05:07:57 +01:00
|
|
|
<a name="l12"></a>
|
|
|
|
<a name="l13"></a></span><span class=cF2>You can call any routine you</span><span class=cF0>
|
|
|
|
<a name="l14"></a></span><span class=cF2>like, C or asm, if you import it.</span><span class=cF0>
|
|
|
|
<a name="l15"></a></span><span class=cF2>Be aware that C routines do not</span><span class=cF0>
|
Rename abs_addres to abs_address.
Update documentation/comments to rename addr, fun, var, stmt, blk, desc, reg, seg, ptr, dup, clus, val, and bttn, to address, function, variable, statement, block, description, register, segment, pointer, duplicate, cluster, value, and button, respectively.
2021-10-07 02:35:32 +01:00
|
|
|
<a name="l16"></a></span><span class=cF2>preserve RAX, RBX, RCX, RDX, R8, or R9.</span><span class=cF0>
|
2021-07-03 05:07:57 +01:00
|
|
|
<a name="l17"></a></span><span class=cF2>When calling from the shell or</span><span class=cF0>
|
Rename abs_addres to abs_address.
Update documentation/comments to rename addr, fun, var, stmt, blk, desc, reg, seg, ptr, dup, clus, val, and bttn, to address, function, variable, statement, block, description, register, segment, pointer, duplicate, cluster, value, and button, respectively.
2021-10-07 02:35:32 +01:00
|
|
|
<a name="l18"></a></span><span class=cF2>from C, preserve all other registers.</span><span class=cF0>
|
2021-07-03 05:07:57 +01:00
|
|
|
<a name="l19"></a>
|
|
|
|
<a name="l20"></a></span><span class=cF2>*/</span><span class=cF0>
|
|
|
|
<a name="l21"></a>
|
|
|
|
<a name="l22"></a></span><span class=cF1>asm</span><span class=cF0> {
|
|
|
|
<a name="l23"></a></span><span class=cF2>//Opcodes are slightly different to make writing the x86_64 assembler easier.</span><span class=cF0>
|
2021-07-26 20:29:49 +01:00
|
|
|
<a name="l24"></a></span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/OpCodes.DD.html#l1"><span class=cF4>::/Compiler/OpCodes.DD</span></a><span class=cF2>.</span><span class=cF0>
|
2021-07-03 05:07:57 +01:00
|
|
|
<a name="l25"></a>
|
|
|
|
<a name="l26"></a>MY_WORLD_MESSAGE:
|
|
|
|
<a name="l27"></a></span><span class=cF2>//Define U8 does not put terminating zeros</span><span class=cF0>
|
|
|
|
<a name="l28"></a></span><span class=cF2>//on strings.</span><span class=cF0>
|
2021-07-04 23:11:34 +01:00
|
|
|
<a name="l29"></a> </span><span class=cF1>DU8</span><span class=cF0> </span><span class=cF6>"World\n"</span><span class=cF0>, </span><span class=cFE>0</span><span class=cF0>;
|
2021-07-03 05:07:57 +01:00
|
|
|
<a name="l30"></a>
|
|
|
|
<a name="l31"></a></span><span class=cF2>//The convention is to put an underscore</span><span class=cF0>
|
|
|
|
<a name="l32"></a></span><span class=cF2>//on C callable asm routines.</span><span class=cF0>
|
|
|
|
<a name="l33"></a>_HELLO_WORLD::
|
2021-07-26 20:29:49 +01:00
|
|
|
<a name="l34"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0> </span><span class=cF2>//See </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l1939"><span class=cF4>REGG_LOCAL_VARS</span></a><span class=cF2> & </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l1940"><span class=cF4>REGG_LOCAL_NON_PTR_VARS</span></a><span class=cF0>
|
2021-07-04 23:11:34 +01:00
|
|
|
<a name="l35"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RCX</span><span class=cF0>, </span><span class=cFE>10</span><span class=cF0>
|
|
|
|
<a name="l36"></a>@@05: </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cFC>RCX</span><span class=cF0>
|
|
|
|
<a name="l37"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_HEX_U8</span><span class=cF0>
|
|
|
|
<a name="l38"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF3>CH_SPACE</span><span class=cF0>
|
|
|
|
<a name="l39"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_CHARS</span><span class=cF0>
|
|
|
|
<a name="l40"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF6>'Hello '</span><span class=cF0> </span><span class=cF2>//Supports multi-byte char consts</span><span class=cF0>
|
|
|
|
<a name="l41"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_CHARS</span><span class=cF0>
|
2021-07-03 05:07:57 +01:00
|
|
|
<a name="l42"></a></span><span class=cF2>//We broke it in two pieces to show different ways.</span><span class=cF0>
|
2021-07-04 23:11:34 +01:00
|
|
|
<a name="l43"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>, MY_WORLD_MESSAGE
|
|
|
|
<a name="l44"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_STR</span><span class=cF0>
|
|
|
|
<a name="l45"></a> </span><span class=cF1>LOOP</span><span class=cF0> @@05
|
|
|
|
<a name="l46"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
|
|
<a name="l47"></a> </span><span class=cF1>RET</span><span class=cF0>
|
2021-07-03 05:07:57 +01:00
|
|
|
<a name="l48"></a>};
|
|
|
|
<a name="l49"></a>
|
|
|
|
<a name="l50"></a></span><span class=cF5>Call</span><span class=cF0>(_HELLO_WORLD);
|
|
|
|
</span></pre></body>
|
|
|
|
</html>
|