From fba0a56add2202403ee7329751694687cbca6966 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sun, 14 Mar 2021 22:56:51 -0700 Subject: [PATCH] . --- boot.subx | 30 ++++++++++++++---------------- linux/survey_baremetal | Bin 53166 -> 53229 bytes linux/survey_baremetal.subx | 29 ++++++++++++++++++++++++++++- 3 files changed, 42 insertions(+), 17 deletions(-) diff --git a/boot.subx b/boot.subx index b8b34c4a..78680400 100644 --- a/boot.subx +++ b/boot.subx @@ -184,26 +184,24 @@ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -# cf: -# disk_error: +== code + +disk_error: # print 'D' to top-left of screen to indicate disk error # *0xb8000 <- 0x0f44 - # bx <- 0xb800 - bb 00 b8 - # ds <- bx - 8e db # 11b/mod 011b/reg/ds 011b/rm/bx - # al <- 'D' - b0 44 - # ah <- 0x0f # white on black - b4 0f - # bx <- 0 - bb 00 00 - # *ds:bx <- ax - 89 07 # 00b/mod/indirect 000b/reg/ax 111b/rm/bx - -e9 fd ff # loop forever + bb/copy-to-bx 0xb800/imm16 + 8e/seg-> 3/mod/direct 3/rm32/bx 3/r32/ds + b0/copy-to-al 0x44/imm8/D + b4/copy-to-ah 0x0f/imm8/white-on-black + bb/copy-to-bx 0/imm16 + 89/<- 0/mod/indirect 7/rm32/bx 0/r32/ax # *ds:bx <- ax + # loop forever + { + e9/jump loop/disp16 # TODO: make this disp8 + } ## GDT: 3 records of 8 bytes each +== data # e0: # gdt_start: diff --git a/linux/survey_baremetal b/linux/survey_baremetal index 0ae468ff18e57ed7ccc2d7157a9a71ab75b73464..c5aaf0c271f77eee57dc09c33ff5a433d27a57a2 100755 GIT binary patch delta 18016 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 delta 17942 zcmai52Ut|c_UA55MMOoAvLc9phyo%AQ9%(KHg-V~G!}^E8hh-~xWU*EjrhiAOr9m? z#TKJR(F9|QCH5YT<{1-9qN6b}&G?LE|L2_9JF_6)|KTdQDlmYzH-uigzV?28>V#K>q^}9LYJ*}bN7!z zb}SJ7P(_`@K6mTrF%(6kn49~6z?UEaD|eL|CGN;6c28ojyEo91*mC#g&;&=^BW+2* zFHaXjp!}E{O!frCpGC32&_$ny$mxYOTu9SCt|m7>F;ZRZju40JNtKaiBGNw)DMcZ@ zgX1P@Y+HfQ88teJAQ1ZC-~SW3F+zWeP~TCC6y)cKgvFIXPOXg8r}#$^Cm-anWA{8V zp&p5z`7cx=$`zbkMkhC(VMOHQ8ji=S_-~<8G5fDQ{-1GQGy$ZGFF?GlAU$wA^O;Th zsELeP%12!oJAC;3Zy)2)M>;~pC?8#Lyj#_(CyqC%agMKx&FIXJ|NB4lsD(ZjA;vLk zO)3q8v2*?1c%eknZ=rG<((!LD3H)u5H$0-0hBt$t)g zdPwgtbqkd4Af-FONw-+)CMn&;O1F#9W%las{=1}Zb)|cd1=X;=G6EypO_$6qbPxDXS($Jik zB`UCv$V@K;%q8rGmv1MM`zxaX(x|I4DwNEYia8va8664frJ4mcLK;U?MDB~E(FZiE zG&l1lbEZOCj7+ga2LEZ40}mZYQ6vzkU^h#I?h1B?pNp>}*C>U%n>F(`ccHir(u7f5 zS0%uo)czFLP02i`Q12mAG}87zm{z+!TjxEs4dLCVc_2Jrf6yXkh{6kz%&97#2$o;V zEbRZO?DM7SQCcb#&k)IU+VDrRPimPhKJOJfZU0A(=ZBb2l^lI6yBv z#Nty@_ob?v0(~Tz1C{-A$;?ztcQ)V0Y^6wtDbQB+jY@ec)z-)qlRxq|WAgQhQuSL^ z)T!*D&!^fB_Hpfa)7AQA-_`ckMAtR^Lk7MX7lDr&n*t1<>D1&@T~rcN_Pq+E8fwC} z1(yl?FEWr=fcJfhbZ4xskx#m&DKgY7d0oy zcx+qb2_^#Ke#$>Z?5@Vsq?hEXyj)V1Rt5S(F>Pormc#X*9R*^#ZF3eMgNi1>m_vT7i|o0~I(q z6WcR6yNb?W6NI@wb>En4hqDp|PR^#QF~J<9$siclK!CBco%QNuQv@BADw!s#aV)Be z1wl&}Yfz4ON84BPfX_N%_fy!dS%6=PrZcPGcH3+;#@6H)?_soPyc^dH&w;Uk<K9a%zLFmEJ3UFNS3hULA^!ZKi{pG_cb*p5XyUz0-NTV}b+`w$=M|}20123(BodU)j!FUFYg{*pr*;FPNtwX%D&spb? zMALOMn-LOh`djcn2EK`vgJP2g=z`r1@oE^~0372~T6p`L#soWVZsmPQujbdP%?7fB zhKEdxgnf-ruZI6Xdz>i?Z+N4!{bAB;8m>|~iR#_psmsD|UazeF6xBmCH&z;I)>^W0 zq4jERRNH9^I}PkYWV7d?Ua+y&2s3NTXxt{uOIyjhgbg#D3}IWtB22eJ*w>vtFoHi$)^1Fu1NC=~=mHyY+iVa1}nkNp0pON*MDy~;H~n->xN6= zIe{BNR%|NKiaWTKyzW+#MB`+;`$m@DI8bA(f8(BAke3L7Wb05j7c0-Ba$=9`8!!Qs z*%SD4kr*=rG_ zO}9eXjfncddmPci^gNU`i=3&2vrUnaz`78*L`!2sqHN~M@hwpC4P*8w|7P!nIl>A1 zMuvDAcp~zayoO?%SbCHC$uBjk80F@pM}}97WV%vY!Olfvy?%<$GF=E~ZJUlZ z-GSmX9jbY-Ix+rQ7HbkSN1M*J#Ds{gE{)QphM_GuR*mVN7ox^%8iQNfku0)r==v(o zfoRH$wzH2=^EeX1xOmG*&2iix#{%_tyx71Uau-#Mq9BWnYJ66Dy(*W3lh+-z7Rl=+ z)bxo!uWVhjKAInU+RTyVuT&w0e_f3e(15b4TM3_-c`B|4>;BK+U(w3%l67tG1Lih)vYCvFzAH)7c0%KX#&~v7$KN zxN4F3s%?&n&j%QeUDNl1QE_9}j3S#@vdK_3NoWI&3tQj$^ObFK$fiHpXv(Hg*(`p+ z<}I|TJD+U!tE?6?9@ivp8?omocDaJ`eF5rgg!28CY%-M1^++}}KB}&36sBKY@jcn9 zc(WGIcE>l?TCwZ#BO>!arKH-T9@X63aq6v>;v4!PGFzgu8N$Z4Fh{Z~RNo`jETy`N zZEIn+9j`+59I1LM)vtl!n2Qc)E7!GJlNaOi0iKngRO$Ew!-3%9j9|l~zPv*f5Sau~ ztRO51Atra(6LP@vA~&|x5pjUncPJSVp+*yT6;D=Iace+-cRl&Hh1%BjD#@9G{s_I zO1-`^QgX^@g{tLb)WrLTxMPoVZ zO!s2g+%|o+0QOxQvlhypv`K|~>ejaY2oTi283c$Ibp*I_SOLr@6|fIlj4F6XM3t3J zDhEI%OgqZXx6RZ3i|8hMGuAaV%k}`fbOOxSxNbBQmMTD8bnqf5>nz zlxL`>8G*|5#@kTtD3y&xNDiJIvDbP+lMc>ogWcoEubf*R!8~BMg?MKNEhWe zKHA<5yG_Vq6k-7yU?8ByI=9Qz7PHcJW^D!A+%81h%TB@PXAH5;MFBk_U)*EhI^J8tSe$a4CYQjfL(YQf zbeaDcF-{?&{W87s5w}6vV}}W?0E*Z~A)iOvza)TG89-M6>c!I)nliF~f~GMEMgRw> zLiCPE_-dl;AAwuJT#oiuQOFi(+fM=%RR-YHXH)@rz3BkRQvnP{(|5_9Wq0bVz0cn5 z6bYA$FFHk-ZX~cfogy?B=H0nv+eR%xk=`yGk>|4G^}|_tJ<{<tQ#lE0v`$YE`^XUEPI~Oc$VuC{_0h53M9Yf&kZ*ygTJB1eL5h0U_~wmt=TxqP6i+MDc5 zra5v|6{_n<)vQ!EvD)3twi8vTo+s7+sK~zthK`9@_^nTkIWYE%CsiQ0C1G6Dq@qWw z1HLjp){}X0Gy-#=h=WXd0G8ZvcCC_tHkO{O)E`sbJtMy>}5w#Iky4L}VP?&G_|Yr9er!RHbkkd;#jf}8 z3MgqMlgiv-gi`)*QV5t&m8O>X2=zqBzB|~qWM7uvGp!D7XeFPa9clGsr9A^}v;hiR zYIGW3qdkSR4k1=SVW>+v+T*WPhLjnu4~b1O+zAu6S6?-zLp`xBY-5BQN--)wla43J zaDG5X)sulxpndmO^0JSn(GmH8UXIAcFFX`tZ56pMVzrcjzwfIAnC}FLVP~o_g$=RV zMcATWl#@-kfeZF{}1Xh75*(bF8`fi z3kh~N?O7`PBnA5z5&cqt5MX`UFj3RFPJF7w72)f0T;71iW(Nv4?JK$YoE}&xx(M`; zCEcumAIFFjqk@}f+mWr(`B{$3^UzHT%I3?bhOy{^cFN5V^srRA3ERy+$q!|}^fCsH>g{=C-idBVLZ8XB|1c+`|$ka5Rt)2;{L6s>ML|u z4@{$vS@@dGGCI=!k+e@K?VnMb9nP8jk{v(MHEHF?XoQCfe90sZ>Biq1EHO@0*H3pg zp?6BM3bWx$n86ybej$S>63vyO@;DaSCx|`m?G=~|A{liI1%LsUXMsk9)|Yke^Dk{I zyV)ltQF$sQxCB~uRIBCAAkRLMsqbLDa-+JPL+O1W7T$e}lqtAB3GM*ZhTxt$!!1;B z0c=0OCAJ1Q3lIzckE*hQ%L9>>TNK=2Gzf*HaAJZL+zb}qH_Br6P_P~51x`ObfsGt6L+io#0Q?TG z=0Ha*r>I7bSh5BtXcO72fsLKEo*4wS?ypJ_%{F}HSowDJ(_ieB{qz!)7_({pz^GCA zCg9U6^kP?c+(n8r+#K0`=7cqju&Nti`&jIt1>IDAu7IkQFMVi4BhtN2+*j2}%MsCt zA#;rpgYLpigQGkG+JQ8l#SQkWn*txLoPG`=9uC^G+`+Ty>rDZjM+&d~X*et&+>V9y z31qbkyaIK^F}&1&UwWC#5(}aNK1At3AQnFK--fLGgfL%N;AOhdj=ftj#r7-e(GGib z6{=xv#Di#O7>kFUt5imsCHjKxq#Dz=M7!0vPJ4i(=Y*fB%@EG%tFBlo5;22Nvza^6 z&1`95NBAZ2H-+XlX~3}Zh}%XisQ}C-(;xo=$Ek z;NdW~(2a z^OaU$I%qk4%N_+|izswUrPUL)-g00yg;Mn=HFD{#)QV7TfO0vH^%~MAkFF!bY2qnd zx;FJyW6k91La(rjZ#Zs)i&XjPp75!>J?LfNLO+8fl|31<$&+4$3|UQ&q*swmj0Lpm z;QUzyL)|MR15yRNZG1O5p_@h?E7^0;UJs+ihDhAd<_Y1(? z(eYc1K$M zn#*H28=e68w4X6=Y?tDA{VOoZ)vo}}*6#!5tJ%O&389Y=iO#kzON}atv+W3jv#kyL zWE8E@uSP}KrgS!v?!C&;)!&lLc8d9dWHwdIEt2V{m^&rYMKSkC=1;UvvAWrMByA5f z)k-{sYTpCl8FKCD9&F|434R<>vhwxtV;ykp-vf^|x=GJZNluS8MtQ_0n{ z*|4#QGkVwb6g8}s7eDmm5m#h=vf2?*?cm)KCY>);9FG1o9NwKD3y#ZT;4VA{zi|!^`H=g z2KMhK{z6YLL8sIRCl(u%D;gma#`<|F-c(846vfrLI;;!$LMhJ{&zyb-4LmW9kQZ8k ze-FO*#oy!7^v-~;b6gr|e;K95v<6>h?2`%2Y|YUh8H`j@|B__pDrTl+rYmN?WHwXG zp^{l&F-J+JNijRxS~jYaqfbB?E;-(u-ezIZ?GxPWEwi~Vd@*M{AJ7V>SQ|Yt=0?18 zcu2=GZLU)hYdsQ5TbxhyJn55smn_)goGP9{@0(ARh1f_)NmNthDY^r1+n%deUrBZ%FClaYzkU2$4_AALe zWNwj?wMw!NnLkQNiIO}-rnx&1@-tpZQo0WY?jR}Zt3+dwxlBq@rKCcUo0ZC%61G{5 zX%*Bg#Z@qDCE`$#gO|x7ZG|Xmg1PntLUr1`+(6WQk(n+fYm}rrGN(z& zJSBMxncI+f65QzJ^!>!`DdFCG&LA=!tlZB0r-l|z-G>~!E$D~AB!?H%riLnXA)Qp9 zpCJDDO8iXy9Pz~~eyKmP6}=gh--MhM~@mP&(_MQ(3l5}*Lwup2SA(%0ip;P@?B2A-4fGPjhZV2$8%`O4TCDsY zi+R08LLz8e9WU`^nerz26(6+nVs2P#=kCG@YDbK_?CsZs#E&H2SzyRTXUtP$>gouJ zj8*dT8sA_+TPAE{1XNf&%% z)gBrnqRr{7tEXIOSw^8cS8}mZx$s6MY$6MtnNK#=nabH-r+}0Xt z0h0Mh?jflMuW5KB#LR~vF~Jn@-bmIVnF4*qk0S|&%L$)_dzel|Zf`S+EL7)@mU0 zknBhD2uU0~%ke=--a&$ohI|X0nfx}A5ZI@9E|RyA96{0sE;D=plC?l={3w3(fx9Aq zz7{{N2Qn8)(~Up|e*~liz7gPY9|MVn?=<)-B(H4&asf%!Rv*i$yZ1QYzOk54e4bh_2BzDZbkAolJFfs<Ow6UbsX7P#MMK;A`SN0Lzv zWIvL+uy6AXNFqN6G7ZToB!#jzQjq);Nte?=K0;FC z43Jlm^gRpYG?I*SKz1RCI}ch80c~^<$ihoNmR<&O{Tm>G-vTMS2BgmSKw_^0 zS$+e^=Qn}aZvlDs1CW3H2;`;PK;A;)b_d8p4y52N5cm6KPu}#^v?XOev%=i82h3-d eUs>n5Db=*pGTYl>nl`9x&Ef_rWyg+2RQo>&fim_0 diff --git a/linux/survey_baremetal.subx b/linux/survey_baremetal.subx index 53addef9..7097701b 100644 --- a/linux/survey_baremetal.subx +++ b/linux/survey_baremetal.subx @@ -1501,7 +1501,7 @@ $emit-output:check-disp8: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # . if (eax == false) goto next check 3d/compare-eax-and 0/imm32/false - 74/jump-if-= $emit-output:check-disp32/disp8 + 74/jump-if-= $emit-output:check-disp16/disp8 $emit-output:emit-disp8: # emit-hex(out, *address - address-of-next-instruction, 1) # . . push args @@ -1516,6 +1516,33 @@ $emit-output:emit-disp8: 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # continue e9/jump $emit-output:word-loop/disp32 +$emit-output:check-disp16: + # if (!has-metadata?(word-slice, "disp16")) goto next check + # . eax = has-metadata?(edx, "disp16") + # . . push args + 68/push "disp16"/imm32 + 52/push-edx + # . . call + e8/call has-metadata?/disp32 + # . . discard args + 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp + # . if (eax == false) goto next check + 3d/compare-eax-and 0/imm32/false + 74/jump-if-= $emit-output:check-disp32/disp8 +$emit-output:emit-disp16: + # emit-hex(out, *address - address-of-next-instruction, 2) + # . . push args + 68/push 2/imm32 + 8b/copy 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . . # copy *esi to eax + 29/subtract 3/mod/direct 0/rm32/eax . . . 3/r32/ebx . . # subtract ebx from eax + 50/push-eax + ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) + # . . call + e8/call emit-hex/disp32 + # . . discard args + 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp + # continue + e9/jump $emit-output:word-loop/disp32 $emit-output:check-disp32: # if (!has-metadata?(word-slice, "disp32")) abort # . eax = has-metadata?(edx, "disp32")