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 > //This is the software interrupt num< / span > < span class = cF0 >
2021-07-26 20:29:49 +01:00
< a name = "l2" > < / a > < / span > < span class = cF2 > //we will use. See < / span > < a href = "https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l336" > < span class = cF4 > Software Int's< / span > < / a > < span class = cF2 > for< / span > < span class = cF0 >
2021-07-03 05:07:57 +01:00
< a name = "l3" > < / a > < / span > < span class = cF2 > //picking a num. Nums are subject to change.< / span > < span class = cF0 >
< a name = "l4" > < / a >
< a name = "l5" > < / a > #< / span > < span class = cF1 > define< / span > < span class = cF0 > I_F_UNARY_MINUS < / span > < span class = cF3 > I_USER< / span > < span class = cF0 >
< a name = "l6" > < / a >
< a name = "l7" > < / a > < / span > < span class = cF1 > asm< / span > < span class = cF0 > {
< a name = "l8" > < / a >
< a name = "l9" > < / a > < / span > < span class = cF2 > //This changes the sign of the floating< / 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 > //point value in RAX< / span > < span class = cF0 >
2021-07-03 05:07:57 +01:00
< a name = "l11" > < / a > F_UNARY_MINUS_INT::
2021-07-04 23:11:34 +01:00
< a name = "l12" > < / a > < / span > < span class = cF1 > PUSH< / span > < span class = cF0 > < / span > < span class = cFC > RAX< / span > < span class = cF0 >
< a name = "l13" > < / a > < / span > < span class = cF1 > FLD< / span > < span class = cF0 > < / span > < span class = cF9 > U64< / span > < span class = cF0 > [< / span > < span class = cFC > RSP< / span > < span class = cF0 > ]
< a name = "l14" > < / a > < / span > < span class = cF1 > FCHS< / span > < span class = cF0 >
< a name = "l15" > < / a > < / span > < span class = cF1 > FSTP< / span > < span class = cF0 > < / span > < span class = cF9 > U64< / span > < span class = cF0 > [< / span > < span class = cFC > RSP< / span > < span class = cF0 > ]
< a name = "l16" > < / a > < / span > < span class = cF1 > POP< / span > < span class = cF0 > < / span > < span class = cFC > RAX< / span > < span class = cF0 >
< a name = "l17" > < / a > < / span > < span class = cF1 > IRET< / span > < span class = cF0 >
2021-07-03 05:07:57 +01:00
< a name = "l18" > < / a >
< a name = "l19" > < / a > < / span > < span class = cF2 > //This does the same thing, but not as< / span > < span class = cF0 >
< a name = "l20" > < / a > < / span > < span class = cF2 > //an interrupt.< / span > < span class = cF0 >
< a name = "l21" > < / a > F_UNARY_MINUS_CALL::
2021-07-04 23:11:34 +01:00
< a name = "l22" > < / a > < / span > < span class = cF1 > PUSH< / span > < span class = cF0 > < / span > < span class = cFC > RAX< / span > < span class = cF0 >
< a name = "l23" > < / a > < / span > < span class = cF1 > FLD< / span > < span class = cF0 > < / span > < span class = cF9 > U64< / span > < span class = cF0 > [< / span > < span class = cFC > RSP< / span > < span class = cF0 > ]
< a name = "l24" > < / a > < / span > < span class = cF1 > FCHS< / span > < span class = cF0 >
< a name = "l25" > < / a > < / span > < span class = cF1 > FSTP< / span > < span class = cF0 > < / span > < span class = cF9 > U64< / span > < span class = cF0 > [< / span > < span class = cFC > RSP< / span > < span class = cF0 > ]
< a name = "l26" > < / a > < / span > < span class = cF1 > POP< / span > < span class = cF0 > < / span > < span class = cFC > RAX< / span > < span class = cF0 >
< a name = "l27" > < / a > < / span > < span class = cF1 > RET< / span > < span class = cF0 >
2021-07-03 05:07:57 +01:00
< a name = "l28" > < / a >
< a name = "l29" > < / a > < / span > < span class = cF2 > //This invokes the interrupt version< / span > < span class = cF0 >
< a name = "l30" > < / a > < / span > < span class = cF2 > //with a C callable function.< / span > < span class = cF0 >
< a name = "l31" > < / a > _F_UM_INT::
2021-07-04 23:11:34 +01:00
< a name = "l32" > < / a > < / span > < span class = cF1 > PUSH< / span > < span class = cF0 > < / span > < span class = cFC > RBP< / span > < span class = cF0 >
< a name = "l33" > < / 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 = "l34" > < / a > < / span > < span class = cF1 > MOV< / span > < span class = cF0 > < / span > < span class = cFC > RAX< / 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 = "l35" > < / a > < / span > < span class = cF1 > INT< / span > < span class = cF0 > I_F_UNARY_MINUS
< a name = "l36" > < / a > < / span > < span class = cF1 > POP< / span > < span class = cF0 > < / span > < span class = cFC > RBP< / span > < span class = cF0 >
< a name = "l37" > < / a > < / span > < span class = cF1 > RET1< / span > < span class = cF0 > < / span > < span class = cFE > 8< / span > < span class = cF0 >
2021-07-03 05:07:57 +01:00
< a name = "l38" > < / a >
< a name = "l39" > < / a > < / span > < span class = cF2 > //This invokes the call version< / span > < span class = cF0 >
< a name = "l40" > < / a > < / span > < span class = cF2 > //with a C callable function.< / span > < span class = cF0 >
< a name = "l41" > < / a > _F_UM_CALL::
2021-07-04 23:11:34 +01:00
< a name = "l42" > < / a > < / span > < span class = cF1 > PUSH< / span > < span class = cF0 > < / span > < span class = cFC > RBP< / span > < span class = cF0 >
< a name = "l43" > < / 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 = "l44" > < / a > < / span > < span class = cF1 > MOV< / span > < span class = cF0 > < / span > < span class = cFC > RAX< / 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 = "l45" > < / a > < / span > < span class = cF1 > CALL< / span > < span class = cF0 > F_UNARY_MINUS_CALL
< a name = "l46" > < / a > < / span > < span class = cF1 > POP< / span > < span class = cF0 > < / span > < span class = cFC > RBP< / span > < span class = cF0 >
< a name = "l47" > < / a > < / span > < span class = cF1 > RET1< / span > < span class = cF0 > < / span > < span class = cFE > 8< / 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 = cF1 > _extern< / span > < span class = cF0 > _F_UM_INT < / span > < span class = cF1 > F64< / span > < span class = cF0 > UnaryMinusInt(< / span > < span class = cF1 > F64< / span > < span class = cF0 > d);
< a name = "l51" > < / a > < / span > < span class = cF1 > _extern< / span > < span class = cF0 > _F_UM_CALL < / span > < span class = cF1 > F64< / span > < span class = cF0 > UnaryMinusCall(< / span > < span class = cF1 > F64< / span > < span class = cF0 > d);
< a name = "l52" > < / a >
2021-07-04 23:11:34 +01:00
< a name = "l53" > < / a > #< / span > < span class = cF1 > define< / span > < span class = cF0 > SAMPLE_SIZE < / span > < span class = cFE > 1000000< / span > < span class = cF0 >
2021-07-03 05:07:57 +01:00
< a name = "l54" > < / a > < / span > < span class = cF1 > U0< / span > < span class = cF0 > < / span > < span class = cF5 > TimeIns< / span > < span class = cF0 > ()
< a name = "l55" > < / a > {
2021-07-04 23:11:34 +01:00
< a name = "l56" > < / a > < / span > < span class = cF9 > I64< / span > < span class = cF0 > < / span > < span class = cF1 > start< / span > < span class = cF0 > , < / span > < span class = cF1 > end< / span > < span class = cF0 > ;
< a name = "l57" > < / a > < / span > < span class = cF9 > I64< / span > < span class = cF0 > i, old_irq;
2021-07-03 05:07:57 +01:00
< a name = "l58" > < / a >
2021-07-04 23:11:34 +01:00
< a name = "l59" > < / a > < / span > < span class = cF5 > CPURep< / span > < span class = cF0 > ;
< a name = "l60" > < / a > old_irq = < / span > < span class = cF5 > IntEntrySet< / span > < span class = cF0 > (I_F_UNARY_MINUS, F_UNARY_MINUS_INT, < / span > < span class = cF3 > IDTET_TRAP< / span > < span class = cF0 > );
2021-07-03 05:07:57 +01:00
< a name = "l61" > < / a >
2021-07-04 23:11:34 +01:00
< a name = "l62" > < / a > < / span > < span class = cF2 > //Measure interrupt time< / span > < span class = cF0 >
< a name = "l63" > < / a > < / span > < span class = cF1 > start< / span > < span class = cF0 > = < / span > < span class = cF5 > TSCGet< / span > < span class = cF0 > ;
< a name = "l64" > < / a > < / span > < span class = cF1 > for< / span > < span class = cF0 > (i = < / span > < span class = cFE > 0< / span > < span class = cF0 > ; i < SAMPLE_SIZE; i++)
< a name = "l65" > < / a > UnaryMinusInt(< / span > < span class = cF3 > pi< / span > < span class = cF0 > );
< a name = "l66" > < / a > < / span > < span class = cF1 > end< / span > < span class = cF0 > = < / span > < span class = cF5 > TSCGet< / span > < span class = cF0 > ;
< a name = "l67" > < / a > < / span > < span class = cF6 > " Interrupt Cycles: %10.5f\n" < / span > < span class = cF0 > , < / span > < span class = cF5 > ToF64< / span > < span class = cF0 > (< / span > < span class = cF1 > end< / span > < span class = cF0 > - < / span > < span class = cF1 > start< / span > < span class = cF0 > ) / SAMPLE_SIZE;
2021-07-03 05:07:57 +01:00
< a name = "l68" > < / a >
2021-07-04 23:11:34 +01:00
< a name = "l69" > < / a > < / span > < span class = cF2 > //Measure call time< / span > < span class = cF0 >
< a name = "l70" > < / a > < / span > < span class = cF1 > start< / span > < span class = cF0 > = < / span > < span class = cF5 > TSCGet< / span > < span class = cF0 > ;
< a name = "l71" > < / a > < / span > < span class = cF1 > for< / span > < span class = cF0 > (i = < / span > < span class = cFE > 0< / span > < span class = cF0 > ; i < SAMPLE_SIZE; i++)
< a name = "l72" > < / a > UnaryMinusCall(< / span > < span class = cF3 > pi< / span > < span class = cF0 > );
< a name = "l73" > < / a > < / span > < span class = cF1 > end< / span > < span class = cF0 > = < / span > < span class = cF5 > TSCGet< / span > < span class = cF0 > ;
< a name = "l74" > < / a > < / span > < span class = cF6 > " Call Cycles: %10.5f\n" < / span > < span class = cF0 > , < / span > < span class = cF5 > ToF64< / span > < span class = cF0 > (< / span > < span class = cF1 > end< / span > < span class = cF0 > - < / span > < span class = cF1 > start< / span > < span class = cF0 > ) / SAMPLE_SIZE;
2021-07-03 05:07:57 +01:00
< a name = "l75" > < / a >
2021-07-04 23:11:34 +01:00
< a name = "l76" > < / a > < / span > < span class = cF5 > IntEntrySet< / span > < span class = cF0 > (I_F_UNARY_MINUS, old_irq, < / span > < span class = cF3 > IDTET_IRQ< / span > < span class = cF0 > );
2021-07-03 05:07:57 +01:00
< a name = "l77" > < / a > }
< a name = "l78" > < / a >
< a name = "l79" > < / a > < / span > < span class = cF5 > TimeIns< / span > < span class = cF0 > ;
< a name = "l80" > < / a >
2021-07-04 23:11:34 +01:00
< a name = "l81" > < / a > < / span > < span class = cF2 > /*< / span > < span class = cF0 > < / span > < span class = cF2 > Program Output< / span > < span class = cF1 >
2021-07-03 05:07:57 +01:00
< a name = "l82" > < / a > 6 Cores 3.395GHz
< a name = "l83" > < / a > Interrupt Cycles: 573.98543
2021-07-04 23:11:34 +01:00
< a name = "l84" > < / a > Call Cycles: 9.74349
2021-07-03 05:07:57 +01:00
< a name = "l85" > < / a > < / span > < span class = cF2 > */< / span > < span class = cF1 >
< a name = "l86" > < / a >
< / span > < / pre > < / body >
< / html >