From d685fe2209ac939bea75a7d64407e2ad655fc457 Mon Sep 17 00:00:00 2001 From: nub31 Date: Wed, 29 Jan 2025 21:39:55 +0100 Subject: [PATCH] Move io --- .../.idea.Nub.Lang/.idea/indexLayout.xml | 5 +- .../Nub.Lang/input => input}/core/print.nub | 0 .../Nub.Lang/input => input}/core/strlen.asm | 0 .../Nub.Lang/input => input}/core/strlen.nub | 0 .../Nub.Lang/input => input}/program.nub | 0 {Nub.Lang/Nub.Lang/output => output}/build.sh | 0 {Nub.Lang/Nub.Lang/output => output}/debug.sh | 0 output/out | Bin 0 -> 11184 bytes output/out.asm | 201 ++++++++++++++++++ output/out.o | Bin 0 -> 4352 bytes {Nub.Lang/Nub.Lang/output => output}/run.sh | 0 output/strlen.o | Bin 0 -> 2064 bytes 12 files changed, 205 insertions(+), 1 deletion(-) rename {Nub.Lang/Nub.Lang/input => input}/core/print.nub (100%) rename {Nub.Lang/Nub.Lang/input => input}/core/strlen.asm (100%) rename {Nub.Lang/Nub.Lang/input => input}/core/strlen.nub (100%) rename {Nub.Lang/Nub.Lang/input => input}/program.nub (100%) rename {Nub.Lang/Nub.Lang/output => output}/build.sh (100%) rename {Nub.Lang/Nub.Lang/output => output}/debug.sh (100%) create mode 100755 output/out create mode 100644 output/out.asm create mode 100644 output/out.o rename {Nub.Lang/Nub.Lang/output => output}/run.sh (100%) create mode 100644 output/strlen.o diff --git a/Nub.Lang/.idea/.idea.Nub.Lang/.idea/indexLayout.xml b/Nub.Lang/.idea/.idea.Nub.Lang/.idea/indexLayout.xml index 7b08163..1b8e138 100644 --- a/Nub.Lang/.idea/.idea.Nub.Lang/.idea/indexLayout.xml +++ b/Nub.Lang/.idea/.idea.Nub.Lang/.idea/indexLayout.xml @@ -1,7 +1,10 @@ - + + ../input + ../output + diff --git a/Nub.Lang/Nub.Lang/input/core/print.nub b/input/core/print.nub similarity index 100% rename from Nub.Lang/Nub.Lang/input/core/print.nub rename to input/core/print.nub diff --git a/Nub.Lang/Nub.Lang/input/core/strlen.asm b/input/core/strlen.asm similarity index 100% rename from Nub.Lang/Nub.Lang/input/core/strlen.asm rename to input/core/strlen.asm diff --git a/Nub.Lang/Nub.Lang/input/core/strlen.nub b/input/core/strlen.nub similarity index 100% rename from Nub.Lang/Nub.Lang/input/core/strlen.nub rename to input/core/strlen.nub diff --git a/Nub.Lang/Nub.Lang/input/program.nub b/input/program.nub similarity index 100% rename from Nub.Lang/Nub.Lang/input/program.nub rename to input/program.nub diff --git a/Nub.Lang/Nub.Lang/output/build.sh b/output/build.sh similarity index 100% rename from Nub.Lang/Nub.Lang/output/build.sh rename to output/build.sh diff --git a/Nub.Lang/Nub.Lang/output/debug.sh b/output/debug.sh similarity index 100% rename from Nub.Lang/Nub.Lang/output/debug.sh rename to output/debug.sh diff --git a/output/out b/output/out new file mode 100755 index 0000000000000000000000000000000000000000..ddbe9c2f40433a8d42f4986c76c587ac7d62927d GIT binary patch literal 11184 zcmeI2QEXFH7{|ZcZrFji4Gf@6ZBYUb(A#!^11Zjj;Y~Kk0wK~Fskd-}Y1fYS)?lK6 zFk&3~;Dd=KYT$*$H{VQ+4^Ee0O!Pq$gC@RcVp20mAiT`@P`~e-?`y|lgT(lx=QKUv zIlu4w&N=tr-h0=xduC{4Z^UsxN(Ah%mNq-%g1n z6|f3e1*`&A0jq#jz$)-RRG>~jsJ-cqjeYn-y487tI`qq%JX^5SxF0)TkUsU@Sao+E z@}__HrmlfkmtWqa`9?nurpCawhi$LkiMdn|oI^0mGt3_LcFuIaJL7eKI^#{vL%7!`+>WWDd>Cvbx)|Tx>R*H1UIN^fsb}=_tss z2$ySN(yvZ{d$K$cxaHz_H4NNJFj=m;N2@3O%A{MW6}A@r(g}Bet&kkKt%1ptwa|tA z&m7zr&m_}3lBs@h&PHS+H7`}~;X4YCU>$R0#m=fh>;rs{?_|;)FVRp(%ay>bhLvJa z`sd49Fw`AOliAhOR5`u)TIKXCi^kT+HpW)t0~3)X^g4s|1jJpPv_}$!M=8wt>w%S6 zt7km$gL7K4q7$I2B}jC+lbgcV`LSFsoyZPfOeAtSe3MP&vWaYVc-W;*DrZ=P&u0^l zW6tnYVk$9=FHE75Vl0{MNNkOX6Qj-co@_SjVoBvT-b$ryZn)d@Xi})8^SiP9F(* z2IP4c)d$$f`~!n;W&WALw==(L@GSF&!H1UMq${oGx)Fbn`Gy7OBcU5dN_Km?mXa0-9 zzh(ZL!GBhxL_l^?<V5J-AZyvVB1D_W3CBM--2= z&Qsw5#}DxNDEuYG9gu5;@YYqb=of-w8kEUs)341oZPEkmlpuDepVWN2HaoOoC^_8C zuy>~pN~hTJkZGPcEkn!H+X3%KM<*uPB#Y&8t6eIG`QTK|FN#xl^zra~X`V2{6J~g# z3{Q~Z#b;!_9N(W>`nJe-NLdQqEsvE;0p#F^+94^8BLi(K&Q`*@RuX_ej3nkNV;| z?q2!yHyX`v7Ri6naG0@Aq2FYb@>-l~06Om%7NZN#qSIs)|4~9`?b4=Io3V$`V=@Z9 z%K7)2pK^_lh|*zxgEA0j!RdZ4T9ap;b^~$Io{=)^C>YBrV{t|o=x^c0@~1bebnvxl H)n@+R7uzEX literal 0 HcmV?d00001 diff --git a/output/out.asm b/output/out.asm new file mode 100644 index 0000000..840ee46 --- /dev/null +++ b/output/out.asm @@ -0,0 +1,201 @@ +global _start +extern strlen + +section .bss + label1: resq 1 + label2: resq 1 + label3: resq 1 + +section .text +_start: + mov rax, 1 + mov [label1], rax + mov rax, 1 + mov [label2], rax + mov rax, 2 + mov [label3], rax + call label4 + mov rdi, 0 + mov rax, 60 + syscall + +label4: + push rbp + mov rbp, rsp + sub rsp, 0 + mov rax, label16 + push rax + pop rdi + call label12 + mov rax, 1 + push rax + pop rdi + call label14 + mov rax, label19 + push rax + pop rdi + call strlen + push rax + mov rax, 1 + mov rbx, rax + pop rax + cmp rax, rax + sete al + movzx rax, al + cmp rax, 0 + je label18 + mov rax, label20 + push rax + pop rdi + call label12 + jmp label17 +label18: + mov rax, 0 + cmp rax, 0 + je label21 + mov rax, label22 + push rax + pop rdi + call label12 + jmp label17 +label21: + mov rax, 1 + cmp rax, 0 + je label23 + mov rax, label24 + push rax + pop rdi + call label12 + jmp label17 +label23: + mov rax, label25 + push rax + pop rdi + call label12 +label17: +label5: + mov rsp, rbp + pop rbp + ret + +label6: + push rbp + mov rbp, rsp + sub rsp, 8 + mov [rbp - 8], rdi + mov rax, [label1] + push rax + mov rax, [label2] + push rax + mov rax, [rbp - 8] + push rax + mov rax, [rbp - 8] + push rax + pop rdi + call strlen + push rax + pop rdx + pop rsi + pop rdi + pop rax + syscall +label7: + mov rsp, rbp + pop rbp + ret + +label8: + push rbp + mov rbp, rsp + sub rsp, 8 + mov [rbp - 8], rdi + mov rax, [rbp - 8] + cmp rax, 0 + je label27 + mov rax, label28 + push rax + pop rdi + call label6 + jmp label26 +label27: + mov rax, label29 + push rax + pop rdi + call label6 +label26: +label9: + mov rsp, rbp + pop rbp + ret + +label10: + push rbp + mov rbp, rsp + sub rsp, 0 + mov rax, label30 + push rax + pop rdi + call label6 +label11: + mov rsp, rbp + pop rbp + ret + +label12: + push rbp + mov rbp, rsp + sub rsp, 8 + mov [rbp - 8], rdi + mov rax, [rbp - 8] + push rax + pop rdi + call label6 + call label10 +label13: + mov rsp, rbp + pop rbp + ret + +label14: + push rbp + mov rbp, rsp + sub rsp, 8 + mov [rbp - 8], rdi + mov rax, [rbp - 8] + push rax + pop rdi + call label8 + call label10 +label15: + mov rsp, rbp + pop rbp + ret + +strcmp: + xor rdx, rdx +.loop: + mov al, [rsi + rdx] + mov bl, [rdi + rdx] + inc rdx + cmp al, bl + jne .not_equal + cmp al, 0 + je .equal + jmp .loop +.not_equal: + mov rax, 0 + ret +.equal: + mov rax, 1 + ret + +section .data +label16: db `test`, 0 +label19: db `1`, 0 +label20: db `1`, 0 +label22: db `2`, 0 +label24: db `3`, 0 +label25: db `4`, 0 +label28: db `true`, 0 +label29: db `false`, 0 +label30: db `\n`, 0 diff --git a/output/out.o b/output/out.o new file mode 100644 index 0000000000000000000000000000000000000000..8a62271f32132224ef3f76120d2059a97510f3b1 GIT binary patch literal 4352 zcmbW3U1%It6oBvSCh4}?ZjwqPTD99!gsMCH)6^8ZH7b#TZA)wsx)I&Z#z_<1?5?}B zT0u!LMM(U45+77-Um`xKPc=S>(LkVrpuYHnPlC9R7V*h|N<3%oIkU4T6G87VbI<+G zIrp4<=giN{$ccv|hM~9_>bPo;m?|~g7D*mf{c2Z${y!08#o&wz_vJ1PZWf%dPkTVZ zIj|2l_HT*B^ahPUz7b9|k?}vG3HJ(n8NZ+Wg_-)A{8K_9(oqS}%Q-!lZQ7Cj<79_> zg^l-R5M((g>Qm&8aT;Tr9MGv^n_P9DIYj#vYE3=UW?#G^YkeKl zy#vUazxMbFB^|ToUtG6d(Q6(J2qWt-f=jUl9%^*#iQ?IKcZlc6dPrKAHa0dy;8y_! z-8(m=BD9p27ymTqTC4wJ@H84MvVoQUcA;y}!rlRE828+Wu}}xpy;!9_t+&mRGR8 zU-HK>RBdY2rkk`I)5@HzPCI6`Jk@X=v+mTY4RgFPY1eCJrCGYCY*)^kr<$eYi4Fmr zYfaZwrye+Sa$hEyK9Wpjl`*T=vniAZ_`8Ssvy2L?cWg5Mn>6-0?+btDaGv0&qbclZ z=yygR9Q{UbPc(LG>|ks+>|rFS`ix;p28%taZilO3{JCoQeBQ)CsvvrRkL3~vz$ZVKm`mj002gd2!tB|$ z1Zj+wU@hh2xm?bKmMZKoL<~sZU%3|UqOsg(-z-^bG*r@cF1RZBr0v>pbxO_iMY|5S z-T_tJDch21lUlP>v8T~SkEbdV)ed_NXueXZ?mWw;<*AC(VXA>Pov6dCzGZb>B^#3s zx9-{{ke;8`J&nEWyzKoIg$lU-F7^9Hm@?{B+h$EP^vi?w5`5y?e$kG~4D#@gZIs># zZA<-J!)^2tza<8MAm=gnUgZMk_W^T!&)}P8$m`petS3g)+im1Y_Ywa@@P~+hCwQKC zOYk#W@G;`og}qIDe|yOunIwLv;8o(Ifhh_s~8w=l9M5!TH`iNF485@PE1}IM?A*#4+X}IRAoQF>DLMp6l~{ x!MQ$H1?T$wL2$0mzlrm@XsCLq;F$Azv5v9HJntvY>*YE>EjZVCO>nOBe*jcT?z;d0 literal 0 HcmV?d00001 diff --git a/Nub.Lang/Nub.Lang/output/run.sh b/output/run.sh similarity index 100% rename from Nub.Lang/Nub.Lang/output/run.sh rename to output/run.sh diff --git a/output/strlen.o b/output/strlen.o new file mode 100644 index 0000000000000000000000000000000000000000..83e9fe42c32dbcc16460ab92f99b9d0b013edb65 GIT binary patch literal 2064 zcmbVMzmL-}6tU8gipDfFpty)=04G{!)y&c7g-l@ zybdFcsivk?K`Xd-D==ICUO85yxprZ$Dpm7@79FEj)vq90{}aGyOeOh%`YXz@8s$ou zqnM)4P`__!l}WkJ0IRCMjt9c*v#MX!PV0YF5fdQR`sY9?wA5>lu{U7Qn$+AfJ>|Xw zuA>B`8U1I1Q~gJnSLcehpIHBQoY;V|YW<%8ugd>TT?}Y<^icFPe|LK}z0WeYJD+vu zUw{1mQZTh~0|s56*?EoAdue25+fM;t*JbXl%5SgtZNYPCX?aM`6T@gc$wWU+q)4+Q zl#%DBBPIs%NQyWdrkNCp9LK5XrvpD3i)a#Tg?@A-_9lVXTQICpZ12J2N6nkw_HD0q zi}9&lRGwLP_Im7dYF<9Np7W?RxY?)6h^u|UtC1tG2_M~J;0^el<@Hs^z2shV&w;k) zu?Fv8VLf0vOhC{1pN)0s^T!<0bGCHv^5`dv6>sjeMZ4XqaZumG%%*;H%fZX!amKs@ z8BC6z`Uz~WOqrL+(5INDj3+_lj}%Ay!{{(x;A;Tm1wkU88)`U=