mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2024-12-29 00:36:32 +00:00
dbf8647d59
Added top & right borders to RawDr. Improved spacing in some debug and compiler reporting. Fixed RawPutChar and EdLite tab width. Fixed Ui missing '0x' prefix syntax highlighter bug. Added 32BitPaint demo.
128 lines
9.6 KiB
HTML
Executable file
128 lines
9.6 KiB
HTML
Executable file
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII">
|
|
<meta name="generator" content="ZealOS V0.08">
|
|
<style type="text/css">
|
|
body {background-color:#000000;}
|
|
.cF0{color:#ffffff;background-color:#000000;}
|
|
.cF1{color:#3465a4;background-color:#000000;}
|
|
.cF2{color:#4e9a06;background-color:#000000;}
|
|
.cF3{color:#06989a;background-color:#000000;}
|
|
.cF4{color:#a24444;background-color:#000000;}
|
|
.cF5{color:#75507b;background-color:#000000;}
|
|
.cF6{color:#ce982f;background-color:#000000;}
|
|
.cF7{color:#bcc0b9;background-color:#000000;}
|
|
.cF8{color:#555753;background-color:#000000;}
|
|
.cF9{color:#729fcf;background-color:#000000;}
|
|
.cFA{color:#82bc49;background-color:#000000;}
|
|
.cFB{color:#34e2e2;background-color:#000000;}
|
|
.cFC{color:#ac3535;background-color:#000000;}
|
|
.cFD{color:#ad7fa8;background-color:#000000;}
|
|
.cFE{color:#fce94f;background-color:#000000;}
|
|
.cFF{color:#000000;background-color:#000000;}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<pre style="font-family:monospace;font-size:12pt">
|
|
<a name="l1"></a><span class=cF2>//Press F5 in the editor to compile and run.</span><span class=cF0>
|
|
<a name="l2"></a>
|
|
<a name="l3"></a>--------Hello.CC---------
|
|
<a name="l4"></a></span><span class=cF6>"Hello World\n"</span><span class=cF0>;
|
|
<a name="l5"></a>
|
|
<a name="l6"></a>
|
|
<a name="l7"></a>--------Hello.CC---------
|
|
<a name="l8"></a></span><span class=cF1>U0</span><span class=cF0> Main()
|
|
<a name="l9"></a>{
|
|
<a name="l10"></a> </span><span class=cF6>"Hello World\n"</span><span class=cF0>;
|
|
<a name="l11"></a>}
|
|
<a name="l12"></a>Main;
|
|
<a name="l13"></a>
|
|
<a name="l14"></a>
|
|
<a name="l15"></a>--------Hello.CC---------
|
|
<a name="l16"></a></span><span class=cF1>U0</span><span class=cF0> MyPrint(</span><span class=cF1>U8</span><span class=cF0> *st)
|
|
<a name="l17"></a>{
|
|
<a name="l18"></a> </span><span class=cF6>"%s"</span><span class=cF0>, st;
|
|
<a name="l19"></a>}
|
|
<a name="l20"></a>MyPrint(</span><span class=cF6>"Hello World\n"</span><span class=cF0>);
|
|
<a name="l21"></a>
|
|
<a name="l22"></a>
|
|
<a name="l23"></a>--------Hello.CC---------
|
|
<a name="l24"></a></span><span class=cF1>U0</span><span class=cF0> MyPrint2(</span><span class=cF1>U8</span><span class=cF0> *st1, </span><span class=cF1>U8</span><span class=cF0> *st2) </span><span class=cF2>//Any number of args.</span><span class=cF0>
|
|
<a name="l25"></a>{
|
|
<a name="l26"></a> </span><span class=cF6>"%s %s\n"</span><span class=cF0>, st1, st2; </span><span class=cF2>//Any number of args.</span><span class=cF0>
|
|
<a name="l27"></a>}
|
|
<a name="l28"></a>MyPrint2(</span><span class=cF6>"Hello"</span><span class=cF0>, </span><span class=cF6>"World"</span><span class=cF0>);
|
|
<a name="l29"></a>
|
|
<a name="l30"></a>
|
|
<a name="l31"></a>--------Hello.CC---------
|
|
<a name="l32"></a></span><span class=cF1>U0</span><span class=cF0> MyPrint(</span><span class=cF1>U8</span><span class=cF0> *st)
|
|
<a name="l33"></a>{
|
|
<a name="l34"></a> </span><span class=cF6>""</span><span class=cF0> st; </span><span class=cF2>//Empty with no comma means first is format str.</span><span class=cF0>
|
|
<a name="l35"></a>}
|
|
<a name="l36"></a>MyPrint(</span><span class=cF6>"Hello World\n"</span><span class=cF0>);
|
|
<a name="l37"></a>
|
|
<a name="l38"></a>
|
|
<a name="l39"></a>--------Hello.CC---------
|
|
<a name="l40"></a></span><span class=cF1>asm</span><span class=cF0> {
|
|
<a name="l41"></a>MESSAGE: </span><span class=cF1>DU8</span><span class=cF0> </span><span class=cF6>"Hello World\n"</span><span class=cF0>, </span><span class=cFE>0</span><span class=cF0>;
|
|
<a name="l42"></a>
|
|
<a name="l43"></a></span><span class=cF2>//The convention is underscore on C callable.</span><span class=cF0>
|
|
<a name="l44"></a></span><span class=cF2>//Two colons means exported symbol.</span><span class=cF0>
|
|
<a name="l45"></a>_HELLO_WORLD::
|
|
<a name="l46"></a></span><span class=cF2>//You can only clobber RAX,RBX,RCX,RDX</span><span class=cF0>
|
|
<a name="l47"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l48"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>, MESSAGE
|
|
<a name="l49"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_STR</span><span class=cF0>
|
|
<a name="l50"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l51"></a> </span><span class=cF1>RET</span><span class=cF0>
|
|
<a name="l52"></a>}
|
|
<a name="l53"></a></span><span class=cF5>Call</span><span class=cF0>(_HELLO_WORLD);
|
|
<a name="l54"></a>
|
|
<a name="l55"></a>
|
|
<a name="l56"></a>--------Hello.CC---------
|
|
<a name="l57"></a></span><span class=cF1>asm</span><span class=cF0> {
|
|
<a name="l58"></a>_HELLO_WORLD::
|
|
<a name="l59"></a></span><span class=cF2>//You can only clobber RAX,RBX,RCX,RDX</span><span class=cF0>
|
|
<a name="l60"></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>
|
|
<a name="l61"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_CHARS</span><span class=cF0> </span><span class=cF2>//Up to 8 chars packed into one 64-bit int.</span><span class=cF0>
|
|
<a name="l62"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RAX</span><span class=cF0>, </span><span class=cF6>'World\n'</span><span class=cF0>
|
|
<a name="l63"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_CHARS</span><span class=cF0>
|
|
<a name="l64"></a> </span><span class=cF1>RET</span><span class=cF0>
|
|
<a name="l65"></a>}
|
|
<a name="l66"></a></span><span class=cF5>Call</span><span class=cF0>(_HELLO_WORLD);
|
|
<a name="l67"></a>
|
|
<a name="l68"></a>
|
|
<a name="l69"></a>--------Hello.CC---------
|
|
<a name="l70"></a></span><span class=cF1>asm</span><span class=cF0> {
|
|
<a name="l71"></a>_MY_PRINT::
|
|
<a name="l72"></a></span><span class=cF2>//You can only clobber RAX,RBX,RCX,RDX</span><span class=cF0>
|
|
<a name="l73"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l74"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>, </span><span class=cFC>RSP</span><span class=cF0>
|
|
<a name="l75"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l76"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>, </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF3>SF_ARG1</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l77"></a> </span><span class=cF1>CALL</span><span class=cF0> </span><span class=cFD>PUT_STR</span><span class=cF0>
|
|
<a name="l78"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RSI</span><span class=cF0>
|
|
<a name="l79"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l80"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0> </span><span class=cF2>//Callee pops the stack to clear args.</span><span class=cF0>
|
|
<a name="l81"></a>}
|
|
<a name="l82"></a></span><span class=cF1>_extern</span><span class=cF0> _MY_PRINT </span><span class=cF1>U0</span><span class=cF0> MyPrint(</span><span class=cF1>U8</span><span class=cF0> *st);
|
|
<a name="l83"></a>MyPrint(</span><span class=cF6>"Hello World\n"</span><span class=cF0>);
|
|
<a name="l84"></a>
|
|
<a name="l85"></a>
|
|
<a name="l86"></a>--------Hello.CC---------
|
|
<a name="l87"></a></span><span class=cF1>asm</span><span class=cF0> {
|
|
<a name="l88"></a>_MY_PRINT::
|
|
<a name="l89"></a></span><span class=cF2>//You can only clobber RAX,RBX,RCX,RDX</span><span class=cF0>
|
|
<a name="l90"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l91"></a> </span><span class=cF1>MOV</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>, </span><span class=cFC>RSP</span><span class=cF0>
|
|
<a name="l92"></a> </span><span class=cF1>PUSH</span><span class=cF0> </span><span class=cF9>U64</span><span class=cF0> </span><span class=cF3>SF_ARG1</span><span class=cF0>[</span><span class=cFC>RBP</span><span class=cF0>]
|
|
<a name="l93"></a> </span><span class=cF1>CALL</span><span class=cF0> &</span><span class=cF5>PutS</span><span class=cF0> </span><span class=cF2>//Callee pops the stack to clear args.</span><span class=cF0>
|
|
<a name="l94"></a> </span><span class=cF1>POP</span><span class=cF0> </span><span class=cFC>RBP</span><span class=cF0>
|
|
<a name="l95"></a> </span><span class=cF1>RET1</span><span class=cF0> </span><span class=cFE>8</span><span class=cF0>
|
|
<a name="l96"></a>}
|
|
<a name="l97"></a></span><span class=cF1>_extern</span><span class=cF0> _MY_PRINT </span><span class=cF1>U0</span><span class=cF0> MyPrint(</span><span class=cF1>U8</span><span class=cF0> *st);
|
|
<a name="l98"></a>MyPrint(</span><span class=cF6>"Hello World\n"</span><span class=cF0>);
|
|
<a name="l99"></a>
|
|
</span></pre></body>
|
|
</html>
|