From 13059667e06b51bdf69ad09841f32fe292d417c5 Mon Sep 17 00:00:00 2001 From: AntKrotov Date: Tue, 21 Jan 2020 10:05:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B2=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D1=80=D0=B0=D1=85=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4?= =?UTF-8?q?=D0=BD=D0=BE=D0=B9=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Compiler | Bin 312112 -> 312640 bytes Compiler.exe | Bin 313856 -> 314368 bytes SamplesWin64.cmd | 2 +- SelfKolibriOS.cmd | 2 +- SelfLinux32.cmd | 2 +- SelfLinux64.cmd | 2 +- SelfWin32.cmd | 2 +- SelfWin64.cmd | 2 +- doc/x86.txt | 29 ++++++++++++------------- doc/x86_64.txt | 17 ++++++++------- source/Compiler.ob07 | 49 ++++++++++++++++++++++++++++++++++--------- source/TARGETS.ob07 | 32 ++++++++++++++-------------- source/UTILS.ob07 | 2 +- 13 files changed, 86 insertions(+), 55 deletions(-) diff --git a/Compiler b/Compiler index 7be01902823a6e5baeda9863d36e5e17ed2300ab..9543310dc76b9c91afaef9d36ca4bb314bc813bf 100644 GIT binary patch delta 24149 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
@`1EHZQtnETGhCoy3 z+=X6YscjePGZebO-p=%wp)d)mcc#Tdp#>CnQsaifYk(L1>97&tN)tw459Dwm3KsQO z*NuSrwtjvMc}@8WGo9amv`lbN!u(knBn+|J0AFBrc3d1GnX+@W&fv)1{`eN49 zpKe*}VoI2P%quh#Y{iX7pz+VuF!CVOxITT5230CO#0`w0+(qF+Wr8MnBsTRxNA+>9 zicVmLr}b#v88|lc>e1dapl?#&dIr`v#>z;0g}2xf5>3R_x;Ufq9x8d5j4~oM*=w2f zxDXr_rel2cV`9;E)g~-Lvh#LpBhASNpD*?#p0=Q2Ga& zF8wwOe7(bK@%WG2v*mb+@yOZa#P=Le>(IKhp*DOsqvK~oFPL1DUY`xMz`YK2oC6&y z9IkC>n+U80TKHm0C(eO7kX)M{n1iFTac%klQ%83rFR2^WwjnY*n^Ny|2#0I6XzO(F z2~&j^_$JBDj=OihI(LhoRMnWoW7YUZ*m~NWnRJb{Tva`j4yUBxH8l(#^f$x7lwrD* z$#@*czJDmW5RhI&J)8kA0oFy+9rM8*W<=A1`QQbEqUpc$VVmvYC|nV0o$zEGO?1@L zH47l#t3L;OF|gE{cxl}%ikdFOF%lR>LliE6Tux*-u3Kl;`6F%pM_Ax5&rb1 z3pYV)kD=Z_P*=UigYPi~SZsT5`ehRgf~Q`z|7INVt~zSA1p~P3rMB1tYcbS&t1q^~ zL44utO1JKSPSDbo;`B5K9=gyWJE02faiJ@ALQmUvF03}Kp7REYa}j~ga~D3*kDck@ zU6^yOvzogL@Fsi*Cl)YWs9h$Eg*-fBaK}O9o4y+(!w7@$dN&+~5l-r^J%G3P zyE&>4v!FXh7CYKt9|qMMwj$5WeUJ%GwzSrMs0#PXtHbs~LvvVZrtUrpCrst5CRTL( z31}b_{K3QRDExupwzAyF#7eb335(3(>}R^}9K=AzXL|n}G=S!xX~21C5AQ$G3Fn~$ ztolSRp2yJH>67Ym0Yc5e`i0u?D!54S_LQ!e~8MQy<@g&H%Pg)cSY9 z0-}^hmOn=8w+|608?BdO-`zpb5Uu}yNGINh9T51ChCYBu=Qj_^8qklqh#h$6fjZ&= zn3`Ja@1c_K;Evo@Q~!mV_yYPa?O6ybVZt5tTOmvY_V0&F1 z^b%sNVdE*f^$U1I+9`VK3pBRxb(Wip&$%bFfOc&W_5KPq%KIRUhY0+2qQhC*?<+p1 zchAt(U!fB0IYZBWg=Wy{jOy}@b=BuQ+VVRNs?K@z#dp{Wj|=EBJ%l>v7GM?eB;hzt zQ`)<9KK^$V&}({#4gLvrY{y^g;$#f3>^{cn`M^RF3nD8If8*h`+{wlDW#7m}Lc^kZ z!O?H}23?!g$~ER1U#bh;D{}2Sv3P;(6R_w6uUUd-i);EM76hjmkwI(t=pA`t@jr4C zsCa^UN^*7AH^&VbuHsR5yuMX&(Ot}R_Bc(FkTv%>o-51P-^b}~Np1^yxEcUC6-X}4 z0=X5u%TPgLmQzV9L6gF@UETd;O%s5iZG_BN#!R)9~BZi{;2t-#}P@CiQr6R9^Bgg0h zQ`ynCO**fJVLoVp(hu`NL^{ngm1|m8KW403^f78_CMPwRI)`Uufxhcf9&L{v%8As_pGr6+;oE(lD2c|rSzBQ8rD})*8so1MXZ#kP* zEGO4-ynDo8=2v|4QPdnY-)7MXc>6PYGFm-k zz&Y9GPg;oNN-+YAEkm~bb&=>kUxSWk7=4&dD=(*2$~efaC;X6Mj>zz{LB}(kI7F-3 z$`j$=1N0AD*{edq0nC`1osCqkcRi%uv6XRkmZ4G$dn6>QoG{f$IC_BAw8uewb3Z+7 zFT2|w+s{iL!E;wQKp)x5qoMA8+O+~Ibwb&jD@UnxdIfoH;Lu)r%K;tweJ{_x#^_MdK5FGCr$s6PzsIbUwz2K6e=qBX4Xbo$4mP zjr85c@d(6!sK+}|GL)*h`F4NM4es&-D8G}=@<6jMckt|XMzi&IQPo2pP+`2lnOUCi z+D;noDOZ6SJ7_OY%;zff>~NCn6L->ip7MkW8QV+T;rR0%)XfX?wcJjddttuHLZ4}D z*U3BR1TT33ei2Kpy-`188_$2ys6V`&*7276*c5L?T(n@1?R2ZRT)Dzg2Bl_~nDX9E zHE+2M^w>&k`JkzKLLX~%ao#qX=p#>O8{_9pKW7Wi|H@d@jjgJuPL7Zvej{z|FZ)5j zMmo}8t_rU<&`thw%Npx8@C?SL&NGpU!r8}_(~E7!usbl*gq}IXx&rlVY;2&R0di={ zx{W+UwVcgfLRCg4i`TQ++0Ig-VU|*hSyY~4hxz6pim}tg9$#{^YdOCdWDK|{4P_Fa zquUvB<1KW7VbSbcPXpc~S7%a~)Yim?<%-`X;mWGXi?95(KeY|SkNEFyp!Eagg;p(? z^Vq;zaPpFIvOE0{DEEaE>uJ{@84n-U(@jD0GI+d>HVDSv+`EpB43=-h<+ZeJh@8^% zr?osY^B)KDXdRZ-KtKsvANExbegVv6tPkq>e!-W??7>UNP88YL{T53DjIljLWGr4o z!$al!5V(fgSCo?=XEmK%QLYbDSJR^vaaxRAO>HV+oOM`DD^-%C;OHvayOO*fYOPXD z!(>nVZf}L^Us=8_f#>fkRFPN9Kqy^bRStxql%B3CXTjzKxPQx)m+Po(l!`iIDhuT&$>{Ev9{=amW-brZb{tZ`iV!Zi>da98VA~Ma%Bc zXEA+_sb?IXIh0vxd-lUAM%>%0v{;-JR9LLmttS7X$W!K9Qujr20KHvHj)w~!)!^E! zHWt5$MQZ0daw3eLM|11QW8hl`tyLHQFvDqaa8Q0dj*`Oq8gKXo8FXV^`6Fb`rK@7( zNSMse6MUfYT>2(P?hfA#M+yDv$qA5}uI{TR2U)<+)70BdWj9&wn8FviZf5KTRrM6= z+5-FEG(~OJLJp9l?oP!0O4)OR^9(4v65WDh@gRbRmFTXCDxMp3QXpoW`l+3)D9~mU z)px|E3K*qU>?GI1bKenkKo>dEdH;yAw#7lhx)JJ*F7g2dv>|k0PZ|4j2=(bD4}!cT zI;)plv-{kn((==pYw~Ez#2Tj99MVbN977m^jXQBQnf}Gm4h9s5U7A1|mGbbOAlAKV z67}pYhlZB>uj0et5{v9kb1_~#MEbqKYI1KmOoHW!>WV&ca5=x(eYk7$S$II#*!gUt zJuayV^@n+m!F@!}7AMMm9di3&lcnae(_68y+ue^28!Qil+P&$m!Ez9M?nRX(xj*df zOOujh9W3li=O)QxtXuTr2Mc&a)1Vi%86x+F%{}SxA#x4tO+Ag86+M|IoZcHEH@ExT zqvXLvx1aT(wTH?Zz&U{48;ao}ya%-#COf)Z^yka7c(I~RaZO_JMD9WB48yLw)}0O< zCWpX4e>#7d?Cp@;-LM?fE>!00)3ok1XBa-4ox9Ty!>|$y{OEvWc`Ug3(c8&#T*%X| z=mWON^lSxBRJNe$Y~Qkr!#ybB07{_qlku3T?{L`{W_P7&!?AX~x~l&Um!C)w>_ad7 zEPFYc`|zA>Eq|~fFTGypB_rh#@T<2va-`f|f=*p%{wN&mfgP#aXnZ2xbf7Iq%gyTl z))m8JQe`c#;4ACFom{lgmgHj~8goE%6!2;e<7W^Yex-fG6xkVF=|7|8>d>VtwH_k} z)UR&HZOPSXiTLh?4LkH|ipb#23AS2c-dDUjrr*aH+B~7N?@EV{kt5(y7rJ(g>{#Pc z7v`CTmWEtB^50^x^p%UIGr87O8-yaeboN-lW4h31W8@g9-Gx>fE4x{=U^MOOiqhzB zNoS3f17Jiax@)Z56oNa^k7H#53p>)e;>gxXvhK#t556FmJ4K0 z&$D%Z2%m@9p@|5ed+Lhtxu7mxxj-(09d*<>3*`*l+}Bp!@GKs{ttRzaBF9304Yk)2 zxetE#{)y&Nxe>f9R?97w@xz5T(c%H@vYQ=as6LB6ugwIXzW?JO6*BSDt-6y_99OBc(WH#zDU6koga4q zgD+dkbP;A)M9Fx=OX{T1KhDaveXWGXu!a40Tw={ydZhX6IJG>7!{y*{8gou=<1}7I z^Y}pN$E?u;#G&W_nXWx2Hou@_5M8)5P;~RP1bAD6wFaoy^0_W-eN2^M|o# ze5qDmz{@yns!ibVEA1nu= zB8p5Funn5(a6zsH*Y$Mn1q>sv^!U0+8{5bbM(~>GDESb2KjI%;H4eWhyU6p5(t0NK zHA+`6%F(i$Q3|;vyTEfjZE#6`0yaE#p|O9-9&rCV1G%866b6pOD%OBOj*X2eM%=$oo zejXxjyf8@+fBSH2Zq32RmE;|UFYSt7X7 zb@y?4{Kg{Sq9|P1DyO~4TAkcIaxYFFWr|N)kP2Gn*b-D zGCz)iHBY_OgnwlpGdTH>{`_3d1Jj4XY|9t&HVA(}i(kkKVb6UIs;ghh`y{w`mv(%O z3))Y2)yc2rvl86AE%Nkyi_`KFgYf%X*%p$7V8$-arrzc?Rqr56v7B<Mu%y1W=8V%{}1yI8I$!NRNb*(U@>U!@g3%eO5TUlAG8uFy}P<*Jrl z405w8wAvS3p?|(ifBk~|TbJp!FY-Y6X*#X&Ri0w`?jMow(LZ$gSKR6@{fFN9iu1Db zKWfA`3JgDsAD+8G6`MNrXOUXrP(W4ECRZD0UKTI6_A{C@rD&5jERE!9OQ*=P<45q>P0rht*6c z1y4*P57EcYN>8|SkY>7Ip?zGGRxt3Oioz&7wN+`Ln-T|yR65j6*$&_Kt8VT}e+l&a z)D#cJ-yGKMq#OK|n=pBani`;30vz0?W&|noO`&Of>Jx^IdUyjxz)jr{rc96_c&+La zp;$}cwua&lS2ZqD`4XvslJa=aJ4_ADg9DI$$>3R=+TeL>C1t1FiRr`sOepln)a~PQ9YTYoWhIa{cwe=bhBL6PZTk`AALVe z*#@`!(zVG-3~cJF-b+>n$(Av_1fg;-we3hHRe?jeJ{+qA!tY(xFJqPNrfdP#Ws>qx zhTd(}dQ%lMfX;2yCexH-GSC)kxfu$sY5!k7xuAHoDsRh5Oy`WjuAP_5ccJKWg~*;*!cAbB7R0>3q#n~ zH10-Z2}9Ufh;51y`jtWKJ0>t9BN@Uz8+u>c;3Dqj#TQ9MMx-@E*lWzYMx-u7*!LTk zjYvg?u&;6ojEE~k*e6PV)^1`jZN?z>x;)EBdWVxI-y3Z+A`ckCzI9qG~x>x(*ZR-jL1}muul!z84;Yq_56-Xb0g9nk-`^jQ;8R`>lpS?#jar2ZVhH=B>XZ>#i%2E@P1R8&^cy4jAZfP|namKj4%=9ZzF49Jggy1Q z;Jd}NZ2TKTe_P`YIvuaJ;aYG!J`y;BAJh`3Yq*Q_r}e1fXZ>dhve2InWyq!yq`yC1 z&X5r$NOgZ&z!1L@#N3~LU`Rj-a>I`XELHqc?$i`zrN`C8l3$_3{!T%J_He`(*2f<| z^36V~OpRI7Oz=7s0^_Ti@GD(rnu=WQ*`hBD{UGdVw}tppi1=Rl8t|3p6C;37$Q^w! ze~a}Of_$SEj$MVNE;q_{op@}RQ!Bd|;PsGePg zBJu<#RiRUUS1Q6!K6KmfN)*s)^zQG9R|OLv-s%b3qQ%_kD{oqUh2jT|tI?_}l(}{* z%JU)kR}>o5I*$D!&KUJ8lnSubmpZIe5+Eju4p^xihsjlG#Z@?4SyrX%Rw)Z$QY5Xm z8q*gMYQbuy7r>%$8oEwd5AQ0|^XrsakmW%w)+>Ee@X5j(ZTMG8vAS{iafVakWBe;{ z={@Y4P5)AUq-A0{Y6{!n{jyerZ?dZ^?4yn8xgpK+kLysvo@vlt8=Lrrz2FPYZ8rU> z(sFhO_GS<&vsO^FaZ7poRp3_fv-Ihonbo<>>L={A_N@m0#mwSua2#zR3HbLYnur{E zVaxz%HJFI5;pxs47R@pZxDUhG3%>`b)v<4d*o~`-%f9Go@AXQDl%302o2FgFn`kXF z7GHdccQhKbYZ}Wvu~2W3_C-yY`-q};TVPi?hJUm{h?lrnA;~O7!|fS!`!9}^ z$NPpk0=QrR%(YAboaKNGeyFrs00kVdO0w4GAyCA^U^a&;U~5bioE(D{{ESHeM-70i zbzwkChUsCB*x(^cyr8HYu)@EiRzm>0Ibe&!BuD^%7>t-|P6F7$0X!Si6ai#$z&FW8 z!yT$#yS{|?jVRnfyNjZBl3`f>5l;2d&MDLl8Yrob*LBq7uReMP;qd5;|_9QloV{ zB8KP%y}oobO!F6`fxQ_Pqe0S^4B(?-v~}VIM71dMuiRkT#kME0k4w6t=@5=*RU`(4p{ zq_FAr`M*3U$InhHKmvZgUXJ}09<5C|dUli2Gi9bhjmO$ktP{EFmYJ|j0RpSdua{wv+RS#fLk3;!DrX$5N8 zW)E@t-$wYQpJ;^6tPpH!j3X>lNgSEjOSI-yI%13B6s4Jq(l0(SddAtJ@MqJpKYF8~ zGFXMhwEq^RN~ny>6jnt3{}yqtr|8Bw{8%RPA^mfU5}wlQ84mpCbX#jTmcZm}TBB;BwVarnb;}GBKTJN=WLjk=|eMV(|sR@x{M0 zz=Ch>A34L36W@9^`XUS4ulR^Ar#Xmhn{M-Akf6;L@->6n3EB7{R79WI&8g$seGL5w zI1IyR9l2czSGBFmGTW4KgOj7G_8XpT(rIvV|Ka0CMO8HkA25D^3C9PG87zMEA3D?| zoc(9W@KH?LV))R(eMb&%)1CobIlONYqgIbDW2<_!fDC4;M>FQo!O3IBM^$B3S`JRG z!hRdEQNvBb@gHYYk2WyIj7KvDXw-1k=8*DKDW}r~n*^Ka=!c_9dWzBY>e0GJ!;?o1 zA3C56(zHXfGE(D~Em^6|rY>&$fPN)H`!+^aRMr1lL8OcoluE4N@3`^(jAl?mGbK$U z3Mds>u2$_6qN5^o!v^;oIUE~m^vK~uhYlDy%B1~ItuS|^;Uh;67+<+n)c+7@{cI(S z4$a0*_}py8sb;Ib6Gjghr3*21T9}SkDoj^WTBwOmS2=ljzr-QBy1^qx5ANG<+{iw` z^=MAE(uUgSD4~I)28`B?#j*zvPu2||s2eeI_@I$}hUr2|Ot5OwUO9?8E7F?I$Wh9> q3jafO!$;~`7+m14(;Y@$P`fs*bc2(12JQcw;Zu$hLu=$JpZ*U)MGuDn delta 23597 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 JYu_0~`7hWmRKNfL diff --git a/SamplesWin64.cmd b/SamplesWin64.cmd index 20d301c..a02300c 100644 --- a/SamplesWin64.cmd +++ b/SamplesWin64.cmd @@ -1,2 +1,2 @@ -for %%f in (samples\Windows\Console\*.ob07) do Compiler.exe %%f console64 +for %%f in (samples\Windows\Console\*.ob07) do Compiler.exe %%f win64con @pause diff --git a/SelfKolibriOS.cmd b/SelfKolibriOS.cmd index e3aee71..069ab78 100644 --- a/SelfKolibriOS.cmd +++ b/SelfKolibriOS.cmd @@ -1,2 +1,2 @@ -Compiler.exe source\Compiler.ob07 kos -out source\Compiler.kex -stk 2 +Compiler.exe source\Compiler.ob07 kosexe -out source\Compiler.kex -stk 2 @pause \ No newline at end of file diff --git a/SelfLinux32.cmd b/SelfLinux32.cmd index b1f53bf..d32fb5b 100644 --- a/SelfLinux32.cmd +++ b/SelfLinux32.cmd @@ -1,2 +1,2 @@ -Compiler.exe source\Compiler.ob07 elfexe -out source\Compiler32 -stk 2 +Compiler.exe source\Compiler.ob07 linux32exe -out source\Compiler32 -stk 2 @pause \ No newline at end of file diff --git a/SelfLinux64.cmd b/SelfLinux64.cmd index a57e679..cb835ae 100644 --- a/SelfLinux64.cmd +++ b/SelfLinux64.cmd @@ -1,2 +1,2 @@ -Compiler.exe source\Compiler.ob07 elfexe64 -out source\Compiler -stk 2 +Compiler.exe source\Compiler.ob07 linux64exe -out source\Compiler -stk 2 @pause \ No newline at end of file diff --git a/SelfWin32.cmd b/SelfWin32.cmd index 0af8935..2d3e876 100644 --- a/SelfWin32.cmd +++ b/SelfWin32.cmd @@ -1,2 +1,2 @@ -Compiler.exe source\Compiler.ob07 console -out source\Compiler32.exe -stk 2 +Compiler.exe source\Compiler.ob07 win32con -out source\Compiler32.exe -stk 2 @pause diff --git a/SelfWin64.cmd b/SelfWin64.cmd index 1af9484..e20dccb 100644 --- a/SelfWin64.cmd +++ b/SelfWin64.cmd @@ -1,2 +1,2 @@ -Compiler.exe source\Compiler.ob07 console64 -out source\Compiler.exe -stk 2 +Compiler.exe source\Compiler.ob07 win64con -out source\Compiler.exe -stk 2 @pause diff --git a/doc/x86.txt b/doc/x86.txt index 402d3f0..c7eff26 100644 --- a/doc/x86.txt +++ b/doc/x86.txt @@ -10,13 +10,14 @@ UTF-8 с BOM-сигнатурой. Параметры: 1) имя главного модуля 2) тип приложения - "console" - Windows console - "gui" - Windows GUI - "dll" - Windows DLL - "kos" - KolibriOS - "obj" - KolibriOS DLL - "elfexe" - Linux ELF-EXEC - "elfso" - Linux ELF-SO + "win32con" - Windows console + "win32gui" - Windows GUI + "win32dll" - Windows DLL + "linux32exe" - Linux ELF-EXEC + "linux32so" - Linux ELF-SO + "kosexe" - KolibriOS + "kosdll" - KolibriOS DLL + 3) необязательные параметры-ключи -out имя результирующего файла; по умолчанию, совпадает с именем главного модуля, но с другим расширением @@ -44,13 +45,13 @@ UTF-8 с BOM-сигнатурой. Например: - Compiler.exe "C:\example.ob07" console -out "C:\example.exe" -stk 1 - Compiler.exe "C:\example.ob07" dll -out "C:\example.dll" - Compiler.exe "C:\example.ob07" gui -out "C:\example.exe" -stk 4 - Compiler.exe "C:\example.ob07" console -out "C:\example.exe" -nochk pti - Compiler.kex "/tmp0/1/example.ob07" kos -out "/tmp0/1/example.kex" -stk 4 - Compiler.kex "/tmp0/1/example.ob07" obj -out "/tmp0/1/example.obj" -ver 2.7 - Compiler.exe "C:\example.ob07" elfexe -out "C:\example" -stk 1 -nochk a + Compiler.exe "C:\example.ob07" win32con -out "C:\example.exe" -stk 1 + Compiler.exe "C:\example.ob07" win32dll -out "C:\example.dll" + Compiler.exe "C:\example.ob07" win32gui -out "C:\example.exe" -stk 4 + Compiler.exe "C:\example.ob07" win32con -out "C:\example.exe" -nochk pti + Compiler.kex "/tmp0/1/example.ob07" kosexe -out "/tmp0/1/example.kex" -stk 4 + Compiler.kex "/tmp0/1/example.ob07" kosdll -out "/tmp0/1/mydll.obj" -ver 2.7 + Compiler.exe "C:\example.ob07" linux32exe -out "C:\example" -stk 1 -nochk a В случае успешной компиляции, компилятор передает код завершения 0, иначе 1. При работе компилятора в KolibriOS, код завершения не передается. diff --git a/doc/x86_64.txt b/doc/x86_64.txt index 3a5fd72..a1e6a7a 100644 --- a/doc/x86_64.txt +++ b/doc/x86_64.txt @@ -10,11 +10,12 @@ UTF-8 с BOM-сигнатурой. Параметры: 1) имя главного модуля 2) тип приложения - "console64" - Windows64 console - "gui64" - Windows64 GUI - "dll64" - Windows64 DLL - "elfexe64" - Linux ELF64-EXEC - "elfso64" - Linux ELF64-SO + "win64con" - Windows64 console + "win64gui" - Windows64 GUI + "win64dll" - Windows64 DLL + "linux64exe" - Linux ELF64-EXEC + "linux64so" - Linux ELF64-SO + 3) необязательные параметры-ключи -out имя результирующего файла; по умолчанию, совпадает с именем главного модуля, но с другим расширением @@ -41,9 +42,9 @@ UTF-8 с BOM-сигнатурой. Например: - Compiler.exe "C:\example.ob07" console64 -out "C:\example.exe" -stk 1 - Compiler.exe "C:\example.ob07" dll64 -out "C:\example.dll" -nochk pti - Compiler "source/Compiler.ob07" elfexe64 -out "source/Compiler" -nochk a + Compiler.exe "C:\example.ob07" win64con -out "C:\example.exe" -stk 1 + Compiler.exe "C:\example.ob07" win64dll -out "C:\example.dll" -nochk pti + Compiler "source/Compiler.ob07" linux64exe -out "source/Compiler" -nochk a В случае успешной компиляции, компилятор передает код завершения 0, иначе 1. diff --git a/source/Compiler.ob07 b/source/Compiler.ob07 index 921b4a3..9088b68 100644 --- a/source/Compiler.ob07 +++ b/source/Compiler.ob07 @@ -130,6 +130,22 @@ BEGIN END keys; +PROCEDURE OutTargetItem (target: INTEGER; text: ARRAY OF CHAR); +VAR + width: INTEGER; + +BEGIN + width := 15; + width := width - LENGTH(TARGETS.Targets[target].ComLinePar) - 4; + C.String(" '"); C.String(TARGETS.Targets[target].ComLinePar); C.String("'"); + WHILE width > 0 DO + C.String(20X); + DEC(width) + END; + C.StringLn(text) +END OutTargetItem; + + PROCEDURE main; VAR path: PARS.PATH; @@ -164,19 +180,32 @@ BEGIN IF inname = "" THEN C.Ln; C.StringLn("Usage: Compiler
[optional settings]"); C.Ln; + C.StringLn("target ="); IF UTILS.bit_depth = 64 THEN - C.StringLn('target = console | gui | dll | console64 | gui64 | dll64 | kos | obj | elfexe | elfso | elfexe64 | elfso64 | msp430 | stm32'); C.Ln; - ELSIF UTILS.bit_depth = 32 THEN - C.StringLn('target = console | gui | dll | kos | obj | elfexe | elfso | msp430 | stm32'); C.Ln; + OutTargetItem(TARGETS.Win64C, "Windows64 Console"); + OutTargetItem(TARGETS.Win64GUI, "Windows64 GUI"); + OutTargetItem(TARGETS.Win64DLL, "Windows64 DLL"); + OutTargetItem(TARGETS.Linux64, "Linux64 Exec"); + OutTargetItem(TARGETS.Linux64SO, "Linux64 SO") END; + OutTargetItem(TARGETS.Win32C, "Windows32 Console"); + OutTargetItem(TARGETS.Win32GUI, "Windows32 GUI"); + OutTargetItem(TARGETS.Win32DLL, "Windows32 DLL"); + OutTargetItem(TARGETS.Linux32, "Linux32 Exec"); + OutTargetItem(TARGETS.Linux32SO, "Linux32 SO"); + OutTargetItem(TARGETS.KolibriOS, "KolibriOS Exec"); + OutTargetItem(TARGETS.KolibriOSDLL, "KolibriOS DLL"); + OutTargetItem(TARGETS.MSP430, "MSP430 microcontrollers"); + OutTargetItem(TARGETS.STM32, "STM32 Cortex-M3 microcontrollers"); + C.Ln; C.StringLn("optional settings:"); C.Ln; - C.StringLn(" -out output"); C.Ln; - C.StringLn(" -stk set size of stack in megabytes"); C.Ln; - C.StringLn(' -nochk <"ptibcwra"> disable runtime checking (pointers, types, indexes,'); - C.StringLn(' BYTE, CHR, WCHR)'); C.Ln; - C.StringLn(" -ver set version of program ('obj' target)"); C.Ln; - C.StringLn(" -ram set size of RAM in bytes ('msp430', 'stm32' target)"); C.Ln; - C.StringLn(" -rom set size of ROM in bytes ('msp430', 'stm32' target)"); C.Ln; + C.StringLn(" -out output"); C.Ln; + C.StringLn(" -stk set size of stack in Mbytes (Windows, Linux, KolibriOS)"); C.Ln; + C.StringLn(" -nochk <'ptibcwra'> disable runtime checking (pointers, types, indexes,"); + C.StringLn(" BYTE, CHR, WCHR)"); C.Ln; + C.StringLn(" -ver set version of program (KolibriOS DLL)"); C.Ln; + C.StringLn(" -ram set size of RAM in bytes (MSP430) or Kbytes (STM32)"); C.Ln; + C.StringLn(" -rom set size of ROM in bytes (MSP430) or Kbytes (STM32)"); C.Ln; UTILS.Exit(0) END; diff --git a/source/TARGETS.ob07 b/source/TARGETS.ob07 index 9401c0a..83ea836 100644 --- a/source/TARGETS.ob07 +++ b/source/TARGETS.ob07 @@ -38,14 +38,14 @@ TYPE TARGET = RECORD target, CPU, BitDepth, OS, RealSize: INTEGER; - ComLinePar, LibDir, FileExt: STRING + ComLinePar*, LibDir, FileExt: STRING END; VAR - Targets: ARRAY 14 OF TARGET; + Targets*: ARRAY 14 OF TARGET; target*, CPU*, BitDepth*, OS*, RealSize*, WordSize*, AdrSize*: INTEGER; ComLinePar*, LibDir*, FileExt*: STRING; @@ -99,18 +99,18 @@ END Select; BEGIN - Enter( MSP430, cpuMSP430, 16, 0, osNONE, "msp430", "MSP430", ".hex"); - Enter( Win32C, cpuX86, 32, 8, osWIN32, "console", "Windows32", ".exe"); - Enter( Win32GUI, cpuX86, 32, 8, osWIN32, "gui", "Windows32", ".exe"); - Enter( Win32DLL, cpuX86, 32, 8, osWIN32, "dll", "Windows32", ".dll"); - Enter( KolibriOS, cpuX86, 32, 8, osKOS, "kos", "KolibriOS", ""); - Enter( KolibriOSDLL, cpuX86, 32, 8, osKOS, "obj", "KolibriOS", ".obj"); - Enter( Win64C, cpuAMD64, 64, 8, osWIN64, "console64", "Windows64", ".exe"); - Enter( Win64GUI, cpuAMD64, 64, 8, osWIN64, "gui64", "Windows64", ".exe"); - Enter( Win64DLL, cpuAMD64, 64, 8, osWIN64, "dll64", "Windows64", ".dll"); - Enter( Linux32, cpuX86, 32, 8, osLINUX32, "elfexe", "Linux32", ""); - Enter( Linux32SO, cpuX86, 32, 8, osLINUX32, "elfso", "Linux32", ".so"); - Enter( Linux64, cpuAMD64, 64, 8, osLINUX64, "elfexe64", "Linux64", ""); - Enter( Linux64SO, cpuAMD64, 64, 8, osLINUX64, "elfso64", "Linux64", ".so"); - Enter( STM32, cpuTHUMB, 32, 4, osNONE, "stm32", "STM32", ".hex"); + Enter( MSP430, cpuMSP430, 16, 0, osNONE, "msp430", "MSP430", ".hex"); + Enter( Win32C, cpuX86, 32, 8, osWIN32, "win32con", "Windows32", ".exe"); + Enter( Win32GUI, cpuX86, 32, 8, osWIN32, "win32gui", "Windows32", ".exe"); + Enter( Win32DLL, cpuX86, 32, 8, osWIN32, "win32dll", "Windows32", ".dll"); + Enter( KolibriOS, cpuX86, 32, 8, osKOS, "kosexe", "KolibriOS", ""); + Enter( KolibriOSDLL, cpuX86, 32, 8, osKOS, "kosdll", "KolibriOS", ".obj"); + Enter( Win64C, cpuAMD64, 64, 8, osWIN64, "win64con", "Windows64", ".exe"); + Enter( Win64GUI, cpuAMD64, 64, 8, osWIN64, "win64gui", "Windows64", ".exe"); + Enter( Win64DLL, cpuAMD64, 64, 8, osWIN64, "win64dll", "Windows64", ".dll"); + Enter( Linux32, cpuX86, 32, 8, osLINUX32, "linux32exe", "Linux32", ""); + Enter( Linux32SO, cpuX86, 32, 8, osLINUX32, "linux32so", "Linux32", ".so"); + Enter( Linux64, cpuAMD64, 64, 8, osLINUX64, "linux64exe", "Linux64", ""); + Enter( Linux64SO, cpuAMD64, 64, 8, osLINUX64, "linux64so", "Linux64", ".so"); + Enter( STM32, cpuTHUMB, 32, 4, osNONE, "stm32", "STM32", ".hex"); END TARGETS. \ No newline at end of file diff --git a/source/UTILS.ob07 b/source/UTILS.ob07 index e6f5275..6b19ce4 100644 --- a/source/UTILS.ob07 +++ b/source/UTILS.ob07 @@ -24,7 +24,7 @@ CONST max32* = 2147483647; vMajor* = 1; - vMinor* = 22; + vMinor* = 23; FILE_EXT* = ".ob07"; RTL_NAME* = "RTL";