From: elio AT pvax DOT Ico DOT Olivetti DOT Com >From: elio AT pvax (Elio Tondo) Subject: Re: your mail about assembler syntax To: sis2070 AT sisvax DOT sis DOT port DOT ac DOT uk (YA) Date: Wed, 8 Jun 1994 11:11:52 +0200 (MET DST) Cc: elio AT pvax DOT Ico DOT Olivetti DOT Com (Elio Tondo), djgpp AT sun DOT soe DOT clarkson DOT edu > My desire to use familier i386 syntax to write assembler for my programs > has pushed me into decideing to write a converter between intel 386 and > the form used by gas. > > Has anyone got any advice for me before I start on this, eg how do you think > I should do it and can you forsee any pitfalls. > > At the moment I am thinking about producing a hybrid assember format with > standerd 386 instructions and gas style comments and structure (.data .text > etc...) and write a source to source file converter that can be included in > a make file as a pre-processor kind of stage. > > any ideas anyone? You may want to look at a different approach, included in the XFree86 sources; they use an assembly metasyntax and the standard C preprocessor to generate different assembly sources. Here is a short example: Source: #include "assyntax.h" GLOBL GLNAME(ET4000SetReadWrite) GLNAME(ET4000SetReadWrite): MOV_B (AL,AH) SHL_B (CONST(4),AH) OR_B (AH,AL) MOV_B (AL,CONTENT(Segment)) MOV_L (CONST(0x3CD),EDX) OUT_B RET Output for GAS: .globl _ET4000SetReadWrite _ET4000SetReadWrite: movb %al, %ah shlb $4, %ah orb %ah, %al movb %al, Segment movl $0x3CD, %edx outb %al, %dx ret Output for the ACK assembler, with a more "traditional" syntax: .extern _ET4000SetReadWrite _ET4000SetReadWrite: movb ah, al shlb ah, 4 orb al, ah movb (Segment), al mov dx, 0x3CD outb dx ret As you can see, quite different source formats can be generated. By modifying the include file assyntax.h, other formats can be set up. The file assyntax.h follows, gzipped & uuencoded. Hope that helps... Elio begin 644 assyntax.h.gz M'XL(".\DJ2T``V%ST'*TU6[71E``,\]N!>/ M`Q!TS7?A*O:#E5 AT N>[;]ZV3>>UK>+I?OOH.Z,`Y:1O6[T^-WXE@,DNUK&JZ? M,W'V\\_GXC$-?P_$0QQ^"5(99D&8=<7\.1"3('L.TLB)?0E6:'@?I)M0RC") M19:(G0RZP AT DOT NKM@D?KB"'+#"#V66ANXN"T3V'$HADU6V=])`/0PSY!)^XNTV M09PY&7*MDA0>OHKM+MTF4@/W8?:<[#*Q"@(!).!(X+Z*=>K$6>!WQ39-OH1^ MX"-9]NQDD("=FWP)E$*\'$82-6&,G23[%G]0JJZ MK8*!`]LJ]!JMW&VW29J%\;H66[=J"#V,G4T AT DI7Z7>]V9!9N@!T+/14CF>/# MTRR4P"V AT E[8[-PJ],'M%?S(GC+$>AJ+L<_0OYR_[/>]*I)/;P`M7H=<5^S3, MLB"&C AT R1MXSN1*BQ;W!NXWR&?HL3Y$F#;1K((DB)/;_3$SI]1P AT 5E>Y-!F, M'X:CR8VR'-W=CT?6D#),K\6=-1O<0K'7'XU'\U]%;S(4UZ/YQ++M+A"(R129 MK$=K,A?V+?(<<+-OB?&HUQ];XGHZ`YI?A7UO#4:],=(,1S-K,!?3F5JVTXEM M_?(`C/!4#'MWO1OT11L5Q<5M;VY/H=T9A&@_C.<8QO5L>B?&4UMY_F#K*(>] M>0^M[V=3+CU6DB?\R7XJDCY2O,SI>3 MY^X7<7YR AT 4IW>?KAXO3#E?AP]>GRIT]G%\)W]C"CK9>M^#YO0"VYTC2?7W80 M!5X^N]437/II`BO'08U+U!-H'RV#C1L%*2QB7)BXCE7_)+"._4(FU"K8)"B( M!5ZJYZK.2Z+=!E943CNXG8X&%I)L'"]-8'5.$B6L("AIL(9E#ZVAJDBQV19M^)]^ M'LCW>3],^N(,'+"32L,4D501>5J0:%"X8%\K\?,27VEYAA+2$B+=Q:B>T)49 M]&^`'>`'[]\+,0#_P2;8;+,D/:E:/X?6+Z&?"Q4#:Y"]G9=K$/0>"F AT 8>]$. MI$0I62AUBZB07K)+G76@&P>'0A`CSP/5 AT 3&-<+#0&^6D9+"I.N)3_NS(Z8C>_`<0A%?YF%X"XNBL\ZD% MO>[L(J7/1VY'W$P>1*^<26M'*@2."ZR6Y4W/1BT$$&[MUAT(AUH_1QYP;W`Z M^,X&=OC--D3SSV%6FO<&_V(VA7:NDBA*]CAA8:9 AT YB7Q%^@4U:MJ+KD![!1J M5X*.4!T&N[T:TR\.[!\[O:<[F2 DOT RUVV AT XFVUEO9,_$/(8(V;8359E?(EN+FU M1M"]ZR#-X;\`^H^=X^^3U&_]0UQ="E>?%N#9&)Y%2;R&^HMS4K_`%IZAO^'! MV15YT(<'[FL60+WX6-9?1XF#V_2/VP2&-F_W":";CQ_2P(D`_?$#81G"(S^! M/3YB,G@;W]YV.^///$BN.[.GXZ>.5 AT I9UC018#8UC=4>4IU/8$0:] M^=%+5[QV6B_BN^_$*S AT 5R>``XO3X^/25NHTG7SZK<9.`Q0,',+$/U"$GUQV4 MJ(OS'V&<3,$I]I99D/>2H:MHB:ON![UVB;Z!8>%H;]QRHJITVW*>J])3RWDI M2Q8O]L)#$69I$,-9ZB-D8#F8?6E[Z AT 93/H'Q& MRN=0/B?E"RA?(.\P<'?K9M8AL/J$=0BL/F$=`JM/6(?`Z AT -K5;Z$\B4I_P3E MGTCY"LI7I/PW*/\-O>)R)^S,\3Y3U^QY2V;OJGEJ+_O6S6C2.I%XWCG)@I?L M[R(OI,FF_(U*7Q9<*^=%BJ!6-I>6-M>6MB$N[8#+2]O0%_"-*4S; MD)AVP$6F;:@,\#.=:1M"`_9,:MI<:]I<;-I<;=I<;MI<;]K?*#AM4W':IN2T M3'+DR_+ M#`PG;SA9V_"ZIE6C8D]%4:/CAN^O>.#2[C=0XXZ<-6 MT*Q4*++P*#_NH-"PH%53Y2-V"%(JQ$]U]J_VHSJ[E16/L\L./^,Q#G)F'$]Z M=Q:^NNA_#C^BU9[G1[9EU^F41[5WH.3?^.\4L2W\E_\D;]_YRX;PGI/0"V2K M!O[F-KA*5^_M?@@OO1D$IZ0;IB"]Q:B?K*/$C;JBS&%C#-*X4TV" M\>AF,K>>YI>EB1.%ZUA<`EC_ZLUNSH_.NQ]>?O[0*2LO&RC.#8IS3G%F4)QW MU"&Y="!<3:;WZBT9+SCP AT M*1Y'%7N+L,WGSA33[,+Q:WCH?6._G!Y[ M3OP?R`OLQZ=&]^`=US?T\!L=C`S?T,&\?\MM832VCF2GFA;0.]!_`#5^=(@L MSD:3&S0J;/!F%\Y`"':D%WZEORJ[X7(\G=Q4+>&Y"7!YAF)R2<&+Z6Q8@;\X MT2X`F'J5SN'G%-[_=6Y5<'RQ!E2>*:$B`=SW!@3K)9L-,N.<*?(*/)C>W=6P M)".TULT2QZ($8[-YZUUZ,.4F.)]*$SR>=D6154=6;M*'G;\*56)OZ[0\[W8. M[$-5?ZE..(H[K1/Q#W$B_BIBX\660O1ZBDNUQ-4)^T(@U:W_';RCYFHD1IL- MG&CPUA%KS;,O:'#I>*["WX,*=P4K.+3W)_8^<^NU,4#7C>@:.Z?0^]9/#LHA$)Z(!OJRQ'S MJS\:'KG=L.N7COE8!J=(WCD*#_MWI!T\%C:T$'1,3\WF;-V>A!8%;;$KBS:+ M7]#JL=3M%HR^;L37G?*)D..'EN'(/O*5?15+25?^"/'[E*95+,"&D9AD_9&* MOYPBNC/*K.R2RK4FEF$?/')IW^:QZ50Q/!93M.A91O+8FQ7?9XY@,I>==@R% MKM"I>J"X'B1Y&2S7`;[:F''R8S)UT'O(W!=&C=SV='8%FZ>@P%X%0V3+/]2IMZ*T^"/7:BV#3>%WXD_!?Q:6G>= M_%*Q>+5YNF=2\I_.?^>+$'Y5XF%-IG,*^_`>EM'_J/\1T-W#&(_`U>KZKV,7 MUE6>$.!P]&@`3Q&3)YWBX\PBT#?2ZK"1?U?8IG#&"C:H*KAG0*?BZ0,_1:1K M]256?0#0A\:3HA=T$>+R?8%G=/4%Q AT 6Q`V,8#!B)TEQL0KEQ,N\9SC+CG?T6H'/M/JB?-'`[-#Q5G5/[//KAEZO'$/' M0=G.$W(0Z AT T)Q,>G.J&0.P+9X%.=4(A-(!*?ZH1`AH/EV)!CWXM$'K>29*.L MKHJP5E?B"'*^18UO;_"QLKJS>HNO7^-S#;X#99-J6`_5-T+U&T/U#_'50O6- M4/W&4`_RU4+UC=`.E0VJ23W4V`@U;@PU;G9M4@\U-D*-&T,]S&>&&ANA'2P; M5+-[0^_2+0_T8)D3]:*^&N7<4[DZQ&=Z*5=[@Z]AC`_RS>K^I89_::-_Z2&^FG^IX5_:Z%\S MW[SF7L:]RYJ/H,CA[?W`YT2V'A0H2(/'N<)A0P)!'GRA$)&!!+B4YU0R-PFF$SB\R(E ML#OBSP9=R1,*N3P$VM0103 MEUI%'AY4-W6AXES4.?@"`.G#C![&9$&4)XT@<#9^PY3AO8?C4 MM7I/53BQ@.?4>D&L]Z7UOK36QHMFXSXQ=DMCMS(>YQ7*KOJ#K?*OILI;GM'D M3$TW]?6,1./08!PS%H<3+$R"?4%0C@(/Q[#OF_9N85_J?!F1^K)';[.+".A@ M.-_F?*MPG AT Z%\TU^MPJ_Z4`X;[BLKM&LEWM+U;?! MB+OIY7[2G.)M-K%QJ]1IX9/D8#J/<9O4:>&+`:;S%K?(*J4X=K6'W^^5GU7& ML!<,J;\J7*B DOT SRXTOJAC9E-JEBA AT GA+8S*KT.DP#T.HJY;#A01S9W?_9HX'] M[F!`54IQ%@<&&E-E!-MG4#6F54IQG-/59"0CV`&#>@I2I AT 3'*355F1+<#<.M M%:),*8X3KC47R0B6O3G\KE9-E5(Y\F%A.\7S`8CU6)*-8 AT SIGK#**Y0,7ZS$C&<,:Q/FPL9SB^0!J MT:89PQK<^?"QG.*G')YH5)51[#W';C6HRBC6YEBI055&L;]Q[%<-JC*"Y>YJ M-\N4X+BKVL4RI3C>75O=2R2C6-[X5K=+,H+EX>NPRY3@>.@ZY#(EN#L>T$;' M0C*&-5[]?R_>'_,W?Z,,1>.]?]R[O2X;BYSG%1B5J3XFE7^/M)Q9O?'R;CJT M^-\I+1\_7NEJ0COCQ]'(*=\&!!X^#Y;QPT^G=C886SWST!P%#CLBFV6]-4-M MT^D6^18UOKW!UW!'?_'T\&_*G#B?09(F1+:Z9"> M2Z/$QR-IGN73'PJ&P8(9[+5!>3IM,.@S`U<;%!G%3IER14FB-(OG'&^10S@^ M#PH AT _<%-?C-,OA9(^H.;3,QFXI*>_S+,S*;BL AT G^Z_\@D[8I:N9T;"[FT]'0 MR#G[*X$H2Y63)*L:OIL^+FU#HC?)%R9X4&XL\K6`3.,:4618-BCS&WR+?^M8 M AT S*_P=>O\;D&WX%RC8JN-X#A0LNS,BAI&"R8P5X;[(G7ID&?&;C:H,@X]FG9 MK_>]=,W>;ZAY DOT 10 AT 4-:[7[KF`#34O$&Y:/!R7_.I7G.(\K?&P+_6PFRH>8NR M'OC76I AT --6]0- AT 3^M19F0TTSI;XYK,AV^I-0D>=3<,?>$_*K06JTSXW(!4F# M49\;N;D1R2O\Q+IAGL7!6GE4Y-HS*)E&"VZTSXV(9PU&?6[DYD8D)_CI?;F< MXF0+@#RAD#EW/LFT\WF>.Y]DG'?.G4^R?6Y$G:\;];F1FQN1O,)/]:?4:OHD M_,-ITO0=-6F\99_JKZB4:L^I&B3U(%7?H'(Y57/18'F8$RU-=EEQ6ZQ^*@.K M]]0=5K>4^'\^0:]\D6%!&?850QY,2;`X1-"G!&Y%D/O<&W>K&L.6W[#J")Q: M``[SWS$8%IQA7S)4`3C,?Y DOT AT SPGHC(\TX>LS!40XCZ[7!:,&-]KD16:]UHQ[I M)7CJ1,K$B4 AT SIL&"&>RUP9XTP0VN>0LKW<**MK`R#%@+*]W"BK9`#1[L6Z-S M=_)9AJ[')\\K!FM&" M&^USHSUUSC"Z-EI:Y2VM6$LKTXBWM,I;6K&6B-%L4/LPF'K\,Z!9UHU#;9/" M(M^BQK`3;O[&X^2IGJR66//Y737O&;=V_.LOUSY.Y._GN:]XF^D_!7D+Y%F5ZHG MFW5-5>WKR6;=V_.L/U75FJK:UY.O^%-5K:EJJ32Y&HU450M<-G/:5;5(^N.J M%KAFYK2K:MH?5[4H"O*72).K\5!.>LUF;6>[SKA*;>3S8*T@!\&Y$X1K>(]@ M!(*B$W AT CN-,5W%DUNV-[3Q4M\N5&IOW[SA,E`,F(LB@<45CD4Q:%]PP`)&/* M8O.;+*;$]XZ%!?YGXK\XGK#(IRJ\>,<`0#*G+$I'%!;YE$7I/0,`27<;/4K> M?2,#(,F4-;O`!82R$:E\0P`@"><4FIL0RL:DVOP^)\XH>)<`)9])XAL>`$DX MF]#VA%`V)Y5O?P`DX9Q"%R"$LD=2?7BJ!"A9D*3R3`E0DI'$>*9)]KGO)/G7 M,R4`R2/]>'P-A`7^@OB^^,(BGR)<^;`"0`F%M_)E`0"2C$KE(^0M!^H[\7UX MA!5\NN=KW+U>M()/]WR-N]>+5O#O]=3L0%.S0^_4[-`_E;K74[,#3JK[1/7Z>J=:=2IT)G1">,>F4`K^/3HA'&/3*`5 M_%5\V<<<-PW!'21E(BA;^]?N("DS07FU?^T.DO((BXGC1[N8Z(QKNR9!@AP$ MYTX0%Q-:,`)!T0F\D5RX]V^ZF_[2".XWO>([T8KOU+OB._7_>+[I%=^)5GRG MWA5?VA__KD^TPDNFT=5JFJG7.(\[@V]NJA-=;>WII,]<^SRSSYX:7_4YTCX+ M]IDZ@>Z>IDOH#K]V==L1T`(_)_[9\82-_'PXBYM*Y[7]0&X\1MKS^/XS1_^R M.;Q`L-6)+OKV=%_56I^Y]GEFGSW1O^ISI'T6[#-U AT MS-AS$ZEW+=Q"4>!4WO MEEYH=Y33+C3]NYO/>K?T0KNCG'9A2?OCH-#N:#K=N?I#?G;PTZ+][.`L\:W0 MN\'SE]L0MOW@\G9[\TF:6+*[X2B^RK=?%Z9AA*.D328_Y,>+]NWW&]:6)\!6 M]NQ6DY'&>*H$J!E AT H/;A&PY=8-)IC+EUM="N*M:F3I"WF?NF173V&FJN$.MR MU AT 6RD4C(1O.)'$7V1=EIP$I^MI)KVGUANC4@`R$9WXN6WQQLFX>CI,VGSX)7 M[B[=V/37I_T[I&Q"Z!Y0Z+C!$GO\^`7JN_EX:TL-%OG8'QM"Z9D!;)4F(XWQ M5`E0LR!)Y9D2D$25K0IE$D AT 5;Z'*5X5R(2+=`B)758X8+-!ELW^T#>Z/@C:9 MCILN%9G;W:;I0`V-@)3,GK#>_H52`%AIJ\E(8SQ5`M3P&&%?.94_XV2:?M6- M*QXC&FK%VM0)'B/XW=I]>*=6(];EK`MD(Q$6?JD"7H=`"Z1BOE1!KT.P$9&N M)_`U!R=U0L=^V1/\6 AT 4[?:8G_DO=`'6,.T&E58U01[X!**1WRZG<5MOOZUV[ MF\9`YF;'(BQH&+<48EW.ND`V$I%LH?.K8C8$E5;E646^`2BE\\F/KR`LMZ7+ MJ-S^%(!$WUW0UK!$`BINK-*3]+MU="2-F$O!*B MT'&#)?8L6U']S=%5&P%I"?DJG]W;+^6;(-XXG+/#% MC+O6QH5:L39W@:R,_\;Y_#;50 MB'4YZP+92"3'//&L^+Y]3CP>!6TQ7`T?(K%J?KOO#0FLI"^G7P2[WKU94C1$ MO47NK6,%*^E8#I=]-(*Z?)C,'L1ON'[?-HOQAD=`2K+5HWQL=%^;XT="C=)64CL(.@$$BILO%P+L8<^PE?.]:`E?29")QYM0$+ M1Z3!RJ/Y:[?L("`E7YL,!?X&6H MN4X='3."B])0H2I?F AT BX7`LN6.5+!``T.(B:8S=VAEZ"Z2X)O80VL4(]4&E5(]21;P`*Z2H3(_#1V)$W'`7MF]N^\\R37Y02(,F"-57@`F*9 MF%J<_#87`2'YGW=8[I[%5Y[W%_N%YWB4M/$][%1>-NWK%6 AT EO_WWLH)_K-<; M&T("0O+W?"!V3O\I!W;#5!BB+FZ17-TZG@!_RO^U AT _\XVRZ3_ AT DOT M*HDT:GL` !`$(" ` end