as.html 2.3 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111271122711327114271152711627117271182711927120271212712227123271242712527126271272712827129271302713127132271332713427135271362713727138271392714027141271422714327144271452714627147271482714927150271512715227153271542715527156271572715827159271602716127162271632716427165271662716727168271692717027171271722717327174271752717627177271782717927180271812718227183271842718527186271872718827189271902719127192271932719427195271962719727198271992720027201272022720327204272052720627207272082720927210272112721227213272142721527216272172721827219272202722127222272232722427225272262722727228272292723027231272322723327234272352723627237272382723927240272412724227243272442724527246272472724827249272502725127252272532725427255272562725727258272592726027261272622726327264272652726627267272682726927270272712727227273272742727527276272772727827279272802728127282272832728427285272862728727288272892729027291272922729327294272952729627297272982729927300273012730227303273042730527306273072730827309273102731127312273132731427315273162731727318273192732027321273222732327324273252732627327273282732927330273312733227333273342733527336273372733827339273402734127342273432734427345273462734727348273492735027351273522735327354273552735627357273582735927360273612736227363273642736527366273672736827369273702737127372273732737427375273762737727378273792738027381273822738327384273852738627387273882738927390273912739227393273942739527396273972739827399274002740127402274032740427405274062740727408274092741027411274122741327414274152741627417274182741927420274212742227423274242742527426274272742827429274302743127432274332743427435274362743727438274392744027441274422744327444274452744627447274482744927450274512745227453274542745527456274572745827459274602746127462274632746427465274662746727468274692747027471274722747327474274752747627477274782747927480274812748227483274842748527486274872748827489274902749127492274932749427495274962749727498274992750027501275022750327504275052750627507275082750927510275112751227513275142751527516275172751827519275202752127522275232752427525275262752727528275292753027531275322753327534275352753627537275382753927540275412754227543275442754527546275472754827549275502755127552275532755427555275562755727558275592756027561275622756327564275652756627567275682756927570275712757227573275742757527576275772757827579275802758127582275832758427585275862758727588275892759027591275922759327594275952759627597275982759927600276012760227603276042760527606276072760827609276102761127612276132761427615276162761727618276192762027621276222762327624276252762627627276282762927630276312763227633276342763527636276372763827639276402764127642276432764427645276462764727648276492765027651276522765327654276552765627657276582765927660276612766227663276642766527666276672766827669276702767127672276732767427675276762767727678276792768027681276822768327684276852768627687276882768927690276912769227693276942769527696276972769827699277002770127702277032770427705277062770727708277092771027711277122771327714277152771627717277182771927720277212772227723277242772527726277272772827729277302773127732277332773427735277362773727738277392774027741277422774327744277452774627747277482774927750277512775227753277542775527756277572775827759277602776127762277632776427765277662776727768277692777027771277722777327774277752777627777277782777927780277812778227783277842778527786277872778827789277902779127792277932779427795277962779727798277992780027801278022780327804278052780627807278082780927810278112781227813278142781527816278172781827819278202782127822278232782427825278262782727828278292783027831278322783327834278352783627837278382783927840278412784227843278442784527846278472784827849278502785127852278532785427855278562785727858278592786027861278622786327864278652786627867278682786927870278712787227873278742787527876278772787827879278802788127882278832788427885278862788727888278892789027891278922789327894278952789627897278982789927900279012790227903279042790527906279072790827909279102791127912279132791427915279162791727918279192792027921279222792327924279252792627927279282792927930279312793227933279342793527936279372793827939279402794127942279432794427945279462794727948279492795027951279522795327954279552795627957279582795927960279612796227963279642796527966279672796827969279702797127972279732797427975279762797727978279792798027981279822798327984279852798627987279882798927990279912799227993279942799527996279972799827999280002800128002280032800428005280062800728008280092801028011280122801328014280152801628017280182801928020280212802228023280242802528026280272802828029280302803128032280332803428035280362803728038280392804028041280422804328044280452804628047280482804928050280512805228053280542805528056280572805828059280602806128062280632806428065280662806728068280692807028071280722807328074280752807628077280782807928080280812808228083280842808528086280872808828089280902809128092280932809428095280962809728098280992810028101281022810328104281052810628107281082810928110281112811228113281142811528116281172811828119281202812128122281232812428125281262812728128281292813028131281322813328134281352813628137281382813928140281412814228143281442814528146281472814828149281502815128152281532815428155281562815728158281592816028161281622816328164281652816628167281682816928170281712817228173281742817528176281772817828179281802818128182281832818428185281862818728188281892819028191281922819328194281952819628197281982819928200282012820228203282042820528206282072820828209282102821128212282132821428215282162821728218282192822028221282222822328224282252822628227282282822928230282312823228233282342823528236282372823828239282402824128242282432824428245282462824728248282492825028251282522825328254282552825628257282582825928260282612826228263282642826528266282672826828269282702827128272282732827428275282762827728278282792828028281282822828328284282852828628287282882828928290282912829228293282942829528296282972829828299283002830128302283032830428305283062830728308283092831028311283122831328314283152831628317283182831928320283212832228323283242832528326283272832828329283302833128332283332833428335283362833728338283392834028341283422834328344283452834628347283482834928350283512835228353283542835528356283572835828359283602836128362283632836428365283662836728368283692837028371283722837328374283752837628377283782837928380283812838228383283842838528386283872838828389283902839128392283932839428395283962839728398283992840028401284022840328404284052840628407284082840928410284112841228413284142841528416284172841828419284202842128422284232842428425284262842728428284292843028431284322843328434284352843628437284382843928440284412844228443284442844528446284472844828449284502845128452284532845428455284562845728458284592846028461284622846328464284652846628467284682846928470284712847228473284742847528476284772847828479284802848128482284832848428485284862848728488284892849028491284922849328494284952849628497284982849928500285012850228503285042850528506285072850828509285102851128512285132851428515285162851728518285192852028521285222852328524285252852628527285282852928530285312853228533285342853528536285372853828539285402854128542285432854428545285462854728548285492855028551285522855328554285552855628557285582855928560285612856228563285642856528566285672856828569285702857128572285732857428575285762857728578285792858028581285822858328584285852858628587285882858928590285912859228593285942859528596285972859828599286002860128602286032860428605286062860728608286092861028611286122861328614286152861628617286182861928620286212862228623286242862528626286272862828629286302863128632286332863428635286362863728638286392864028641286422864328644286452864628647286482864928650286512865228653286542865528656286572865828659286602866128662286632866428665286662866728668286692867028671286722867328674286752867628677286782867928680286812868228683286842868528686286872868828689286902869128692286932869428695286962869728698286992870028701287022870328704287052870628707287082870928710287112871228713287142871528716287172871828719287202872128722287232872428725287262872728728287292873028731287322873328734287352873628737287382873928740287412874228743287442874528746287472874828749287502875128752287532875428755287562875728758287592876028761287622876328764287652876628767287682876928770287712877228773287742877528776287772877828779287802878128782287832878428785287862878728788287892879028791287922879328794287952879628797287982879928800288012880228803288042880528806288072880828809288102881128812288132881428815288162881728818288192882028821288222882328824288252882628827288282882928830288312883228833288342883528836288372883828839288402884128842288432884428845288462884728848288492885028851288522885328854288552885628857288582885928860288612886228863288642886528866288672886828869288702887128872288732887428875288762887728878288792888028881288822888328884288852888628887288882888928890288912889228893288942889528896288972889828899289002890128902289032890428905289062890728908289092891028911289122891328914289152891628917289182891928920289212892228923289242892528926289272892828929289302893128932289332893428935289362893728938289392894028941289422894328944289452894628947289482894928950289512895228953289542895528956289572895828959289602896128962289632896428965289662896728968289692897028971289722897328974289752897628977289782897928980289812898228983289842898528986289872898828989289902899128992289932899428995289962899728998289992900029001290022900329004290052900629007290082900929010290112901229013290142901529016290172901829019290202902129022290232902429025290262902729028290292903029031290322903329034290352903629037290382903929040290412904229043290442904529046290472904829049290502905129052290532905429055290562905729058290592906029061290622906329064290652906629067290682906929070290712907229073290742907529076290772907829079290802908129082290832908429085290862908729088290892909029091290922909329094290952909629097290982909929100291012910229103291042910529106291072910829109291102911129112291132911429115291162911729118291192912029121291222912329124291252912629127291282912929130291312913229133291342913529136291372913829139291402914129142291432914429145291462914729148291492915029151291522915329154291552915629157291582915929160291612916229163291642916529166291672916829169291702917129172291732917429175291762917729178291792918029181291822918329184291852918629187291882918929190291912919229193291942919529196291972919829199292002920129202292032920429205292062920729208292092921029211292122921329214292152921629217292182921929220292212922229223292242922529226292272922829229292302923129232292332923429235292362923729238292392924029241292422924329244292452924629247292482924929250292512925229253292542925529256292572925829259292602926129262292632926429265292662926729268292692927029271292722927329274292752927629277292782927929280292812928229283292842928529286292872928829289292902929129292292932929429295292962929729298292992930029301293022930329304293052930629307293082930929310293112931229313293142931529316293172931829319293202932129322293232932429325293262932729328293292933029331293322933329334293352933629337293382933929340293412934229343293442934529346293472934829349293502935129352293532935429355293562935729358293592936029361293622936329364293652936629367293682936929370293712937229373293742937529376293772937829379293802938129382293832938429385293862938729388293892939029391293922939329394293952939629397293982939929400294012940229403294042940529406294072940829409294102941129412294132941429415294162941729418294192942029421294222942329424294252942629427294282942929430294312943229433294342943529436294372943829439294402944129442294432944429445294462944729448294492945029451294522945329454294552945629457294582945929460294612946229463294642946529466294672946829469294702947129472294732947429475294762947729478294792948029481294822948329484294852948629487294882948929490294912949229493294942949529496294972949829499295002950129502295032950429505295062950729508295092951029511295122951329514295152951629517295182951929520295212952229523295242952529526295272952829529295302953129532295332953429535295362953729538295392954029541295422954329544295452954629547295482954929550295512955229553295542955529556295572955829559295602956129562295632956429565295662956729568295692957029571295722957329574295752957629577295782957929580295812958229583295842958529586295872958829589295902959129592295932959429595295962959729598295992960029601296022960329604296052960629607296082960929610296112961229613296142961529616296172961829619296202962129622296232962429625296262962729628296292963029631296322963329634296352963629637296382963929640296412964229643296442964529646296472964829649296502965129652296532965429655296562965729658296592966029661296622966329664296652966629667296682966929670296712967229673296742967529676296772967829679296802968129682296832968429685296862968729688296892969029691296922969329694296952969629697296982969929700297012970229703297042970529706297072970829709297102971129712297132971429715297162971729718297192972029721297222972329724297252972629727297282972929730297312973229733297342973529736297372973829739297402974129742297432974429745297462974729748297492975029751297522975329754297552975629757297582975929760297612976229763297642976529766297672976829769297702977129772297732977429775297762977729778297792978029781297822978329784297852978629787297882978929790297912979229793297942979529796297972979829799298002980129802298032980429805298062980729808298092981029811298122981329814298152981629817298182981929820298212982229823298242982529826298272982829829298302983129832298332983429835298362983729838298392984029841298422984329844298452984629847298482984929850298512985229853298542985529856298572985829859298602986129862298632986429865298662986729868298692987029871298722987329874298752987629877298782987929880298812988229883298842988529886298872988829889298902989129892298932989429895298962989729898298992990029901299022990329904299052990629907299082990929910299112991229913299142991529916299172991829919299202992129922299232992429925299262992729928299292993029931299322993329934299352993629937299382993929940299412994229943299442994529946299472994829949299502995129952299532995429955299562995729958299592996029961299622996329964299652996629967299682996929970299712997229973299742997529976299772997829979299802998129982299832998429985299862998729988299892999029991299922999329994299952999629997299982999930000300013000230003300043000530006300073000830009300103001130012300133001430015300163001730018300193002030021300223002330024300253002630027300283002930030300313003230033300343003530036300373003830039300403004130042300433004430045300463004730048300493005030051300523005330054300553005630057300583005930060300613006230063300643006530066300673006830069300703007130072300733007430075300763007730078300793008030081300823008330084300853008630087300883008930090300913009230093300943009530096300973009830099301003010130102301033010430105301063010730108301093011030111301123011330114301153011630117301183011930120301213012230123301243012530126301273012830129301303013130132301333013430135301363013730138301393014030141301423014330144301453014630147301483014930150301513015230153301543015530156301573015830159301603016130162301633016430165301663016730168301693017030171301723017330174301753017630177301783017930180301813018230183301843018530186301873018830189301903019130192301933019430195301963019730198301993020030201302023020330204302053020630207302083020930210302113021230213302143021530216302173021830219302203022130222302233022430225302263022730228302293023030231302323023330234302353023630237302383023930240302413024230243302443024530246302473024830249302503025130252302533025430255302563025730258302593026030261302623026330264302653026630267302683026930270302713027230273302743027530276302773027830279302803028130282302833028430285302863028730288302893029030291302923029330294302953029630297302983029930300303013030230303303043030530306303073030830309303103031130312303133031430315303163031730318303193032030321303223032330324303253032630327303283032930330303313033230333303343033530336303373033830339303403034130342303433034430345303463034730348303493035030351303523035330354303553035630357303583035930360303613036230363303643036530366303673036830369303703037130372303733037430375303763037730378303793038030381303823038330384303853038630387303883038930390303913039230393303943039530396303973039830399304003040130402304033040430405304063040730408304093041030411304123041330414304153041630417304183041930420304213042230423304243042530426304273042830429304303043130432304333043430435304363043730438304393044030441304423044330444304453044630447304483044930450304513045230453304543045530456304573045830459304603046130462304633046430465304663046730468304693047030471304723047330474304753047630477304783047930480304813048230483304843048530486304873048830489304903049130492304933049430495304963049730498304993050030501305023050330504305053050630507305083050930510305113051230513305143051530516305173051830519305203052130522305233052430525305263052730528305293053030531305323053330534305353053630537305383053930540305413054230543305443054530546305473054830549305503055130552305533055430555305563055730558305593056030561305623056330564305653056630567305683056930570305713057230573305743057530576305773057830579305803058130582305833058430585305863058730588305893059030591305923059330594305953059630597305983059930600306013060230603306043060530606306073060830609306103061130612306133061430615306163061730618306193062030621306223062330624306253062630627306283062930630306313063230633306343063530636306373063830639306403064130642306433064430645306463064730648306493065030651306523065330654306553065630657306583065930660306613066230663306643066530666306673066830669306703067130672306733067430675306763067730678306793068030681306823068330684306853068630687306883068930690306913069230693306943069530696306973069830699307003070130702307033070430705307063070730708307093071030711307123071330714307153071630717307183071930720307213072230723307243072530726307273072830729307303073130732307333073430735307363073730738307393074030741307423074330744307453074630747307483074930750307513075230753307543075530756307573075830759307603076130762307633076430765307663076730768307693077030771307723077330774307753077630777307783077930780307813078230783307843078530786307873078830789307903079130792307933079430795307963079730798307993080030801308023080330804308053080630807308083080930810308113081230813308143081530816308173081830819308203082130822308233082430825308263082730828308293083030831308323083330834308353083630837308383083930840308413084230843308443084530846308473084830849308503085130852308533085430855308563085730858308593086030861308623086330864308653086630867308683086930870308713087230873308743087530876308773087830879308803088130882308833088430885308863088730888308893089030891308923089330894308953089630897308983089930900309013090230903309043090530906309073090830909309103091130912309133091430915309163091730918309193092030921309223092330924309253092630927309283092930930309313093230933309343093530936309373093830939309403094130942309433094430945309463094730948309493095030951309523095330954309553095630957309583095930960309613096230963309643096530966309673096830969309703097130972309733097430975309763097730978309793098030981309823098330984309853098630987309883098930990309913099230993309943099530996309973099830999310003100131002310033100431005310063100731008310093101031011310123101331014310153101631017310183101931020310213102231023310243102531026310273102831029310303103131032310333103431035310363103731038310393104031041310423104331044310453104631047310483104931050310513105231053310543105531056310573105831059310603106131062310633106431065310663106731068310693107031071310723107331074310753107631077310783107931080310813108231083310843108531086310873108831089310903109131092310933109431095310963109731098310993110031101311023110331104311053110631107311083110931110311113111231113311143111531116311173111831119311203112131122311233112431125311263112731128311293113031131311323113331134311353113631137311383113931140311413114231143311443114531146311473114831149311503115131152311533115431155311563115731158311593116031161311623116331164311653116631167311683116931170311713117231173311743117531176311773117831179311803118131182311833118431185311863118731188311893119031191311923119331194311953119631197311983119931200312013120231203312043120531206312073120831209312103121131212312133121431215312163121731218312193122031221312223122331224312253122631227312283122931230312313123231233312343123531236312373123831239312403124131242312433124431245312463124731248312493125031251312523125331254312553125631257312583125931260312613126231263312643126531266312673126831269312703127131272312733127431275312763127731278312793128031281312823128331284312853128631287312883128931290312913129231293312943129531296312973129831299313003130131302313033130431305313063130731308313093131031311313123131331314313153131631317313183131931320313213132231323313243132531326313273132831329313303133131332313333133431335313363133731338313393134031341313423134331344313453134631347313483134931350313513135231353313543135531356313573135831359313603136131362313633136431365313663136731368313693137031371313723137331374313753137631377313783137931380313813138231383313843138531386313873138831389313903139131392313933139431395313963139731398313993140031401314023140331404314053140631407314083140931410314113141231413314143141531416314173141831419314203142131422314233142431425314263142731428314293143031431314323143331434314353143631437314383143931440314413144231443314443144531446314473144831449314503145131452314533145431455314563145731458314593146031461314623146331464314653146631467314683146931470314713147231473314743147531476314773147831479314803148131482314833148431485314863148731488314893149031491314923149331494314953149631497314983149931500315013150231503315043150531506315073150831509315103151131512315133151431515315163151731518315193152031521315223152331524315253152631527315283152931530315313153231533315343153531536315373153831539315403154131542315433154431545315463154731548315493155031551315523155331554315553155631557315583155931560315613156231563315643156531566315673156831569315703157131572315733157431575315763157731578315793158031581315823158331584315853158631587315883158931590315913159231593315943159531596315973159831599316003160131602316033160431605316063160731608316093161031611316123161331614316153161631617316183161931620316213162231623316243162531626316273162831629316303163131632316333163431635316363163731638316393164031641316423164331644316453164631647316483164931650316513165231653316543165531656316573165831659316603166131662316633166431665316663166731668316693167031671316723167331674316753167631677316783167931680316813168231683316843168531686316873168831689316903169131692316933169431695316963169731698316993170031701317023170331704317053170631707317083170931710317113171231713317143171531716317173171831719317203172131722317233172431725317263172731728317293173031731317323173331734317353173631737317383173931740317413174231743317443174531746317473174831749317503175131752317533175431755317563175731758317593176031761317623176331764317653176631767317683176931770317713177231773317743177531776317773177831779317803178131782317833178431785317863178731788317893179031791317923179331794317953179631797317983179931800318013180231803318043180531806318073180831809318103181131812318133181431815318163181731818318193182031821318223182331824318253182631827318283182931830318313183231833318343183531836318373183831839318403184131842318433184431845318463184731848318493185031851318523185331854318553185631857318583185931860318613186231863318643186531866318673186831869318703187131872318733187431875318763187731878318793188031881318823188331884318853188631887318883188931890318913189231893318943189531896318973189831899319003190131902319033190431905319063190731908319093191031911319123191331914319153191631917319183191931920319213192231923319243192531926319273192831929319303193131932319333193431935319363193731938319393194031941319423194331944319453194631947319483194931950319513195231953319543195531956319573195831959319603196131962319633196431965319663196731968319693197031971319723197331974319753197631977319783197931980319813198231983319843198531986319873198831989319903199131992319933199431995319963199731998319993200032001320023200332004320053200632007320083200932010320113201232013320143201532016320173201832019320203202132022320233202432025320263202732028320293203032031320323203332034320353203632037320383203932040320413204232043320443204532046320473204832049320503205132052320533205432055320563205732058320593206032061320623206332064320653206632067320683206932070320713207232073320743207532076320773207832079320803208132082320833208432085320863208732088320893209032091320923209332094320953209632097320983209932100321013210232103321043210532106321073210832109321103211132112321133211432115321163211732118321193212032121321223212332124321253212632127321283212932130321313213232133321343213532136321373213832139321403214132142321433214432145321463214732148321493215032151321523215332154321553215632157321583215932160321613216232163321643216532166321673216832169321703217132172321733217432175321763217732178321793218032181321823218332184321853218632187321883218932190321913219232193321943219532196321973219832199322003220132202322033220432205322063220732208322093221032211322123221332214322153221632217322183221932220322213222232223322243222532226322273222832229322303223132232322333223432235322363223732238322393224032241322423224332244322453224632247322483224932250322513225232253322543225532256322573225832259322603226132262322633226432265322663226732268322693227032271322723227332274322753227632277322783227932280322813228232283322843228532286322873228832289322903229132292322933229432295322963229732298322993230032301323023230332304323053230632307323083230932310323113231232313323143231532316323173231832319323203232132322323233232432325323263232732328323293233032331323323233332334323353233632337323383233932340323413234232343323443234532346323473234832349323503235132352323533235432355323563235732358323593236032361323623236332364323653236632367323683236932370323713237232373323743237532376323773237832379323803238132382323833238432385323863238732388323893239032391323923239332394323953239632397323983239932400324013240232403324043240532406324073240832409324103241132412324133241432415324163241732418324193242032421324223242332424324253242632427324283242932430324313243232433324343243532436324373243832439324403244132442324433244432445324463244732448324493245032451324523245332454324553245632457324583245932460324613246232463324643246532466324673246832469324703247132472324733247432475324763247732478324793248032481324823248332484324853248632487324883248932490324913249232493324943249532496324973249832499325003250132502325033250432505325063250732508325093251032511325123251332514325153251632517325183251932520325213252232523325243252532526325273252832529325303253132532325333253432535325363253732538325393254032541325423254332544325453254632547325483254932550325513255232553325543255532556325573255832559325603256132562325633256432565325663256732568325693257032571325723257332574325753257632577325783257932580325813258232583325843258532586325873258832589325903259132592325933259432595325963259732598325993260032601326023260332604326053260632607326083260932610326113261232613326143261532616326173261832619326203262132622326233262432625326263262732628326293263032631326323263332634326353263632637326383263932640326413264232643326443264532646326473264832649326503265132652326533265432655326563265732658326593266032661326623266332664326653266632667326683266932670326713267232673326743267532676326773267832679326803268132682326833268432685326863268732688326893269032691326923269332694326953269632697326983269932700327013270232703327043270532706327073270832709327103271132712327133271432715327163271732718327193272032721327223272332724327253272632727327283272932730327313273232733327343273532736327373273832739327403274132742327433274432745327463274732748327493275032751327523275332754327553275632757327583275932760327613276232763327643276532766327673276832769327703277132772327733277432775327763277732778327793278032781327823278332784327853278632787327883278932790327913279232793327943279532796327973279832799328003280132802328033280432805328063280732808328093281032811328123281332814328153281632817328183281932820328213282232823328243282532826328273282832829328303283132832328333283432835328363283732838328393284032841328423284332844328453284632847328483284932850328513285232853328543285532856328573285832859328603286132862328633286432865328663286732868328693287032871328723287332874328753287632877328783287932880328813288232883328843288532886328873288832889328903289132892328933289432895328963289732898328993290032901329023290332904329053290632907329083290932910329113291232913329143291532916329173291832919329203292132922329233292432925329263292732928329293293032931329323293332934329353293632937329383293932940329413294232943329443294532946329473294832949329503295132952329533295432955329563295732958329593296032961329623296332964329653296632967329683296932970329713297232973329743297532976329773297832979329803298132982329833298432985329863298732988329893299032991329923299332994329953299632997329983299933000330013300233003330043300533006330073300833009330103301133012330133301433015330163301733018330193302033021330223302333024330253302633027330283302933030330313303233033330343303533036330373303833039330403304133042330433304433045330463304733048330493305033051330523305333054330553305633057330583305933060330613306233063330643306533066330673306833069330703307133072330733307433075330763307733078330793308033081330823308333084330853308633087330883308933090330913309233093330943309533096330973309833099331003310133102331033310433105331063310733108331093311033111331123311333114331153311633117331183311933120331213312233123331243312533126331273312833129331303313133132331333313433135331363313733138331393314033141331423314333144331453314633147331483314933150331513315233153331543315533156331573315833159331603316133162331633316433165331663316733168331693317033171331723317333174331753317633177331783317933180331813318233183331843318533186331873318833189331903319133192331933319433195331963319733198331993320033201332023320333204332053320633207332083320933210332113321233213332143321533216332173321833219332203322133222332233322433225332263322733228332293323033231332323323333234332353323633237332383323933240332413324233243332443324533246332473324833249332503325133252332533325433255332563325733258332593326033261332623326333264332653326633267332683326933270332713327233273332743327533276332773327833279332803328133282332833328433285332863328733288332893329033291332923329333294332953329633297332983329933300333013330233303333043330533306333073330833309333103331133312333133331433315333163331733318333193332033321333223332333324333253332633327333283332933330333313333233333333343333533336333373333833339333403334133342333433334433345333463334733348333493335033351333523335333354333553335633357333583335933360333613336233363333643336533366333673336833369333703337133372333733337433375333763337733378333793338033381333823338333384333853338633387333883338933390333913339233393333943339533396333973339833399334003340133402334033340433405334063340733408334093341033411334123341333414334153341633417334183341933420334213342233423334243342533426334273342833429334303343133432334333343433435334363343733438334393344033441334423344333444334453344633447334483344933450334513345233453334543345533456334573345833459334603346133462334633346433465334663346733468334693347033471334723347333474334753347633477334783347933480334813348233483334843348533486334873348833489334903349133492334933349433495334963349733498334993350033501335023350333504335053350633507335083350933510335113351233513335143351533516335173351833519335203352133522335233352433525335263352733528335293353033531335323353333534335353353633537335383353933540335413354233543335443354533546335473354833549335503355133552335533355433555335563355733558335593356033561335623356333564335653356633567335683356933570335713357233573335743357533576335773357833579335803358133582335833358433585335863358733588335893359033591335923359333594335953359633597335983359933600336013360233603336043360533606336073360833609336103361133612336133361433615336163361733618336193362033621336223362333624336253362633627336283362933630336313363233633336343363533636336373363833639336403364133642336433364433645336463364733648336493365033651336523365333654336553365633657336583365933660336613366233663336643366533666336673366833669336703367133672336733367433675336763367733678336793368033681336823368333684336853368633687336883368933690336913369233693336943369533696336973369833699337003370133702337033370433705337063370733708337093371033711337123371333714337153371633717337183371933720337213372233723337243372533726337273372833729337303373133732337333373433735337363373733738337393374033741337423374333744337453374633747337483374933750337513375233753337543375533756337573375833759337603376133762337633376433765337663376733768337693377033771337723377333774337753377633777337783377933780337813378233783337843378533786337873378833789337903379133792337933379433795337963379733798337993380033801338023380333804338053380633807338083380933810338113381233813338143381533816338173381833819338203382133822338233382433825338263382733828338293383033831338323383333834338353383633837338383383933840338413384233843338443384533846338473384833849338503385133852338533385433855338563385733858338593386033861338623386333864338653386633867338683386933870338713387233873338743387533876338773387833879338803388133882338833388433885338863388733888338893389033891338923389333894338953389633897338983389933900339013390233903339043390533906339073390833909339103391133912339133391433915339163391733918339193392033921339223392333924339253392633927339283392933930339313393233933339343393533936339373393833939339403394133942339433394433945339463394733948339493395033951339523395333954339553395633957339583395933960339613396233963339643396533966339673396833969339703397133972339733397433975339763397733978339793398033981339823398333984339853398633987339883398933990339913399233993339943399533996339973399833999340003400134002340033400434005340063400734008340093401034011340123401334014340153401634017340183401934020340213402234023340243402534026340273402834029340303403134032340333403434035340363403734038340393404034041340423404334044340453404634047340483404934050340513405234053340543405534056340573405834059340603406134062340633406434065340663406734068340693407034071340723407334074340753407634077340783407934080340813408234083340843408534086340873408834089340903409134092340933409434095340963409734098340993410034101341023410334104341053410634107341083410934110341113411234113341143411534116341173411834119341203412134122341233412434125341263412734128341293413034131341323413334134341353413634137341383413934140341413414234143341443414534146341473414834149341503415134152341533415434155341563415734158341593416034161341623416334164341653416634167341683416934170341713417234173341743417534176341773417834179341803418134182341833418434185341863418734188341893419034191341923419334194341953419634197341983419934200342013420234203342043420534206342073420834209342103421134212342133421434215342163421734218342193422034221342223422334224342253422634227342283422934230342313423234233342343423534236342373423834239342403424134242342433424434245342463424734248342493425034251342523425334254342553425634257342583425934260342613426234263342643426534266342673426834269342703427134272342733427434275342763427734278342793428034281342823428334284342853428634287342883428934290342913429234293342943429534296342973429834299343003430134302343033430434305343063430734308343093431034311343123431334314343153431634317343183431934320343213432234323343243432534326343273432834329343303433134332343333433434335343363433734338343393434034341343423434334344343453434634347343483434934350343513435234353343543435534356343573435834359343603436134362343633436434365343663436734368343693437034371343723437334374343753437634377343783437934380343813438234383343843438534386343873438834389343903439134392343933439434395343963439734398343993440034401344023440334404344053440634407344083440934410344113441234413344143441534416344173441834419344203442134422344233442434425344263442734428344293443034431344323443334434344353443634437344383443934440344413444234443344443444534446344473444834449344503445134452344533445434455344563445734458344593446034461344623446334464344653446634467344683446934470344713447234473344743447534476344773447834479344803448134482344833448434485344863448734488344893449034491344923449334494344953449634497344983449934500345013450234503345043450534506345073450834509345103451134512345133451434515345163451734518345193452034521345223452334524345253452634527345283452934530345313453234533345343453534536345373453834539345403454134542345433454434545345463454734548345493455034551345523455334554345553455634557345583455934560345613456234563345643456534566345673456834569345703457134572345733457434575345763457734578345793458034581345823458334584345853458634587345883458934590345913459234593345943459534596345973459834599346003460134602346033460434605346063460734608346093461034611346123461334614346153461634617346183461934620346213462234623346243462534626346273462834629346303463134632346333463434635346363463734638346393464034641346423464334644346453464634647346483464934650346513465234653346543465534656346573465834659346603466134662346633466434665346663466734668346693467034671346723467334674346753467634677346783467934680346813468234683346843468534686346873468834689346903469134692346933469434695346963469734698346993470034701347023470334704347053470634707347083470934710347113471234713347143471534716347173471834719347203472134722347233472434725347263472734728347293473034731347323473334734347353473634737347383473934740347413474234743347443474534746347473474834749347503475134752347533475434755347563475734758347593476034761347623476334764347653476634767347683476934770347713477234773347743477534776347773477834779347803478134782347833478434785347863478734788347893479034791347923479334794347953479634797347983479934800348013480234803348043480534806348073480834809348103481134812348133481434815348163481734818348193482034821348223482334824348253482634827348283482934830348313483234833348343483534836348373483834839348403484134842348433484434845348463484734848348493485034851348523485334854348553485634857348583485934860348613486234863348643486534866348673486834869348703487134872348733487434875348763487734878348793488034881348823488334884348853488634887348883488934890348913489234893348943489534896348973489834899349003490134902349033490434905349063490734908349093491034911349123491334914349153491634917349183491934920349213492234923349243492534926349273492834929349303493134932349333493434935349363493734938349393494034941349423494334944349453494634947349483494934950349513495234953349543495534956349573495834959349603496134962349633496434965349663496734968349693497034971349723497334974349753497634977349783497934980349813498234983349843498534986349873498834989349903499134992349933499434995349963499734998349993500035001350023500335004350053500635007350083500935010350113501235013350143501535016350173501835019350203502135022350233502435025350263502735028350293503035031350323503335034350353503635037350383503935040350413504235043350443504535046350473504835049350503505135052350533505435055350563505735058350593506035061350623506335064350653506635067350683506935070350713507235073350743507535076350773507835079350803508135082350833508435085350863508735088350893509035091350923509335094350953509635097350983509935100351013510235103351043510535106351073510835109351103511135112351133511435115351163511735118351193512035121351223512335124351253512635127351283512935130351313513235133351343513535136351373513835139351403514135142351433514435145351463514735148351493515035151351523515335154351553515635157351583515935160351613516235163351643516535166351673516835169351703517135172351733517435175351763517735178351793518035181351823518335184351853518635187351883518935190351913519235193351943519535196351973519835199352003520135202352033520435205352063520735208352093521035211352123521335214352153521635217352183521935220352213522235223352243522535226352273522835229352303523135232352333523435235352363523735238352393524035241352423524335244352453524635247352483524935250352513525235253352543525535256352573525835259352603526135262352633526435265352663526735268352693527035271352723527335274352753527635277352783527935280352813528235283352843528535286352873528835289352903529135292352933529435295352963529735298352993530035301353023530335304353053530635307353083530935310353113531235313353143531535316353173531835319353203532135322353233532435325353263532735328353293533035331353323533335334353353533635337353383533935340353413534235343353443534535346353473534835349353503535135352353533535435355353563535735358353593536035361353623536335364353653536635367353683536935370353713537235373353743537535376353773537835379353803538135382353833538435385353863538735388353893539035391353923539335394353953539635397353983539935400354013540235403354043540535406354073540835409354103541135412354133541435415354163541735418354193542035421354223542335424354253542635427354283542935430354313543235433354343543535436354373543835439354403544135442354433544435445354463544735448354493545035451354523545335454354553545635457354583545935460354613546235463354643546535466354673546835469354703547135472354733547435475354763547735478354793548035481354823548335484354853548635487354883548935490354913549235493354943549535496354973549835499355003550135502355033550435505355063550735508355093551035511355123551335514355153551635517355183551935520355213552235523355243552535526355273552835529355303553135532355333553435535355363553735538355393554035541355423554335544355453554635547355483554935550355513555235553355543555535556355573555835559355603556135562355633556435565355663556735568355693557035571355723557335574355753557635577355783557935580355813558235583355843558535586355873558835589355903559135592355933559435595355963559735598355993560035601356023560335604356053560635607356083560935610356113561235613356143561535616356173561835619356203562135622356233562435625356263562735628356293563035631356323563335634356353563635637356383563935640356413564235643356443564535646356473564835649356503565135652356533565435655356563565735658356593566035661356623566335664356653566635667356683566935670356713567235673356743567535676356773567835679356803568135682356833568435685356863568735688356893569035691356923569335694356953569635697356983569935700357013570235703357043570535706357073570835709357103571135712357133571435715357163571735718357193572035721357223572335724357253572635727357283572935730357313573235733357343573535736357373573835739357403574135742357433574435745357463574735748357493575035751357523575335754357553575635757357583575935760357613576235763357643576535766357673576835769357703577135772357733577435775357763577735778357793578035781357823578335784357853578635787357883578935790357913579235793357943579535796357973579835799358003580135802358033580435805358063580735808358093581035811358123581335814358153581635817358183581935820358213582235823358243582535826358273582835829358303583135832358333583435835358363583735838358393584035841358423584335844358453584635847358483584935850358513585235853358543585535856358573585835859358603586135862358633586435865358663586735868358693587035871358723587335874358753587635877358783587935880358813588235883358843588535886358873588835889358903589135892358933589435895358963589735898358993590035901359023590335904359053590635907359083590935910359113591235913359143591535916359173591835919359203592135922359233592435925359263592735928359293593035931359323593335934359353593635937359383593935940359413594235943359443594535946359473594835949359503595135952359533595435955359563595735958359593596035961359623596335964359653596635967359683596935970359713597235973359743597535976359773597835979359803598135982359833598435985359863598735988359893599035991359923599335994359953599635997359983599936000360013600236003360043600536006360073600836009360103601136012360133601436015360163601736018360193602036021360223602336024360253602636027360283602936030360313603236033360343603536036360373603836039360403604136042360433604436045360463604736048360493605036051360523605336054360553605636057360583605936060360613606236063360643606536066360673606836069360703607136072360733607436075360763607736078360793608036081360823608336084360853608636087360883608936090360913609236093360943609536096360973609836099361003610136102361033610436105361063610736108361093611036111361123611336114361153611636117361183611936120361213612236123361243612536126361273612836129361303613136132361333613436135361363613736138361393614036141361423614336144361453614636147361483614936150361513615236153361543615536156361573615836159361603616136162361633616436165361663616736168361693617036171361723617336174361753617636177361783617936180361813618236183361843618536186361873618836189361903619136192361933619436195361963619736198361993620036201362023620336204362053620636207362083620936210362113621236213362143621536216362173621836219362203622136222362233622436225362263622736228362293623036231362323623336234362353623636237362383623936240362413624236243362443624536246362473624836249362503625136252362533625436255362563625736258362593626036261362623626336264362653626636267362683626936270362713627236273362743627536276362773627836279362803628136282362833628436285362863628736288362893629036291362923629336294362953629636297362983629936300363013630236303363043630536306363073630836309363103631136312363133631436315363163631736318363193632036321363223632336324363253632636327363283632936330363313633236333363343633536336363373633836339363403634136342363433634436345363463634736348363493635036351363523635336354363553635636357363583635936360363613636236363363643636536366363673636836369363703637136372363733637436375363763637736378363793638036381363823638336384363853638636387363883638936390363913639236393363943639536396363973639836399364003640136402364033640436405364063640736408364093641036411364123641336414364153641636417364183641936420364213642236423364243642536426364273642836429364303643136432364333643436435364363643736438364393644036441364423644336444364453644636447364483644936450364513645236453364543645536456364573645836459364603646136462364633646436465364663646736468364693647036471364723647336474364753647636477364783647936480364813648236483364843648536486364873648836489364903649136492364933649436495364963649736498364993650036501365023650336504365053650636507365083650936510365113651236513365143651536516365173651836519365203652136522365233652436525365263652736528365293653036531365323653336534365353653636537365383653936540365413654236543365443654536546365473654836549365503655136552365533655436555365563655736558365593656036561365623656336564365653656636567365683656936570365713657236573365743657536576365773657836579365803658136582365833658436585365863658736588365893659036591365923659336594365953659636597365983659936600366013660236603366043660536606366073660836609366103661136612366133661436615366163661736618366193662036621366223662336624366253662636627366283662936630366313663236633366343663536636366373663836639366403664136642366433664436645366463664736648366493665036651366523665336654366553665636657366583665936660366613666236663366643666536666366673666836669366703667136672366733667436675366763667736678366793668036681366823668336684366853668636687366883668936690366913669236693366943669536696366973669836699367003670136702367033670436705367063670736708367093671036711367123671336714367153671636717367183671936720367213672236723367243672536726367273672836729367303673136732367333673436735367363673736738367393674036741367423674336744367453674636747367483674936750367513675236753367543675536756367573675836759367603676136762367633676436765367663676736768367693677036771367723677336774367753677636777367783677936780367813678236783367843678536786367873678836789367903679136792367933679436795367963679736798367993680036801368023680336804368053680636807368083680936810368113681236813368143681536816368173681836819368203682136822368233682436825368263682736828368293683036831368323683336834368353683636837368383683936840368413684236843368443684536846368473684836849368503685136852368533685436855368563685736858368593686036861368623686336864368653686636867368683686936870368713687236873368743687536876368773687836879368803688136882368833688436885368863688736888368893689036891368923689336894368953689636897368983689936900369013690236903369043690536906369073690836909369103691136912369133691436915369163691736918369193692036921369223692336924369253692636927369283692936930369313693236933369343693536936369373693836939369403694136942369433694436945369463694736948369493695036951369523695336954369553695636957369583695936960369613696236963369643696536966369673696836969369703697136972369733697436975369763697736978369793698036981369823698336984369853698636987369883698936990369913699236993369943699536996369973699836999370003700137002370033700437005370063700737008370093701037011370123701337014370153701637017370183701937020370213702237023370243702537026370273702837029370303703137032370333703437035370363703737038370393704037041370423704337044370453704637047370483704937050370513705237053370543705537056370573705837059370603706137062370633706437065370663706737068370693707037071370723707337074370753707637077370783707937080370813708237083370843708537086370873708837089370903709137092370933709437095370963709737098370993710037101371023710337104371053710637107371083710937110371113711237113371143711537116371173711837119371203712137122371233712437125371263712737128371293713037131371323713337134371353713637137371383713937140371413714237143371443714537146371473714837149371503715137152371533715437155371563715737158371593716037161371623716337164371653716637167371683716937170371713717237173371743717537176371773717837179371803718137182371833718437185371863718737188371893719037191371923719337194371953719637197371983719937200372013720237203372043720537206372073720837209372103721137212372133721437215372163721737218372193722037221372223722337224372253722637227372283722937230372313723237233372343723537236372373723837239372403724137242372433724437245372463724737248372493725037251372523725337254372553725637257372583725937260372613726237263372643726537266372673726837269372703727137272372733727437275372763727737278372793728037281372823728337284372853728637287372883728937290372913729237293372943729537296372973729837299373003730137302373033730437305373063730737308373093731037311373123731337314373153731637317373183731937320373213732237323373243732537326373273732837329373303733137332373333733437335373363733737338373393734037341373423734337344373453734637347373483734937350373513735237353373543735537356373573735837359373603736137362373633736437365373663736737368373693737037371373723737337374373753737637377373783737937380373813738237383373843738537386373873738837389373903739137392373933739437395373963739737398373993740037401374023740337404374053740637407374083740937410374113741237413374143741537416374173741837419374203742137422374233742437425374263742737428374293743037431374323743337434374353743637437374383743937440374413744237443374443744537446374473744837449374503745137452374533745437455374563745737458374593746037461374623746337464374653746637467374683746937470374713747237473374743747537476374773747837479374803748137482374833748437485374863748737488374893749037491374923749337494374953749637497374983749937500375013750237503375043750537506375073750837509375103751137512375133751437515375163751737518375193752037521375223752337524375253752637527375283752937530375313753237533375343753537536375373753837539375403754137542375433754437545375463754737548375493755037551375523755337554375553755637557375583755937560375613756237563375643756537566375673756837569375703757137572375733757437575375763757737578375793758037581375823758337584375853758637587375883758937590375913759237593375943759537596375973759837599376003760137602376033760437605376063760737608376093761037611376123761337614376153761637617376183761937620376213762237623376243762537626376273762837629376303763137632376333763437635376363763737638376393764037641376423764337644376453764637647376483764937650376513765237653376543765537656376573765837659376603766137662376633766437665376663766737668376693767037671376723767337674376753767637677376783767937680376813768237683376843768537686376873768837689376903769137692376933769437695376963769737698376993770037701377023770337704377053770637707377083770937710377113771237713377143771537716377173771837719377203772137722377233772437725377263772737728377293773037731377323773337734377353773637737377383773937740377413774237743377443774537746377473774837749377503775137752377533775437755377563775737758377593776037761377623776337764377653776637767377683776937770377713777237773377743777537776377773777837779377803778137782377833778437785377863778737788377893779037791377923779337794377953779637797377983779937800378013780237803378043780537806378073780837809378103781137812378133781437815378163781737818378193782037821378223782337824378253782637827378283782937830378313783237833378343783537836378373783837839378403784137842378433784437845378463784737848378493785037851378523785337854378553785637857378583785937860378613786237863378643786537866378673786837869378703787137872378733787437875378763787737878378793788037881378823788337884378853788637887378883788937890378913789237893378943789537896378973789837899379003790137902379033790437905379063790737908379093791037911379123791337914379153791637917379183791937920379213792237923379243792537926379273792837929379303793137932379333793437935379363793737938379393794037941379423794337944379453794637947379483794937950379513795237953379543795537956379573795837959379603796137962379633796437965379663796737968379693797037971379723797337974379753797637977379783797937980379813798237983379843798537986379873798837989379903799137992379933799437995379963799737998379993800038001380023800338004380053800638007380083800938010380113801238013380143801538016380173801838019380203802138022380233802438025380263802738028380293803038031380323803338034380353803638037380383803938040380413804238043380443804538046380473804838049380503805138052380533805438055380563805738058380593806038061380623806338064380653806638067380683806938070380713807238073380743807538076380773807838079380803808138082380833808438085380863808738088380893809038091380923809338094380953809638097380983809938100381013810238103381043810538106381073810838109381103811138112381133811438115381163811738118381193812038121381223812338124381253812638127381283812938130381313813238133381343813538136381373813838139381403814138142381433814438145381463814738148381493815038151381523815338154381553815638157381583815938160381613816238163381643816538166381673816838169381703817138172381733817438175381763817738178381793818038181381823818338184381853818638187381883818938190381913819238193381943819538196381973819838199382003820138202382033820438205382063820738208382093821038211382123821338214382153821638217382183821938220382213822238223382243822538226382273822838229382303823138232382333823438235382363823738238382393824038241382423824338244382453824638247382483824938250382513825238253382543825538256382573825838259382603826138262382633826438265382663826738268382693827038271382723827338274382753827638277382783827938280382813828238283382843828538286382873828838289382903829138292382933829438295382963829738298382993830038301383023830338304383053830638307383083830938310383113831238313383143831538316383173831838319383203832138322383233832438325383263832738328383293833038331383323833338334383353833638337383383833938340383413834238343383443834538346383473834838349383503835138352383533835438355383563835738358383593836038361383623836338364383653836638367383683836938370383713837238373383743837538376383773837838379383803838138382383833838438385383863838738388383893839038391383923839338394383953839638397383983839938400384013840238403384043840538406384073840838409384103841138412384133841438415384163841738418384193842038421384223842338424384253842638427384283842938430384313843238433384343843538436384373843838439384403844138442384433844438445384463844738448384493845038451384523845338454384553845638457384583845938460384613846238463384643846538466384673846838469384703847138472384733847438475384763847738478384793848038481384823848338484384853848638487384883848938490384913849238493384943849538496384973849838499385003850138502385033850438505385063850738508385093851038511385123851338514385153851638517385183851938520385213852238523385243852538526385273852838529385303853138532385333853438535385363853738538385393854038541385423854338544385453854638547385483854938550385513855238553385543855538556385573855838559385603856138562385633856438565385663856738568385693857038571385723857338574385753857638577385783857938580385813858238583385843858538586385873858838589385903859138592385933859438595385963859738598385993860038601386023860338604386053860638607386083860938610386113861238613386143861538616386173861838619386203862138622386233862438625386263862738628386293863038631386323863338634386353863638637386383863938640386413864238643386443864538646386473864838649386503865138652386533865438655386563865738658386593866038661386623866338664386653866638667386683866938670386713867238673386743867538676386773867838679386803868138682386833868438685386863868738688386893869038691386923869338694386953869638697386983869938700387013870238703387043870538706387073870838709387103871138712387133871438715387163871738718387193872038721387223872338724387253872638727387283872938730387313873238733387343873538736387373873838739387403874138742387433874438745387463874738748387493875038751387523875338754387553875638757387583875938760387613876238763387643876538766387673876838769387703877138772387733877438775387763877738778387793878038781387823878338784387853878638787387883878938790387913879238793387943879538796387973879838799388003880138802388033880438805388063880738808388093881038811388123881338814388153881638817388183881938820388213882238823388243882538826388273882838829388303883138832388333883438835388363883738838388393884038841388423884338844388453884638847388483884938850388513885238853388543885538856388573885838859388603886138862388633886438865388663886738868388693887038871388723887338874388753887638877388783887938880388813888238883388843888538886388873888838889388903889138892388933889438895388963889738898388993890038901389023890338904389053890638907389083890938910389113891238913389143891538916389173891838919389203892138922389233892438925389263892738928389293893038931389323893338934389353893638937389383893938940389413894238943389443894538946389473894838949389503895138952389533895438955389563895738958389593896038961389623896338964389653896638967389683896938970389713897238973389743897538976389773897838979389803898138982389833898438985389863898738988389893899038991389923899338994389953899638997389983899939000390013900239003390043900539006390073900839009390103901139012390133901439015390163901739018390193902039021390223902339024390253902639027390283902939030390313903239033390343903539036390373903839039390403904139042390433904439045390463904739048390493905039051390523905339054390553905639057390583905939060390613906239063390643906539066390673906839069390703907139072390733907439075390763907739078390793908039081390823908339084390853908639087390883908939090390913909239093390943909539096390973909839099391003910139102391033910439105391063910739108391093911039111391123911339114391153911639117391183911939120391213912239123391243912539126391273912839129391303913139132391333913439135391363913739138391393914039141391423914339144391453914639147391483914939150391513915239153391543915539156391573915839159391603916139162391633916439165391663916739168391693917039171391723917339174391753917639177391783917939180391813918239183391843918539186391873918839189391903919139192391933919439195391963919739198391993920039201392023920339204392053920639207392083920939210392113921239213392143921539216392173921839219392203922139222392233922439225392263922739228392293923039231392323923339234392353923639237392383923939240392413924239243392443924539246392473924839249392503925139252392533925439255392563925739258392593926039261392623926339264392653926639267392683926939270392713927239273392743927539276392773927839279392803928139282392833928439285392863928739288392893929039291392923929339294392953929639297392983929939300393013930239303393043930539306393073930839309393103931139312393133931439315393163931739318393193932039321393223932339324393253932639327393283932939330393313933239333393343933539336393373933839339393403934139342393433934439345393463934739348393493935039351393523935339354393553935639357393583935939360393613936239363393643936539366393673936839369393703937139372393733937439375393763937739378393793938039381393823938339384393853938639387393883938939390393913939239393393943939539396393973939839399394003940139402394033940439405394063940739408394093941039411394123941339414394153941639417394183941939420394213942239423394243942539426394273942839429394303943139432394333943439435394363943739438394393944039441394423944339444394453944639447394483944939450394513945239453394543945539456394573945839459394603946139462394633946439465394663946739468394693947039471394723947339474394753947639477394783947939480394813948239483394843948539486394873948839489394903949139492394933949439495394963949739498394993950039501395023950339504395053950639507395083950939510395113951239513395143951539516395173951839519395203952139522395233952439525395263952739528395293953039531395323953339534395353953639537395383953939540395413954239543395443954539546395473954839549395503955139552395533955439555395563955739558395593956039561395623956339564395653956639567395683956939570395713957239573395743957539576395773957839579395803958139582395833958439585395863958739588395893959039591395923959339594395953959639597395983959939600396013960239603396043960539606396073960839609396103961139612396133961439615396163961739618396193962039621396223962339624396253962639627396283962939630396313963239633396343963539636396373963839639396403964139642396433964439645396463964739648396493965039651396523965339654396553965639657396583965939660396613966239663396643966539666396673966839669396703967139672396733967439675396763967739678396793968039681396823968339684396853968639687396883968939690396913969239693396943969539696396973969839699397003970139702397033970439705397063970739708397093971039711397123971339714397153971639717397183971939720397213972239723397243972539726397273972839729397303973139732397333973439735397363973739738397393974039741397423974339744397453974639747397483974939750397513975239753397543975539756397573975839759397603976139762397633976439765397663976739768397693977039771397723977339774397753977639777397783977939780397813978239783397843978539786397873978839789397903979139792397933979439795397963979739798397993980039801398023980339804398053980639807398083980939810398113981239813398143981539816398173981839819398203982139822398233982439825398263982739828398293983039831398323983339834398353983639837398383983939840398413984239843398443984539846398473984839849398503985139852
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- This file documents the GNU Assembler "as".
  4. Copyright (C) 1991-2024 Free Software Foundation, Inc.
  5. Permission is granted to copy, distribute and/or modify this document
  6. under the terms of the GNU Free Documentation License, Version 1.3
  7. or any later version published by the Free Software Foundation;
  8. with no Invariant Sections, with no Front-Cover Texts, and with no
  9. Back-Cover Texts. A copy of the license is included in the
  10. section entitled "GNU Free Documentation License".
  11. -->
  12. <!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  15. <title>Using as</title>
  16. <meta name="description" content="Using as">
  17. <meta name="keywords" content="Using as">
  18. <meta name="resource-type" content="document">
  19. <meta name="distribution" content="global">
  20. <meta name="Generator" content="makeinfo">
  21. <link href="#Top" rel="start" title="Top">
  22. <link href="#AS-Index" rel="index" title="AS Index">
  23. <link href="#SEC_Contents" rel="contents" title="Table of Contents">
  24. <style type="text/css">
  25. <!--
  26. a.summary-letter {text-decoration: none}
  27. blockquote.indentedblock {margin-right: 0em}
  28. div.display {margin-left: 3.2em}
  29. div.example {margin-left: 3.2em}
  30. div.lisp {margin-left: 3.2em}
  31. kbd {font-style: oblique}
  32. pre.display {font-family: inherit}
  33. pre.format {font-family: inherit}
  34. pre.menu-comment {font-family: serif}
  35. pre.menu-preformatted {font-family: serif}
  36. span.nolinebreak {white-space: nowrap}
  37. span.roman {font-family: initial; font-weight: normal}
  38. span.sansserif {font-family: sans-serif; font-weight: normal}
  39. ul.no-bullet {list-style: none}
  40. -->
  41. </style>
  42. </head>
  43. <body lang="en">
  44. <h1 class="settitle" align="center">Using as</h1>
  45. <span id="SEC_Contents"></span>
  46. <h2 class="contents-heading">Table of Contents</h2>
  47. <div class="contents">
  48. <ul class="no-bullet">
  49. <li><a id="toc-Overview-1" href="#Overview">1 Overview</a>
  50. <ul class="no-bullet">
  51. <li><a id="toc-Structure-of-this-Manual" href="#Manual">1.1 Structure of this Manual</a></li>
  52. <li><a id="toc-The-GNU-Assembler" href="#GNU-Assembler">1.2 The GNU Assembler</a></li>
  53. <li><a id="toc-Object-File-Formats" href="#Object-Formats">1.3 Object File Formats</a></li>
  54. <li><a id="toc-Command-Line-1" href="#Command-Line">1.4 Command Line</a></li>
  55. <li><a id="toc-Input-Files-1" href="#Input-Files">1.5 Input Files</a></li>
  56. <li><a id="toc-Output-_0028Object_0029-File" href="#Object">1.6 Output (Object) File</a></li>
  57. <li><a id="toc-Error-and-Warning-Messages" href="#Errors">1.7 Error and Warning Messages</a></li>
  58. </ul></li>
  59. <li><a id="toc-Command_002dLine-Options" href="#Invoking">2 Command-Line Options</a>
  60. <ul class="no-bullet">
  61. <li><a id="toc-Enable-Listings_003a-_002da_005bcdghilns_005d" href="#a">2.1 Enable Listings: <samp>-a[cdghilns]</samp></a></li>
  62. <li><a id="toc-_002d_002dalternate" href="#alternate">2.2 <samp>--alternate</samp></a></li>
  63. <li><a id="toc-_002dD" href="#D">2.3 <samp>-D</samp></a></li>
  64. <li><a id="toc-Work-Faster_003a-_002df" href="#f">2.4 Work Faster: <samp>-f</samp></a></li>
  65. <li><a id="toc-_002einclude-Search-Path_003a-_002dI-path" href="#I">2.5 <code>.include</code> Search Path: <samp>-I</samp> <var>path</var></a></li>
  66. <li><a id="toc-Difference-Tables_003a-_002dK" href="#K">2.6 Difference Tables: <samp>-K</samp></a></li>
  67. <li><a id="toc-Include-Local-Symbols_003a-_002dL" href="#L">2.7 Include Local Symbols: <samp>-L</samp></a></li>
  68. <li><a id="toc-Configuring-listing-output_003a-_002d_002dlisting" href="#listing">2.8 Configuring listing output: <samp>--listing</samp></a></li>
  69. <li><a id="toc-Assemble-in-MRI-Compatibility-Mode_003a-_002dM" href="#M">2.9 Assemble in MRI Compatibility Mode: <samp>-M</samp></a></li>
  70. <li><a id="toc-Dependency-Tracking_003a-_002d_002dMD" href="#MD">2.10 Dependency Tracking: <samp>--MD</samp></a></li>
  71. <li><a id="toc-Output-Section-Padding" href="#no_002dpad_002dsections">2.11 Output Section Padding</a></li>
  72. <li><a id="toc-Name-the-Object-File_003a-_002do" href="#o">2.12 Name the Object File: <samp>-o</samp></a></li>
  73. <li><a id="toc-Join-Data-and-Text-Sections_003a-_002dR" href="#R">2.13 Join Data and Text Sections: <samp>-R</samp></a></li>
  74. <li><a id="toc-Display-Assembly-Statistics_003a-_002d_002dstatistics" href="#statistics">2.14 Display Assembly Statistics: <samp>--statistics</samp></a></li>
  75. <li><a id="toc-Compatible-Output_003a-_002d_002dtraditional_002dformat" href="#traditional_002dformat">2.15 Compatible Output: <samp>--traditional-format</samp></a></li>
  76. <li><a id="toc-Announce-Version_003a-_002dv" href="#v">2.16 Announce Version: <samp>-v</samp></a></li>
  77. <li><a id="toc-Control-Warnings_003a-_002dW_002c-_002d_002dwarn_002c-_002d_002dno_002dwarn_002c-_002d_002dfatal_002dwarnings" href="#W">2.17 Control Warnings: <samp>-W</samp>, <samp>--warn</samp>, <samp>--no-warn</samp>, <samp>--fatal-warnings</samp></a></li>
  78. <li><a id="toc-Generate-Object-File-in-Spite-of-Errors_003a-_002dZ" href="#Z">2.18 Generate Object File in Spite of Errors: <samp>-Z</samp></a></li>
  79. </ul></li>
  80. <li><a id="toc-Syntax-1" href="#Syntax">3 Syntax</a>
  81. <ul class="no-bullet">
  82. <li><a id="toc-Preprocessing-1" href="#Preprocessing">3.1 Preprocessing</a></li>
  83. <li><a id="toc-Whitespace-1" href="#Whitespace">3.2 Whitespace</a></li>
  84. <li><a id="toc-Comments-1" href="#Comments">3.3 Comments</a></li>
  85. <li><a id="toc-Symbols-1" href="#Symbol-Intro">3.4 Symbols</a></li>
  86. <li><a id="toc-Statements-1" href="#Statements">3.5 Statements</a></li>
  87. <li><a id="toc-Constants-1" href="#Constants">3.6 Constants</a>
  88. <ul class="no-bullet">
  89. <li><a id="toc-Character-Constants" href="#Characters">3.6.1 Character Constants</a>
  90. <ul class="no-bullet">
  91. <li><a id="toc-Strings-1" href="#Strings">3.6.1.1 Strings</a></li>
  92. <li><a id="toc-Characters-1" href="#Chars">3.6.1.2 Characters</a></li>
  93. </ul></li>
  94. <li><a id="toc-Number-Constants" href="#Numbers">3.6.2 Number Constants</a>
  95. <ul class="no-bullet">
  96. <li><a id="toc-Integers-1" href="#Integers">3.6.2.1 Integers</a></li>
  97. <li><a id="toc-Bignums-1" href="#Bignums">3.6.2.2 Bignums</a></li>
  98. <li><a id="toc-Flonums-1" href="#Flonums">3.6.2.3 Flonums</a></li>
  99. </ul></li>
  100. </ul></li>
  101. </ul></li>
  102. <li><a id="toc-Sections-and-Relocation" href="#Sections">4 Sections and Relocation</a>
  103. <ul class="no-bullet">
  104. <li><a id="toc-Background" href="#Secs-Background">4.1 Background</a></li>
  105. <li><a id="toc-Linker-Sections" href="#Ld-Sections">4.2 Linker Sections</a></li>
  106. <li><a id="toc-Assembler-Internal-Sections" href="#As-Sections">4.3 Assembler Internal Sections</a></li>
  107. <li><a id="toc-Sub_002dSections-1" href="#Sub_002dSections">4.4 Sub-Sections</a></li>
  108. <li><a id="toc-bss-Section" href="#bss">4.5 bss Section</a></li>
  109. </ul></li>
  110. <li><a id="toc-Symbols-2" href="#Symbols">5 Symbols</a>
  111. <ul class="no-bullet">
  112. <li><a id="toc-Labels-1" href="#Labels">5.1 Labels</a></li>
  113. <li><a id="toc-Giving-Symbols-Other-Values" href="#Setting-Symbols">5.2 Giving Symbols Other Values</a></li>
  114. <li><a id="toc-Symbol-Names-1" href="#Symbol-Names">5.3 Symbol Names</a></li>
  115. <li><a id="toc-The-Special-Dot-Symbol" href="#Dot">5.4 The Special Dot Symbol</a></li>
  116. <li><a id="toc-Symbol-Attributes-1" href="#Symbol-Attributes">5.5 Symbol Attributes</a>
  117. <ul class="no-bullet">
  118. <li><a id="toc-Value" href="#Symbol-Value">5.5.1 Value</a></li>
  119. <li><a id="toc-Type-1" href="#Symbol-Type">5.5.2 Type</a></li>
  120. <li><a id="toc-Symbol-Attributes_003a-a_002eout" href="#a_002eout-Symbols">5.5.3 Symbol Attributes: <code>a.out</code></a>
  121. <ul class="no-bullet">
  122. <li><a id="toc-Descriptor" href="#Symbol-Desc">5.5.3.1 Descriptor</a></li>
  123. <li><a id="toc-Other" href="#Symbol-Other">5.5.3.2 Other</a></li>
  124. </ul></li>
  125. <li><a id="toc-Symbol-Attributes-for-COFF" href="#COFF-Symbols">5.5.4 Symbol Attributes for COFF</a>
  126. <ul class="no-bullet">
  127. <li><a id="toc-Primary-Attributes" href="#Primary-Attributes">5.5.4.1 Primary Attributes</a></li>
  128. <li><a id="toc-Auxiliary-Attributes" href="#Auxiliary-Attributes">5.5.4.2 Auxiliary Attributes</a></li>
  129. </ul></li>
  130. <li><a id="toc-Symbol-Attributes-for-SOM" href="#SOM-Symbols">5.5.5 Symbol Attributes for SOM</a></li>
  131. </ul></li>
  132. </ul></li>
  133. <li><a id="toc-Expressions-1" href="#Expressions">6 Expressions</a>
  134. <ul class="no-bullet">
  135. <li><a id="toc-Empty-Expressions" href="#Empty-Exprs">6.1 Empty Expressions</a></li>
  136. <li><a id="toc-Integer-Expressions" href="#Integer-Exprs">6.2 Integer Expressions</a>
  137. <ul class="no-bullet">
  138. <li><a id="toc-Arguments-1" href="#Arguments">6.2.1 Arguments</a></li>
  139. <li><a id="toc-Operators-1" href="#Operators">6.2.2 Operators</a></li>
  140. <li><a id="toc-Prefix-Operator" href="#Prefix-Ops">6.2.3 Prefix Operator</a></li>
  141. <li><a id="toc-Infix-Operators" href="#Infix-Ops">6.2.4 Infix Operators</a></li>
  142. </ul></li>
  143. </ul></li>
  144. <li><a id="toc-Assembler-Directives" href="#Pseudo-Ops">7 Assembler Directives</a>
  145. <ul class="no-bullet">
  146. <li><a id="toc-_002eabort" href="#Abort">7.1 <code>.abort</code></a></li>
  147. <li><a id="toc-_002eABORT-_0028COFF_0029" href="#ABORT-_0028COFF_0029">7.2 <code>.ABORT</code> (COFF)</a></li>
  148. <li><a id="toc-_002ealign-_005babs_002dexpr_005b_002c-abs_002dexpr_005b_002c-abs_002dexpr_005d_005d_005d" href="#Align">7.3 <code>.align [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code></a></li>
  149. <li><a id="toc-_002ealtmacro" href="#Altmacro">7.4 <code>.altmacro</code></a></li>
  150. <li><a id="toc-_002eascii-_0022string_0022_2026" href="#Ascii">7.5 <code>.ascii &quot;<var>string</var>&quot;</code>&hellip;</a></li>
  151. <li><a id="toc-_002easciz-_0022string_0022_2026" href="#Asciz">7.6 <code>.asciz &quot;<var>string</var>&quot;</code>&hellip;</a></li>
  152. <li><a id="toc-_002eattach_005fto_005fgroup-name" href="#Attach_005fto_005fgroup">7.7 <code>.attach_to_group <var>name</var></code></a></li>
  153. <li><a id="toc-_002ebalign_005bwl_005d-_005babs_002dexpr_005b_002c-abs_002dexpr_005b_002c-abs_002dexpr_005d_005d_005d" href="#Balign">7.8 <code>.balign[wl] [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code></a></li>
  154. <li><a id="toc-_002ebss-subsection" href="#Bss">7.9 <code>.bss <var>subsection</var></code></a></li>
  155. <li><a id="toc-Bundle-directives-1" href="#Bundle-directives">7.10 Bundle directives</a>
  156. <ul class="no-bullet">
  157. <li><a id="toc-_002ebundle_005falign_005fmode-abs_002dexpr" href="#g_t_002ebundle_005falign_005fmode-abs_002dexpr">7.10.1 <code>.bundle_align_mode <var>abs-expr</var></code></a></li>
  158. <li><a id="toc-_002ebundle_005flock-and-_002ebundle_005funlock" href="#g_t_002ebundle_005flock-and-_002ebundle_005funlock">7.10.2 <code>.bundle_lock</code> and <code>.bundle_unlock</code></a></li>
  159. </ul></li>
  160. <li><a id="toc-_002ebyte-expressions" href="#Byte">7.11 <code>.byte <var>expressions</var></code></a></li>
  161. <li><a id="toc-CFI-directives-1" href="#CFI-directives">7.12 CFI directives</a>
  162. <ul class="no-bullet">
  163. <li><a id="toc-_002ecfi_005fsections-section_005flist" href="#g_t_002ecfi_005fsections-section_005flist">7.12.1 <code>.cfi_sections <var>section_list</var></code></a></li>
  164. <li><a id="toc-_002ecfi_005fstartproc-_005bsimple_005d" href="#g_t_002ecfi_005fstartproc-_005bsimple_005d">7.12.2 <code>.cfi_startproc [simple]</code></a></li>
  165. <li><a id="toc-_002ecfi_005fendproc" href="#g_t_002ecfi_005fendproc">7.12.3 <code>.cfi_endproc</code></a></li>
  166. <li><a id="toc-_002ecfi_005fpersonality-encoding-_005b_002c-exp_005d" href="#g_t_002ecfi_005fpersonality-encoding-_005b_002c-exp_005d">7.12.4 <code>.cfi_personality <var>encoding</var> [, <var>exp</var>]</code></a></li>
  167. <li><a id="toc-_002ecfi_005fpersonality_005fid-id" href="#g_t_002ecfi_005fpersonality_005fid-id">7.12.5 <code>.cfi_personality_id <var>id</var></code></a></li>
  168. <li><a id="toc-_002ecfi_005ffde_005fdata-_005bopcode1-_005b_002c-_2026_005d_005d" href="#g_t_002ecfi_005ffde_005fdata-_005bopcode1-_005b_002c-_2026_005d_005d">7.12.6 <code>.cfi_fde_data [<var>opcode1</var> [, &hellip;]]</code></a></li>
  169. <li><a id="toc-_002ecfi_005flsda-encoding-_005b_002c-exp_005d" href="#g_t_002ecfi_005flsda-encoding-_005b_002c-exp_005d">7.12.7 <code>.cfi_lsda <var>encoding</var> [, <var>exp</var>]</code></a></li>
  170. <li><a id="toc-_002ecfi_005finline_005flsda-_005balign_005d" href="#g_t_002ecfi_005finline_005flsda-_005balign_005d">7.12.8 <code>.cfi_inline_lsda</code> [<var>align</var>]</a></li>
  171. <li><a id="toc-_002ecfi_005fdef_005fcfa-register_002c-offset" href="#g_t_002ecfi_005fdef_005fcfa-register_002c-offset">7.12.9 <code>.cfi_def_cfa <var>register</var>, <var>offset</var></code></a></li>
  172. <li><a id="toc-_002ecfi_005fdef_005fcfa_005fregister-register" href="#g_t_002ecfi_005fdef_005fcfa_005fregister-register">7.12.10 <code>.cfi_def_cfa_register <var>register</var></code></a></li>
  173. <li><a id="toc-_002ecfi_005fdef_005fcfa_005foffset-offset" href="#g_t_002ecfi_005fdef_005fcfa_005foffset-offset">7.12.11 <code>.cfi_def_cfa_offset <var>offset</var></code></a></li>
  174. <li><a id="toc-_002ecfi_005fadjust_005fcfa_005foffset-offset" href="#g_t_002ecfi_005fadjust_005fcfa_005foffset-offset">7.12.12 <code>.cfi_adjust_cfa_offset <var>offset</var></code></a></li>
  175. <li><a id="toc-_002ecfi_005foffset-register_002c-offset" href="#g_t_002ecfi_005foffset-register_002c-offset">7.12.13 <code>.cfi_offset <var>register</var>, <var>offset</var></code></a></li>
  176. <li><a id="toc-_002ecfi_005fval_005foffset-register_002c-offset" href="#g_t_002ecfi_005fval_005foffset-register_002c-offset">7.12.14 <code>.cfi_val_offset <var>register</var>, <var>offset</var></code></a></li>
  177. <li><a id="toc-_002ecfi_005frel_005foffset-register_002c-offset" href="#g_t_002ecfi_005frel_005foffset-register_002c-offset">7.12.15 <code>.cfi_rel_offset <var>register</var>, <var>offset</var></code></a></li>
  178. <li><a id="toc-_002ecfi_005fregister-register1_002c-register2" href="#g_t_002ecfi_005fregister-register1_002c-register2">7.12.16 <code>.cfi_register <var>register1</var>, <var>register2</var></code></a></li>
  179. <li><a id="toc-_002ecfi_005frestore-register" href="#g_t_002ecfi_005frestore-register">7.12.17 <code>.cfi_restore <var>register</var></code></a></li>
  180. <li><a id="toc-_002ecfi_005fundefined-register" href="#g_t_002ecfi_005fundefined-register">7.12.18 <code>.cfi_undefined <var>register</var></code></a></li>
  181. <li><a id="toc-_002ecfi_005fsame_005fvalue-register" href="#g_t_002ecfi_005fsame_005fvalue-register">7.12.19 <code>.cfi_same_value <var>register</var></code></a></li>
  182. <li><a id="toc-_002ecfi_005fremember_005fstate-and-_002ecfi_005frestore_005fstate" href="#g_t_002ecfi_005fremember_005fstate-and-_002ecfi_005frestore_005fstate">7.12.20 <code>.cfi_remember_state</code> and <code>.cfi_restore_state</code></a></li>
  183. <li><a id="toc-_002ecfi_005freturn_005fcolumn-register" href="#g_t_002ecfi_005freturn_005fcolumn-register">7.12.21 <code>.cfi_return_column <var>register</var></code></a></li>
  184. <li><a id="toc-_002ecfi_005fsignal_005fframe" href="#g_t_002ecfi_005fsignal_005fframe">7.12.22 <code>.cfi_signal_frame</code></a></li>
  185. <li><a id="toc-_002ecfi_005fwindow_005fsave" href="#g_t_002ecfi_005fwindow_005fsave">7.12.23 <code>.cfi_window_save</code></a></li>
  186. <li><a id="toc-_002ecfi_005fescape-expression_005b_002c-_2026_005d" href="#g_t_002ecfi_005fescape-expression_005b_002c-_2026_005d">7.12.24 <code>.cfi_escape</code> <var>expression</var>[, &hellip;]</a></li>
  187. <li><a id="toc-_002ecfi_005fval_005fencoded_005faddr-register_002c-encoding_002c-label" href="#g_t_002ecfi_005fval_005fencoded_005faddr-register_002c-encoding_002c-label">7.12.25 <code>.cfi_val_encoded_addr <var>register</var>, <var>encoding</var>, <var>label</var></code></a></li>
  188. </ul></li>
  189. <li><a id="toc-_002ecomm-symbol-_002c-length-" href="#Comm">7.13 <code>.comm <var>symbol</var> , <var>length</var> </code></a></li>
  190. <li><a id="toc-_002edata-subsection" href="#Data">7.14 <code>.data <var>subsection</var></code></a></li>
  191. <li><a id="toc-_002edc_005bsize_005d-expressions" href="#Dc">7.15 <code>.dc[<var>size</var>] <var>expressions</var></code></a></li>
  192. <li><a id="toc-_002edcb_005bsize_005d-number-_005b_002cfill_005d" href="#Dcb">7.16 <code>.dcb[<var>size</var>] <var>number</var> [,<var>fill</var>]</code></a></li>
  193. <li><a id="toc-_002eds_005bsize_005d-number-_005b_002cfill_005d" href="#Ds">7.17 <code>.ds[<var>size</var>] <var>number</var> [,<var>fill</var>]</code></a></li>
  194. <li><a id="toc-_002edef-name" href="#Def">7.18 <code>.def <var>name</var></code></a></li>
  195. <li><a id="toc-_002edesc-symbol_002c-abs_002dexpression" href="#Desc">7.19 <code>.desc <var>symbol</var>, <var>abs-expression</var></code></a></li>
  196. <li><a id="toc-_002edim" href="#Dim">7.20 <code>.dim</code></a></li>
  197. <li><a id="toc-_002edouble-flonums" href="#Double">7.21 <code>.double <var>flonums</var></code></a></li>
  198. <li><a id="toc-_002eeject" href="#Eject">7.22 <code>.eject</code></a></li>
  199. <li><a id="toc-_002eelse" href="#Else">7.23 <code>.else</code></a></li>
  200. <li><a id="toc-_002eelseif" href="#Elseif">7.24 <code>.elseif</code></a></li>
  201. <li><a id="toc-_002eend" href="#End">7.25 <code>.end</code></a></li>
  202. <li><a id="toc-_002eendef" href="#Endef">7.26 <code>.endef</code></a></li>
  203. <li><a id="toc-_002eendfunc" href="#Endfunc">7.27 <code>.endfunc</code></a></li>
  204. <li><a id="toc-_002eendif" href="#Endif">7.28 <code>.endif</code></a></li>
  205. <li><a id="toc-_002eequ-symbol_002c-expression" href="#Equ">7.29 <code>.equ <var>symbol</var>, <var>expression</var></code></a></li>
  206. <li><a id="toc-_002eequiv-symbol_002c-expression" href="#Equiv">7.30 <code>.equiv <var>symbol</var>, <var>expression</var></code></a></li>
  207. <li><a id="toc-_002eeqv-symbol_002c-expression" href="#Eqv">7.31 <code>.eqv <var>symbol</var>, <var>expression</var></code></a></li>
  208. <li><a id="toc-_002eerr" href="#Err">7.32 <code>.err</code></a></li>
  209. <li><a id="toc-_002eerror-_0022string_0022" href="#Error">7.33 <code>.error &quot;<var>string</var>&quot;</code></a></li>
  210. <li><a id="toc-_002eexitm" href="#Exitm">7.34 <code>.exitm</code></a></li>
  211. <li><a id="toc-_002eextern" href="#Extern">7.35 <code>.extern</code></a></li>
  212. <li><a id="toc-_002efail-expression" href="#Fail">7.36 <code>.fail <var>expression</var></code></a></li>
  213. <li><a id="toc-_002efile" href="#File">7.37 <code>.file</code></a></li>
  214. <li><a id="toc-_002efill-repeat-_002c-size-_002c-value" href="#Fill">7.38 <code>.fill <var>repeat</var> , <var>size</var> , <var>value</var></code></a></li>
  215. <li><a id="toc-_002efloat-flonums" href="#Float">7.39 <code>.float <var>flonums</var></code></a></li>
  216. <li><a id="toc-_002efunc-name_005b_002clabel_005d" href="#Func">7.40 <code>.func <var>name</var>[,<var>label</var>]</code></a></li>
  217. <li><a id="toc-_002eglobal-symbol_002c-_002eglobl-symbol" href="#Global">7.41 <code>.global <var>symbol</var></code>, <code>.globl <var>symbol</var></code></a></li>
  218. <li><a id="toc-_002egnu_005fattribute-tag_002cvalue" href="#Gnu_005fattribute">7.42 <code>.gnu_attribute <var>tag</var>,<var>value</var></code></a></li>
  219. <li><a id="toc-_002ehidden-names" href="#Hidden">7.43 <code>.hidden <var>names</var></code></a></li>
  220. <li><a id="toc-_002ehword-expressions" href="#hword">7.44 <code>.hword <var>expressions</var></code></a></li>
  221. <li><a id="toc-_002eident" href="#Ident">7.45 <code>.ident</code></a></li>
  222. <li><a id="toc-_002eif-absolute-expression" href="#If">7.46 <code>.if <var>absolute expression</var></code></a></li>
  223. <li><a id="toc-_002eincbin-_0022file_0022_005b_002cskip_005b_002ccount_005d_005d" href="#Incbin">7.47 <code>.incbin &quot;<var>file</var>&quot;[,<var>skip</var>[,<var>count</var>]]</code></a></li>
  224. <li><a id="toc-_002einclude-_0022file_0022" href="#Include">7.48 <code>.include &quot;<var>file</var>&quot;</code></a></li>
  225. <li><a id="toc-_002eint-expressions" href="#Int">7.49 <code>.int <var>expressions</var></code></a></li>
  226. <li><a id="toc-_002einternal-names" href="#Internal">7.50 <code>.internal <var>names</var></code></a></li>
  227. <li><a id="toc-_002eirp-symbol_002cvalues_2026" href="#Irp">7.51 <code>.irp <var>symbol</var>,<var>values</var></code>&hellip;</a></li>
  228. <li><a id="toc-_002eirpc-symbol_002cvalues_2026" href="#Irpc">7.52 <code>.irpc <var>symbol</var>,<var>values</var></code>&hellip;</a></li>
  229. <li><a id="toc-_002elcomm-symbol-_002c-length" href="#Lcomm">7.53 <code>.lcomm <var>symbol</var> , <var>length</var></code></a></li>
  230. <li><a id="toc-_002elflags" href="#Lflags">7.54 <code>.lflags</code></a></li>
  231. <li><a id="toc-_002eline-line_002dnumber" href="#Line">7.55 <code>.line <var>line-number</var></code></a></li>
  232. <li><a id="toc-_002elinkonce-_005btype_005d" href="#Linkonce">7.56 <code>.linkonce [<var>type</var>]</code></a></li>
  233. <li><a id="toc-_002elist" href="#List">7.57 <code>.list</code></a></li>
  234. <li><a id="toc-_002eln-line_002dnumber" href="#Ln">7.58 <code>.ln <var>line-number</var></code></a></li>
  235. <li><a id="toc-_002eloc-fileno-lineno-_005bcolumn_005d-_005boptions_005d" href="#Loc">7.59 <code>.loc <var>fileno</var> <var>lineno</var> [<var>column</var>] [<var>options</var>]</code></a></li>
  236. <li><a id="toc-_002eloc_005fmark_005flabels-enable" href="#Loc_005fmark_005flabels">7.60 <code>.loc_mark_labels <var>enable</var></code></a></li>
  237. <li><a id="toc-_002elocal-names" href="#Local">7.61 <code>.local <var>names</var></code></a></li>
  238. <li><a id="toc-_002elong-expressions" href="#Long">7.62 <code>.long <var>expressions</var></code></a></li>
  239. <li><a id="toc-_002emacro" href="#Macro">7.63 <code>.macro</code></a></li>
  240. <li><a id="toc-_002emri-val" href="#MRI">7.64 <code>.mri <var>val</var></code></a></li>
  241. <li><a id="toc-_002enoaltmacro" href="#Noaltmacro">7.65 <code>.noaltmacro</code></a></li>
  242. <li><a id="toc-_002enolist" href="#Nolist">7.66 <code>.nolist</code></a></li>
  243. <li><a id="toc-_002enop-_005bsize_005d" href="#Nop">7.67 <code>.nop [<var>size</var>]</code></a></li>
  244. <li><a id="toc-_002enops-size_005b_002c-control_005d" href="#Nops">7.68 <code>.nops <var>size</var>[, <var>control</var>]</code></a></li>
  245. <li><a id="toc-_002eocta-bignums" href="#Octa">7.69 <code>.octa <var>bignums</var></code></a></li>
  246. <li><a id="toc-_002eoffset-loc" href="#Offset">7.70 <code>.offset <var>loc</var></code></a></li>
  247. <li><a id="toc-_002eorg-new_002dlc-_002c-fill" href="#Org">7.71 <code>.org <var>new-lc</var> , <var>fill</var></code></a></li>
  248. <li><a id="toc-_002ep2align_005bwl_005d-_005babs_002dexpr_005b_002c-abs_002dexpr_005b_002c-abs_002dexpr_005d_005d_005d" href="#P2align">7.72 <code>.p2align[wl] [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code></a></li>
  249. <li><a id="toc-_002epopsection" href="#PopSection">7.73 <code>.popsection</code></a></li>
  250. <li><a id="toc-_002eprevious" href="#Previous">7.74 <code>.previous</code></a></li>
  251. <li><a id="toc-_002eprint-string" href="#Print">7.75 <code>.print <var>string</var></code></a></li>
  252. <li><a id="toc-_002eprotected-names" href="#Protected">7.76 <code>.protected <var>names</var></code></a></li>
  253. <li><a id="toc-_002epsize-lines-_002c-columns" href="#Psize">7.77 <code>.psize <var>lines</var> , <var>columns</var></code></a></li>
  254. <li><a id="toc-_002epurgem-name" href="#Purgem">7.78 <code>.purgem <var>name</var></code></a></li>
  255. <li><a id="toc-_002epushsection-name-_005b_002c-subsection_005d-_005b_002c-_0022flags_0022_005b_002c-_0040type_005b_002carguments_005d_005d_005d" href="#PushSection">7.79 <code>.pushsection <var>name</var> [, <var>subsection</var>] [, &quot;<var>flags</var>&quot;[, @<var>type</var>[,<var>arguments</var>]]]</code></a></li>
  256. <li><a id="toc-_002equad-expressions" href="#Quad">7.80 <code>.quad <var>expressions</var></code></a></li>
  257. <li><a id="toc-_002ereloc-offset_002c-reloc_005fname_005b_002c-expression_005d" href="#Reloc">7.81 <code>.reloc <var>offset</var>, <var>reloc_name</var>[, <var>expression</var>]</code></a></li>
  258. <li><a id="toc-_002erept-count" href="#Rept">7.82 <code>.rept <var>count</var></code></a></li>
  259. <li><a id="toc-_002esbttl-_0022subheading_0022" href="#Sbttl">7.83 <code>.sbttl &quot;<var>subheading</var>&quot;</code></a></li>
  260. <li><a id="toc-_002escl-class" href="#Scl">7.84 <code>.scl <var>class</var></code></a></li>
  261. <li><a id="toc-_002esection-name" href="#Section">7.85 <code>.section <var>name</var></code></a></li>
  262. <li><a id="toc-_002eset-symbol_002c-expression" href="#Set">7.86 <code>.set <var>symbol</var>, <var>expression</var></code></a></li>
  263. <li><a id="toc-_002eshort-expressions" href="#Short">7.87 <code>.short <var>expressions</var></code></a></li>
  264. <li><a id="toc-_002esingle-flonums" href="#Single">7.88 <code>.single <var>flonums</var></code></a></li>
  265. <li><a id="toc-_002esize" href="#Size">7.89 <code>.size</code></a></li>
  266. <li><a id="toc-_002eskip-size-_005b_002cfill_005d" href="#Skip">7.90 <code>.skip <var>size</var> [,<var>fill</var>]</code></a></li>
  267. <li><a id="toc-_002esleb128-expressions" href="#Sleb128">7.91 <code>.sleb128 <var>expressions</var></code></a></li>
  268. <li><a id="toc-_002espace-size-_005b_002cfill_005d" href="#Space">7.92 <code>.space <var>size</var> [,<var>fill</var>]</code></a></li>
  269. <li><a id="toc-_002estabd_002c-_002estabn_002c-_002estabs" href="#Stab">7.93 <code>.stabd, .stabn, .stabs</code></a></li>
  270. <li><a id="toc-_002estring-_0022str_0022_002c-_002estring8-_0022str_0022_002c-_002estring16" href="#String">7.94 <code>.string</code> &quot;<var>str</var>&quot;, <code>.string8</code> &quot;<var>str</var>&quot;, <code>.string16</code></a></li>
  271. <li><a id="toc-_002estruct-expression" href="#Struct">7.95 <code>.struct <var>expression</var></code></a></li>
  272. <li><a id="toc-_002esubsection-name" href="#SubSection">7.96 <code>.subsection <var>name</var></code></a></li>
  273. <li><a id="toc-_002esymver" href="#Symver">7.97 <code>.symver</code></a></li>
  274. <li><a id="toc-_002etag-structname" href="#Tag">7.98 <code>.tag <var>structname</var></code></a></li>
  275. <li><a id="toc-_002etext-subsection" href="#Text">7.99 <code>.text <var>subsection</var></code></a></li>
  276. <li><a id="toc-_002etitle-_0022heading_0022" href="#Title">7.100 <code>.title &quot;<var>heading</var>&quot;</code></a></li>
  277. <li><a id="toc-_002etls_005fcommon-symbol_002c-length_005b_002c-alignment_005d" href="#Tls_005fcommon">7.101 <code>.tls_common <var>symbol</var>, <var>length</var>[, <var>alignment</var>]</code></a></li>
  278. <li><a id="toc-_002etype" href="#Type">7.102 <code>.type</code></a></li>
  279. <li><a id="toc-_002euleb128-expressions" href="#Uleb128">7.103 <code>.uleb128 <var>expressions</var></code></a></li>
  280. <li><a id="toc-_002eval-addr" href="#Val">7.104 <code>.val <var>addr</var></code></a></li>
  281. <li><a id="toc-_002eversion-_0022string_0022" href="#Version">7.105 <code>.version &quot;<var>string</var>&quot;</code></a></li>
  282. <li><a id="toc-_002evtable_005fentry-table_002c-offset" href="#VTableEntry">7.106 <code>.vtable_entry <var>table</var>, <var>offset</var></code></a></li>
  283. <li><a id="toc-_002evtable_005finherit-child_002c-parent" href="#VTableInherit">7.107 <code>.vtable_inherit <var>child</var>, <var>parent</var></code></a></li>
  284. <li><a id="toc-_002ewarning-_0022string_0022" href="#Warning">7.108 <code>.warning &quot;<var>string</var>&quot;</code></a></li>
  285. <li><a id="toc-_002eweak-names" href="#Weak">7.109 <code>.weak <var>names</var></code></a></li>
  286. <li><a id="toc-_002eweakref-alias_002c-target" href="#Weakref">7.110 <code>.weakref <var>alias</var>, <var>target</var></code></a></li>
  287. <li><a id="toc-_002eword-expressions" href="#Word">7.111 <code>.word <var>expressions</var></code></a></li>
  288. <li><a id="toc-_002ezero-size" href="#Zero">7.112 <code>.zero <var>size</var></code></a></li>
  289. <li><a id="toc-_002e2byte-expression-_005b_002c-expression_005d_002a" href="#g_t2byte">7.113 <code>.2byte <var>expression</var> [, <var>expression</var>]*</code></a></li>
  290. <li><a id="toc-_002e4byte-expression-_005b_002c-expression_005d_002a" href="#g_t4byte">7.114 <code>.4byte <var>expression</var> [, <var>expression</var>]*</code></a></li>
  291. <li><a id="toc-_002e8byte-expression-_005b_002c-expression_005d_002a" href="#g_t8byte">7.115 <code>.8byte <var>expression</var> [, <var>expression</var>]*</code></a></li>
  292. <li><a id="toc-Deprecated-Directives" href="#Deprecated">7.116 Deprecated Directives</a></li>
  293. </ul></li>
  294. <li><a id="toc-Object-Attributes-1" href="#Object-Attributes">8 Object Attributes</a>
  295. <ul class="no-bullet">
  296. <li><a id="toc-GNU-Object-Attributes-1" href="#GNU-Object-Attributes">8.1 <small>GNU</small> Object Attributes</a>
  297. <ul class="no-bullet">
  298. <li><a id="toc-Common-GNU-attributes" href="#Common-GNU-attributes">8.1.1 Common <small>GNU</small> attributes</a></li>
  299. <li><a id="toc-M680x0-Attributes" href="#M680x0-Attributes">8.1.2 M680x0 Attributes</a></li>
  300. <li><a id="toc-MIPS-Attributes" href="#MIPS-Attributes">8.1.3 MIPS Attributes</a></li>
  301. <li><a id="toc-PowerPC-Attributes" href="#PowerPC-Attributes">8.1.4 PowerPC Attributes</a></li>
  302. <li><a id="toc-IBM-z-Systems-Attributes" href="#IBM-z-Systems-Attributes">8.1.5 IBM z Systems Attributes</a></li>
  303. <li><a id="toc-MSP430-Attributes" href="#MSP430-Attributes">8.1.6 MSP430 Attributes</a></li>
  304. </ul></li>
  305. <li><a id="toc-Defining-New-Object-Attributes-1" href="#Defining-New-Object-Attributes">8.2 Defining New Object Attributes</a></li>
  306. </ul></li>
  307. <li><a id="toc-Machine-Dependent-Features" href="#Machine-Dependencies">9 Machine Dependent Features</a>
  308. <ul class="no-bullet">
  309. <li><a id="toc-AArch64-Dependent-Features" href="#AArch64_002dDependent">9.1 AArch64 Dependent Features</a>
  310. <ul class="no-bullet">
  311. <li><a id="toc-Options" href="#AArch64-Options">9.1.1 Options</a></li>
  312. <li><a id="toc-Architecture-Extensions" href="#AArch64-Extensions">9.1.2 Architecture Extensions</a></li>
  313. <li><a id="toc-Syntax-2" href="#AArch64-Syntax">9.1.3 Syntax</a>
  314. <ul class="no-bullet">
  315. <li><a id="toc-Special-Characters" href="#AArch64_002dChars">9.1.3.1 Special Characters</a></li>
  316. <li><a id="toc-Register-Names" href="#AArch64_002dRegs">9.1.3.2 Register Names</a></li>
  317. <li><a id="toc-Relocations" href="#AArch64_002dRelocations">9.1.3.3 Relocations</a></li>
  318. </ul></li>
  319. <li><a id="toc-Floating-Point" href="#AArch64-Floating-Point">9.1.4 Floating Point</a></li>
  320. <li><a id="toc-AArch64-Machine-Directives" href="#AArch64-Directives">9.1.5 AArch64 Machine Directives</a></li>
  321. <li><a id="toc-Opcodes" href="#AArch64-Opcodes">9.1.6 Opcodes</a></li>
  322. <li><a id="toc-Mapping-Symbols" href="#AArch64-Mapping-Symbols">9.1.7 Mapping Symbols</a></li>
  323. </ul></li>
  324. <li><a id="toc-Alpha-Dependent-Features" href="#Alpha_002dDependent">9.2 Alpha Dependent Features</a>
  325. <ul class="no-bullet">
  326. <li><a id="toc-Notes" href="#Alpha-Notes">9.2.1 Notes</a></li>
  327. <li><a id="toc-Options-1" href="#Alpha-Options">9.2.2 Options</a></li>
  328. <li><a id="toc-Syntax-3" href="#Alpha-Syntax">9.2.3 Syntax</a>
  329. <ul class="no-bullet">
  330. <li><a id="toc-Special-Characters-1" href="#Alpha_002dChars">9.2.3.1 Special Characters</a></li>
  331. <li><a id="toc-Register-Names-1" href="#Alpha_002dRegs">9.2.3.2 Register Names</a></li>
  332. <li><a id="toc-Relocations-1" href="#Alpha_002dRelocs">9.2.3.3 Relocations</a></li>
  333. </ul></li>
  334. <li><a id="toc-Floating-Point-1" href="#Alpha-Floating-Point">9.2.4 Floating Point</a></li>
  335. <li><a id="toc-Alpha-Assembler-Directives" href="#Alpha-Directives">9.2.5 Alpha Assembler Directives</a></li>
  336. <li><a id="toc-Opcodes-1" href="#Alpha-Opcodes">9.2.6 Opcodes</a></li>
  337. </ul></li>
  338. <li><a id="toc-ARC-Dependent-Features" href="#ARC_002dDependent">9.3 ARC Dependent Features</a>
  339. <ul class="no-bullet">
  340. <li><a id="toc-Options-2" href="#ARC-Options">9.3.1 Options</a></li>
  341. <li><a id="toc-Syntax-4" href="#ARC-Syntax">9.3.2 Syntax</a>
  342. <ul class="no-bullet">
  343. <li><a id="toc-Special-Characters-2" href="#ARC_002dChars">9.3.2.1 Special Characters</a></li>
  344. <li><a id="toc-Register-Names-2" href="#ARC_002dRegs">9.3.2.2 Register Names</a></li>
  345. </ul></li>
  346. <li><a id="toc-ARC-Machine-Directives" href="#ARC-Directives">9.3.3 ARC Machine Directives</a></li>
  347. <li><a id="toc-ARC-Assembler-Modifiers" href="#ARC-Modifiers">9.3.4 ARC Assembler Modifiers</a></li>
  348. <li><a id="toc-ARC-Pre_002ddefined-Symbols" href="#ARC-Symbols">9.3.5 ARC Pre-defined Symbols</a></li>
  349. <li><a id="toc-Opcodes-2" href="#ARC-Opcodes">9.3.6 Opcodes</a></li>
  350. </ul></li>
  351. <li><a id="toc-ARM-Dependent-Features" href="#ARM_002dDependent">9.4 ARM Dependent Features</a>
  352. <ul class="no-bullet">
  353. <li><a id="toc-Options-3" href="#ARM-Options">9.4.1 Options</a></li>
  354. <li><a id="toc-Syntax-5" href="#ARM-Syntax">9.4.2 Syntax</a>
  355. <ul class="no-bullet">
  356. <li><a id="toc-Instruction-Set-Syntax" href="#ARM_002dInstruction_002dSet">9.4.2.1 Instruction Set Syntax</a></li>
  357. <li><a id="toc-Special-Characters-3" href="#ARM_002dChars">9.4.2.2 Special Characters</a></li>
  358. <li><a id="toc-Register-Names-3" href="#ARM_002dRegs">9.4.2.3 Register Names</a></li>
  359. <li><a id="toc-ARM-relocation-generation" href="#ARM_002dRelocations">9.4.2.4 ARM relocation generation</a></li>
  360. <li><a id="toc-NEON-Alignment-Specifiers" href="#ARM_002dNeon_002dAlignment">9.4.2.5 NEON Alignment Specifiers</a></li>
  361. </ul></li>
  362. <li><a id="toc-Floating-Point-2" href="#ARM-Floating-Point">9.4.3 Floating Point</a></li>
  363. <li><a id="toc-ARM-Machine-Directives" href="#ARM-Directives">9.4.4 ARM Machine Directives</a></li>
  364. <li><a id="toc-Opcodes-3" href="#ARM-Opcodes">9.4.5 Opcodes</a></li>
  365. <li><a id="toc-Mapping-Symbols-1" href="#ARM-Mapping-Symbols">9.4.6 Mapping Symbols</a></li>
  366. <li><a id="toc-Unwinding" href="#ARM-Unwinding-Tutorial">9.4.7 Unwinding</a></li>
  367. </ul></li>
  368. <li><a id="toc-AVR-Dependent-Features" href="#AVR_002dDependent">9.5 AVR Dependent Features</a>
  369. <ul class="no-bullet">
  370. <li><a id="toc-Options-4" href="#AVR-Options">9.5.1 Options</a></li>
  371. <li><a id="toc-Syntax-6" href="#AVR-Syntax">9.5.2 Syntax</a>
  372. <ul class="no-bullet">
  373. <li><a id="toc-Special-Characters-4" href="#AVR_002dChars">9.5.2.1 Special Characters</a></li>
  374. <li><a id="toc-Register-Names-4" href="#AVR_002dRegs">9.5.2.2 Register Names</a></li>
  375. <li><a id="toc-Relocatable-Expression-Modifiers" href="#AVR_002dModifiers">9.5.2.3 Relocatable Expression Modifiers</a></li>
  376. </ul></li>
  377. <li><a id="toc-Opcodes-4" href="#AVR-Opcodes">9.5.3 Opcodes</a></li>
  378. <li><a id="toc-Pseudo-Instructions" href="#AVR-Pseudo-Instructions">9.5.4 Pseudo Instructions</a></li>
  379. </ul></li>
  380. <li><a id="toc-Blackfin-Dependent-Features" href="#Blackfin_002dDependent">9.6 Blackfin Dependent Features</a>
  381. <ul class="no-bullet">
  382. <li><a id="toc-Options-5" href="#Blackfin-Options">9.6.1 Options</a></li>
  383. <li><a id="toc-Syntax-7" href="#Blackfin-Syntax">9.6.2 Syntax</a></li>
  384. <li><a id="toc-Directives" href="#Blackfin-Directives">9.6.3 Directives</a></li>
  385. </ul></li>
  386. <li><a id="toc-BPF-Dependent-Features" href="#BPF_002dDependent">9.7 BPF Dependent Features</a>
  387. <ul class="no-bullet">
  388. <li><a id="toc-BPF-Options-1" href="#BPF-Options">9.7.1 BPF Options</a></li>
  389. <li><a id="toc-BPF-Special-Characters-1" href="#BPF-Special-Characters">9.7.2 BPF Special Characters</a></li>
  390. <li><a id="toc-BPF-Registers-1" href="#BPF-Registers">9.7.3 BPF Registers</a></li>
  391. <li><a id="toc-BPF-Directives-1" href="#BPF-Directives">9.7.4 BPF Directives</a></li>
  392. <li><a id="toc-BPF-Instructions-1" href="#BPF-Instructions">9.7.5 BPF Instructions</a>
  393. <ul class="no-bullet">
  394. <li><a id="toc-Arithmetic-instructions" href="#Arithmetic-instructions">9.7.5.1 Arithmetic instructions</a></li>
  395. <li><a id="toc-32_002dbit-arithmetic-instructions" href="#g_t32_002dbit-arithmetic-instructions">9.7.5.2 32-bit arithmetic instructions</a></li>
  396. <li><a id="toc-Endianness-conversion-instructions" href="#Endianness-conversion-instructions">9.7.5.3 Endianness conversion instructions</a></li>
  397. <li><a id="toc-Byte-swap-instructions" href="#Byte-swap-instructions">9.7.5.4 Byte swap instructions</a></li>
  398. <li><a id="toc-64_002dbit-load-and-pseudo-maps" href="#g_t64_002dbit-load-and-pseudo-maps">9.7.5.5 64-bit load and pseudo maps</a></li>
  399. <li><a id="toc-Load-instructions-for-socket-filters" href="#Load-instructions-for-socket-filters">9.7.5.6 Load instructions for socket filters</a></li>
  400. <li><a id="toc-Generic-load_002fstore-instructions" href="#Generic-load_002fstore-instructions">9.7.5.7 Generic load/store instructions</a></li>
  401. <li><a id="toc-Jump-instructions" href="#Jump-instructions">9.7.5.8 Jump instructions</a></li>
  402. <li><a id="toc-32_002dbit-jump-instructions" href="#g_t32_002dbit-jump-instructions">9.7.5.9 32-bit jump instructions</a></li>
  403. <li><a id="toc-Atomic-instructions" href="#Atomic-instructions">9.7.5.10 Atomic instructions</a></li>
  404. <li><a id="toc-32_002dbit-atomic-instructions" href="#g_t32_002dbit-atomic-instructions">9.7.5.11 32-bit atomic instructions</a></li>
  405. </ul></li>
  406. </ul></li>
  407. <li><a id="toc-CR16-Dependent-Features" href="#CR16_002dDependent">9.8 CR16 Dependent Features</a>
  408. <ul class="no-bullet">
  409. <li><a id="toc-CR16-Operand-Qualifiers-1" href="#CR16-Operand-Qualifiers">9.8.1 CR16 Operand Qualifiers</a></li>
  410. <li><a id="toc-CR16-Syntax-1" href="#CR16-Syntax">9.8.2 CR16 Syntax</a>
  411. <ul class="no-bullet">
  412. <li><a id="toc-Special-Characters-5" href="#CR16_002dChars">9.8.2.1 Special Characters</a></li>
  413. </ul></li>
  414. </ul></li>
  415. <li><a id="toc-CRIS-Dependent-Features" href="#CRIS_002dDependent">9.9 CRIS Dependent Features</a>
  416. <ul class="no-bullet">
  417. <li><a id="toc-Command_002dline-Options" href="#CRIS_002dOpts">9.9.1 Command-line Options</a></li>
  418. <li><a id="toc-Instruction-expansion" href="#CRIS_002dExpand">9.9.2 Instruction expansion</a></li>
  419. <li><a id="toc-Symbols-3" href="#CRIS_002dSymbols">9.9.3 Symbols</a></li>
  420. <li><a id="toc-Syntax-8" href="#CRIS_002dSyntax">9.9.4 Syntax</a>
  421. <ul class="no-bullet">
  422. <li><a id="toc-Special-Characters-6" href="#CRIS_002dChars">9.9.4.1 Special Characters</a></li>
  423. <li><a id="toc-Symbols-in-position_002dindependent-code" href="#CRIS_002dPic">9.9.4.2 Symbols in position-independent code</a></li>
  424. <li><a id="toc-Register-names" href="#CRIS_002dRegs">9.9.4.3 Register names</a></li>
  425. <li><a id="toc-Assembler-Directives-1" href="#CRIS_002dPseudos">9.9.4.4 Assembler Directives</a></li>
  426. </ul></li>
  427. </ul></li>
  428. <li><a id="toc-C_002dSKY-Dependent-Features" href="#C_002dSKY_002dDependent">9.10 C-SKY Dependent Features</a>
  429. <ul class="no-bullet">
  430. <li><a id="toc-Options-6" href="#C_002dSKY-Options">9.10.1 Options</a></li>
  431. <li><a id="toc-Syntax-9" href="#C_002dSKY-Syntax">9.10.2 Syntax</a></li>
  432. </ul></li>
  433. <li><a id="toc-D10V-Dependent-Features" href="#D10V_002dDependent">9.11 D10V Dependent Features</a>
  434. <ul class="no-bullet">
  435. <li><a id="toc-D10V-Options" href="#D10V_002dOpts">9.11.1 D10V Options</a></li>
  436. <li><a id="toc-Syntax-10" href="#D10V_002dSyntax">9.11.2 Syntax</a>
  437. <ul class="no-bullet">
  438. <li><a id="toc-Size-Modifiers" href="#D10V_002dSize">9.11.2.1 Size Modifiers</a></li>
  439. <li><a id="toc-Sub_002dInstructions" href="#D10V_002dSubs">9.11.2.2 Sub-Instructions</a></li>
  440. <li><a id="toc-Special-Characters-7" href="#D10V_002dChars">9.11.2.3 Special Characters</a></li>
  441. <li><a id="toc-Register-Names-5" href="#D10V_002dRegs">9.11.2.4 Register Names</a></li>
  442. <li><a id="toc-Addressing-Modes" href="#D10V_002dAddressing">9.11.2.5 Addressing Modes</a></li>
  443. <li><a id="toc-_0040WORD-Modifier" href="#D10V_002dWord">9.11.2.6 @WORD Modifier</a></li>
  444. </ul></li>
  445. <li><a id="toc-Floating-Point-3" href="#D10V_002dFloat">9.11.3 Floating Point</a></li>
  446. <li><a id="toc-Opcodes-5" href="#D10V_002dOpcodes">9.11.4 Opcodes</a></li>
  447. </ul></li>
  448. <li><a id="toc-D30V-Dependent-Features" href="#D30V_002dDependent">9.12 D30V Dependent Features</a>
  449. <ul class="no-bullet">
  450. <li><a id="toc-D30V-Options" href="#D30V_002dOpts">9.12.1 D30V Options</a></li>
  451. <li><a id="toc-Syntax-11" href="#D30V_002dSyntax">9.12.2 Syntax</a>
  452. <ul class="no-bullet">
  453. <li><a id="toc-Size-Modifiers-1" href="#D30V_002dSize">9.12.2.1 Size Modifiers</a></li>
  454. <li><a id="toc-Sub_002dInstructions-1" href="#D30V_002dSubs">9.12.2.2 Sub-Instructions</a></li>
  455. <li><a id="toc-Special-Characters-8" href="#D30V_002dChars">9.12.2.3 Special Characters</a></li>
  456. <li><a id="toc-Guarded-Execution" href="#D30V_002dGuarded">9.12.2.4 Guarded Execution</a></li>
  457. <li><a id="toc-Register-Names-6" href="#D30V_002dRegs">9.12.2.5 Register Names</a></li>
  458. <li><a id="toc-Addressing-Modes-1" href="#D30V_002dAddressing">9.12.2.6 Addressing Modes</a></li>
  459. </ul></li>
  460. <li><a id="toc-Floating-Point-4" href="#D30V_002dFloat">9.12.3 Floating Point</a></li>
  461. <li><a id="toc-Opcodes-6" href="#D30V_002dOpcodes">9.12.4 Opcodes</a></li>
  462. </ul></li>
  463. <li><a id="toc-Epiphany-Dependent-Features" href="#Epiphany_002dDependent">9.13 Epiphany Dependent Features</a>
  464. <ul class="no-bullet">
  465. <li><a id="toc-Options-7" href="#Epiphany-Options">9.13.1 Options</a></li>
  466. <li><a id="toc-Epiphany-Syntax-1" href="#Epiphany-Syntax">9.13.2 Epiphany Syntax</a>
  467. <ul class="no-bullet">
  468. <li><a id="toc-Special-Characters-9" href="#Epiphany_002dChars">9.13.2.1 Special Characters</a></li>
  469. </ul></li>
  470. </ul></li>
  471. <li><a id="toc-H8_002f300-Dependent-Features" href="#H8_002f300_002dDependent">9.14 H8/300 Dependent Features</a>
  472. <ul class="no-bullet">
  473. <li><a id="toc-Options-8" href="#H8_002f300-Options">9.14.1 Options</a></li>
  474. <li><a id="toc-Syntax-12" href="#H8_002f300-Syntax">9.14.2 Syntax</a>
  475. <ul class="no-bullet">
  476. <li><a id="toc-Special-Characters-10" href="#H8_002f300_002dChars">9.14.2.1 Special Characters</a></li>
  477. <li><a id="toc-Register-Names-7" href="#H8_002f300_002dRegs">9.14.2.2 Register Names</a></li>
  478. <li><a id="toc-Addressing-Modes-2" href="#H8_002f300_002dAddressing">9.14.2.3 Addressing Modes</a></li>
  479. </ul></li>
  480. <li><a id="toc-Floating-Point-5" href="#H8_002f300-Floating-Point">9.14.3 Floating Point</a></li>
  481. <li><a id="toc-H8_002f300-Machine-Directives" href="#H8_002f300-Directives">9.14.4 H8/300 Machine Directives</a></li>
  482. <li><a id="toc-Opcodes-7" href="#H8_002f300-Opcodes">9.14.5 Opcodes</a></li>
  483. </ul></li>
  484. <li><a id="toc-HPPA-Dependent-Features" href="#HPPA_002dDependent">9.15 HPPA Dependent Features</a>
  485. <ul class="no-bullet">
  486. <li><a id="toc-Notes-1" href="#HPPA-Notes">9.15.1 Notes</a></li>
  487. <li><a id="toc-Options-9" href="#HPPA-Options">9.15.2 Options</a></li>
  488. <li><a id="toc-Syntax-13" href="#HPPA-Syntax">9.15.3 Syntax</a></li>
  489. <li><a id="toc-Floating-Point-6" href="#HPPA-Floating-Point">9.15.4 Floating Point</a></li>
  490. <li><a id="toc-HPPA-Assembler-Directives" href="#HPPA-Directives">9.15.5 HPPA Assembler Directives</a></li>
  491. <li><a id="toc-Opcodes-8" href="#HPPA-Opcodes">9.15.6 Opcodes</a></li>
  492. </ul></li>
  493. <li><a id="toc-80386-Dependent-Features" href="#i386_002dDependent">9.16 80386 Dependent Features</a>
  494. <ul class="no-bullet">
  495. <li><a id="toc-Options-10" href="#i386_002dOptions">9.16.1 Options</a></li>
  496. <li><a id="toc-x86-specific-Directives" href="#i386_002dDirectives">9.16.2 x86 specific Directives</a></li>
  497. <li><a id="toc-i386-Syntactical-Considerations" href="#i386_002dSyntax">9.16.3 i386 Syntactical Considerations</a>
  498. <ul class="no-bullet">
  499. <li><a id="toc-AT_0026T-Syntax-versus-Intel-Syntax" href="#i386_002dVariations">9.16.3.1 AT&amp;T Syntax versus Intel Syntax</a></li>
  500. <li><a id="toc-Special-Characters-11" href="#i386_002dChars">9.16.3.2 Special Characters</a></li>
  501. </ul></li>
  502. <li><a id="toc-i386_002dMnemonics-1" href="#i386_002dMnemonics">9.16.4 i386-Mnemonics</a>
  503. <ul class="no-bullet">
  504. <li><a id="toc-Instruction-Naming" href="#Instruction-Naming">9.16.4.1 Instruction Naming</a></li>
  505. <li><a id="toc-AT_0026T-Mnemonic-versus-Intel-Mnemonic" href="#AT_0026T-Mnemonic-versus-Intel-Mnemonic">9.16.4.2 AT&amp;T Mnemonic versus Intel Mnemonic</a></li>
  506. </ul></li>
  507. <li><a id="toc-Register-Naming" href="#i386_002dRegs">9.16.5 Register Naming</a></li>
  508. <li><a id="toc-Instruction-Prefixes" href="#i386_002dPrefixes">9.16.6 Instruction Prefixes</a></li>
  509. <li><a id="toc-Memory-References" href="#i386_002dMemory">9.16.7 Memory References</a></li>
  510. <li><a id="toc-Handling-of-Jump-Instructions" href="#i386_002dJumps">9.16.8 Handling of Jump Instructions</a></li>
  511. <li><a id="toc-Floating-Point-7" href="#i386_002dFloat">9.16.9 Floating Point</a></li>
  512. <li><a id="toc-Intel_0027s-MMX-and-AMD_0027s-3DNow_0021-SIMD-Operations" href="#i386_002dSIMD">9.16.10 Intel&rsquo;s MMX and AMD&rsquo;s 3DNow! SIMD Operations</a></li>
  513. <li><a id="toc-AMD_0027s-Lightweight-Profiling-Instructions" href="#i386_002dLWP">9.16.11 AMD&rsquo;s Lightweight Profiling Instructions</a></li>
  514. <li><a id="toc-Bit-Manipulation-Instructions" href="#i386_002dBMI">9.16.12 Bit Manipulation Instructions</a></li>
  515. <li><a id="toc-AMD_0027s-Trailing-Bit-Manipulation-Instructions" href="#i386_002dTBM">9.16.13 AMD&rsquo;s Trailing Bit Manipulation Instructions</a></li>
  516. <li><a id="toc-Writing-16_002dbit-Code" href="#i386_002d16bit">9.16.14 Writing 16-bit Code</a></li>
  517. <li><a id="toc-Specifying-CPU-Architecture" href="#i386_002dArch">9.16.15 Specifying CPU Architecture</a></li>
  518. <li><a id="toc-AMD64-ISA-vs_002e-Intel64-ISA" href="#i386_002dISA">9.16.16 AMD64 ISA vs. Intel64 ISA</a></li>
  519. <li><a id="toc-AT_0026T-Syntax-bugs" href="#i386_002dBugs">9.16.17 AT&amp;T Syntax bugs</a></li>
  520. <li><a id="toc-Notes-2" href="#i386_002dNotes">9.16.18 Notes</a></li>
  521. </ul></li>
  522. <li><a id="toc-IA_002d64-Dependent-Features" href="#IA_002d64_002dDependent">9.17 IA-64 Dependent Features</a>
  523. <ul class="no-bullet">
  524. <li><a id="toc-Options-11" href="#IA_002d64-Options">9.17.1 Options</a></li>
  525. <li><a id="toc-Syntax-14" href="#IA_002d64-Syntax">9.17.2 Syntax</a>
  526. <ul class="no-bullet">
  527. <li><a id="toc-Special-Characters-12" href="#IA_002d64_002dChars">9.17.2.1 Special Characters</a></li>
  528. <li><a id="toc-Register-Names-8" href="#IA_002d64_002dRegs">9.17.2.2 Register Names</a></li>
  529. <li><a id="toc-IA_002d64-Processor_002dStatus_002dRegister-_0028PSR_0029-Bit-Names" href="#IA_002d64_002dBits">9.17.2.3 IA-64 Processor-Status-Register (PSR) Bit Names</a></li>
  530. <li><a id="toc-Relocations-2" href="#IA_002d64_002dRelocs">9.17.2.4 Relocations</a></li>
  531. </ul></li>
  532. <li><a id="toc-Opcodes-9" href="#IA_002d64-Opcodes">9.17.3 Opcodes</a></li>
  533. </ul></li>
  534. <li><a id="toc-IP2K-Dependent-Features" href="#IP2K_002dDependent">9.18 IP2K Dependent Features</a>
  535. <ul class="no-bullet">
  536. <li><a id="toc-IP2K-Options" href="#IP2K_002dOpts">9.18.1 IP2K Options</a></li>
  537. <li><a id="toc-IP2K-Syntax" href="#IP2K_002dSyntax">9.18.2 IP2K Syntax</a>
  538. <ul class="no-bullet">
  539. <li><a id="toc-Special-Characters-13" href="#IP2K_002dChars">9.18.2.1 Special Characters</a></li>
  540. </ul></li>
  541. </ul></li>
  542. <li><a id="toc-LM32-Dependent-Features" href="#LM32_002dDependent">9.19 LM32 Dependent Features</a>
  543. <ul class="no-bullet">
  544. <li><a id="toc-Options-12" href="#LM32-Options">9.19.1 Options</a></li>
  545. <li><a id="toc-Syntax-15" href="#LM32-Syntax">9.19.2 Syntax</a>
  546. <ul class="no-bullet">
  547. <li><a id="toc-Register-Names-9" href="#LM32_002dRegs">9.19.2.1 Register Names</a></li>
  548. <li><a id="toc-Relocatable-Expression-Modifiers-1" href="#LM32_002dModifiers">9.19.2.2 Relocatable Expression Modifiers</a></li>
  549. <li><a id="toc-Special-Characters-14" href="#LM32_002dChars">9.19.2.3 Special Characters</a></li>
  550. </ul></li>
  551. <li><a id="toc-Opcodes-10" href="#LM32-Opcodes">9.19.3 Opcodes</a></li>
  552. </ul></li>
  553. <li><a id="toc-KVX-Dependent-Features" href="#KVX_002dDependent">9.20 KVX Dependent Features</a>
  554. <ul class="no-bullet">
  555. <li><a id="toc-Options-13" href="#KVX-Options">9.20.1 Options</a></li>
  556. <li><a id="toc-KVX-Machine-Directives" href="#KVX-Directives">9.20.2 KVX Machine Directives</a></li>
  557. </ul></li>
  558. <li><a id="toc-M32C-Dependent-Features" href="#M32C_002dDependent">9.21 M32C Dependent Features</a>
  559. <ul class="no-bullet">
  560. <li><a id="toc-M32C-Options" href="#M32C_002dOpts">9.21.1 M32C Options</a></li>
  561. <li><a id="toc-M32C-Syntax" href="#M32C_002dSyntax">9.21.2 M32C Syntax</a>
  562. <ul class="no-bullet">
  563. <li><a id="toc-Symbolic-Operand-Modifiers" href="#M32C_002dModifiers">9.21.2.1 Symbolic Operand Modifiers</a></li>
  564. <li><a id="toc-Special-Characters-15" href="#M32C_002dChars">9.21.2.2 Special Characters</a></li>
  565. </ul></li>
  566. </ul></li>
  567. <li><a id="toc-M32R-Dependent-Features" href="#M32R_002dDependent">9.22 M32R Dependent Features</a>
  568. <ul class="no-bullet">
  569. <li><a id="toc-M32R-Options" href="#M32R_002dOpts">9.22.1 M32R Options</a></li>
  570. <li><a id="toc-M32R-Directives" href="#M32R_002dDirectives">9.22.2 M32R Directives</a></li>
  571. <li><a id="toc-M32R-Warnings" href="#M32R_002dWarnings">9.22.3 M32R Warnings</a></li>
  572. </ul></li>
  573. <li><a id="toc-M680x0-Dependent-Features" href="#M68K_002dDependent">9.23 M680x0 Dependent Features</a>
  574. <ul class="no-bullet">
  575. <li><a id="toc-M680x0-Options" href="#M68K_002dOpts">9.23.1 M680x0 Options</a></li>
  576. <li><a id="toc-Syntax-16" href="#M68K_002dSyntax">9.23.2 Syntax</a></li>
  577. <li><a id="toc-Motorola-Syntax" href="#M68K_002dMoto_002dSyntax">9.23.3 Motorola Syntax</a></li>
  578. <li><a id="toc-Floating-Point-8" href="#M68K_002dFloat">9.23.4 Floating Point</a></li>
  579. <li><a id="toc-680x0-Machine-Directives" href="#M68K_002dDirectives">9.23.5 680x0 Machine Directives</a></li>
  580. <li><a id="toc-Opcodes-11" href="#M68K_002dopcodes">9.23.6 Opcodes</a>
  581. <ul class="no-bullet">
  582. <li><a id="toc-Branch-Improvement" href="#M68K_002dBranch">9.23.6.1 Branch Improvement</a></li>
  583. <li><a id="toc-Special-Characters-16" href="#M68K_002dChars">9.23.6.2 Special Characters</a></li>
  584. </ul></li>
  585. </ul></li>
  586. <li><a id="toc-M68HC11-and-M68HC12-Dependent-Features" href="#M68HC11_002dDependent">9.24 M68HC11 and M68HC12 Dependent Features</a>
  587. <ul class="no-bullet">
  588. <li><a id="toc-M68HC11-and-M68HC12-Options" href="#M68HC11_002dOpts">9.24.1 M68HC11 and M68HC12 Options</a></li>
  589. <li><a id="toc-Syntax-17" href="#M68HC11_002dSyntax">9.24.2 Syntax</a></li>
  590. <li><a id="toc-Symbolic-Operand-Modifiers-1" href="#M68HC11_002dModifiers">9.24.3 Symbolic Operand Modifiers</a></li>
  591. <li><a id="toc-Assembler-Directives-2" href="#M68HC11_002dDirectives">9.24.4 Assembler Directives</a></li>
  592. <li><a id="toc-Floating-Point-9" href="#M68HC11_002dFloat">9.24.5 Floating Point</a></li>
  593. <li><a id="toc-Opcodes-12" href="#M68HC11_002dopcodes">9.24.6 Opcodes</a>
  594. <ul class="no-bullet">
  595. <li><a id="toc-Branch-Improvement-1" href="#M68HC11_002dBranch">9.24.6.1 Branch Improvement</a></li>
  596. </ul></li>
  597. </ul></li>
  598. <li><a id="toc-S12Z-Dependent-Features" href="#S12Z_002dDependent">9.25 S12Z Dependent Features</a>
  599. <ul class="no-bullet">
  600. <li><a id="toc-S12Z-Options-1" href="#S12Z-Options">9.25.1 S12Z Options</a></li>
  601. <li><a id="toc-Syntax-18" href="#S12Z-Syntax">9.25.2 Syntax</a>
  602. <ul class="no-bullet">
  603. <li><a id="toc-Overview-2" href="#S12Z-Syntax-Overview">9.25.2.1 Overview</a></li>
  604. <li><a id="toc-Addressing-Modes-3" href="#S12Z-Addressing-Modes">9.25.2.2 Addressing Modes</a></li>
  605. <li><a id="toc-Register-Notation" href="#S12Z-Register-Notation">9.25.2.3 Register Notation</a></li>
  606. </ul></li>
  607. </ul></li>
  608. <li><a id="toc-Meta-Dependent-Features" href="#Meta_002dDependent">9.26 Meta Dependent Features</a>
  609. <ul class="no-bullet">
  610. <li><a id="toc-Options-14" href="#Meta-Options">9.26.1 Options</a></li>
  611. <li><a id="toc-Syntax-19" href="#Meta-Syntax">9.26.2 Syntax</a>
  612. <ul class="no-bullet">
  613. <li><a id="toc-Special-Characters-17" href="#Meta_002dChars">9.26.2.1 Special Characters</a></li>
  614. <li><a id="toc-Register-Names-10" href="#Meta_002dRegs">9.26.2.2 Register Names</a></li>
  615. </ul></li>
  616. </ul></li>
  617. <li><a id="toc-MicroBlaze-Dependent-Features" href="#MicroBlaze_002dDependent">9.27 MicroBlaze Dependent Features</a>
  618. <ul class="no-bullet">
  619. <li><a id="toc-Directives-1" href="#MicroBlaze-Directives">9.27.1 Directives</a></li>
  620. <li><a id="toc-Syntax-for-the-MicroBlaze" href="#MicroBlaze-Syntax">9.27.2 Syntax for the MicroBlaze</a>
  621. <ul class="no-bullet">
  622. <li><a id="toc-Special-Characters-18" href="#MicroBlaze_002dChars">9.27.2.1 Special Characters</a></li>
  623. </ul></li>
  624. <li><a id="toc-Options-15" href="#MicroBlaze-Options">9.27.3 Options</a></li>
  625. </ul></li>
  626. <li><a id="toc-MIPS-Dependent-Features" href="#MIPS_002dDependent">9.28 MIPS Dependent Features</a>
  627. <ul class="no-bullet">
  628. <li><a id="toc-Assembler-options" href="#MIPS-Options">9.28.1 Assembler options</a></li>
  629. <li><a id="toc-High_002dlevel-assembly-macros" href="#MIPS-Macros">9.28.2 High-level assembly macros</a></li>
  630. <li><a id="toc-Directives-to-override-the-size-of-symbols" href="#MIPS-Symbol-Sizes">9.28.3 Directives to override the size of symbols</a></li>
  631. <li><a id="toc-Controlling-the-use-of-small-data-accesses" href="#MIPS-Small-Data">9.28.4 Controlling the use of small data accesses</a></li>
  632. <li><a id="toc-Directives-to-override-the-ISA-level" href="#MIPS-ISA">9.28.5 Directives to override the ISA level</a></li>
  633. <li><a id="toc-Directives-to-control-code-generation" href="#MIPS-assembly-options">9.28.6 Directives to control code generation</a></li>
  634. <li><a id="toc-Directives-for-extending-MIPS-16-bit-instructions" href="#MIPS-autoextend">9.28.7 Directives for extending MIPS 16 bit instructions</a></li>
  635. <li><a id="toc-Directive-to-mark-data-as-an-instruction" href="#MIPS-insn">9.28.8 Directive to mark data as an instruction</a></li>
  636. <li><a id="toc-Directives-to-control-the-FP-ABI" href="#MIPS-FP-ABIs">9.28.9 Directives to control the FP ABI</a>
  637. <ul class="no-bullet">
  638. <li><a id="toc-History-of-FP-ABIs" href="#MIPS-FP-ABI-History">9.28.9.1 History of FP ABIs</a></li>
  639. <li><a id="toc-Supported-FP-ABIs" href="#MIPS-FP-ABI-Variants">9.28.9.2 Supported FP ABIs</a></li>
  640. <li><a id="toc-Automatic-selection-of-FP-ABI" href="#MIPS-FP-ABI-Selection">9.28.9.3 Automatic selection of FP ABI</a></li>
  641. <li><a id="toc-Linking-different-FP-ABI-variants" href="#MIPS-FP-ABI-Compatibility">9.28.9.4 Linking different FP ABI variants</a></li>
  642. </ul></li>
  643. <li><a id="toc-Directives-to-record-which-NaN-encoding-is-being-used" href="#MIPS-NaN-Encodings">9.28.10 Directives to record which NaN encoding is being used</a></li>
  644. <li><a id="toc-Directives-to-save-and-restore-options" href="#MIPS-Option-Stack">9.28.11 Directives to save and restore options</a></li>
  645. <li><a id="toc-Directives-to-control-generation-of-MIPS-ASE-instructions" href="#MIPS-ASE-Instruction-Generation-Overrides">9.28.12 Directives to control generation of MIPS ASE instructions</a></li>
  646. <li><a id="toc-Directives-to-override-floating_002dpoint-options" href="#MIPS-Floating_002dPoint">9.28.13 Directives to override floating-point options</a></li>
  647. <li><a id="toc-Syntactical-considerations-for-the-MIPS-assembler" href="#MIPS-Syntax">9.28.14 Syntactical considerations for the MIPS assembler</a>
  648. <ul class="no-bullet">
  649. <li><a id="toc-Special-Characters-19" href="#MIPS_002dChars">9.28.14.1 Special Characters</a></li>
  650. </ul></li>
  651. </ul></li>
  652. <li><a id="toc-MMIX-Dependent-Features" href="#MMIX_002dDependent">9.29 MMIX Dependent Features</a>
  653. <ul class="no-bullet">
  654. <li><a id="toc-Command_002dline-Options-1" href="#MMIX_002dOpts">9.29.1 Command-line Options</a></li>
  655. <li><a id="toc-Instruction-expansion-1" href="#MMIX_002dExpand">9.29.2 Instruction expansion</a></li>
  656. <li><a id="toc-Syntax-20" href="#MMIX_002dSyntax">9.29.3 Syntax</a>
  657. <ul class="no-bullet">
  658. <li><a id="toc-Special-Characters-20" href="#MMIX_002dChars">9.29.3.1 Special Characters</a></li>
  659. <li><a id="toc-Symbols-4" href="#MMIX_002dSymbols">9.29.3.2 Symbols</a></li>
  660. <li><a id="toc-Register-names-1" href="#MMIX_002dRegs">9.29.3.3 Register names</a></li>
  661. <li><a id="toc-Assembler-Directives-3" href="#MMIX_002dPseudos">9.29.3.4 Assembler Directives</a></li>
  662. </ul></li>
  663. <li><a id="toc-Differences-to-mmixal" href="#MMIX_002dmmixal">9.29.4 Differences to <code>mmixal</code></a></li>
  664. </ul></li>
  665. <li><a id="toc-MSP-430-Dependent-Features" href="#MSP430_002dDependent">9.30 MSP 430 Dependent Features</a>
  666. <ul class="no-bullet">
  667. <li><a id="toc-Options-16" href="#MSP430-Options">9.30.1 Options</a></li>
  668. <li><a id="toc-Syntax-21" href="#MSP430-Syntax">9.30.2 Syntax</a>
  669. <ul class="no-bullet">
  670. <li><a id="toc-Macros" href="#MSP430_002dMacros">9.30.2.1 Macros</a></li>
  671. <li><a id="toc-Special-Characters-21" href="#MSP430_002dChars">9.30.2.2 Special Characters</a></li>
  672. <li><a id="toc-Register-Names-11" href="#MSP430_002dRegs">9.30.2.3 Register Names</a></li>
  673. <li><a id="toc-Assembler-Extensions" href="#MSP430_002dExt">9.30.2.4 Assembler Extensions</a></li>
  674. </ul></li>
  675. <li><a id="toc-Floating-Point-10" href="#MSP430-Floating-Point">9.30.3 Floating Point</a></li>
  676. <li><a id="toc-MSP-430-Machine-Directives" href="#MSP430-Directives">9.30.4 MSP 430 Machine Directives</a></li>
  677. <li><a id="toc-Opcodes-13" href="#MSP430-Opcodes">9.30.5 Opcodes</a></li>
  678. <li><a id="toc-Profiling-Capability" href="#MSP430-Profiling-Capability">9.30.6 Profiling Capability</a></li>
  679. </ul></li>
  680. <li><a id="toc-NDS32-Dependent-Features" href="#NDS32_002dDependent">9.31 NDS32 Dependent Features</a>
  681. <ul class="no-bullet">
  682. <li><a id="toc-NDS32-Options-1" href="#NDS32-Options">9.31.1 NDS32 Options</a></li>
  683. <li><a id="toc-Syntax-22" href="#NDS32-Syntax">9.31.2 Syntax</a>
  684. <ul class="no-bullet">
  685. <li><a id="toc-Special-Characters-22" href="#NDS32_002dChars">9.31.2.1 Special Characters</a></li>
  686. <li><a id="toc-Register-Names-12" href="#NDS32_002dRegs">9.31.2.2 Register Names</a></li>
  687. <li><a id="toc-Pseudo-Instructions-1" href="#NDS32_002dOps">9.31.2.3 Pseudo Instructions</a></li>
  688. </ul></li>
  689. </ul></li>
  690. <li><a id="toc-Nios-II-Dependent-Features" href="#NiosII_002dDependent">9.32 Nios II Dependent Features</a>
  691. <ul class="no-bullet">
  692. <li><a id="toc-Options-17" href="#Nios-II-Options">9.32.1 Options</a></li>
  693. <li><a id="toc-Syntax-23" href="#Nios-II-Syntax">9.32.2 Syntax</a>
  694. <ul class="no-bullet">
  695. <li><a id="toc-Special-Characters-23" href="#Nios-II-Chars">9.32.2.1 Special Characters</a></li>
  696. </ul></li>
  697. <li><a id="toc-Nios-II-Machine-Relocations" href="#Nios-II-Relocations">9.32.3 Nios II Machine Relocations</a></li>
  698. <li><a id="toc-Nios-II-Machine-Directives" href="#Nios-II-Directives">9.32.4 Nios II Machine Directives</a></li>
  699. <li><a id="toc-Opcodes-14" href="#Nios-II-Opcodes">9.32.5 Opcodes</a></li>
  700. </ul></li>
  701. <li><a id="toc-NS32K-Dependent-Features" href="#NS32K_002dDependent">9.33 NS32K Dependent Features</a>
  702. <ul class="no-bullet">
  703. <li><a id="toc-Syntax-24" href="#NS32K-Syntax">9.33.1 Syntax</a>
  704. <ul class="no-bullet">
  705. <li><a id="toc-Special-Characters-24" href="#NS32K_002dChars">9.33.1.1 Special Characters</a></li>
  706. </ul></li>
  707. </ul></li>
  708. <li><a id="toc-OPENRISC-Dependent-Features" href="#OpenRISC_002dDependent">9.34 OPENRISC Dependent Features</a>
  709. <ul class="no-bullet">
  710. <li><a id="toc-OpenRISC-Syntax" href="#OpenRISC_002dSyntax">9.34.1 OpenRISC Syntax</a>
  711. <ul class="no-bullet">
  712. <li><a id="toc-Special-Characters-25" href="#OpenRISC_002dChars">9.34.1.1 Special Characters</a></li>
  713. <li><a id="toc-Register-Names-13" href="#OpenRISC_002dRegs">9.34.1.2 Register Names</a></li>
  714. <li><a id="toc-Relocations-3" href="#OpenRISC_002dRelocs">9.34.1.3 Relocations</a></li>
  715. </ul></li>
  716. <li><a id="toc-Floating-Point-11" href="#OpenRISC_002dFloat">9.34.2 Floating Point</a></li>
  717. <li><a id="toc-OpenRISC-Machine-Directives" href="#OpenRISC_002dDirectives">9.34.3 OpenRISC Machine Directives</a></li>
  718. <li><a id="toc-Opcodes-15" href="#OpenRISC_002dOpcodes">9.34.4 Opcodes</a></li>
  719. </ul></li>
  720. <li><a id="toc-PDP_002d11-Dependent-Features" href="#PDP_002d11_002dDependent">9.35 PDP-11 Dependent Features</a>
  721. <ul class="no-bullet">
  722. <li><a id="toc-Options-18" href="#PDP_002d11_002dOptions">9.35.1 Options</a>
  723. <ul class="no-bullet">
  724. <li><a id="toc-Code-Generation-Options" href="#Code-Generation-Options">9.35.1.1 Code Generation Options</a></li>
  725. <li><a id="toc-Instruction-Set-Extension-Options" href="#Instruction-Set-Extension-Options">9.35.1.2 Instruction Set Extension Options</a></li>
  726. <li><a id="toc-CPU-Model-Options" href="#CPU-Model-Options">9.35.1.3 CPU Model Options</a></li>
  727. <li><a id="toc-Machine-Model-Options" href="#Machine-Model-Options">9.35.1.4 Machine Model Options</a></li>
  728. </ul></li>
  729. <li><a id="toc-Assembler-Directives-4" href="#PDP_002d11_002dPseudos">9.35.2 Assembler Directives</a></li>
  730. <li><a id="toc-PDP_002d11-Assembly-Language-Syntax" href="#PDP_002d11_002dSyntax">9.35.3 PDP-11 Assembly Language Syntax</a></li>
  731. <li><a id="toc-Instruction-Naming-1" href="#PDP_002d11_002dMnemonics">9.35.4 Instruction Naming</a></li>
  732. <li><a id="toc-Synthetic-Instructions" href="#PDP_002d11_002dSynthetic">9.35.5 Synthetic Instructions</a></li>
  733. </ul></li>
  734. <li><a id="toc-picoJava-Dependent-Features" href="#PJ_002dDependent">9.36 picoJava Dependent Features</a>
  735. <ul class="no-bullet">
  736. <li><a id="toc-Options-19" href="#PJ-Options">9.36.1 Options</a></li>
  737. <li><a id="toc-PJ-Syntax-1" href="#PJ-Syntax">9.36.2 PJ Syntax</a>
  738. <ul class="no-bullet">
  739. <li><a id="toc-Special-Characters-26" href="#PJ_002dChars">9.36.2.1 Special Characters</a></li>
  740. </ul></li>
  741. </ul></li>
  742. <li><a id="toc-PowerPC-Dependent-Features" href="#PPC_002dDependent">9.37 PowerPC Dependent Features</a>
  743. <ul class="no-bullet">
  744. <li><a id="toc-Options-20" href="#PowerPC_002dOpts">9.37.1 Options</a></li>
  745. <li><a id="toc-PowerPC-Assembler-Directives" href="#PowerPC_002dPseudo">9.37.2 PowerPC Assembler Directives</a></li>
  746. <li><a id="toc-PowerPC-Syntax" href="#PowerPC_002dSyntax">9.37.3 PowerPC Syntax</a>
  747. <ul class="no-bullet">
  748. <li><a id="toc-Special-Characters-27" href="#PowerPC_002dChars">9.37.3.1 Special Characters</a></li>
  749. </ul></li>
  750. </ul></li>
  751. <li><a id="toc-PRU-Dependent-Features" href="#PRU_002dDependent">9.38 PRU Dependent Features</a>
  752. <ul class="no-bullet">
  753. <li><a id="toc-Options-21" href="#PRU-Options">9.38.1 Options</a></li>
  754. <li><a id="toc-Syntax-25" href="#PRU-Syntax">9.38.2 Syntax</a>
  755. <ul class="no-bullet">
  756. <li><a id="toc-Special-Characters-28" href="#PRU-Chars">9.38.2.1 Special Characters</a></li>
  757. </ul></li>
  758. <li><a id="toc-PRU-Machine-Relocations" href="#PRU-Relocations">9.38.3 PRU Machine Relocations</a></li>
  759. <li><a id="toc-PRU-Machine-Directives" href="#PRU-Directives">9.38.4 PRU Machine Directives</a></li>
  760. <li><a id="toc-Opcodes-16" href="#PRU-Opcodes">9.38.5 Opcodes</a></li>
  761. </ul></li>
  762. <li><a id="toc-RISC_002dV-Dependent-Features" href="#RISC_002dV_002dDependent">9.39 RISC-V Dependent Features</a>
  763. <ul class="no-bullet">
  764. <li><a id="toc-RISC_002dV-Options" href="#RISC_002dV_002dOptions">9.39.1 RISC-V Options</a></li>
  765. <li><a id="toc-RISC_002dV-Directives" href="#RISC_002dV_002dDirectives">9.39.2 RISC-V Directives</a></li>
  766. <li><a id="toc-RISC_002dV-Assembler-Modifiers" href="#RISC_002dV_002dModifiers">9.39.3 RISC-V Assembler Modifiers</a></li>
  767. <li><a id="toc-RISC_002dV-Floating-Point" href="#RISC_002dV_002dFloating_002dPoint">9.39.4 RISC-V Floating Point</a></li>
  768. <li><a id="toc-RISC_002dV-Instruction-Formats" href="#RISC_002dV_002dFormats">9.39.5 RISC-V Instruction Formats</a></li>
  769. <li><a id="toc-RISC_002dV-Object-Attribute" href="#RISC_002dV_002dATTRIBUTE">9.39.6 RISC-V Object Attribute</a></li>
  770. <li><a id="toc-RISC_002dV-Custom-_0028Vendor_002dDefined_0029-Extensions" href="#RISC_002dV_002dCustomExts">9.39.7 RISC-V Custom (Vendor-Defined) Extensions</a></li>
  771. </ul></li>
  772. <li><a id="toc-RL78-Dependent-Features" href="#RL78_002dDependent">9.40 RL78 Dependent Features</a>
  773. <ul class="no-bullet">
  774. <li><a id="toc-RL78-Options" href="#RL78_002dOpts">9.40.1 RL78 Options</a></li>
  775. <li><a id="toc-Symbolic-Operand-Modifiers-2" href="#RL78_002dModifiers">9.40.2 Symbolic Operand Modifiers</a></li>
  776. <li><a id="toc-Assembler-Directives-5" href="#RL78_002dDirectives">9.40.3 Assembler Directives</a></li>
  777. <li><a id="toc-Syntax-for-the-RL78" href="#RL78_002dSyntax">9.40.4 Syntax for the RL78</a>
  778. <ul class="no-bullet">
  779. <li><a id="toc-Special-Characters-29" href="#RL78_002dChars">9.40.4.1 Special Characters</a></li>
  780. </ul></li>
  781. </ul></li>
  782. <li><a id="toc-RX-Dependent-Features" href="#RX_002dDependent">9.41 RX Dependent Features</a>
  783. <ul class="no-bullet">
  784. <li><a id="toc-RX-Options" href="#RX_002dOpts">9.41.1 RX Options</a></li>
  785. <li><a id="toc-Symbolic-Operand-Modifiers-3" href="#RX_002dModifiers">9.41.2 Symbolic Operand Modifiers</a></li>
  786. <li><a id="toc-Assembler-Directives-6" href="#RX_002dDirectives">9.41.3 Assembler Directives</a></li>
  787. <li><a id="toc-Floating-Point-12" href="#RX_002dFloat">9.41.4 Floating Point</a></li>
  788. <li><a id="toc-Syntax-for-the-RX" href="#RX_002dSyntax">9.41.5 Syntax for the RX</a>
  789. <ul class="no-bullet">
  790. <li><a id="toc-Special-Characters-30" href="#RX_002dChars">9.41.5.1 Special Characters</a></li>
  791. </ul></li>
  792. </ul></li>
  793. <li><a id="toc-IBM-S_002f390-Dependent-Features" href="#S_002f390_002dDependent">9.42 IBM S/390 Dependent Features</a>
  794. <ul class="no-bullet">
  795. <li><a id="toc-Options-22" href="#s390-Options">9.42.1 Options</a></li>
  796. <li><a id="toc-Special-Characters-31" href="#s390-Characters">9.42.2 Special Characters</a></li>
  797. <li><a id="toc-Instruction-syntax" href="#s390-Syntax">9.42.3 Instruction syntax</a>
  798. <ul class="no-bullet">
  799. <li><a id="toc-Register-naming" href="#s390-Register">9.42.3.1 Register naming</a></li>
  800. <li><a id="toc-Instruction-Mnemonics" href="#s390-Mnemonics">9.42.3.2 Instruction Mnemonics</a></li>
  801. <li><a id="toc-Instruction-Operands" href="#s390-Operands">9.42.3.3 Instruction Operands</a></li>
  802. <li><a id="toc-Instruction-Formats" href="#s390-Formats">9.42.3.4 Instruction Formats</a></li>
  803. <li><a id="toc-Instruction-Aliases" href="#s390-Aliases">9.42.3.5 Instruction Aliases</a></li>
  804. <li><a id="toc-Instruction-Operand-Modifier" href="#s390-Operand-Modifier">9.42.3.6 Instruction Operand Modifier</a></li>
  805. <li><a id="toc-Instruction-Marker" href="#s390-Instruction-Marker">9.42.3.7 Instruction Marker</a></li>
  806. <li><a id="toc-Literal-Pool-Entries" href="#s390-Literal-Pool-Entries">9.42.3.8 Literal Pool Entries</a></li>
  807. </ul></li>
  808. <li><a id="toc-Assembler-Directives-7" href="#s390-Directives">9.42.4 Assembler Directives</a></li>
  809. <li><a id="toc-Floating-Point-13" href="#s390-Floating-Point">9.42.5 Floating Point</a></li>
  810. </ul></li>
  811. <li><a id="toc-SCORE-Dependent-Features" href="#SCORE_002dDependent">9.43 SCORE Dependent Features</a>
  812. <ul class="no-bullet">
  813. <li><a id="toc-Options-23" href="#SCORE_002dOpts">9.43.1 Options</a></li>
  814. <li><a id="toc-SCORE-Assembler-Directives" href="#SCORE_002dPseudo">9.43.2 SCORE Assembler Directives</a></li>
  815. <li><a id="toc-SCORE-Syntax" href="#SCORE_002dSyntax">9.43.3 SCORE Syntax</a>
  816. <ul class="no-bullet">
  817. <li><a id="toc-Special-Characters-32" href="#SCORE_002dChars">9.43.3.1 Special Characters</a></li>
  818. </ul></li>
  819. </ul></li>
  820. <li><a id="toc-Renesas-_002f-SuperH-SH-Dependent-Features" href="#SH_002dDependent">9.44 Renesas / SuperH SH Dependent Features</a>
  821. <ul class="no-bullet">
  822. <li><a id="toc-Options-24" href="#SH-Options">9.44.1 Options</a></li>
  823. <li><a id="toc-Syntax-26" href="#SH-Syntax">9.44.2 Syntax</a>
  824. <ul class="no-bullet">
  825. <li><a id="toc-Special-Characters-33" href="#SH_002dChars">9.44.2.1 Special Characters</a></li>
  826. <li><a id="toc-Register-Names-14" href="#SH_002dRegs">9.44.2.2 Register Names</a></li>
  827. <li><a id="toc-Addressing-Modes-4" href="#SH_002dAddressing">9.44.2.3 Addressing Modes</a></li>
  828. </ul></li>
  829. <li><a id="toc-Floating-Point-14" href="#SH-Floating-Point">9.44.3 Floating Point</a></li>
  830. <li><a id="toc-SH-Machine-Directives" href="#SH-Directives">9.44.4 SH Machine Directives</a></li>
  831. <li><a id="toc-Opcodes-17" href="#SH-Opcodes">9.44.5 Opcodes</a></li>
  832. </ul></li>
  833. <li><a id="toc-SPARC-Dependent-Features" href="#Sparc_002dDependent">9.45 SPARC Dependent Features</a>
  834. <ul class="no-bullet">
  835. <li><a id="toc-Options-25" href="#Sparc_002dOpts">9.45.1 Options</a></li>
  836. <li><a id="toc-Enforcing-aligned-data" href="#Sparc_002dAligned_002dData">9.45.2 Enforcing aligned data</a></li>
  837. <li><a id="toc-Sparc-Syntax" href="#Sparc_002dSyntax">9.45.3 Sparc Syntax</a>
  838. <ul class="no-bullet">
  839. <li><a id="toc-Special-Characters-34" href="#Sparc_002dChars">9.45.3.1 Special Characters</a></li>
  840. <li><a id="toc-Register-Names-15" href="#Sparc_002dRegs">9.45.3.2 Register Names</a></li>
  841. <li><a id="toc-Constants-2" href="#Sparc_002dConstants">9.45.3.3 Constants</a></li>
  842. <li><a id="toc-Relocations-4" href="#Sparc_002dRelocs">9.45.3.4 Relocations</a></li>
  843. <li><a id="toc-Size-Translations" href="#Sparc_002dSize_002dTranslations">9.45.3.5 Size Translations</a></li>
  844. </ul></li>
  845. <li><a id="toc-Floating-Point-15" href="#Sparc_002dFloat">9.45.4 Floating Point</a></li>
  846. <li><a id="toc-Sparc-Machine-Directives" href="#Sparc_002dDirectives">9.45.5 Sparc Machine Directives</a></li>
  847. </ul></li>
  848. <li><a id="toc-TIC54X-Dependent-Features" href="#TIC54X_002dDependent">9.46 TIC54X Dependent Features</a>
  849. <ul class="no-bullet">
  850. <li><a id="toc-Options-26" href="#TIC54X_002dOpts">9.46.1 Options</a></li>
  851. <li><a id="toc-Blocking" href="#TIC54X_002dBlock">9.46.2 Blocking</a></li>
  852. <li><a id="toc-Environment-Settings" href="#TIC54X_002dEnv">9.46.3 Environment Settings</a></li>
  853. <li><a id="toc-Constants-Syntax" href="#TIC54X_002dConstants">9.46.4 Constants Syntax</a></li>
  854. <li><a id="toc-String-Substitution" href="#TIC54X_002dSubsyms">9.46.5 String Substitution</a></li>
  855. <li><a id="toc-Local-Labels" href="#TIC54X_002dLocals">9.46.6 Local Labels</a></li>
  856. <li><a id="toc-Math-Builtins" href="#TIC54X_002dBuiltins">9.46.7 Math Builtins</a></li>
  857. <li><a id="toc-Extended-Addressing" href="#TIC54X_002dExt">9.46.8 Extended Addressing</a></li>
  858. <li><a id="toc-Directives-2" href="#TIC54X_002dDirectives">9.46.9 Directives</a></li>
  859. <li><a id="toc-Macros-1" href="#TIC54X_002dMacros">9.46.10 Macros</a></li>
  860. <li><a id="toc-Memory_002dmapped-Registers" href="#TIC54X_002dMMRegs">9.46.11 Memory-mapped Registers</a></li>
  861. <li><a id="toc-TIC54X-Syntax" href="#TIC54X_002dSyntax">9.46.12 TIC54X Syntax</a>
  862. <ul class="no-bullet">
  863. <li><a id="toc-Special-Characters-35" href="#TIC54X_002dChars">9.46.12.1 Special Characters</a></li>
  864. </ul></li>
  865. </ul></li>
  866. <li><a id="toc-TIC6X-Dependent-Features" href="#TIC6X_002dDependent">9.47 TIC6X Dependent Features</a>
  867. <ul class="no-bullet">
  868. <li><a id="toc-TIC6X-Options-1" href="#TIC6X-Options">9.47.1 TIC6X Options</a></li>
  869. <li><a id="toc-TIC6X-Syntax-1" href="#TIC6X-Syntax">9.47.2 TIC6X Syntax</a></li>
  870. <li><a id="toc-TIC6X-Directives-1" href="#TIC6X-Directives">9.47.3 TIC6X Directives</a></li>
  871. </ul></li>
  872. <li><a id="toc-TILE_002dGx-Dependent-Features" href="#TILE_002dGx_002dDependent">9.48 TILE-Gx Dependent Features</a>
  873. <ul class="no-bullet">
  874. <li><a id="toc-Options-27" href="#TILE_002dGx-Options">9.48.1 Options</a></li>
  875. <li><a id="toc-Syntax-27" href="#TILE_002dGx-Syntax">9.48.2 Syntax</a>
  876. <ul class="no-bullet">
  877. <li><a id="toc-Opcode-Names" href="#TILE_002dGx-Opcodes">9.48.2.1 Opcode Names</a></li>
  878. <li><a id="toc-Register-Names-16" href="#TILE_002dGx-Registers">9.48.2.2 Register Names</a></li>
  879. <li><a id="toc-Symbolic-Operand-Modifiers-4" href="#TILE_002dGx-Modifiers">9.48.2.3 Symbolic Operand Modifiers</a></li>
  880. </ul></li>
  881. <li><a id="toc-TILE_002dGx-Directives-1" href="#TILE_002dGx-Directives">9.48.3 TILE-Gx Directives</a></li>
  882. </ul></li>
  883. <li><a id="toc-TILEPro-Dependent-Features" href="#TILEPro_002dDependent">9.49 TILEPro Dependent Features</a>
  884. <ul class="no-bullet">
  885. <li><a id="toc-Options-28" href="#TILEPro-Options">9.49.1 Options</a></li>
  886. <li><a id="toc-Syntax-28" href="#TILEPro-Syntax">9.49.2 Syntax</a>
  887. <ul class="no-bullet">
  888. <li><a id="toc-Opcode-Names-1" href="#TILEPro-Opcodes">9.49.2.1 Opcode Names</a></li>
  889. <li><a id="toc-Register-Names-17" href="#TILEPro-Registers">9.49.2.2 Register Names</a></li>
  890. <li><a id="toc-Symbolic-Operand-Modifiers-5" href="#TILEPro-Modifiers">9.49.2.3 Symbolic Operand Modifiers</a></li>
  891. </ul></li>
  892. <li><a id="toc-TILEPro-Directives-1" href="#TILEPro-Directives">9.49.3 TILEPro Directives</a></li>
  893. </ul></li>
  894. <li><a id="toc-v850-Dependent-Features" href="#V850_002dDependent">9.50 v850 Dependent Features</a>
  895. <ul class="no-bullet">
  896. <li><a id="toc-Options-29" href="#V850-Options">9.50.1 Options</a></li>
  897. <li><a id="toc-Syntax-29" href="#V850-Syntax">9.50.2 Syntax</a>
  898. <ul class="no-bullet">
  899. <li><a id="toc-Special-Characters-36" href="#V850_002dChars">9.50.2.1 Special Characters</a></li>
  900. <li><a id="toc-Register-Names-18" href="#V850_002dRegs">9.50.2.2 Register Names</a></li>
  901. </ul></li>
  902. <li><a id="toc-Floating-Point-16" href="#V850-Floating-Point">9.50.3 Floating Point</a></li>
  903. <li><a id="toc-V850-Machine-Directives" href="#V850-Directives">9.50.4 V850 Machine Directives</a></li>
  904. <li><a id="toc-Opcodes-18" href="#V850-Opcodes">9.50.5 Opcodes</a></li>
  905. </ul></li>
  906. <li><a id="toc-VAX-Dependent-Features" href="#Vax_002dDependent">9.51 VAX Dependent Features</a>
  907. <ul class="no-bullet">
  908. <li><a id="toc-VAX-Command_002dLine-Options" href="#VAX_002dOpts">9.51.1 VAX Command-Line Options</a></li>
  909. <li><a id="toc-VAX-Floating-Point" href="#VAX_002dfloat">9.51.2 VAX Floating Point</a></li>
  910. <li><a id="toc-Vax-Machine-Directives" href="#VAX_002ddirectives">9.51.3 Vax Machine Directives</a></li>
  911. <li><a id="toc-VAX-Opcodes" href="#VAX_002dopcodes">9.51.4 VAX Opcodes</a></li>
  912. <li><a id="toc-VAX-Branch-Improvement" href="#VAX_002dbranch">9.51.5 VAX Branch Improvement</a></li>
  913. <li><a id="toc-VAX-Operands" href="#VAX_002doperands">9.51.6 VAX Operands</a></li>
  914. <li><a id="toc-Not-Supported-on-VAX" href="#VAX_002dno">9.51.7 Not Supported on VAX</a></li>
  915. <li><a id="toc-VAX-Syntax" href="#VAX_002dSyntax">9.51.8 VAX Syntax</a>
  916. <ul class="no-bullet">
  917. <li><a id="toc-Special-Characters-37" href="#VAX_002dChars">9.51.8.1 Special Characters</a></li>
  918. </ul></li>
  919. </ul></li>
  920. <li><a id="toc-Visium-Dependent-Features" href="#Visium_002dDependent">9.52 Visium Dependent Features</a>
  921. <ul class="no-bullet">
  922. <li><a id="toc-Options-30" href="#Visium-Options">9.52.1 Options</a></li>
  923. <li><a id="toc-Syntax-30" href="#Visium-Syntax">9.52.2 Syntax</a>
  924. <ul class="no-bullet">
  925. <li><a id="toc-Special-Characters-38" href="#Visium-Characters">9.52.2.1 Special Characters</a></li>
  926. <li><a id="toc-Register-Names-19" href="#Visium-Registers">9.52.2.2 Register Names</a></li>
  927. </ul></li>
  928. <li><a id="toc-Opcodes-19" href="#Visium-Opcodes">9.52.3 Opcodes</a></li>
  929. </ul></li>
  930. <li><a id="toc-WebAssembly-Dependent-Features" href="#WebAssembly_002dDependent">9.53 WebAssembly Dependent Features</a>
  931. <ul class="no-bullet">
  932. <li><a id="toc-Notes-3" href="#WebAssembly_002dNotes">9.53.1 Notes</a></li>
  933. <li><a id="toc-Syntax-31" href="#WebAssembly_002dSyntax">9.53.2 Syntax</a>
  934. <ul class="no-bullet">
  935. <li><a id="toc-Special-Characters-39" href="#WebAssembly_002dChars">9.53.2.1 Special Characters</a></li>
  936. <li><a id="toc-Relocations-5" href="#WebAssembly_002dRelocs">9.53.2.2 Relocations</a></li>
  937. <li><a id="toc-Signatures" href="#WebAssembly_002dSignatures">9.53.2.3 Signatures</a></li>
  938. </ul></li>
  939. <li><a id="toc-Floating-Point-17" href="#WebAssembly_002dFloating_002dPoint">9.53.3 Floating Point</a></li>
  940. <li><a id="toc-Regular-Opcodes" href="#WebAssembly_002dOpcodes">9.53.4 Regular Opcodes</a></li>
  941. <li><a id="toc-WebAssembly-Module-Layout" href="#WebAssembly_002dmodule_002dlayout">9.53.5 WebAssembly Module Layout</a></li>
  942. </ul></li>
  943. <li><a id="toc-XGATE-Dependent-Features" href="#XGATE_002dDependent">9.54 XGATE Dependent Features</a>
  944. <ul class="no-bullet">
  945. <li><a id="toc-XGATE-Options" href="#XGATE_002dOpts">9.54.1 XGATE Options</a></li>
  946. <li><a id="toc-Syntax-32" href="#XGATE_002dSyntax">9.54.2 Syntax</a></li>
  947. <li><a id="toc-Assembler-Directives-8" href="#XGATE_002dDirectives">9.54.3 Assembler Directives</a></li>
  948. <li><a id="toc-Floating-Point-18" href="#XGATE_002dFloat">9.54.4 Floating Point</a></li>
  949. <li><a id="toc-Opcodes-20" href="#XGATE_002dopcodes">9.54.5 Opcodes</a></li>
  950. </ul></li>
  951. <li><a id="toc-XStormy16-Dependent-Features" href="#XSTORMY16_002dDependent">9.55 XStormy16 Dependent Features</a>
  952. <ul class="no-bullet">
  953. <li><a id="toc-Syntax-33" href="#XStormy16-Syntax">9.55.1 Syntax</a>
  954. <ul class="no-bullet">
  955. <li><a id="toc-Special-Characters-40" href="#XStormy16_002dChars">9.55.1.1 Special Characters</a></li>
  956. </ul></li>
  957. <li><a id="toc-XStormy16-Machine-Directives" href="#XStormy16-Directives">9.55.2 XStormy16 Machine Directives</a></li>
  958. <li><a id="toc-XStormy16-Pseudo_002dOpcodes" href="#XStormy16-Opcodes">9.55.3 XStormy16 Pseudo-Opcodes</a></li>
  959. </ul></li>
  960. <li><a id="toc-Xtensa-Dependent-Features" href="#Xtensa_002dDependent">9.56 Xtensa Dependent Features</a>
  961. <ul class="no-bullet">
  962. <li><a id="toc-Command_002dline-Options-2" href="#Xtensa-Options">9.56.1 Command-line Options</a></li>
  963. <li><a id="toc-Assembler-Syntax" href="#Xtensa-Syntax">9.56.2 Assembler Syntax</a>
  964. <ul class="no-bullet">
  965. <li><a id="toc-Opcode-Names-2" href="#Xtensa-Opcodes">9.56.2.1 Opcode Names</a></li>
  966. <li><a id="toc-Register-Names-20" href="#Xtensa-Registers">9.56.2.2 Register Names</a></li>
  967. </ul></li>
  968. <li><a id="toc-Xtensa-Optimizations-1" href="#Xtensa-Optimizations">9.56.3 Xtensa Optimizations</a>
  969. <ul class="no-bullet">
  970. <li><a id="toc-Using-Density-Instructions" href="#Density-Instructions">9.56.3.1 Using Density Instructions</a></li>
  971. <li><a id="toc-Automatic-Instruction-Alignment" href="#Xtensa-Automatic-Alignment">9.56.3.2 Automatic Instruction Alignment</a></li>
  972. </ul></li>
  973. <li><a id="toc-Xtensa-Relaxation-1" href="#Xtensa-Relaxation">9.56.4 Xtensa Relaxation</a>
  974. <ul class="no-bullet">
  975. <li><a id="toc-Conditional-Branch-Relaxation" href="#Xtensa-Branch-Relaxation">9.56.4.1 Conditional Branch Relaxation</a></li>
  976. <li><a id="toc-Function-Call-Relaxation" href="#Xtensa-Call-Relaxation">9.56.4.2 Function Call Relaxation</a></li>
  977. <li><a id="toc-Jump-Relaxation" href="#Xtensa-Jump-Relaxation">9.56.4.3 Jump Relaxation</a></li>
  978. <li><a id="toc-Other-Immediate-Field-Relaxation" href="#Xtensa-Immediate-Relaxation">9.56.4.4 Other Immediate Field Relaxation</a></li>
  979. </ul></li>
  980. <li><a id="toc-Directives-3" href="#Xtensa-Directives">9.56.5 Directives</a>
  981. <ul class="no-bullet">
  982. <li><a id="toc-schedule" href="#Schedule-Directive">9.56.5.1 schedule</a></li>
  983. <li><a id="toc-longcalls" href="#Longcalls-Directive">9.56.5.2 longcalls</a></li>
  984. <li><a id="toc-transform" href="#Transform-Directive">9.56.5.3 transform</a></li>
  985. <li><a id="toc-literal" href="#Literal-Directive">9.56.5.4 literal</a></li>
  986. <li><a id="toc-literal_005fposition" href="#Literal-Position-Directive">9.56.5.5 literal_position</a></li>
  987. <li><a id="toc-literal_005fprefix" href="#Literal-Prefix-Directive">9.56.5.6 literal_prefix</a></li>
  988. <li><a id="toc-absolute_002dliterals" href="#Absolute-Literals-Directive">9.56.5.7 absolute-literals</a></li>
  989. </ul></li>
  990. </ul></li>
  991. <li><a id="toc-Z80-Dependent-Features" href="#Z80_002dDependent">9.57 Z80 Dependent Features</a>
  992. <ul class="no-bullet">
  993. <li><a id="toc-Command_002dline-Options-3" href="#Z80-Options">9.57.1 Command-line Options</a></li>
  994. <li><a id="toc-Syntax-34" href="#Z80-Syntax">9.57.2 Syntax</a>
  995. <ul class="no-bullet">
  996. <li><a id="toc-Special-Characters-41" href="#Z80_002dChars">9.57.2.1 Special Characters</a></li>
  997. <li><a id="toc-Register-Names-21" href="#Z80_002dRegs">9.57.2.2 Register Names</a></li>
  998. <li><a id="toc-Case-Sensitivity" href="#Z80_002dCase">9.57.2.3 Case Sensitivity</a></li>
  999. <li><a id="toc-Labels-2" href="#Z80_002dLabels">9.57.2.4 Labels</a></li>
  1000. </ul></li>
  1001. <li><a id="toc-Floating-Point-19" href="#Z80-Floating-Point">9.57.3 Floating Point</a></li>
  1002. <li><a id="toc-Z80-Assembler-Directives" href="#Z80-Directives">9.57.4 Z80 Assembler Directives</a></li>
  1003. <li><a id="toc-Opcodes-21" href="#Z80-Opcodes">9.57.5 Opcodes</a></li>
  1004. </ul></li>
  1005. <li><a id="toc-Z8000-Dependent-Features" href="#Z8000_002dDependent">9.58 Z8000 Dependent Features</a>
  1006. <ul class="no-bullet">
  1007. <li><a id="toc-Options-31" href="#Z8000-Options">9.58.1 Options</a></li>
  1008. <li><a id="toc-Syntax-35" href="#Z8000-Syntax">9.58.2 Syntax</a>
  1009. <ul class="no-bullet">
  1010. <li><a id="toc-Special-Characters-42" href="#Z8000_002dChars">9.58.2.1 Special Characters</a></li>
  1011. <li><a id="toc-Register-Names-22" href="#Z8000_002dRegs">9.58.2.2 Register Names</a></li>
  1012. <li><a id="toc-Addressing-Modes-5" href="#Z8000_002dAddressing">9.58.2.3 Addressing Modes</a></li>
  1013. </ul></li>
  1014. <li><a id="toc-Assembler-Directives-for-the-Z8000" href="#Z8000-Directives">9.58.3 Assembler Directives for the Z8000</a></li>
  1015. <li><a id="toc-Opcodes-22" href="#Z8000-Opcodes">9.58.4 Opcodes</a></li>
  1016. </ul></li>
  1017. </ul></li>
  1018. <li><a id="toc-Reporting-Bugs-1" href="#Reporting-Bugs">10 Reporting Bugs</a>
  1019. <ul class="no-bullet">
  1020. <li><a id="toc-Have-You-Found-a-Bug_003f" href="#Bug-Criteria">10.1 Have You Found a Bug?</a></li>
  1021. <li><a id="toc-How-to-Report-Bugs" href="#Bug-Reporting">10.2 How to Report Bugs</a></li>
  1022. </ul></li>
  1023. <li><a id="toc-Acknowledgements-1" href="#Acknowledgements">11 Acknowledgements</a></li>
  1024. <li><a id="toc-GNU-Free-Documentation-License-1" href="#GNU-Free-Documentation-License">Appendix A GNU Free Documentation License</a></li>
  1025. <li><a id="toc-AS-Index-1" href="#AS-Index" rel="index">AS Index</a></li>
  1026. </ul>
  1027. </div>
  1028. <span id="Top"></span><div class="header">
  1029. <p>
  1030. Next: <a href="#Overview" accesskey="n" rel="next">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  1031. </div>
  1032. <span id="Using-as"></span><h1 class="top">Using as</h1>
  1033. <p>This file is a user guide to the <small>GNU</small> assembler <code>as</code>
  1034. (Arm GNU Toolchain 13.3.Rel1 (Build arm-13.24))
  1035. version 2.42.0.
  1036. </p>
  1037. <p>This document is distributed under the terms of the GNU Free
  1038. Documentation License. A copy of the license is included in the
  1039. section entitled &ldquo;GNU Free Documentation License&rdquo;.
  1040. </p>
  1041. <table class="menu" border="0" cellspacing="0">
  1042. <tr><td align="left" valign="top">&bull; <a href="#Overview" accesskey="1">Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Overview
  1043. </td></tr>
  1044. <tr><td align="left" valign="top">&bull; <a href="#Invoking" accesskey="2">Invoking</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command-Line Options
  1045. </td></tr>
  1046. <tr><td align="left" valign="top">&bull; <a href="#Syntax" accesskey="3">Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  1047. </td></tr>
  1048. <tr><td align="left" valign="top">&bull; <a href="#Sections" accesskey="4">Sections</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Sections and Relocation
  1049. </td></tr>
  1050. <tr><td align="left" valign="top">&bull; <a href="#Symbols" accesskey="5">Symbols</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbols
  1051. </td></tr>
  1052. <tr><td align="left" valign="top">&bull; <a href="#Expressions" accesskey="6">Expressions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions
  1053. </td></tr>
  1054. <tr><td align="left" valign="top">&bull; <a href="#Pseudo-Ops" accesskey="7">Pseudo Ops</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Directives
  1055. </td></tr>
  1056. <tr><td align="left" valign="top">&bull; <a href="#Object-Attributes" accesskey="8">Object Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Object Attributes
  1057. </td></tr>
  1058. <tr><td align="left" valign="top">&bull; <a href="#Machine-Dependencies" accesskey="9">Machine Dependencies</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Machine Dependent Features
  1059. </td></tr>
  1060. <tr><td align="left" valign="top">&bull; <a href="#Reporting-Bugs">Reporting Bugs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Reporting Bugs
  1061. </td></tr>
  1062. <tr><td align="left" valign="top">&bull; <a href="#Acknowledgements">Acknowledgements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Who Did What
  1063. </td></tr>
  1064. <tr><td align="left" valign="top">&bull; <a href="#GNU-Free-Documentation-License">GNU Free Documentation License</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">GNU Free Documentation License
  1065. </td></tr>
  1066. <tr><td align="left" valign="top">&bull; <a href="#AS-Index" rel="index">AS Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">AS Index
  1067. </td></tr>
  1068. </table>
  1069. <hr>
  1070. <span id="Overview"></span><div class="header">
  1071. <p>
  1072. Next: <a href="#Invoking" accesskey="n" rel="next">Invoking</a>, Previous: <a href="#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  1073. </div>
  1074. <span id="Overview-1"></span><h2 class="chapter">1 Overview</h2>
  1075. <span id="index-invocation-summary"></span>
  1076. <span id="index-option-summary"></span>
  1077. <span id="index-summary-of-options"></span>
  1078. <p>Here is a brief summary of how to invoke <code>as</code>. For details,
  1079. see <a href="#Invoking">Command-Line Options</a>.
  1080. </p>
  1081. <div class="example">
  1082. <pre class="example">as [<b>-a</b>[<b>cdghilns</b>][=<var>file</var>]]
  1083. [<b>&ndash;alternate</b>]
  1084. [<b>&ndash;compress-debug-sections</b>] [<b>&ndash;nocompress-debug-sections</b>]
  1085. [<b>-D</b>]
  1086. [<b>&ndash;dump-config</b>]
  1087. [<b>&ndash;debug-prefix-map</b> <var>old</var>=<var>new</var>]
  1088. [<b>&ndash;defsym</b> <var>sym</var>=<var>val</var>]
  1089. [<b>&ndash;elf-stt-common=[no|yes]</b>]
  1090. [<b>&ndash;emulation</b>=<var>name</var>]
  1091. [<b>-f</b>]
  1092. [<b>-g</b>] [<b>&ndash;gstabs</b>] [<b>&ndash;gstabs+</b>]
  1093. [<b>&ndash;gdwarf-&lt;N&gt;</b>] [<b>&ndash;gdwarf-sections</b>]
  1094. [<b>&ndash;gdwarf-cie-version</b>=<var>VERSION</var>]
  1095. [<b>&ndash;generate-missing-build-notes=[no|yes]</b>]
  1096. [<b>&ndash;gsframe</b>]
  1097. [<b>&ndash;hash-size</b>=<var>N</var>]
  1098. [<b>&ndash;help</b>] [<b>&ndash;target-help</b>]
  1099. [<b>-I</b> <var>dir</var>]
  1100. [<b>-J</b>]
  1101. [<b>-K</b>]
  1102. [<b>&ndash;keep-locals</b>]
  1103. [<b>-L</b>]
  1104. [<b>&ndash;listing-lhs-width</b>=<var>NUM</var>]
  1105. [<b>&ndash;listing-lhs-width2</b>=<var>NUM</var>]
  1106. [<b>&ndash;listing-rhs-width</b>=<var>NUM</var>]
  1107. [<b>&ndash;listing-cont-lines</b>=<var>NUM</var>]
  1108. [<b>&ndash;multibyte-handling=[allow|warn|warn-sym-only]</b>]
  1109. [<b>&ndash;no-pad-sections</b>]
  1110. [<b>-o</b> <var>objfile</var>] [<b>-R</b>]
  1111. [<b>&ndash;scfi=experimental</b>]
  1112. [<b>&ndash;sectname-subst</b>]
  1113. [<b>&ndash;size-check=[error|warning]</b>]
  1114. [<b>&ndash;statistics</b>]
  1115. [<b>-v</b>] [<b>-version</b>] [<b>&ndash;version</b>]
  1116. [<b>-W</b>] [<b>&ndash;warn</b>] [<b>&ndash;fatal-warnings</b>] [<b>-w</b>] [<b>-x</b>]
  1117. [<b>-Z</b>] [<b>@<var>FILE</var></b>]
  1118. [<var>target-options</var>]
  1119. [<b>&ndash;</b>|<var>files</var> &hellip;]
  1120. <em>Target AArch64 options:</em>
  1121. [<b>-EB</b>|<b>-EL</b>]
  1122. [<b>-mabi</b>=<var>ABI</var>]
  1123. <em>Target Alpha options:</em>
  1124. [<b>-m<var>cpu</var></b>]
  1125. [<b>-mdebug</b> | <b>-no-mdebug</b>]
  1126. [<b>-replace</b> | <b>-noreplace</b>]
  1127. [<b>-relax</b>] [<b>-g</b>] [<b>-G<var>size</var></b>]
  1128. [<b>-F</b>] [<b>-32addr</b>]
  1129. <em>Target ARC options:</em>
  1130. [<b>-mcpu=<var>cpu</var></b>]
  1131. [<b>-mA6</b>|<b>-mARC600</b>|<b>-mARC601</b>|<b>-mA7</b>|<b>-mARC700</b>|<b>-mEM</b>|<b>-mHS</b>]
  1132. [<b>-mcode-density</b>]
  1133. [<b>-mrelax</b>]
  1134. [<b>-EB</b>|<b>-EL</b>]
  1135. <em>Target ARM options:</em>
  1136. [<b>-mcpu</b>=<var>processor</var>[+<var>extension</var>&hellip;]]
  1137. [<b>-march</b>=<var>architecture</var>[+<var>extension</var>&hellip;]]
  1138. [<b>-mfpu</b>=<var>floating-point-format</var>]
  1139. [<b>-mfloat-abi</b>=<var>abi</var>]
  1140. [<b>-meabi</b>=<var>ver</var>]
  1141. [<b>-mthumb</b>]
  1142. [<b>-EB</b>|<b>-EL</b>]
  1143. [<b>-mapcs-32</b>|<b>-mapcs-26</b>|<b>-mapcs-float</b>|
  1144. <b>-mapcs-reentrant</b>]
  1145. [<b>-mthumb-interwork</b>] [<b>-k</b>]
  1146. <em>Target Blackfin options:</em>
  1147. [<b>-mcpu</b>=<var>processor</var>[-<var>sirevision</var>]]
  1148. [<b>-mfdpic</b>]
  1149. [<b>-mno-fdpic</b>]
  1150. [<b>-mnopic</b>]
  1151. <em>Target BPF options:</em>
  1152. [<b>-EL</b>] [<b>-EB</b>]
  1153. <em>Target CRIS options:</em>
  1154. [<b>&ndash;underscore</b> | <b>&ndash;no-underscore</b>]
  1155. [<b>&ndash;pic</b>] [<b>-N</b>]
  1156. [<b>&ndash;emulation=criself</b> | <b>&ndash;emulation=crisaout</b>]
  1157. [<b>&ndash;march=v0_v10</b> | <b>&ndash;march=v10</b> | <b>&ndash;march=v32</b> | <b>&ndash;march=common_v10_v32</b>]
  1158. <em>Target C-SKY options:</em>
  1159. [<b>-march=<var>arch</var></b>] [<b>-mcpu=<var>cpu</var></b>]
  1160. [<b>-EL</b>] [<b>-mlittle-endian</b>] [<b>-EB</b>] [<b>-mbig-endian</b>]
  1161. [<b>-fpic</b>] [<b>-pic</b>]
  1162. [<b>-mljump</b>] [<b>-mno-ljump</b>]
  1163. [<b>-force2bsr</b>] [<b>-mforce2bsr</b>] [<b>-no-force2bsr</b>] [<b>-mno-force2bsr</b>]
  1164. [<b>-jsri2bsr</b>] [<b>-mjsri2bsr</b>] [<b>-no-jsri2bsr </b>] [<b>-mno-jsri2bsr</b>]
  1165. [<b>-mnolrw </b>] [<b>-mno-lrw</b>]
  1166. [<b>-melrw</b>] [<b>-mno-elrw</b>]
  1167. [<b>-mlaf </b>] [<b>-mliterals-after-func</b>]
  1168. [<b>-mno-laf</b>] [<b>-mno-literals-after-func</b>]
  1169. [<b>-mlabr</b>] [<b>-mliterals-after-br</b>]
  1170. [<b>-mno-labr</b>] [<b>-mnoliterals-after-br</b>]
  1171. [<b>-mistack</b>] [<b>-mno-istack</b>]
  1172. [<b>-mhard-float</b>] [<b>-mmp</b>] [<b>-mcp</b>] [<b>-mcache</b>]
  1173. [<b>-msecurity</b>] [<b>-mtrust</b>]
  1174. [<b>-mdsp</b>] [<b>-medsp</b>] [<b>-mvdsp</b>]
  1175. <em>Target D10V options:</em>
  1176. [<b>-O</b>]
  1177. <em>Target D30V options:</em>
  1178. [<b>-O</b>|<b>-n</b>|<b>-N</b>]
  1179. <em>Target EPIPHANY options:</em>
  1180. [<b>-mepiphany</b>|<b>-mepiphany16</b>]
  1181. <em>Target H8/300 options:</em>
  1182. [-h-tick-hex]
  1183. <em>Target i386 options:</em>
  1184. [<b>&ndash;32</b>|<b>&ndash;x32</b>|<b>&ndash;64</b>] [<b>-n</b>]
  1185. [<b>-march</b>=<var>CPU</var>[+<var>EXTENSION</var>&hellip;]] [<b>-mtune</b>=<var>CPU</var>]
  1186. <em>Target IA-64 options:</em>
  1187. [<b>-mconstant-gp</b>|<b>-mauto-pic</b>]
  1188. [<b>-milp32</b>|<b>-milp64</b>|<b>-mlp64</b>|<b>-mp64</b>]
  1189. [<b>-mle</b>|<b>mbe</b>]
  1190. [<b>-mtune=itanium1</b>|<b>-mtune=itanium2</b>]
  1191. [<b>-munwind-check=warning</b>|<b>-munwind-check=error</b>]
  1192. [<b>-mhint.b=ok</b>|<b>-mhint.b=warning</b>|<b>-mhint.b=error</b>]
  1193. [<b>-x</b>|<b>-xexplicit</b>] [<b>-xauto</b>] [<b>-xdebug</b>]
  1194. <em>Target IP2K options:</em>
  1195. [<b>-mip2022</b>|<b>-mip2022ext</b>]
  1196. <em>Target M32C options:</em>
  1197. [<b>-m32c</b>|<b>-m16c</b>] [-relax] [-h-tick-hex]
  1198. <em>Target M32R options:</em>
  1199. [<b>&ndash;m32rx</b>|<b>&ndash;[no-]warn-explicit-parallel-conflicts</b>|
  1200. <b>&ndash;W[n]p</b>]
  1201. <em>Target M680X0 options:</em>
  1202. [<b>-l</b>] [<b>-m68000</b>|<b>-m68010</b>|<b>-m68020</b>|&hellip;]
  1203. <em>Target M68HC11 options:</em>
  1204. [<b>-m68hc11</b>|<b>-m68hc12</b>|<b>-m68hcs12</b>|<b>-mm9s12x</b>|<b>-mm9s12xg</b>]
  1205. [<b>-mshort</b>|<b>-mlong</b>]
  1206. [<b>-mshort-double</b>|<b>-mlong-double</b>]
  1207. [<b>&ndash;force-long-branches</b>] [<b>&ndash;short-branches</b>]
  1208. [<b>&ndash;strict-direct-mode</b>] [<b>&ndash;print-insn-syntax</b>]
  1209. [<b>&ndash;print-opcodes</b>] [<b>&ndash;generate-example</b>]
  1210. <em>Target MCORE options:</em>
  1211. [<b>-jsri2bsr</b>] [<b>-sifilter</b>] [<b>-relax</b>]
  1212. [<b>-mcpu=[210|340]</b>]
  1213. <em>Target Meta options:</em>
  1214. [<b>-mcpu=<var>cpu</var></b>] [<b>-mfpu=<var>cpu</var></b>] [<b>-mdsp=<var>cpu</var></b>]
  1215. <em>Target MICROBLAZE options:</em>
  1216. [<b>-mlittle-endian</b>] [<b>-mbig-endian</b>]
  1217. <em>Target MIPS options:</em>
  1218. [<b>-nocpp</b>] [<b>-EL</b>] [<b>-EB</b>] [<b>-O</b>[<var>optimization level</var>]]
  1219. [<b>-g</b>[<var>debug level</var>]] [<b>-G</b> <var>num</var>] [<b>-KPIC</b>] [<b>-call_shared</b>]
  1220. [<b>-non_shared</b>] [<b>-xgot</b> [<b>-mvxworks-pic</b>]
  1221. [<b>-mabi</b>=<var>ABI</var>] [<b>-32</b>] [<b>-n32</b>] [<b>-64</b>] [<b>-mfp32</b>] [<b>-mgp32</b>]
  1222. [<b>-mfp64</b>] [<b>-mgp64</b>] [<b>-mfpxx</b>]
  1223. [<b>-modd-spreg</b>] [<b>-mno-odd-spreg</b>]
  1224. [<b>-march</b>=<var>CPU</var>] [<b>-mtune</b>=<var>CPU</var>] [<b>-mips1</b>] [<b>-mips2</b>]
  1225. [<b>-mips3</b>] [<b>-mips4</b>] [<b>-mips5</b>] [<b>-mips32</b>] [<b>-mips32r2</b>]
  1226. [<b>-mips32r3</b>] [<b>-mips32r5</b>] [<b>-mips32r6</b>] [<b>-mips64</b>] [<b>-mips64r2</b>]
  1227. [<b>-mips64r3</b>] [<b>-mips64r5</b>] [<b>-mips64r6</b>]
  1228. [<b>-construct-floats</b>] [<b>-no-construct-floats</b>]
  1229. [<b>-mignore-branch-isa</b>] [<b>-mno-ignore-branch-isa</b>]
  1230. [<b>-mnan=<var>encoding</var></b>]
  1231. [<b>-trap</b>] [<b>-no-break</b>] [<b>-break</b>] [<b>-no-trap</b>]
  1232. [<b>-mips16</b>] [<b>-no-mips16</b>]
  1233. [<b>-mmips16e2</b>] [<b>-mno-mips16e2</b>]
  1234. [<b>-mmicromips</b>] [<b>-mno-micromips</b>]
  1235. [<b>-msmartmips</b>] [<b>-mno-smartmips</b>]
  1236. [<b>-mips3d</b>] [<b>-no-mips3d</b>]
  1237. [<b>-mdmx</b>] [<b>-no-mdmx</b>]
  1238. [<b>-mdsp</b>] [<b>-mno-dsp</b>]
  1239. [<b>-mdspr2</b>] [<b>-mno-dspr2</b>]
  1240. [<b>-mdspr3</b>] [<b>-mno-dspr3</b>]
  1241. [<b>-mmsa</b>] [<b>-mno-msa</b>]
  1242. [<b>-mxpa</b>] [<b>-mno-xpa</b>]
  1243. [<b>-mmt</b>] [<b>-mno-mt</b>]
  1244. [<b>-mmcu</b>] [<b>-mno-mcu</b>]
  1245. [<b>-mcrc</b>] [<b>-mno-crc</b>]
  1246. [<b>-mginv</b>] [<b>-mno-ginv</b>]
  1247. [<b>-mloongson-mmi</b>] [<b>-mno-loongson-mmi</b>]
  1248. [<b>-mloongson-cam</b>] [<b>-mno-loongson-cam</b>]
  1249. [<b>-mloongson-ext</b>] [<b>-mno-loongson-ext</b>]
  1250. [<b>-mloongson-ext2</b>] [<b>-mno-loongson-ext2</b>]
  1251. [<b>-minsn32</b>] [<b>-mno-insn32</b>]
  1252. [<b>-mfix7000</b>] [<b>-mno-fix7000</b>]
  1253. [<b>-mfix-rm7000</b>] [<b>-mno-fix-rm7000</b>]
  1254. [<b>-mfix-vr4120</b>] [<b>-mno-fix-vr4120</b>]
  1255. [<b>-mfix-vr4130</b>] [<b>-mno-fix-vr4130</b>]
  1256. [<b>-mfix-r5900</b>] [<b>-mno-fix-r5900</b>]
  1257. [<b>-mdebug</b>] [<b>-no-mdebug</b>]
  1258. [<b>-mpdr</b>] [<b>-mno-pdr</b>]
  1259. <em>Target MMIX options:</em>
  1260. [<b>&ndash;fixed-special-register-names</b>] [<b>&ndash;globalize-symbols</b>]
  1261. [<b>&ndash;gnu-syntax</b>] [<b>&ndash;relax</b>] [<b>&ndash;no-predefined-symbols</b>]
  1262. [<b>&ndash;no-expand</b>] [<b>&ndash;no-merge-gregs</b>] [<b>-x</b>]
  1263. [<b>&ndash;linker-allocated-gregs</b>]
  1264. <em>Target Nios II options:</em>
  1265. [<b>-relax-all</b>] [<b>-relax-section</b>] [<b>-no-relax</b>]
  1266. [<b>-EB</b>] [<b>-EL</b>]
  1267. <em>Target NDS32 options:</em>
  1268. [<b>-EL</b>] [<b>-EB</b>] [<b>-O</b>] [<b>-Os</b>] [<b>-mcpu=<var>cpu</var></b>]
  1269. [<b>-misa=<var>isa</var></b>] [<b>-mabi=<var>abi</var></b>] [<b>-mall-ext</b>]
  1270. [<b>-m[no-]16-bit</b>] [<b>-m[no-]perf-ext</b>] [<b>-m[no-]perf2-ext</b>]
  1271. [<b>-m[no-]string-ext</b>] [<b>-m[no-]dsp-ext</b>] [<b>-m[no-]mac</b>] [<b>-m[no-]div</b>]
  1272. [<b>-m[no-]audio-isa-ext</b>] [<b>-m[no-]fpu-sp-ext</b>] [<b>-m[no-]fpu-dp-ext</b>]
  1273. [<b>-m[no-]fpu-fma</b>] [<b>-mfpu-freg=<var>FREG</var></b>] [<b>-mreduced-regs</b>]
  1274. [<b>-mfull-regs</b>] [<b>-m[no-]dx-regs</b>] [<b>-mpic</b>] [<b>-mno-relax</b>]
  1275. [<b>-mb2bb</b>]
  1276. <em>Target PDP11 options:</em>
  1277. [<b>-mpic</b>|<b>-mno-pic</b>] [<b>-mall</b>] [<b>-mno-extensions</b>]
  1278. [<b>-m</b><var>extension</var>|<b>-mno-</b><var>extension</var>]
  1279. [<b>-m</b><var>cpu</var>] [<b>-m</b><var>machine</var>]
  1280. <em>Target picoJava options:</em>
  1281. [<b>-mb</b>|<b>-me</b>]
  1282. <em>Target PowerPC options:</em>
  1283. [<b>-a32</b>|<b>-a64</b>]
  1284. [<b>-mpwrx</b>|<b>-mpwr2</b>|<b>-mpwr</b>|<b>-m601</b>|<b>-mppc</b>|<b>-mppc32</b>|<b>-m603</b>|<b>-m604</b>|<b>-m403</b>|<b>-m405</b>|
  1285. <b>-m440</b>|<b>-m464</b>|<b>-m476</b>|<b>-m7400</b>|<b>-m7410</b>|<b>-m7450</b>|<b>-m7455</b>|<b>-m750cl</b>|<b>-mgekko</b>|
  1286. <b>-mbroadway</b>|<b>-mppc64</b>|<b>-m620</b>|<b>-me500</b>|<b>-e500x2</b>|<b>-me500mc</b>|<b>-me500mc64</b>|<b>-me5500</b>|
  1287. <b>-me6500</b>|<b>-mppc64bridge</b>|<b>-mbooke</b>|<b>-mpower4</b>|<b>-mpwr4</b>|<b>-mpower5</b>|<b>-mpwr5</b>|<b>-mpwr5x</b>|
  1288. <b>-mpower6</b>|<b>-mpwr6</b>|<b>-mpower7</b>|<b>-mpwr7</b>|<b>-mpower8</b>|<b>-mpwr8</b>|<b>-mpower9</b>|<b>-mpwr9</b><b>-ma2</b>|
  1289. <b>-mcell</b>|<b>-mspe</b>|<b>-mspe2</b>|<b>-mtitan</b>|<b>-me300</b>|<b>-mcom</b>]
  1290. [<b>-many</b>] [<b>-maltivec</b>|<b>-mvsx</b>|<b>-mhtm</b>|<b>-mvle</b>]
  1291. [<b>-mregnames</b>|<b>-mno-regnames</b>]
  1292. [<b>-mrelocatable</b>|<b>-mrelocatable-lib</b>|<b>-K PIC</b>] [<b>-memb</b>]
  1293. [<b>-mlittle</b>|<b>-mlittle-endian</b>|<b>-le</b>|<b>-mbig</b>|<b>-mbig-endian</b>|<b>-be</b>]
  1294. [<b>-msolaris</b>|<b>-mno-solaris</b>]
  1295. [<b>-nops=<var>count</var></b>]
  1296. <em>Target PRU options:</em>
  1297. [<b>-link-relax</b>]
  1298. [<b>-mnolink-relax</b>]
  1299. [<b>-mno-warn-regname-label</b>]
  1300. <em>Target RISC-V options:</em>
  1301. [<b>-fpic</b>|<b>-fPIC</b>|<b>-fno-pic</b>]
  1302. [<b>-march</b>=<var>ISA</var>]
  1303. [<b>-mabi</b>=<var>ABI</var>]
  1304. [<b>-mlittle-endian</b>|<b>-mbig-endian</b>]
  1305. <em>Target RL78 options:</em>
  1306. [<b>-mg10</b>]
  1307. [<b>-m32bit-doubles</b>|<b>-m64bit-doubles</b>]
  1308. <em>Target RX options:</em>
  1309. [<b>-mlittle-endian</b>|<b>-mbig-endian</b>]
  1310. [<b>-m32bit-doubles</b>|<b>-m64bit-doubles</b>]
  1311. [<b>-muse-conventional-section-names</b>]
  1312. [<b>-msmall-data-limit</b>]
  1313. [<b>-mpid</b>]
  1314. [<b>-mrelax</b>]
  1315. [<b>-mint-register=<var>number</var></b>]
  1316. [<b>-mgcc-abi</b>|<b>-mrx-abi</b>]
  1317. <em>Target s390 options:</em>
  1318. [<b>-m31</b>|<b>-m64</b>] [<b>-mesa</b>|<b>-mzarch</b>] [<b>-march</b>=<var>CPU</var>]
  1319. [<b>-mregnames</b>|<b>-mno-regnames</b>]
  1320. [<b>-mwarn-areg-zero</b>]
  1321. <em>Target SCORE options:</em>
  1322. [<b>-EB</b>][<b>-EL</b>][<b>-FIXDD</b>][<b>-NWARN</b>]
  1323. [<b>-SCORE5</b>][<b>-SCORE5U</b>][<b>-SCORE7</b>][<b>-SCORE3</b>]
  1324. [<b>-march=score7</b>][<b>-march=score3</b>]
  1325. [<b>-USE_R1</b>][<b>-KPIC</b>][<b>-O0</b>][<b>-G</b> <var>num</var>][<b>-V</b>]
  1326. <em>Target SPARC options:</em>
  1327. [<b>-Av6</b>|<b>-Av7</b>|<b>-Av8</b>|<b>-Aleon</b>|<b>-Asparclet</b>|<b>-Asparclite</b>
  1328. <b>-Av8plus</b>|<b>-Av8plusa</b>|<b>-Av8plusb</b>|<b>-Av8plusc</b>|<b>-Av8plusd</b>
  1329. <b>-Av8plusv</b>|<b>-Av8plusm</b>|<b>-Av9</b>|<b>-Av9a</b>|<b>-Av9b</b>|<b>-Av9c</b>
  1330. <b>-Av9d</b>|<b>-Av9e</b>|<b>-Av9v</b>|<b>-Av9m</b>|<b>-Asparc</b>|<b>-Asparcvis</b>
  1331. <b>-Asparcvis2</b>|<b>-Asparcfmaf</b>|<b>-Asparcima</b>|<b>-Asparcvis3</b>
  1332. <b>-Asparcvisr</b>|<b>-Asparc5</b>]
  1333. [<b>-xarch=v8plus</b>|<b>-xarch=v8plusa</b>]|<b>-xarch=v8plusb</b>|<b>-xarch=v8plusc</b>
  1334. <b>-xarch=v8plusd</b>|<b>-xarch=v8plusv</b>|<b>-xarch=v8plusm</b>|<b>-xarch=v9</b>
  1335. <b>-xarch=v9a</b>|<b>-xarch=v9b</b>|<b>-xarch=v9c</b>|<b>-xarch=v9d</b>|<b>-xarch=v9e</b>
  1336. <b>-xarch=v9v</b>|<b>-xarch=v9m</b>|<b>-xarch=sparc</b>|<b>-xarch=sparcvis</b>
  1337. <b>-xarch=sparcvis2</b>|<b>-xarch=sparcfmaf</b>|<b>-xarch=sparcima</b>
  1338. <b>-xarch=sparcvis3</b>|<b>-xarch=sparcvisr</b>|<b>-xarch=sparc5</b>
  1339. <b>-bump</b>]
  1340. [<b>-32</b>|<b>-64</b>]
  1341. [<b>&ndash;enforce-aligned-data</b>][<b>&ndash;dcti-couples-detect</b>]
  1342. <em>Target TIC54X options:</em>
  1343. [<b>-mcpu=54[123589]</b>|<b>-mcpu=54[56]lp</b>] [<b>-mfar-mode</b>|<b>-mf</b>]
  1344. [<b>-merrors-to-file</b> <var>&lt;filename&gt;</var>|<b>-me</b> <var>&lt;filename&gt;</var>]
  1345. <em>Target TIC6X options:</em>
  1346. [<b>-march=<var>arch</var></b>] [<b>-mbig-endian</b>|<b>-mlittle-endian</b>]
  1347. [<b>-mdsbt</b>|<b>-mno-dsbt</b>] [<b>-mpid=no</b>|<b>-mpid=near</b>|<b>-mpid=far</b>]
  1348. [<b>-mpic</b>|<b>-mno-pic</b>]
  1349. <em>Target TILE-Gx options:</em>
  1350. [<b>-m32</b>|<b>-m64</b>][<b>-EB</b>][<b>-EL</b>]
  1351. <em>Target Visium options:</em>
  1352. [<b>-mtune=<var>arch</var></b>]
  1353. <em>Target Xtensa options:</em>
  1354. [<b>&ndash;[no-]text-section-literals</b>] [<b>&ndash;[no-]auto-litpools</b>]
  1355. [<b>&ndash;[no-]absolute-literals</b>]
  1356. [<b>&ndash;[no-]target-align</b>] [<b>&ndash;[no-]longcalls</b>]
  1357. [<b>&ndash;[no-]transform</b>]
  1358. [<b>&ndash;rename-section</b> <var>oldname</var>=<var>newname</var>]
  1359. [<b>&ndash;[no-]trampolines</b>]
  1360. [<b>&ndash;abi-windowed</b>|<b>&ndash;abi-call0</b>]
  1361. <em>Target Z80 options:</em>
  1362. [<b>-march=<var>CPU</var><var>[-EXT]</var><var>[+EXT]</var></b>]
  1363. [<b>-local-prefix=</b><var>PREFIX</var>]
  1364. [<b>-colonless</b>]
  1365. [<b>-sdcc</b>]
  1366. [<b>-fp-s=</b><var>FORMAT</var>]
  1367. [<b>-fp-d=</b><var>FORMAT</var>]
  1368. </pre></div>
  1369. <dl compact="compact">
  1370. <dt><code>@<var>file</var></code></dt>
  1371. <dd><p>Read command-line options from <var>file</var>. The options read are
  1372. inserted in place of the original @<var>file</var> option. If <var>file</var>
  1373. does not exist, or cannot be read, then the option will be treated
  1374. literally, and not removed.
  1375. </p>
  1376. <p>Options in <var>file</var> are separated by whitespace. A whitespace
  1377. character may be included in an option by surrounding the entire
  1378. option in either single or double quotes. Any character (including a
  1379. backslash) may be included by prefixing the character to be included
  1380. with a backslash. The <var>file</var> may itself contain additional
  1381. @<var>file</var> options; any such options will be processed recursively.
  1382. </p>
  1383. </dd>
  1384. <dt><code>-a[cdghilmns]</code></dt>
  1385. <dd><p>Turn on listings, in any of a variety of ways:
  1386. </p>
  1387. <dl compact="compact">
  1388. <dt><code>-ac</code></dt>
  1389. <dd><p>omit false conditionals
  1390. </p>
  1391. </dd>
  1392. <dt><code>-ad</code></dt>
  1393. <dd><p>omit debugging directives
  1394. </p>
  1395. </dd>
  1396. <dt><code>-ag</code></dt>
  1397. <dd><p>include general information, like as version and options passed
  1398. </p>
  1399. </dd>
  1400. <dt><code>-ah</code></dt>
  1401. <dd><p>include high-level source
  1402. </p>
  1403. </dd>
  1404. <dt><code>-al</code></dt>
  1405. <dd><p>include assembly
  1406. </p>
  1407. </dd>
  1408. <dt><code>-ali</code></dt>
  1409. <dd><p>include assembly with ginsn
  1410. </p>
  1411. </dd>
  1412. <dt><code>-am</code></dt>
  1413. <dd><p>include macro expansions
  1414. </p>
  1415. </dd>
  1416. <dt><code>-an</code></dt>
  1417. <dd><p>omit forms processing
  1418. </p>
  1419. </dd>
  1420. <dt><code>-as</code></dt>
  1421. <dd><p>include symbols
  1422. </p>
  1423. </dd>
  1424. <dt><code>=file</code></dt>
  1425. <dd><p>set the name of the listing file
  1426. </p></dd>
  1427. </dl>
  1428. <p>You may combine these options; for example, use &lsquo;<samp>-aln</samp>&rsquo; for assembly
  1429. listing without forms processing. The &lsquo;<samp>=file</samp>&rsquo; option, if used, must be
  1430. the last one. By itself, &lsquo;<samp>-a</samp>&rsquo; defaults to &lsquo;<samp>-ahls</samp>&rsquo;.
  1431. </p>
  1432. </dd>
  1433. <dt><code>--alternate</code></dt>
  1434. <dd><p>Begin in alternate macro mode.
  1435. See <a href="#Altmacro"><code>.altmacro</code></a>.
  1436. </p>
  1437. </dd>
  1438. <dt><code>--compress-debug-sections</code></dt>
  1439. <dd><p>Compress DWARF debug sections using zlib with SHF_COMPRESSED from the
  1440. ELF ABI. The resulting object file may not be compatible with older
  1441. linkers and object file utilities. Note if compression would make a
  1442. given section <em>larger</em> then it is not compressed.
  1443. </p>
  1444. <span id="index-_002d_002dcompress_002ddebug_002dsections_003d-option"></span>
  1445. </dd>
  1446. <dt><code>--compress-debug-sections=none</code></dt>
  1447. <dt><code>--compress-debug-sections=zlib</code></dt>
  1448. <dt><code>--compress-debug-sections=zlib-gnu</code></dt>
  1449. <dt><code>--compress-debug-sections=zlib-gabi</code></dt>
  1450. <dt><code>--compress-debug-sections=zstd</code></dt>
  1451. <dd><p>These options control how DWARF debug sections are compressed.
  1452. <samp>--compress-debug-sections=none</samp> is equivalent to
  1453. <samp>--nocompress-debug-sections</samp>.
  1454. <samp>--compress-debug-sections=zlib</samp> and
  1455. <samp>--compress-debug-sections=zlib-gabi</samp> are equivalent to
  1456. <samp>--compress-debug-sections</samp>.
  1457. <samp>--compress-debug-sections=zlib-gnu</samp> compresses DWARF debug sections
  1458. using the obsoleted zlib-gnu format. The debug sections are renamed to begin
  1459. with &lsquo;<samp>.zdebug</samp>&rsquo;.
  1460. <samp>--compress-debug-sections=zstd</samp> compresses DWARF debug
  1461. sections using zstd. Note - if compression would actually make a section
  1462. <em>larger</em>, then it is not compressed nor renamed.
  1463. </p>
  1464. </dd>
  1465. <dt><code>--nocompress-debug-sections</code></dt>
  1466. <dd><p>Do not compress DWARF debug sections. This is usually the default for all
  1467. targets except the x86/x86_64, but a configure time option can be used to
  1468. override this.
  1469. </p>
  1470. </dd>
  1471. <dt><code>-D</code></dt>
  1472. <dd><p>Enable debugging in target specific backends, if supported. Otherwise ignored.
  1473. Even if ignored, this option is accepted for script compatibility with calls to
  1474. other assemblers.
  1475. </p>
  1476. </dd>
  1477. <dt><code>--debug-prefix-map <var>old</var>=<var>new</var></code></dt>
  1478. <dd><p>When assembling files in directory <samp><var>old</var></samp>, record debugging
  1479. information describing them as in <samp><var>new</var></samp> instead.
  1480. </p>
  1481. </dd>
  1482. <dt><code>--defsym <var>sym</var>=<var>value</var></code></dt>
  1483. <dd><p>Define the symbol <var>sym</var> to be <var>value</var> before assembling the input file.
  1484. <var>value</var> must be an integer constant. As in C, a leading &lsquo;<samp>0x</samp>&rsquo;
  1485. indicates a hexadecimal value, and a leading &lsquo;<samp>0</samp>&rsquo; indicates an octal
  1486. value. The value of the symbol can be overridden inside a source file via the
  1487. use of a <code>.set</code> pseudo-op.
  1488. </p>
  1489. </dd>
  1490. <dt><code>--dump-config</code></dt>
  1491. <dd><p>Displays how the assembler is configured and then exits.
  1492. </p>
  1493. </dd>
  1494. <dt><code>--elf-stt-common=no</code></dt>
  1495. <dt><code>--elf-stt-common=yes</code></dt>
  1496. <dd><p>These options control whether the ELF assembler should generate common
  1497. symbols with the <code>STT_COMMON</code> type. The default can be controlled
  1498. by a configure option <samp>--enable-elf-stt-common</samp>.
  1499. </p>
  1500. </dd>
  1501. <dt><code>--emulation=<var>name</var></code></dt>
  1502. <dd><p>If the assembler is configured to support multiple different target
  1503. configurations then this option can be used to select the desired form.
  1504. </p>
  1505. </dd>
  1506. <dt><code>-f</code></dt>
  1507. <dd><p>&ldquo;fast&rdquo;&mdash;skip whitespace and comment preprocessing (assume source is
  1508. compiler output).
  1509. </p>
  1510. </dd>
  1511. <dt><code>-g</code></dt>
  1512. <dt><code>--gen-debug</code></dt>
  1513. <dd><p>Generate debugging information for each assembler source line using whichever
  1514. debug format is preferred by the target. This currently means either STABS,
  1515. ECOFF or DWARF2. When the debug format is DWARF then a <code>.debug_info</code> and
  1516. <code>.debug_line</code> section is only emitted when the assembly file doesn&rsquo;t
  1517. generate one itself.
  1518. </p>
  1519. </dd>
  1520. <dt><code>--gstabs</code></dt>
  1521. <dd><p>Generate stabs debugging information for each assembler line. This
  1522. may help debugging assembler code, if the debugger can handle it.
  1523. </p>
  1524. </dd>
  1525. <dt><code>--gstabs+</code></dt>
  1526. <dd><p>Generate stabs debugging information for each assembler line, with GNU
  1527. extensions that probably only gdb can handle, and that could make other
  1528. debuggers crash or refuse to read your program. This
  1529. may help debugging assembler code. Currently the only GNU extension is
  1530. the location of the current working directory at assembling time.
  1531. </p>
  1532. </dd>
  1533. <dt><code>--gdwarf-2</code></dt>
  1534. <dd><p>Generate DWARF2 debugging information for each assembler line. This
  1535. may help debugging assembler code, if the debugger can handle it. Note&mdash;this
  1536. option is only supported by some targets, not all of them.
  1537. </p>
  1538. </dd>
  1539. <dt><code>--gdwarf-3</code></dt>
  1540. <dd><p>This option is the same as the <samp>--gdwarf-2</samp> option, except that it
  1541. allows for the possibility of the generation of extra debug information as per
  1542. version 3 of the DWARF specification. Note - enabling this option does not
  1543. guarantee the generation of any extra information, the choice to do so is on a
  1544. per target basis.
  1545. </p>
  1546. </dd>
  1547. <dt><code>--gdwarf-4</code></dt>
  1548. <dd><p>This option is the same as the <samp>--gdwarf-2</samp> option, except that it
  1549. allows for the possibility of the generation of extra debug information as per
  1550. version 4 of the DWARF specification. Note - enabling this option does not
  1551. guarantee the generation of any extra information, the choice to do so is on a
  1552. per target basis.
  1553. </p>
  1554. </dd>
  1555. <dt><code>--gdwarf-5</code></dt>
  1556. <dd><p>This option is the same as the <samp>--gdwarf-2</samp> option, except that it
  1557. allows for the possibility of the generation of extra debug information as per
  1558. version 5 of the DWARF specification. Note - enabling this option does not
  1559. guarantee the generation of any extra information, the choice to do so is on a
  1560. per target basis.
  1561. </p>
  1562. </dd>
  1563. <dt><code>--gdwarf-sections</code></dt>
  1564. <dd><p>Instead of creating a .debug_line section, create a series of
  1565. .debug_line.<var>foo</var> sections where <var>foo</var> is the name of the
  1566. corresponding code section. For example a code section called <var>.text.func</var>
  1567. will have its dwarf line number information placed into a section called
  1568. <var>.debug_line.text.func</var>. If the code section is just called <var>.text</var>
  1569. then debug line section will still be called just <var>.debug_line</var> without any
  1570. suffix.
  1571. </p>
  1572. </dd>
  1573. <dt><code>--gdwarf-cie-version=<var>version</var></code></dt>
  1574. <dd><p>Control which version of DWARF Common Information Entries (CIEs) are produced.
  1575. When this flag is not specified the default is version 1, though some targets
  1576. can modify this default. Other possible values for <var>version</var> are 3 or 4.
  1577. </p>
  1578. </dd>
  1579. <dt><code>--generate-missing-build-notes=yes</code></dt>
  1580. <dt><code>--generate-missing-build-notes=no</code></dt>
  1581. <dd><p>These options control whether the ELF assembler should generate GNU Build
  1582. attribute notes if none are present in the input sources.
  1583. The default can be controlled by the <samp>--enable-generate-build-notes</samp>
  1584. configure option.
  1585. </p>
  1586. </dd>
  1587. <dt><code>--gsframe</code></dt>
  1588. <dt><code>--gsframe</code></dt>
  1589. <dd><p>Create <var>.sframe</var> section from CFI directives.
  1590. </p>
  1591. </dd>
  1592. <dt><code>--hash-size <var>N</var></code></dt>
  1593. <dd><p>Ignored. Supported for command line compatibility with other assemblers.
  1594. </p>
  1595. </dd>
  1596. <dt><code>--help</code></dt>
  1597. <dd><p>Print a summary of the command-line options and exit.
  1598. </p>
  1599. </dd>
  1600. <dt><code>--target-help</code></dt>
  1601. <dd><p>Print a summary of all target specific options and exit.
  1602. </p>
  1603. </dd>
  1604. <dt><code>-I <var>dir</var></code></dt>
  1605. <dd><p>Add directory <var>dir</var> to the search list for <code>.include</code> directives.
  1606. </p>
  1607. </dd>
  1608. <dt><code>-J</code></dt>
  1609. <dd><p>Don&rsquo;t warn about signed overflow.
  1610. </p>
  1611. </dd>
  1612. <dt><code>-K</code></dt>
  1613. <dd><p>Issue warnings when difference tables altered for long displacements.
  1614. </p>
  1615. </dd>
  1616. <dt><code>-L</code></dt>
  1617. <dt><code>--keep-locals</code></dt>
  1618. <dd><p>Keep (in the symbol table) local symbols. These symbols start with
  1619. system-specific local label prefixes, typically &lsquo;<samp>.L</samp>&rsquo; for ELF systems
  1620. or &lsquo;<samp>L</samp>&rsquo; for traditional a.out systems.
  1621. See <a href="#Symbol-Names">Symbol Names</a>.
  1622. </p>
  1623. </dd>
  1624. <dt><code>--listing-lhs-width=<var>number</var></code></dt>
  1625. <dd><p>Set the maximum width, in words, of the output data column for an assembler
  1626. listing to <var>number</var>.
  1627. </p>
  1628. </dd>
  1629. <dt><code>--listing-lhs-width2=<var>number</var></code></dt>
  1630. <dd><p>Set the maximum width, in words, of the output data column for continuation
  1631. lines in an assembler listing to <var>number</var>.
  1632. </p>
  1633. </dd>
  1634. <dt><code>--listing-rhs-width=<var>number</var></code></dt>
  1635. <dd><p>Set the maximum width of an input source line, as displayed in a listing, to
  1636. <var>number</var> bytes.
  1637. </p>
  1638. </dd>
  1639. <dt><code>--listing-cont-lines=<var>number</var></code></dt>
  1640. <dd><p>Set the maximum number of lines printed in a listing for a single line of input
  1641. to <var>number</var> + 1.
  1642. </p>
  1643. </dd>
  1644. <dt><code>--multibyte-handling=allow</code></dt>
  1645. <dt><code>--multibyte-handling=warn</code></dt>
  1646. <dt><code>--multibyte-handling=warn-sym-only</code></dt>
  1647. <dt><code>--multibyte-handling=warn_sym_only</code></dt>
  1648. <dd><p>Controls how the assembler handles multibyte characters in the input. The
  1649. default (which can be restored by using the <samp>allow</samp> argument) is to
  1650. allow such characters without complaint. Using the <samp>warn</samp> argument will
  1651. make the assembler generate a warning message whenever any multibyte character
  1652. is encountered. Using the <samp>warn-sym-only</samp> argument will only cause a
  1653. warning to be generated when a symbol is defined with a name that contains
  1654. multibyte characters. (References to undefined symbols will not generate a
  1655. warning).
  1656. </p>
  1657. </dd>
  1658. <dt><code>--no-pad-sections</code></dt>
  1659. <dd><p>Stop the assembler for padding the ends of output sections to the alignment
  1660. of that section. The default is to pad the sections, but this can waste space
  1661. which might be needed on targets which have tight memory constraints.
  1662. </p>
  1663. </dd>
  1664. <dt><code>-o <var>objfile</var></code></dt>
  1665. <dd><p>Name the object-file output from <code>as</code> <var>objfile</var>.
  1666. </p>
  1667. </dd>
  1668. <dt><code>-R</code></dt>
  1669. <dd><p>Fold the data section into the text section.
  1670. </p>
  1671. </dd>
  1672. <dt><code>--reduce-memory-overheads</code></dt>
  1673. <dd><p>Ignored. Supported for compatibility with tools that apss the same option to
  1674. both the assembler and the linker.
  1675. </p>
  1676. </dd>
  1677. <dt><code>--scfi=experimental</code></dt>
  1678. <dd><p>This option controls whether the assembler should synthesize CFI for
  1679. hand-written input. If the input already contains some synthesizable CFI
  1680. directives, the assembler ignores them and emits a warning. Note that
  1681. <code>--scfi=experimental</code> is not intended to be used for compiler-generated
  1682. code, including inline assembly. This experimental support is work in
  1683. progress. Only System V AMD64 ABI is supported.
  1684. </p>
  1685. <p>Each input function in assembly must begin with the <code>.type</code> directive, and
  1686. should ideally be closed off using a <code>.size</code> directive. When using SCFI,
  1687. each <code>.type</code> directive prompts GAS to start a new FDE (a.k.a., Function
  1688. Descriptor Entry). This implies that with each <code>.type</code> directive, a
  1689. previous block of instructions, if any, is finalised as a distinct FDE.
  1690. </p>
  1691. </dd>
  1692. <dt><code>--sectname-subst</code></dt>
  1693. <dd><p>Honor substitution sequences in section names.
  1694. See <a href="#Section-Name-Substitutions"><code>.section <var>name</var></code></a>.
  1695. </p>
  1696. </dd>
  1697. <dt><code>--size-check=error</code></dt>
  1698. <dt><code>--size-check=warning</code></dt>
  1699. <dd><p>Issue an error or warning for invalid ELF .size directive.
  1700. </p>
  1701. </dd>
  1702. <dt><code>--statistics</code></dt>
  1703. <dd><p>Print the maximum space (in bytes) and total time (in seconds) used by
  1704. assembly.
  1705. </p>
  1706. </dd>
  1707. <dt><code>--strip-local-absolute</code></dt>
  1708. <dd><p>Remove local absolute symbols from the outgoing symbol table.
  1709. </p>
  1710. </dd>
  1711. <dt><code>-v</code></dt>
  1712. <dt><code>-version</code></dt>
  1713. <dd><p>Print the <code>as</code> version.
  1714. </p>
  1715. </dd>
  1716. <dt><code>--version</code></dt>
  1717. <dd><p>Print the <code>as</code> version and exit.
  1718. </p>
  1719. </dd>
  1720. <dt><code>-W</code></dt>
  1721. <dt><code>--no-warn</code></dt>
  1722. <dd><p>Suppress warning messages.
  1723. </p>
  1724. </dd>
  1725. <dt><code>--fatal-warnings</code></dt>
  1726. <dd><p>Treat warnings as errors.
  1727. </p>
  1728. </dd>
  1729. <dt><code>--warn</code></dt>
  1730. <dd><p>Don&rsquo;t suppress warning messages or treat them as errors.
  1731. </p>
  1732. </dd>
  1733. <dt><code>-w</code></dt>
  1734. <dd><p>Ignored.
  1735. </p>
  1736. </dd>
  1737. <dt><code>-x</code></dt>
  1738. <dd><p>Ignored.
  1739. </p>
  1740. </dd>
  1741. <dt><code>-Z</code></dt>
  1742. <dd><p>Generate an object file even after errors.
  1743. </p>
  1744. </dd>
  1745. <dt><code>-- | <var>files</var> &hellip;</code></dt>
  1746. <dd><p>Standard input, or source files to assemble.
  1747. </p>
  1748. </dd>
  1749. </dl>
  1750. <p>See <a href="#AArch64-Options">AArch64 Options</a>, for the options available when as is configured
  1751. for the 64-bit mode of the ARM Architecture (AArch64).
  1752. </p>
  1753. <p>See <a href="#Alpha-Options">Alpha Options</a>, for the options available when as is configured
  1754. for an Alpha processor.
  1755. </p>
  1756. <p>The following options are available when as is configured for an ARC
  1757. processor.
  1758. </p>
  1759. <dl compact="compact">
  1760. <dt><code>-mcpu=<var>cpu</var></code></dt>
  1761. <dd><p>This option selects the core processor variant.
  1762. </p></dd>
  1763. <dt><code>-EB | -EL</code></dt>
  1764. <dd><p>Select either big-endian (-EB) or little-endian (-EL) output.
  1765. </p></dd>
  1766. <dt><code>-mcode-density</code></dt>
  1767. <dd><p>Enable Code Density extension instructions.
  1768. </p></dd>
  1769. </dl>
  1770. <p>The following options are available when as is configured for the ARM
  1771. processor family.
  1772. </p>
  1773. <dl compact="compact">
  1774. <dt><code>-mcpu=<var>processor</var>[+<var>extension</var>&hellip;]</code></dt>
  1775. <dd><p>Specify which ARM processor variant is the target.
  1776. </p></dd>
  1777. <dt><code>-march=<var>architecture</var>[+<var>extension</var>&hellip;]</code></dt>
  1778. <dd><p>Specify which ARM architecture variant is used by the target.
  1779. </p></dd>
  1780. <dt><code>-mfpu=<var>floating-point-format</var></code></dt>
  1781. <dd><p>Select which Floating Point architecture is the target.
  1782. </p></dd>
  1783. <dt><code>-mfloat-abi=<var>abi</var></code></dt>
  1784. <dd><p>Select which floating point ABI is in use.
  1785. </p></dd>
  1786. <dt><code>-mthumb</code></dt>
  1787. <dd><p>Enable Thumb only instruction decoding.
  1788. </p></dd>
  1789. <dt><code>-mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant</code></dt>
  1790. <dd><p>Select which procedure calling convention is in use.
  1791. </p></dd>
  1792. <dt><code>-EB | -EL</code></dt>
  1793. <dd><p>Select either big-endian (-EB) or little-endian (-EL) output.
  1794. </p></dd>
  1795. <dt><code>-mthumb-interwork</code></dt>
  1796. <dd><p>Specify that the code has been generated with interworking between Thumb and
  1797. ARM code in mind.
  1798. </p></dd>
  1799. <dt><code>-mccs</code></dt>
  1800. <dd><p>Turns on CodeComposer Studio assembly syntax compatibility mode.
  1801. </p></dd>
  1802. <dt><code>-k</code></dt>
  1803. <dd><p>Specify that PIC code has been generated.
  1804. </p></dd>
  1805. </dl>
  1806. <p>See <a href="#Blackfin-Options">Blackfin Options</a>, for the options available when as is
  1807. configured for the Blackfin processor family.
  1808. </p>
  1809. <p>See <a href="#BPF-Options">BPF Options</a>, for the options available when as is
  1810. configured for the Linux kernel BPF processor family.
  1811. </p>
  1812. <p>See the info pages for documentation of the CRIS-specific options.
  1813. </p>
  1814. <p>See <a href="#C_002dSKY-Options">C-SKY Options</a>, for the options available when as is
  1815. configured for the C-SKY processor family.
  1816. </p>
  1817. <p>The following options are available when as is configured for
  1818. a D10V processor.
  1819. </p><dl compact="compact">
  1820. <dd><span id="index-D10V-optimization"></span>
  1821. <span id="index-optimization_002c-D10V"></span>
  1822. </dd>
  1823. <dt><code>-O</code></dt>
  1824. <dd><p>Optimize output by parallelizing instructions.
  1825. </p></dd>
  1826. </dl>
  1827. <p>The following options are available when as is configured for a D30V
  1828. processor.
  1829. </p><dl compact="compact">
  1830. <dd><span id="index-D30V-optimization"></span>
  1831. <span id="index-optimization_002c-D30V"></span>
  1832. </dd>
  1833. <dt><code>-O</code></dt>
  1834. <dd><p>Optimize output by parallelizing instructions.
  1835. </p>
  1836. <span id="index-D30V-nops"></span>
  1837. </dd>
  1838. <dt><code>-n</code></dt>
  1839. <dd><p>Warn when nops are generated.
  1840. </p>
  1841. <span id="index-D30V-nops-after-32_002dbit-multiply"></span>
  1842. </dd>
  1843. <dt><code>-N</code></dt>
  1844. <dd><p>Warn when a nop after a 32-bit multiply instruction is generated.
  1845. </p></dd>
  1846. </dl>
  1847. <p>The following options are available when as is configured for the
  1848. Adapteva EPIPHANY series.
  1849. </p>
  1850. <p>See <a href="#Epiphany-Options">Epiphany Options</a>, for the options available when as is
  1851. configured for an Epiphany processor.
  1852. </p>
  1853. <p>See <a href="#i386_002dOptions">i386-Options</a>, for the options available when as is
  1854. configured for an i386 processor.
  1855. </p>
  1856. <p>The following options are available when as is configured for the
  1857. Ubicom IP2K series.
  1858. </p>
  1859. <dl compact="compact">
  1860. <dt><code>-mip2022ext</code></dt>
  1861. <dd><p>Specifies that the extended IP2022 instructions are allowed.
  1862. </p>
  1863. </dd>
  1864. <dt><code>-mip2022</code></dt>
  1865. <dd><p>Restores the default behaviour, which restricts the permitted instructions to
  1866. just the basic IP2022 ones.
  1867. </p>
  1868. </dd>
  1869. </dl>
  1870. <p>The following options are available when as is configured for the
  1871. Renesas M32C and M16C processors.
  1872. </p>
  1873. <dl compact="compact">
  1874. <dt><code>-m32c</code></dt>
  1875. <dd><p>Assemble M32C instructions.
  1876. </p>
  1877. </dd>
  1878. <dt><code>-m16c</code></dt>
  1879. <dd><p>Assemble M16C instructions (the default).
  1880. </p>
  1881. </dd>
  1882. <dt><code>-relax</code></dt>
  1883. <dd><p>Enable support for link-time relaxations.
  1884. </p>
  1885. </dd>
  1886. <dt><code>-h-tick-hex</code></dt>
  1887. <dd><p>Support H&rsquo;00 style hex constants in addition to 0x00 style.
  1888. </p>
  1889. </dd>
  1890. </dl>
  1891. <p>The following options are available when as is configured for the
  1892. Renesas M32R (formerly Mitsubishi M32R) series.
  1893. </p>
  1894. <dl compact="compact">
  1895. <dt><code>--m32rx</code></dt>
  1896. <dd><p>Specify which processor in the M32R family is the target. The default
  1897. is normally the M32R, but this option changes it to the M32RX.
  1898. </p>
  1899. </dd>
  1900. <dt><code>--warn-explicit-parallel-conflicts or --Wp</code></dt>
  1901. <dd><p>Produce warning messages when questionable parallel constructs are
  1902. encountered.
  1903. </p>
  1904. </dd>
  1905. <dt><code>--no-warn-explicit-parallel-conflicts or --Wnp</code></dt>
  1906. <dd><p>Do not produce warning messages when questionable parallel constructs are
  1907. encountered.
  1908. </p>
  1909. </dd>
  1910. </dl>
  1911. <p>The following options are available when as is configured for the
  1912. Motorola 68000 series.
  1913. </p>
  1914. <dl compact="compact">
  1915. <dt><code>-l</code></dt>
  1916. <dd><p>Shorten references to undefined symbols, to one word instead of two.
  1917. </p>
  1918. </dd>
  1919. <dt><code>-m68000 | -m68008 | -m68010 | -m68020 | -m68030</code></dt>
  1920. <dt><code>| -m68040 | -m68060 | -m68302 | -m68331 | -m68332</code></dt>
  1921. <dt><code>| -m68333 | -m68340 | -mcpu32 | -m5200</code></dt>
  1922. <dd><p>Specify what processor in the 68000 family is the target. The default
  1923. is normally the 68020, but this can be changed at configuration time.
  1924. </p>
  1925. </dd>
  1926. <dt><code>-m68881 | -m68882 | -mno-68881 | -mno-68882</code></dt>
  1927. <dd><p>The target machine does (or does not) have a floating-point coprocessor.
  1928. The default is to assume a coprocessor for 68020, 68030, and cpu32. Although
  1929. the basic 68000 is not compatible with the 68881, a combination of the
  1930. two can be specified, since it&rsquo;s possible to do emulation of the
  1931. coprocessor instructions with the main processor.
  1932. </p>
  1933. </dd>
  1934. <dt><code>-m68851 | -mno-68851</code></dt>
  1935. <dd><p>The target machine does (or does not) have a memory-management
  1936. unit coprocessor. The default is to assume an MMU for 68020 and up.
  1937. </p>
  1938. </dd>
  1939. </dl>
  1940. <p>See <a href="#Nios-II-Options">Nios II Options</a>, for the options available when as is configured
  1941. for an Altera Nios II processor.
  1942. </p>
  1943. <p>For details about the PDP-11 machine dependent features options,
  1944. see <a href="#PDP_002d11_002dOptions">PDP-11-Options</a>.
  1945. </p>
  1946. <dl compact="compact">
  1947. <dt><code>-mpic | -mno-pic</code></dt>
  1948. <dd><p>Generate position-independent (or position-dependent) code. The
  1949. default is <samp>-mpic</samp>.
  1950. </p>
  1951. </dd>
  1952. <dt><code>-mall</code></dt>
  1953. <dt><code>-mall-extensions</code></dt>
  1954. <dd><p>Enable all instruction set extensions. This is the default.
  1955. </p>
  1956. </dd>
  1957. <dt><code>-mno-extensions</code></dt>
  1958. <dd><p>Disable all instruction set extensions.
  1959. </p>
  1960. </dd>
  1961. <dt><code>-m<var>extension</var> | -mno-<var>extension</var></code></dt>
  1962. <dd><p>Enable (or disable) a particular instruction set extension.
  1963. </p>
  1964. </dd>
  1965. <dt><code>-m<var>cpu</var></code></dt>
  1966. <dd><p>Enable the instruction set extensions supported by a particular CPU, and
  1967. disable all other extensions.
  1968. </p>
  1969. </dd>
  1970. <dt><code>-m<var>machine</var></code></dt>
  1971. <dd><p>Enable the instruction set extensions supported by a particular machine
  1972. model, and disable all other extensions.
  1973. </p></dd>
  1974. </dl>
  1975. <p>The following options are available when as is configured for
  1976. a picoJava processor.
  1977. </p>
  1978. <dl compact="compact">
  1979. <dd>
  1980. <span id="index-PJ-endianness"></span>
  1981. <span id="index-endianness_002c-PJ"></span>
  1982. <span id="index-big-endian-output_002c-PJ"></span>
  1983. </dd>
  1984. <dt><code>-mb</code></dt>
  1985. <dd><p>Generate &ldquo;big endian&rdquo; format output.
  1986. </p>
  1987. <span id="index-little-endian-output_002c-PJ"></span>
  1988. </dd>
  1989. <dt><code>-ml</code></dt>
  1990. <dd><p>Generate &ldquo;little endian&rdquo; format output.
  1991. </p>
  1992. </dd>
  1993. </dl>
  1994. <p>See <a href="#PRU-Options">PRU Options</a>, for the options available when as is configured
  1995. for a PRU processor.
  1996. </p>
  1997. <p>The following options are available when as is configured for the
  1998. Motorola 68HC11 or 68HC12 series.
  1999. </p>
  2000. <dl compact="compact">
  2001. <dt><code>-m68hc11 | -m68hc12 | -m68hcs12 | -mm9s12x | -mm9s12xg</code></dt>
  2002. <dd><p>Specify what processor is the target. The default is
  2003. defined by the configuration option when building the assembler.
  2004. </p>
  2005. </dd>
  2006. <dt><code>--xgate-ramoffset</code></dt>
  2007. <dd><p>Instruct the linker to offset RAM addresses from S12X address space into
  2008. XGATE address space.
  2009. </p>
  2010. </dd>
  2011. <dt><code>-mshort</code></dt>
  2012. <dd><p>Specify to use the 16-bit integer ABI.
  2013. </p>
  2014. </dd>
  2015. <dt><code>-mlong</code></dt>
  2016. <dd><p>Specify to use the 32-bit integer ABI.
  2017. </p>
  2018. </dd>
  2019. <dt><code>-mshort-double</code></dt>
  2020. <dd><p>Specify to use the 32-bit double ABI.
  2021. </p>
  2022. </dd>
  2023. <dt><code>-mlong-double</code></dt>
  2024. <dd><p>Specify to use the 64-bit double ABI.
  2025. </p>
  2026. </dd>
  2027. <dt><code>--force-long-branches</code></dt>
  2028. <dd><p>Relative branches are turned into absolute ones. This concerns
  2029. conditional branches, unconditional branches and branches to a
  2030. sub routine.
  2031. </p>
  2032. </dd>
  2033. <dt><code>-S | --short-branches</code></dt>
  2034. <dd><p>Do not turn relative branches into absolute ones
  2035. when the offset is out of range.
  2036. </p>
  2037. </dd>
  2038. <dt><code>--strict-direct-mode</code></dt>
  2039. <dd><p>Do not turn the direct addressing mode into extended addressing mode
  2040. when the instruction does not support direct addressing mode.
  2041. </p>
  2042. </dd>
  2043. <dt><code>--print-insn-syntax</code></dt>
  2044. <dd><p>Print the syntax of instruction in case of error.
  2045. </p>
  2046. </dd>
  2047. <dt><code>--print-opcodes</code></dt>
  2048. <dd><p>Print the list of instructions with syntax and then exit.
  2049. </p>
  2050. </dd>
  2051. <dt><code>--generate-example</code></dt>
  2052. <dd><p>Print an example of instruction for each possible instruction and then exit.
  2053. This option is only useful for testing <code>as</code>.
  2054. </p>
  2055. </dd>
  2056. </dl>
  2057. <p>The following options are available when <code>as</code> is configured
  2058. for the SPARC architecture:
  2059. </p>
  2060. <dl compact="compact">
  2061. <dt><code>-Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite</code></dt>
  2062. <dt><code>-Av8plus | -Av8plusa | -Av9 | -Av9a</code></dt>
  2063. <dd><p>Explicitly select a variant of the SPARC architecture.
  2064. </p>
  2065. <p>&lsquo;<samp>-Av8plus</samp>&rsquo; and &lsquo;<samp>-Av8plusa</samp>&rsquo; select a 32 bit environment.
  2066. &lsquo;<samp>-Av9</samp>&rsquo; and &lsquo;<samp>-Av9a</samp>&rsquo; select a 64 bit environment.
  2067. </p>
  2068. <p>&lsquo;<samp>-Av8plusa</samp>&rsquo; and &lsquo;<samp>-Av9a</samp>&rsquo; enable the SPARC V9 instruction set with
  2069. UltraSPARC extensions.
  2070. </p>
  2071. </dd>
  2072. <dt><code>-xarch=v8plus | -xarch=v8plusa</code></dt>
  2073. <dd><p>For compatibility with the Solaris v9 assembler. These options are
  2074. equivalent to -Av8plus and -Av8plusa, respectively.
  2075. </p>
  2076. </dd>
  2077. <dt><code>-bump</code></dt>
  2078. <dd><p>Warn when the assembler switches to another architecture.
  2079. </p></dd>
  2080. </dl>
  2081. <p>The following options are available when as is configured for the &rsquo;c54x
  2082. architecture.
  2083. </p>
  2084. <dl compact="compact">
  2085. <dt><code>-mfar-mode</code></dt>
  2086. <dd><p>Enable extended addressing mode. All addresses and relocations will assume
  2087. extended addressing (usually 23 bits).
  2088. </p></dd>
  2089. <dt><code>-mcpu=<var>CPU_VERSION</var></code></dt>
  2090. <dd><p>Sets the CPU version being compiled for.
  2091. </p></dd>
  2092. <dt><code>-merrors-to-file <var>FILENAME</var></code></dt>
  2093. <dd><p>Redirect error output to a file, for broken systems which don&rsquo;t support such
  2094. behaviour in the shell.
  2095. </p></dd>
  2096. </dl>
  2097. <p>The following options are available when as is configured for
  2098. a MIPS processor.
  2099. </p>
  2100. <dl compact="compact">
  2101. <dt><code>-G <var>num</var></code></dt>
  2102. <dd><p>This option sets the largest size of an object that can be referenced
  2103. implicitly with the <code>gp</code> register. It is only accepted for targets that
  2104. use ECOFF format, such as a DECstation running Ultrix. The default value is 8.
  2105. </p>
  2106. <span id="index-MIPS-endianness"></span>
  2107. <span id="index-endianness_002c-MIPS"></span>
  2108. <span id="index-big-endian-output_002c-MIPS"></span>
  2109. </dd>
  2110. <dt><code>-EB</code></dt>
  2111. <dd><p>Generate &ldquo;big endian&rdquo; format output.
  2112. </p>
  2113. <span id="index-little-endian-output_002c-MIPS"></span>
  2114. </dd>
  2115. <dt><code>-EL</code></dt>
  2116. <dd><p>Generate &ldquo;little endian&rdquo; format output.
  2117. </p>
  2118. <span id="index-MIPS-ISA"></span>
  2119. </dd>
  2120. <dt><code>-mips1</code></dt>
  2121. <dt><code>-mips2</code></dt>
  2122. <dt><code>-mips3</code></dt>
  2123. <dt><code>-mips4</code></dt>
  2124. <dt><code>-mips5</code></dt>
  2125. <dt><code>-mips32</code></dt>
  2126. <dt><code>-mips32r2</code></dt>
  2127. <dt><code>-mips32r3</code></dt>
  2128. <dt><code>-mips32r5</code></dt>
  2129. <dt><code>-mips32r6</code></dt>
  2130. <dt><code>-mips64</code></dt>
  2131. <dt><code>-mips64r2</code></dt>
  2132. <dt><code>-mips64r3</code></dt>
  2133. <dt><code>-mips64r5</code></dt>
  2134. <dt><code>-mips64r6</code></dt>
  2135. <dd><p>Generate code for a particular MIPS Instruction Set Architecture level.
  2136. &lsquo;<samp>-mips1</samp>&rsquo; is an alias for &lsquo;<samp>-march=r3000</samp>&rsquo;, &lsquo;<samp>-mips2</samp>&rsquo; is an
  2137. alias for &lsquo;<samp>-march=r6000</samp>&rsquo;, &lsquo;<samp>-mips3</samp>&rsquo; is an alias for
  2138. &lsquo;<samp>-march=r4000</samp>&rsquo; and &lsquo;<samp>-mips4</samp>&rsquo; is an alias for &lsquo;<samp>-march=r8000</samp>&rsquo;.
  2139. &lsquo;<samp>-mips5</samp>&rsquo;, &lsquo;<samp>-mips32</samp>&rsquo;, &lsquo;<samp>-mips32r2</samp>&rsquo;, &lsquo;<samp>-mips32r3</samp>&rsquo;,
  2140. &lsquo;<samp>-mips32r5</samp>&rsquo;, &lsquo;<samp>-mips32r6</samp>&rsquo;, &lsquo;<samp>-mips64</samp>&rsquo;, &lsquo;<samp>-mips64r2</samp>&rsquo;,
  2141. &lsquo;<samp>-mips64r3</samp>&rsquo;, &lsquo;<samp>-mips64r5</samp>&rsquo;, and &lsquo;<samp>-mips64r6</samp>&rsquo; correspond to generic
  2142. MIPS V, MIPS32, MIPS32 Release 2, MIPS32 Release 3, MIPS32 Release 5, MIPS32
  2143. Release 6, MIPS64, MIPS64 Release 2, MIPS64 Release 3, MIPS64 Release 5, and
  2144. MIPS64 Release 6 ISA processors, respectively.
  2145. </p>
  2146. </dd>
  2147. <dt><code>-march=<var>cpu</var></code></dt>
  2148. <dd><p>Generate code for a particular MIPS CPU.
  2149. </p>
  2150. </dd>
  2151. <dt><code>-mtune=<var>cpu</var></code></dt>
  2152. <dd><p>Schedule and tune for a particular MIPS CPU.
  2153. </p>
  2154. </dd>
  2155. <dt><code>-mfix7000</code></dt>
  2156. <dt><code>-mno-fix7000</code></dt>
  2157. <dd><p>Cause nops to be inserted if the read of the destination register
  2158. of an mfhi or mflo instruction occurs in the following two instructions.
  2159. </p>
  2160. </dd>
  2161. <dt><code>-mfix-rm7000</code></dt>
  2162. <dt><code>-mno-fix-rm7000</code></dt>
  2163. <dd><p>Cause nops to be inserted if a dmult or dmultu instruction is
  2164. followed by a load instruction.
  2165. </p>
  2166. </dd>
  2167. <dt><code>-mfix-r5900</code></dt>
  2168. <dt><code>-mno-fix-r5900</code></dt>
  2169. <dd><p>Do not attempt to schedule the preceding instruction into the delay slot
  2170. of a branch instruction placed at the end of a short loop of six
  2171. instructions or fewer and always schedule a <code>nop</code> instruction there
  2172. instead. The short loop bug under certain conditions causes loops to
  2173. execute only once or twice, due to a hardware bug in the R5900 chip.
  2174. </p>
  2175. </dd>
  2176. <dt><code>-mdebug</code></dt>
  2177. <dt><code>-no-mdebug</code></dt>
  2178. <dd><p>Cause stabs-style debugging output to go into an ECOFF-style .mdebug
  2179. section instead of the standard ELF .stabs sections.
  2180. </p>
  2181. </dd>
  2182. <dt><code>-mpdr</code></dt>
  2183. <dt><code>-mno-pdr</code></dt>
  2184. <dd><p>Control generation of <code>.pdr</code> sections.
  2185. </p>
  2186. </dd>
  2187. <dt><code>-mgp32</code></dt>
  2188. <dt><code>-mfp32</code></dt>
  2189. <dd><p>The register sizes are normally inferred from the ISA and ABI, but these
  2190. flags force a certain group of registers to be treated as 32 bits wide at
  2191. all times. &lsquo;<samp>-mgp32</samp>&rsquo; controls the size of general-purpose registers
  2192. and &lsquo;<samp>-mfp32</samp>&rsquo; controls the size of floating-point registers.
  2193. </p>
  2194. </dd>
  2195. <dt><code>-mgp64</code></dt>
  2196. <dt><code>-mfp64</code></dt>
  2197. <dd><p>The register sizes are normally inferred from the ISA and ABI, but these
  2198. flags force a certain group of registers to be treated as 64 bits wide at
  2199. all times. &lsquo;<samp>-mgp64</samp>&rsquo; controls the size of general-purpose registers
  2200. and &lsquo;<samp>-mfp64</samp>&rsquo; controls the size of floating-point registers.
  2201. </p>
  2202. </dd>
  2203. <dt><code>-mfpxx</code></dt>
  2204. <dd><p>The register sizes are normally inferred from the ISA and ABI, but using
  2205. this flag in combination with &lsquo;<samp>-mabi=32</samp>&rsquo; enables an ABI variant
  2206. which will operate correctly with floating-point registers which are
  2207. 32 or 64 bits wide.
  2208. </p>
  2209. </dd>
  2210. <dt><code>-modd-spreg</code></dt>
  2211. <dt><code>-mno-odd-spreg</code></dt>
  2212. <dd><p>Enable use of floating-point operations on odd-numbered single-precision
  2213. registers when supported by the ISA. &lsquo;<samp>-mfpxx</samp>&rsquo; implies
  2214. &lsquo;<samp>-mno-odd-spreg</samp>&rsquo;, otherwise the default is &lsquo;<samp>-modd-spreg</samp>&rsquo;.
  2215. </p>
  2216. </dd>
  2217. <dt><code>-mips16</code></dt>
  2218. <dt><code>-no-mips16</code></dt>
  2219. <dd><p>Generate code for the MIPS 16 processor. This is equivalent to putting
  2220. <code>.module mips16</code> at the start of the assembly file. &lsquo;<samp>-no-mips16</samp>&rsquo;
  2221. turns off this option.
  2222. </p>
  2223. </dd>
  2224. <dt><code>-mmips16e2</code></dt>
  2225. <dt><code>-mno-mips16e2</code></dt>
  2226. <dd><p>Enable the use of MIPS16e2 instructions in MIPS16 mode. This is equivalent
  2227. to putting <code>.module mips16e2</code> at the start of the assembly file.
  2228. &lsquo;<samp>-mno-mips16e2</samp>&rsquo; turns off this option.
  2229. </p>
  2230. </dd>
  2231. <dt><code>-mmicromips</code></dt>
  2232. <dt><code>-mno-micromips</code></dt>
  2233. <dd><p>Generate code for the microMIPS processor. This is equivalent to putting
  2234. <code>.module micromips</code> at the start of the assembly file.
  2235. &lsquo;<samp>-mno-micromips</samp>&rsquo; turns off this option. This is equivalent to putting
  2236. <code>.module nomicromips</code> at the start of the assembly file.
  2237. </p>
  2238. </dd>
  2239. <dt><code>-msmartmips</code></dt>
  2240. <dt><code>-mno-smartmips</code></dt>
  2241. <dd><p>Enables the SmartMIPS extension to the MIPS32 instruction set. This is
  2242. equivalent to putting <code>.module smartmips</code> at the start of the assembly
  2243. file. &lsquo;<samp>-mno-smartmips</samp>&rsquo; turns off this option.
  2244. </p>
  2245. </dd>
  2246. <dt><code>-mips3d</code></dt>
  2247. <dt><code>-no-mips3d</code></dt>
  2248. <dd><p>Generate code for the MIPS-3D Application Specific Extension.
  2249. This tells the assembler to accept MIPS-3D instructions.
  2250. &lsquo;<samp>-no-mips3d</samp>&rsquo; turns off this option.
  2251. </p>
  2252. </dd>
  2253. <dt><code>-mdmx</code></dt>
  2254. <dt><code>-no-mdmx</code></dt>
  2255. <dd><p>Generate code for the MDMX Application Specific Extension.
  2256. This tells the assembler to accept MDMX instructions.
  2257. &lsquo;<samp>-no-mdmx</samp>&rsquo; turns off this option.
  2258. </p>
  2259. </dd>
  2260. <dt><code>-mdsp</code></dt>
  2261. <dt><code>-mno-dsp</code></dt>
  2262. <dd><p>Generate code for the DSP Release 1 Application Specific Extension.
  2263. This tells the assembler to accept DSP Release 1 instructions.
  2264. &lsquo;<samp>-mno-dsp</samp>&rsquo; turns off this option.
  2265. </p>
  2266. </dd>
  2267. <dt><code>-mdspr2</code></dt>
  2268. <dt><code>-mno-dspr2</code></dt>
  2269. <dd><p>Generate code for the DSP Release 2 Application Specific Extension.
  2270. This option implies &lsquo;<samp>-mdsp</samp>&rsquo;.
  2271. This tells the assembler to accept DSP Release 2 instructions.
  2272. &lsquo;<samp>-mno-dspr2</samp>&rsquo; turns off this option.
  2273. </p>
  2274. </dd>
  2275. <dt><code>-mdspr3</code></dt>
  2276. <dt><code>-mno-dspr3</code></dt>
  2277. <dd><p>Generate code for the DSP Release 3 Application Specific Extension.
  2278. This option implies &lsquo;<samp>-mdsp</samp>&rsquo; and &lsquo;<samp>-mdspr2</samp>&rsquo;.
  2279. This tells the assembler to accept DSP Release 3 instructions.
  2280. &lsquo;<samp>-mno-dspr3</samp>&rsquo; turns off this option.
  2281. </p>
  2282. </dd>
  2283. <dt><code>-mmsa</code></dt>
  2284. <dt><code>-mno-msa</code></dt>
  2285. <dd><p>Generate code for the MIPS SIMD Architecture Extension.
  2286. This tells the assembler to accept MSA instructions.
  2287. &lsquo;<samp>-mno-msa</samp>&rsquo; turns off this option.
  2288. </p>
  2289. </dd>
  2290. <dt><code>-mxpa</code></dt>
  2291. <dt><code>-mno-xpa</code></dt>
  2292. <dd><p>Generate code for the MIPS eXtended Physical Address (XPA) Extension.
  2293. This tells the assembler to accept XPA instructions.
  2294. &lsquo;<samp>-mno-xpa</samp>&rsquo; turns off this option.
  2295. </p>
  2296. </dd>
  2297. <dt><code>-mmt</code></dt>
  2298. <dt><code>-mno-mt</code></dt>
  2299. <dd><p>Generate code for the MT Application Specific Extension.
  2300. This tells the assembler to accept MT instructions.
  2301. &lsquo;<samp>-mno-mt</samp>&rsquo; turns off this option.
  2302. </p>
  2303. </dd>
  2304. <dt><code>-mmcu</code></dt>
  2305. <dt><code>-mno-mcu</code></dt>
  2306. <dd><p>Generate code for the MCU Application Specific Extension.
  2307. This tells the assembler to accept MCU instructions.
  2308. &lsquo;<samp>-mno-mcu</samp>&rsquo; turns off this option.
  2309. </p>
  2310. </dd>
  2311. <dt><code>-mcrc</code></dt>
  2312. <dt><code>-mno-crc</code></dt>
  2313. <dd><p>Generate code for the MIPS cyclic redundancy check (CRC) Application
  2314. Specific Extension. This tells the assembler to accept CRC instructions.
  2315. &lsquo;<samp>-mno-crc</samp>&rsquo; turns off this option.
  2316. </p>
  2317. </dd>
  2318. <dt><code>-mginv</code></dt>
  2319. <dt><code>-mno-ginv</code></dt>
  2320. <dd><p>Generate code for the Global INValidate (GINV) Application Specific
  2321. Extension. This tells the assembler to accept GINV instructions.
  2322. &lsquo;<samp>-mno-ginv</samp>&rsquo; turns off this option.
  2323. </p>
  2324. </dd>
  2325. <dt><code>-mloongson-mmi</code></dt>
  2326. <dt><code>-mno-loongson-mmi</code></dt>
  2327. <dd><p>Generate code for the Loongson MultiMedia extensions Instructions (MMI)
  2328. Application Specific Extension. This tells the assembler to accept MMI
  2329. instructions.
  2330. &lsquo;<samp>-mno-loongson-mmi</samp>&rsquo; turns off this option.
  2331. </p>
  2332. </dd>
  2333. <dt><code>-mloongson-cam</code></dt>
  2334. <dt><code>-mno-loongson-cam</code></dt>
  2335. <dd><p>Generate code for the Loongson Content Address Memory (CAM) instructions.
  2336. This tells the assembler to accept Loongson CAM instructions.
  2337. &lsquo;<samp>-mno-loongson-cam</samp>&rsquo; turns off this option.
  2338. </p>
  2339. </dd>
  2340. <dt><code>-mloongson-ext</code></dt>
  2341. <dt><code>-mno-loongson-ext</code></dt>
  2342. <dd><p>Generate code for the Loongson EXTensions (EXT) instructions.
  2343. This tells the assembler to accept Loongson EXT instructions.
  2344. &lsquo;<samp>-mno-loongson-ext</samp>&rsquo; turns off this option.
  2345. </p>
  2346. </dd>
  2347. <dt><code>-mloongson-ext2</code></dt>
  2348. <dt><code>-mno-loongson-ext2</code></dt>
  2349. <dd><p>Generate code for the Loongson EXTensions R2 (EXT2) instructions.
  2350. This option implies &lsquo;<samp>-mloongson-ext</samp>&rsquo;.
  2351. This tells the assembler to accept Loongson EXT2 instructions.
  2352. &lsquo;<samp>-mno-loongson-ext2</samp>&rsquo; turns off this option.
  2353. </p>
  2354. </dd>
  2355. <dt><code>-minsn32</code></dt>
  2356. <dt><code>-mno-insn32</code></dt>
  2357. <dd><p>Only use 32-bit instruction encodings when generating code for the
  2358. microMIPS processor. This option inhibits the use of any 16-bit
  2359. instructions. This is equivalent to putting <code>.set insn32</code> at
  2360. the start of the assembly file. &lsquo;<samp>-mno-insn32</samp>&rsquo; turns off this
  2361. option. This is equivalent to putting <code>.set noinsn32</code> at the
  2362. start of the assembly file. By default &lsquo;<samp>-mno-insn32</samp>&rsquo; is
  2363. selected, allowing all instructions to be used.
  2364. </p>
  2365. </dd>
  2366. <dt><code>--construct-floats</code></dt>
  2367. <dt><code>--no-construct-floats</code></dt>
  2368. <dd><p>The &lsquo;<samp>--no-construct-floats</samp>&rsquo; option disables the construction of
  2369. double width floating point constants by loading the two halves of the
  2370. value into the two single width floating point registers that make up
  2371. the double width register. By default &lsquo;<samp>--construct-floats</samp>&rsquo; is
  2372. selected, allowing construction of these floating point constants.
  2373. </p>
  2374. </dd>
  2375. <dt><code>--relax-branch</code></dt>
  2376. <dt><code>--no-relax-branch</code></dt>
  2377. <dd><p>The &lsquo;<samp>--relax-branch</samp>&rsquo; option enables the relaxation of out-of-range
  2378. branches. By default &lsquo;<samp>--no-relax-branch</samp>&rsquo; is selected, causing any
  2379. out-of-range branches to produce an error.
  2380. </p>
  2381. </dd>
  2382. <dt><code>-mignore-branch-isa</code></dt>
  2383. <dt><code>-mno-ignore-branch-isa</code></dt>
  2384. <dd><p>Ignore branch checks for invalid transitions between ISA modes. The
  2385. semantics of branches does not provide for an ISA mode switch, so in
  2386. most cases the ISA mode a branch has been encoded for has to be the
  2387. same as the ISA mode of the branch&rsquo;s target label. Therefore GAS has
  2388. checks implemented that verify in branch assembly that the two ISA
  2389. modes match. &lsquo;<samp>-mignore-branch-isa</samp>&rsquo; disables these checks. By
  2390. default &lsquo;<samp>-mno-ignore-branch-isa</samp>&rsquo; is selected, causing any invalid
  2391. branch requiring a transition between ISA modes to produce an error.
  2392. </p>
  2393. </dd>
  2394. <dt><code>-mnan=<var>encoding</var></code></dt>
  2395. <dd><p>Select between the IEEE 754-2008 (<samp>-mnan=2008</samp>) or the legacy
  2396. (<samp>-mnan=legacy</samp>) NaN encoding format. The latter is the default.
  2397. </p>
  2398. <span id="index-emulation"></span>
  2399. </dd>
  2400. <dt><code>--emulation=<var>name</var></code></dt>
  2401. <dd><p>This option was formerly used to switch between ELF and ECOFF output
  2402. on targets like IRIX 5 that supported both. MIPS ECOFF support was
  2403. removed in GAS 2.24, so the option now serves little purpose.
  2404. It is retained for backwards compatibility.
  2405. </p>
  2406. <p>The available configuration names are: &lsquo;<samp>mipself</samp>&rsquo;, &lsquo;<samp>mipslelf</samp>&rsquo; and
  2407. &lsquo;<samp>mipsbelf</samp>&rsquo;. Choosing &lsquo;<samp>mipself</samp>&rsquo; now has no effect, since the output
  2408. is always ELF. &lsquo;<samp>mipslelf</samp>&rsquo; and &lsquo;<samp>mipsbelf</samp>&rsquo; select little- and
  2409. big-endian output respectively, but &lsquo;<samp>-EL</samp>&rsquo; and &lsquo;<samp>-EB</samp>&rsquo; are now the
  2410. preferred options instead.
  2411. </p>
  2412. </dd>
  2413. <dt><code>-nocpp</code></dt>
  2414. <dd><p><code>as</code> ignores this option. It is accepted for compatibility with
  2415. the native tools.
  2416. </p>
  2417. </dd>
  2418. <dt><code>--trap</code></dt>
  2419. <dt><code>--no-trap</code></dt>
  2420. <dt><code>--break</code></dt>
  2421. <dt><code>--no-break</code></dt>
  2422. <dd><p>Control how to deal with multiplication overflow and division by zero.
  2423. &lsquo;<samp>--trap</samp>&rsquo; or &lsquo;<samp>--no-break</samp>&rsquo; (which are synonyms) take a trap exception
  2424. (and only work for Instruction Set Architecture level 2 and higher);
  2425. &lsquo;<samp>--break</samp>&rsquo; or &lsquo;<samp>--no-trap</samp>&rsquo; (also synonyms, and the default) take a
  2426. break exception.
  2427. </p>
  2428. </dd>
  2429. <dt><code>-n</code></dt>
  2430. <dd><p>When this option is used, <code>as</code> will issue a warning every
  2431. time it generates a nop instruction from a macro.
  2432. </p></dd>
  2433. </dl>
  2434. <p>The following options are available when as is configured for
  2435. an MCore processor.
  2436. </p>
  2437. <dl compact="compact">
  2438. <dt><code>-jsri2bsr</code></dt>
  2439. <dt><code>-nojsri2bsr</code></dt>
  2440. <dd><p>Enable or disable the JSRI to BSR transformation. By default this is enabled.
  2441. The command-line option &lsquo;<samp>-nojsri2bsr</samp>&rsquo; can be used to disable it.
  2442. </p>
  2443. </dd>
  2444. <dt><code>-sifilter</code></dt>
  2445. <dt><code>-nosifilter</code></dt>
  2446. <dd><p>Enable or disable the silicon filter behaviour. By default this is disabled.
  2447. The default can be overridden by the &lsquo;<samp>-sifilter</samp>&rsquo; command-line option.
  2448. </p>
  2449. </dd>
  2450. <dt><code>-relax</code></dt>
  2451. <dd><p>Alter jump instructions for long displacements.
  2452. </p>
  2453. </dd>
  2454. <dt><code>-mcpu=[210|340]</code></dt>
  2455. <dd><p>Select the cpu type on the target hardware. This controls which instructions
  2456. can be assembled.
  2457. </p>
  2458. </dd>
  2459. <dt><code>-EB</code></dt>
  2460. <dd><p>Assemble for a big endian target.
  2461. </p>
  2462. </dd>
  2463. <dt><code>-EL</code></dt>
  2464. <dd><p>Assemble for a little endian target.
  2465. </p>
  2466. </dd>
  2467. </dl>
  2468. <p>See <a href="#Meta-Options">Meta Options</a>, for the options available when as is configured
  2469. for a Meta processor.
  2470. </p>
  2471. <p>See the info pages for documentation of the MMIX-specific options.
  2472. </p>
  2473. <p>See <a href="#NDS32-Options">NDS32 Options</a>, for the options available when as is configured
  2474. for a NDS32 processor.
  2475. </p>
  2476. <p>See <a href="#PowerPC_002dOpts">PowerPC-Opts</a>, for the options available when as is configured
  2477. for a PowerPC processor.
  2478. </p>
  2479. <p>See <a href="#RISC_002dV_002dOptions">RISC-V-Options</a>, for the options available when as is configured
  2480. for a RISC-V processor.
  2481. </p>
  2482. <p>See the info pages for documentation of the RX-specific options.
  2483. </p>
  2484. <p>The following options are available when as is configured for the s390
  2485. processor family.
  2486. </p>
  2487. <dl compact="compact">
  2488. <dt><code>-m31</code></dt>
  2489. <dt><code>-m64</code></dt>
  2490. <dd><p>Select the word size, either 31/32 bits or 64 bits.
  2491. </p></dd>
  2492. <dt><code>-mesa</code></dt>
  2493. <dt><code>-mzarch</code></dt>
  2494. <dd><p>Select the architecture mode, either the Enterprise System
  2495. Architecture (esa) or the z/Architecture mode (zarch).
  2496. </p></dd>
  2497. <dt><code>-march=<var>processor</var></code></dt>
  2498. <dd><p>Specify which s390 processor variant is the target, &lsquo;<samp>g5</samp>&rsquo; (or
  2499. &lsquo;<samp>arch3</samp>&rsquo;), &lsquo;<samp>g6</samp>&rsquo;, &lsquo;<samp>z900</samp>&rsquo; (or &lsquo;<samp>arch5</samp>&rsquo;), &lsquo;<samp>z990</samp>&rsquo; (or
  2500. &lsquo;<samp>arch6</samp>&rsquo;), &lsquo;<samp>z9-109</samp>&rsquo;, &lsquo;<samp>z9-ec</samp>&rsquo; (or &lsquo;<samp>arch7</samp>&rsquo;), &lsquo;<samp>z10</samp>&rsquo; (or
  2501. &lsquo;<samp>arch8</samp>&rsquo;), &lsquo;<samp>z196</samp>&rsquo; (or &lsquo;<samp>arch9</samp>&rsquo;), &lsquo;<samp>zEC12</samp>&rsquo; (or &lsquo;<samp>arch10</samp>&rsquo;),
  2502. &lsquo;<samp>z13</samp>&rsquo; (or &lsquo;<samp>arch11</samp>&rsquo;), &lsquo;<samp>z14</samp>&rsquo; (or &lsquo;<samp>arch12</samp>&rsquo;), &lsquo;<samp>z15</samp>&rsquo;
  2503. (or &lsquo;<samp>arch13</samp>&rsquo;), or &lsquo;<samp>z16</samp>&rsquo; (or &lsquo;<samp>arch14</samp>&rsquo;).
  2504. </p></dd>
  2505. <dt><code>-mregnames</code></dt>
  2506. <dt><code>-mno-regnames</code></dt>
  2507. <dd><p>Allow or disallow symbolic names for registers.
  2508. </p></dd>
  2509. <dt><code>-mwarn-areg-zero</code></dt>
  2510. <dd><p>Warn whenever the operand for a base or index register has been specified
  2511. but evaluates to zero.
  2512. </p></dd>
  2513. </dl>
  2514. <p>See <a href="#TIC6X-Options">TIC6X Options</a>, for the options available when as is configured
  2515. for a TMS320C6000 processor.
  2516. </p>
  2517. <p>See <a href="#TILE_002dGx-Options">TILE-Gx Options</a>, for the options available when as is configured
  2518. for a TILE-Gx processor.
  2519. </p>
  2520. <p>See <a href="#Visium-Options">Visium Options</a>, for the options available when as is configured
  2521. for a Visium processor.
  2522. </p>
  2523. <p>See <a href="#Xtensa-Options">Xtensa Options</a>, for the options available when as is configured
  2524. for an Xtensa processor.
  2525. </p>
  2526. <p>See <a href="#Z80-Options">Z80 Options</a>, for the options available when as is configured
  2527. for an Z80 processor.
  2528. </p>
  2529. <table class="menu" border="0" cellspacing="0">
  2530. <tr><td align="left" valign="top">&bull; <a href="#Manual" accesskey="1">Manual</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Structure of this Manual
  2531. </td></tr>
  2532. <tr><td align="left" valign="top">&bull; <a href="#GNU-Assembler" accesskey="2">GNU Assembler</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The GNU Assembler
  2533. </td></tr>
  2534. <tr><td align="left" valign="top">&bull; <a href="#Object-Formats" accesskey="3">Object Formats</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Object File Formats
  2535. </td></tr>
  2536. <tr><td align="left" valign="top">&bull; <a href="#Command-Line" accesskey="4">Command Line</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command Line
  2537. </td></tr>
  2538. <tr><td align="left" valign="top">&bull; <a href="#Input-Files" accesskey="5">Input Files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Input Files
  2539. </td></tr>
  2540. <tr><td align="left" valign="top">&bull; <a href="#Object" accesskey="6">Object</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Output (Object) File
  2541. </td></tr>
  2542. <tr><td align="left" valign="top">&bull; <a href="#Errors" accesskey="7">Errors</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Error and Warning Messages
  2543. </td></tr>
  2544. </table>
  2545. <hr>
  2546. <span id="Manual"></span><div class="header">
  2547. <p>
  2548. Next: <a href="#GNU-Assembler" accesskey="n" rel="next">GNU Assembler</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2549. </div>
  2550. <span id="Structure-of-this-Manual"></span><h3 class="section">1.1 Structure of this Manual</h3>
  2551. <span id="index-manual_002c-structure-and-purpose"></span>
  2552. <p>This manual is intended to describe what you need to know to use
  2553. <small>GNU</small> <code>as</code>. We cover the syntax expected in source files, including
  2554. notation for symbols, constants, and expressions; the directives that
  2555. <code>as</code> understands; and of course how to invoke <code>as</code>.
  2556. </p>
  2557. <p>This manual also describes some of the machine-dependent features of
  2558. various flavors of the assembler.
  2559. </p>
  2560. <span id="index-machine-instructions-_0028not-covered_0029"></span>
  2561. <p>On the other hand, this manual is <em>not</em> intended as an introduction
  2562. to programming in assembly language&mdash;let alone programming in general!
  2563. In a similar vein, we make no attempt to introduce the machine
  2564. architecture; we do <em>not</em> describe the instruction set, standard
  2565. mnemonics, registers or addressing modes that are standard to a
  2566. particular architecture.
  2567. You may want to consult the manufacturer&rsquo;s
  2568. machine architecture manual for this information.
  2569. </p>
  2570. <hr>
  2571. <span id="GNU-Assembler"></span><div class="header">
  2572. <p>
  2573. Next: <a href="#Object-Formats" accesskey="n" rel="next">Object Formats</a>, Previous: <a href="#Manual" accesskey="p" rel="prev">Manual</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2574. </div>
  2575. <span id="The-GNU-Assembler"></span><h3 class="section">1.2 The GNU Assembler</h3>
  2576. <p><small>GNU</small> <code>as</code> is really a family of assemblers.
  2577. If you use (or have used) the <small>GNU</small> assembler on one architecture, you
  2578. should find a fairly similar environment when you use it on another
  2579. architecture. Each version has much in common with the others,
  2580. including object file formats, most assembler directives (often called
  2581. <em>pseudo-ops</em>) and assembler syntax.
  2582. </p>
  2583. <span id="index-purpose-of-GNU-assembler"></span>
  2584. <p><code>as</code> is primarily intended to assemble the output of the
  2585. <small>GNU</small> C compiler <code>gcc</code> for use by the linker
  2586. <code>ld</code>. Nevertheless, we&rsquo;ve tried to make <code>as</code>
  2587. assemble correctly everything that other assemblers for the same
  2588. machine would assemble.
  2589. Any exceptions are documented explicitly (see <a href="#Machine-Dependencies">Machine Dependencies</a>).
  2590. This doesn&rsquo;t mean <code>as</code> always uses the same syntax as another
  2591. assembler for the same architecture; for example, we know of several
  2592. incompatible versions of 680x0 assembly language syntax.
  2593. </p>
  2594. <p>Unlike older assemblers, <code>as</code> is designed to assemble a source
  2595. program in one pass of the source file. This has a subtle impact on the
  2596. <kbd>.org</kbd> directive (see <a href="#Org"><code>.org</code></a>).
  2597. </p>
  2598. <hr>
  2599. <span id="Object-Formats"></span><div class="header">
  2600. <p>
  2601. Next: <a href="#Command-Line" accesskey="n" rel="next">Command Line</a>, Previous: <a href="#GNU-Assembler" accesskey="p" rel="prev">GNU Assembler</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2602. </div>
  2603. <span id="Object-File-Formats"></span><h3 class="section">1.3 Object File Formats</h3>
  2604. <span id="index-object-file-format"></span>
  2605. <p>The <small>GNU</small> assembler can be configured to produce several alternative
  2606. object file formats. For the most part, this does not affect how you
  2607. write assembly language programs; but directives for debugging symbols
  2608. are typically different in different file formats. See <a href="#Symbol-Attributes">Symbol Attributes</a>.
  2609. </p>
  2610. <hr>
  2611. <span id="Command-Line"></span><div class="header">
  2612. <p>
  2613. Next: <a href="#Input-Files" accesskey="n" rel="next">Input Files</a>, Previous: <a href="#Object-Formats" accesskey="p" rel="prev">Object Formats</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2614. </div>
  2615. <span id="Command-Line-1"></span><h3 class="section">1.4 Command Line</h3>
  2616. <span id="index-command-line-conventions"></span>
  2617. <p>After the program name <code>as</code>, the command line may contain
  2618. options and file names. Options may appear in any order, and may be
  2619. before, after, or between file names. The order of file names is
  2620. significant.
  2621. </p>
  2622. <span id="index-standard-input_002c-as-input-file"></span>
  2623. <span id="index-_002d_002d"></span>
  2624. <p><samp>--</samp> (two hyphens) by itself names the standard input file
  2625. explicitly, as one of the files for <code>as</code> to assemble.
  2626. </p>
  2627. <span id="index-options_002c-command-line"></span>
  2628. <p>Except for &lsquo;<samp>--</samp>&rsquo; any command-line argument that begins with a
  2629. hyphen (&lsquo;<samp>-</samp>&rsquo;) is an option. Each option changes the behavior of
  2630. <code>as</code>. No option changes the way another option works. An
  2631. option is a &lsquo;<samp>-</samp>&rsquo; followed by one or more letters; the case of
  2632. the letter is important. All options are optional.
  2633. </p>
  2634. <p>Some options expect exactly one file name to follow them. The file
  2635. name may either immediately follow the option&rsquo;s letter (compatible
  2636. with older assemblers) or it may be the next command argument (<small>GNU</small>
  2637. standard). These two command lines are equivalent:
  2638. </p>
  2639. <div class="example">
  2640. <pre class="example">as -o my-object-file.o mumble.s
  2641. as -omy-object-file.o mumble.s
  2642. </pre></div>
  2643. <hr>
  2644. <span id="Input-Files"></span><div class="header">
  2645. <p>
  2646. Next: <a href="#Object" accesskey="n" rel="next">Object</a>, Previous: <a href="#Command-Line" accesskey="p" rel="prev">Command Line</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2647. </div>
  2648. <span id="Input-Files-1"></span><h3 class="section">1.5 Input Files</h3>
  2649. <span id="index-input"></span>
  2650. <span id="index-source-program"></span>
  2651. <span id="index-files_002c-input"></span>
  2652. <p>We use the phrase <em>source program</em>, abbreviated <em>source</em>, to
  2653. describe the program input to one run of <code>as</code>. The program may
  2654. be in one or more files; how the source is partitioned into files
  2655. doesn&rsquo;t change the meaning of the source.
  2656. </p>
  2657. <p>The source program is a concatenation of the text in all the files, in the
  2658. order specified.
  2659. </p>
  2660. <p>Each time you run <code>as</code> it assembles exactly one source
  2661. program. The source program is made up of one or more files.
  2662. (The standard input is also a file.)
  2663. </p>
  2664. <p>You give <code>as</code> a command line that has zero or more input file
  2665. names. The input files are read (from left file name to right). A
  2666. command-line argument (in any position) that has no special meaning
  2667. is taken to be an input file name.
  2668. </p>
  2669. <p>If you give <code>as</code> no file names it attempts to read one input file
  2670. from the <code>as</code> standard input, which is normally your terminal. You
  2671. may have to type <tt class="key">ctl-D</tt> to tell <code>as</code> there is no more program
  2672. to assemble.
  2673. </p>
  2674. <p>Use &lsquo;<samp>--</samp>&rsquo; if you need to explicitly name the standard input file
  2675. in your command line.
  2676. </p>
  2677. <p>If the source is empty, <code>as</code> produces a small, empty object
  2678. file.
  2679. </p>
  2680. <span id="Filenames-and-Line_002dnumbers"></span><h4 class="subheading">Filenames and Line-numbers</h4>
  2681. <span id="index-input-file-linenumbers"></span>
  2682. <span id="index-line-numbers_002c-in-input-files"></span>
  2683. <p>There are two ways of locating a line in the input file (or files) and
  2684. either may be used in reporting error messages. One way refers to a line
  2685. number in a physical file; the other refers to a line number in a
  2686. &ldquo;logical&rdquo; file. See <a href="#Errors">Error and Warning Messages</a>.
  2687. </p>
  2688. <p><em>Physical files</em> are those files named in the command line given
  2689. to <code>as</code>.
  2690. </p>
  2691. <p><em>Logical files</em> are simply names declared explicitly by assembler
  2692. directives; they bear no relation to physical files. Logical file names help
  2693. error messages reflect the original source file, when <code>as</code> source
  2694. is itself synthesized from other files. <code>as</code> understands the
  2695. &lsquo;<samp>#</samp>&rsquo; directives emitted by the <code>gcc</code> preprocessor. See also
  2696. <a href="#File"><code>.file</code></a>.
  2697. </p>
  2698. <hr>
  2699. <span id="Object"></span><div class="header">
  2700. <p>
  2701. Next: <a href="#Errors" accesskey="n" rel="next">Errors</a>, Previous: <a href="#Input-Files" accesskey="p" rel="prev">Input Files</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2702. </div>
  2703. <span id="Output-_0028Object_0029-File"></span><h3 class="section">1.6 Output (Object) File</h3>
  2704. <span id="index-object-file"></span>
  2705. <span id="index-output-file"></span>
  2706. <span id="index-a_002eout"></span>
  2707. <span id="index-_002eo"></span>
  2708. <p>Every time you run <code>as</code> it produces an output file, which is
  2709. your assembly language program translated into numbers. This file
  2710. is the object file. Its default name is <code>a.out</code>.
  2711. You can give it another name by using the <samp>-o</samp> option. Conventionally,
  2712. object file names end with <samp>.o</samp>. The default name is used for historical
  2713. reasons: older assemblers were capable of assembling self-contained programs
  2714. directly into a runnable program. (For some formats, this isn&rsquo;t currently
  2715. possible, but it can be done for the <code>a.out</code> format.)
  2716. </p>
  2717. <span id="index-linker"></span>
  2718. <span id="index-ld"></span>
  2719. <p>The object file is meant for input to the linker <code>ld</code>. It contains
  2720. assembled program code, information to help <code>ld</code> integrate
  2721. the assembled program into a runnable file, and (optionally) symbolic
  2722. information for the debugger.
  2723. </p>
  2724. <hr>
  2725. <span id="Errors"></span><div class="header">
  2726. <p>
  2727. Previous: <a href="#Object" accesskey="p" rel="prev">Object</a>, Up: <a href="#Overview" accesskey="u" rel="up">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2728. </div>
  2729. <span id="Error-and-Warning-Messages"></span><h3 class="section">1.7 Error and Warning Messages</h3>
  2730. <span id="index-error-messages"></span>
  2731. <span id="index-warning-messages"></span>
  2732. <span id="index-messages-from-assembler"></span>
  2733. <p><code>as</code> may write warnings and error messages to the standard error
  2734. file (usually your terminal). This should not happen when a compiler
  2735. runs <code>as</code> automatically. Warnings report an assumption made so
  2736. that <code>as</code> could keep assembling a flawed program; errors report a
  2737. grave problem that stops the assembly.
  2738. </p>
  2739. <span id="index-format-of-warning-messages"></span>
  2740. <p>Warning messages have the format
  2741. </p>
  2742. <div class="example">
  2743. <pre class="example">file_name:<b>NNN</b>:Warning Message Text
  2744. </pre></div>
  2745. <p><span id="index-file-names-and-line-numbers_002c-in-warnings_002ferrors"></span>
  2746. (where <b>NNN</b> is a line number). If both a logical file name
  2747. (see <a href="#File"><code>.file</code></a>) and a logical line number
  2748. (see <a href="#Line"><code>.line</code></a>)
  2749. have been given then they will be used, otherwise the file name and line number
  2750. in the current assembler source file will be used. The message text is
  2751. intended to be self explanatory (in the grand Unix tradition).
  2752. </p>
  2753. <p>Note the file name must be set via the logical version of the <code>.file</code>
  2754. directive, not the DWARF2 version of the <code>.file</code> directive. For example:
  2755. </p>
  2756. <div class="example">
  2757. <pre class="example"> .file 2 &quot;bar.c&quot;
  2758. error_assembler_source
  2759. .file &quot;foo.c&quot;
  2760. .line 30
  2761. error_c_source
  2762. </pre></div>
  2763. <p>produces this output:
  2764. </p>
  2765. <div class="example">
  2766. <pre class="example"> Assembler messages:
  2767. asm.s:2: Error: no such instruction: `error_assembler_source'
  2768. foo.c:31: Error: no such instruction: `error_c_source'
  2769. </pre></div>
  2770. <span id="index-format-of-error-messages"></span>
  2771. <p>Error messages have the format
  2772. </p>
  2773. <div class="example">
  2774. <pre class="example">file_name:<b>NNN</b>:FATAL:Error Message Text
  2775. </pre></div>
  2776. <p>The file name and line number are derived as for warning
  2777. messages. The actual message text may be rather less explanatory
  2778. because many of them aren&rsquo;t supposed to happen.
  2779. </p>
  2780. <hr>
  2781. <span id="Invoking"></span><div class="header">
  2782. <p>
  2783. Next: <a href="#Syntax" accesskey="n" rel="next">Syntax</a>, Previous: <a href="#Overview" accesskey="p" rel="prev">Overview</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2784. </div>
  2785. <span id="Command_002dLine-Options"></span><h2 class="chapter">2 Command-Line Options</h2>
  2786. <span id="index-options_002c-all-versions-of-assembler"></span>
  2787. <p>This chapter describes command-line options available in <em>all</em>
  2788. versions of the <small>GNU</small> assembler; see <a href="#Machine-Dependencies">Machine Dependencies</a>,
  2789. for options specific
  2790. to particular machine architectures.
  2791. </p>
  2792. <p>If you are invoking <code>as</code> via the <small>GNU</small> C compiler,
  2793. you can use the &lsquo;<samp>-Wa</samp>&rsquo; option to pass arguments through to the assembler.
  2794. The assembler arguments must be separated from each other (and the &lsquo;<samp>-Wa</samp>&rsquo;)
  2795. by commas. For example:
  2796. </p>
  2797. <div class="example">
  2798. <pre class="example">gcc -c -g -O -Wa,-alh,-L file.c
  2799. </pre></div>
  2800. <p>This passes two options to the assembler: &lsquo;<samp>-alh</samp>&rsquo; (emit a listing to
  2801. standard output with high-level and assembly source) and &lsquo;<samp>-L</samp>&rsquo; (retain
  2802. local symbols in the symbol table).
  2803. </p>
  2804. <p>Usually you do not need to use this &lsquo;<samp>-Wa</samp>&rsquo; mechanism, since many compiler
  2805. command-line options are automatically passed to the assembler by the compiler.
  2806. (You can call the <small>GNU</small> compiler driver with the &lsquo;<samp>-v</samp>&rsquo; option to see
  2807. precisely what options it passes to each compilation pass, including the
  2808. assembler.)
  2809. </p>
  2810. <table class="menu" border="0" cellspacing="0">
  2811. <tr><td align="left" valign="top">&bull; <a href="#a" accesskey="1">a</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">-a[cdghilns] enable listings
  2812. </td></tr>
  2813. <tr><td align="left" valign="top">&bull; <a href="#alternate" accesskey="2">alternate</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">&ndash;alternate enable alternate macro syntax
  2814. </td></tr>
  2815. <tr><td align="left" valign="top">&bull; <a href="#D" accesskey="3">D</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">-D for compatibility and debugging
  2816. </td></tr>
  2817. <tr><td align="left" valign="top">&bull; <a href="#f" accesskey="4">f</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">-f to work faster
  2818. </td></tr>
  2819. <tr><td align="left" valign="top">&bull; <a href="#I" accesskey="5">I</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">-I for .include search path
  2820. </td></tr>
  2821. <tr><td align="left" valign="top">&bull; <a href="#K" accesskey="6">K</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">-K for difference tables
  2822. </td></tr>
  2823. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  2824. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#L" accesskey="7">L</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">-L to retain local symbols
  2825. </td></tr>
  2826. <tr><td align="left" valign="top">&bull; <a href="#listing" accesskey="8">listing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">&ndash;listing-XXX to configure listing output
  2827. </td></tr>
  2828. <tr><td align="left" valign="top">&bull; <a href="#M" accesskey="9">M</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">-M or &ndash;mri to assemble in MRI compatibility mode
  2829. </td></tr>
  2830. <tr><td align="left" valign="top">&bull; <a href="#MD">MD</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">&ndash;MD for dependency tracking
  2831. </td></tr>
  2832. <tr><td align="left" valign="top">&bull; <a href="#no_002dpad_002dsections">no-pad-sections</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">&ndash;no-pad-sections to stop section padding
  2833. </td></tr>
  2834. <tr><td align="left" valign="top">&bull; <a href="#o">o</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">-o to name the object file
  2835. </td></tr>
  2836. <tr><td align="left" valign="top">&bull; <a href="#R">R</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">-R to join data and text sections
  2837. </td></tr>
  2838. <tr><td align="left" valign="top">&bull; <a href="#statistics">statistics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">&ndash;statistics to see statistics about assembly
  2839. </td></tr>
  2840. <tr><td align="left" valign="top">&bull; <a href="#traditional_002dformat">traditional-format</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">&ndash;traditional-format for compatible output
  2841. </td></tr>
  2842. <tr><td align="left" valign="top">&bull; <a href="#v">v</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">-v to announce version
  2843. </td></tr>
  2844. <tr><td align="left" valign="top">&bull; <a href="#W">W</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">-W, &ndash;no-warn, &ndash;warn, &ndash;fatal-warnings to control warnings
  2845. </td></tr>
  2846. <tr><td align="left" valign="top">&bull; <a href="#Z">Z</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">-Z to make object file even after errors
  2847. </td></tr>
  2848. </table>
  2849. <hr>
  2850. <span id="a"></span><div class="header">
  2851. <p>
  2852. Next: <a href="#alternate" accesskey="n" rel="next">alternate</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2853. </div>
  2854. <span id="Enable-Listings_003a-_002da_005bcdghilns_005d"></span><h3 class="section">2.1 Enable Listings: <samp>-a[cdghilns]</samp></h3>
  2855. <span id="index-_002da"></span>
  2856. <span id="index-_002dac"></span>
  2857. <span id="index-_002dad"></span>
  2858. <span id="index-_002dag"></span>
  2859. <span id="index-_002dah"></span>
  2860. <span id="index-_002dal"></span>
  2861. <span id="index-_002dali"></span>
  2862. <span id="index-_002dan"></span>
  2863. <span id="index-_002das"></span>
  2864. <span id="index-listings_002c-enabling"></span>
  2865. <span id="index-assembly-listings_002c-enabling"></span>
  2866. <p>These options enable listing output from the assembler. By itself,
  2867. &lsquo;<samp>-a</samp>&rsquo; requests high-level, assembly, and symbols listing.
  2868. You can use other letters to select specific options for the list:
  2869. &lsquo;<samp>-ah</samp>&rsquo; requests a high-level language listing,
  2870. &lsquo;<samp>-al</samp>&rsquo; requests an output-program assembly listing,
  2871. &lsquo;<samp>-ali</samp>&rsquo; requests an output-program assembly listing along with the
  2872. associated ginsn, and
  2873. &lsquo;<samp>-as</samp>&rsquo; requests a symbol table listing.
  2874. High-level listings require that a compiler debugging option like
  2875. &lsquo;<samp>-g</samp>&rsquo; be used, and that assembly listings (&lsquo;<samp>-al</samp>&rsquo;) be requested
  2876. also.
  2877. </p>
  2878. <p>Use the &lsquo;<samp>-ag</samp>&rsquo; option to print a first section with general assembly
  2879. information, like as version, switches passed, or time stamp.
  2880. </p>
  2881. <p>Use the &lsquo;<samp>-ac</samp>&rsquo; option to omit false conditionals from a listing. Any lines
  2882. which are not assembled because of a false <code>.if</code> (or <code>.ifdef</code>, or any
  2883. other conditional), or a true <code>.if</code> followed by an <code>.else</code>, will be
  2884. omitted from the listing.
  2885. </p>
  2886. <p>Use the &lsquo;<samp>-ad</samp>&rsquo; option to omit debugging directives from the
  2887. listing.
  2888. </p>
  2889. <p>Once you have specified one of these options, you can further control
  2890. listing output and its appearance using the directives <code>.list</code>,
  2891. <code>.nolist</code>, <code>.psize</code>, <code>.eject</code>, <code>.title</code>, and
  2892. <code>.sbttl</code>.
  2893. The &lsquo;<samp>-an</samp>&rsquo; option turns off all forms processing.
  2894. If you do not request listing output with one of the &lsquo;<samp>-a</samp>&rsquo; options, the
  2895. listing-control directives have no effect.
  2896. </p>
  2897. <p>The letters after &lsquo;<samp>-a</samp>&rsquo; may be combined into one option,
  2898. <em>e.g.</em>, &lsquo;<samp>-aln</samp>&rsquo;.
  2899. </p>
  2900. <p>Note if the assembler source is coming from the standard input (e.g.,
  2901. because it
  2902. is being created by <code>gcc</code> and the &lsquo;<samp>-pipe</samp>&rsquo; command-line switch
  2903. is being used) then the listing will not contain any comments or preprocessor
  2904. directives. This is because the listing code buffers input source lines from
  2905. stdin only after they have been preprocessed by the assembler. This reduces
  2906. memory usage and makes the code more efficient.
  2907. </p>
  2908. <hr>
  2909. <span id="alternate"></span><div class="header">
  2910. <p>
  2911. Next: <a href="#D" accesskey="n" rel="next">D</a>, Previous: <a href="#a" accesskey="p" rel="prev">a</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2912. </div>
  2913. <span id="g_t_002d_002dalternate"></span><h3 class="section">2.2 <samp>--alternate</samp></h3>
  2914. <span id="index-_002d_002dalternate"></span>
  2915. <p>Begin in alternate macro mode, see <a href="#Altmacro"><code>.altmacro</code></a>.
  2916. </p>
  2917. <hr>
  2918. <span id="D"></span><div class="header">
  2919. <p>
  2920. Next: <a href="#f" accesskey="n" rel="next">f</a>, Previous: <a href="#alternate" accesskey="p" rel="prev">alternate</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2921. </div>
  2922. <span id="g_t_002dD"></span><h3 class="section">2.3 <samp>-D</samp></h3>
  2923. <span id="index-_002dD"></span>
  2924. <p>This option enables debugging, if it is supported by the assembler&rsquo;s
  2925. configuration. Otherwise it does nothing as is ignored. This allows scripts
  2926. designed to work with other assemblers to also work with GAS.
  2927. <code>as</code>.
  2928. </p>
  2929. <hr>
  2930. <span id="f"></span><div class="header">
  2931. <p>
  2932. Next: <a href="#I" accesskey="n" rel="next">I</a>, Previous: <a href="#D" accesskey="p" rel="prev">D</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2933. </div>
  2934. <span id="Work-Faster_003a-_002df"></span><h3 class="section">2.4 Work Faster: <samp>-f</samp></h3>
  2935. <span id="index-_002df"></span>
  2936. <span id="index-trusted-compiler"></span>
  2937. <span id="index-faster-processing-_0028_002df_0029"></span>
  2938. <p>&lsquo;<samp>-f</samp>&rsquo; should only be used when assembling programs written by a
  2939. (trusted) compiler. &lsquo;<samp>-f</samp>&rsquo; stops the assembler from doing whitespace
  2940. and comment preprocessing on
  2941. the input file(s) before assembling them. See <a href="#Preprocessing">Preprocessing</a>.
  2942. </p>
  2943. <blockquote>
  2944. <p><em>Warning:</em> if you use &lsquo;<samp>-f</samp>&rsquo; when the files actually need to be
  2945. preprocessed (if they contain comments, for example), <code>as</code> does
  2946. not work correctly.
  2947. </p></blockquote>
  2948. <hr>
  2949. <span id="I"></span><div class="header">
  2950. <p>
  2951. Next: <a href="#K" accesskey="n" rel="next">K</a>, Previous: <a href="#f" accesskey="p" rel="prev">f</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2952. </div>
  2953. <span id="g_t_002einclude-Search-Path_003a-_002dI-path"></span><h3 class="section">2.5 <code>.include</code> Search Path: <samp>-I</samp> <var>path</var></h3>
  2954. <span id="index-_002dI-path"></span>
  2955. <span id="index-paths-for-_002einclude"></span>
  2956. <span id="index-search-path-for-_002einclude"></span>
  2957. <span id="index-include-directive-search-path"></span>
  2958. <p>Use this option to add a <var>path</var> to the list of directories
  2959. <code>as</code> searches for files specified in <code>.include</code>
  2960. directives (see <a href="#Include"><code>.include</code></a>). You may use <samp>-I</samp> as
  2961. many times as necessary to include a variety of paths. The current
  2962. working directory is always searched first; after that, <code>as</code>
  2963. searches any &lsquo;<samp>-I</samp>&rsquo; directories in the same order as they were
  2964. specified (left to right) on the command line.
  2965. </p>
  2966. <hr>
  2967. <span id="K"></span><div class="header">
  2968. <p>
  2969. Next: <a href="#L" accesskey="n" rel="next">L</a>, Previous: <a href="#I" accesskey="p" rel="prev">I</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2970. </div>
  2971. <span id="Difference-Tables_003a-_002dK"></span><h3 class="section">2.6 Difference Tables: <samp>-K</samp></h3>
  2972. <span id="index-_002dK"></span>
  2973. <span id="index-difference-tables_002c-warning"></span>
  2974. <span id="index-warning-for-altered-difference-tables"></span>
  2975. <p><code>as</code> sometimes alters the code emitted for directives of the
  2976. form &lsquo;<samp>.word <var>sym1</var>-<var>sym2</var></samp>&rsquo;. See <a href="#Word"><code>.word</code></a>.
  2977. You can use the &lsquo;<samp>-K</samp>&rsquo; option if you want a warning issued when this
  2978. is done.
  2979. </p>
  2980. <hr>
  2981. <span id="L"></span><div class="header">
  2982. <p>
  2983. Next: <a href="#listing" accesskey="n" rel="next">listing</a>, Previous: <a href="#K" accesskey="p" rel="prev">K</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  2984. </div>
  2985. <span id="Include-Local-Symbols_003a-_002dL"></span><h3 class="section">2.7 Include Local Symbols: <samp>-L</samp></h3>
  2986. <span id="index-_002dL"></span>
  2987. <span id="index-local-symbols_002c-retaining-in-output"></span>
  2988. <p>Symbols beginning with system-specific local label prefixes, typically
  2989. &lsquo;<samp>.L</samp>&rsquo; for ELF systems or &lsquo;<samp>L</samp>&rsquo; for traditional a.out systems, are
  2990. called <em>local symbols</em>. See <a href="#Symbol-Names">Symbol Names</a>. Normally you do not see
  2991. such symbols when debugging, because they are intended for the use of
  2992. programs (like compilers) that compose assembler programs, not for your
  2993. notice. Normally both <code>as</code> and <code>ld</code> discard
  2994. such symbols, so you do not normally debug with them.
  2995. </p>
  2996. <p>This option tells <code>as</code> to retain those local symbols
  2997. in the object file. Usually if you do this you also tell the linker
  2998. <code>ld</code> to preserve those symbols.
  2999. </p>
  3000. <hr>
  3001. <span id="listing"></span><div class="header">
  3002. <p>
  3003. Next: <a href="#M" accesskey="n" rel="next">M</a>, Previous: <a href="#L" accesskey="p" rel="prev">L</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3004. </div>
  3005. <span id="Configuring-listing-output_003a-_002d_002dlisting"></span><h3 class="section">2.8 Configuring listing output: <samp>--listing</samp></h3>
  3006. <p>The listing feature of the assembler can be enabled via the command-line switch
  3007. &lsquo;<samp>-a</samp>&rsquo; (see <a href="#a">a</a>). This feature combines the input source file(s) with a
  3008. hex dump of the corresponding locations in the output object file, and displays
  3009. them as a listing file. The format of this listing can be controlled by
  3010. directives inside the assembler source (i.e., <code>.list</code> (see <a href="#List">List</a>),
  3011. <code>.title</code> (see <a href="#Title">Title</a>), <code>.sbttl</code> (see <a href="#Sbttl">Sbttl</a>),
  3012. <code>.psize</code> (see <a href="#Psize">Psize</a>), and
  3013. <code>.eject</code> (see <a href="#Eject">Eject</a>) and also by the following switches:
  3014. </p>
  3015. <dl compact="compact">
  3016. <dt><code>--listing-lhs-width=&lsquo;<samp>number</samp>&rsquo;</code></dt>
  3017. <dd><span id="index-_002d_002dlisting_002dlhs_002dwidth"></span>
  3018. <span id="index-Width-of-first-line-disassembly-output"></span>
  3019. <p>Sets the maximum width, in words, of the first line of the hex byte dump. This
  3020. dump appears on the left hand side of the listing output.
  3021. </p>
  3022. </dd>
  3023. <dt><code>--listing-lhs-width2=&lsquo;<samp>number</samp>&rsquo;</code></dt>
  3024. <dd><span id="index-_002d_002dlisting_002dlhs_002dwidth2"></span>
  3025. <span id="index-Width-of-continuation-lines-of-disassembly-output"></span>
  3026. <p>Sets the maximum width, in words, of any further lines of the hex byte dump for
  3027. a given input source line. If this value is not specified, it defaults to being
  3028. the same as the value specified for &lsquo;<samp>--listing-lhs-width</samp>&rsquo;. If neither
  3029. switch is used the default is to one.
  3030. </p>
  3031. </dd>
  3032. <dt><code>--listing-rhs-width=&lsquo;<samp>number</samp>&rsquo;</code></dt>
  3033. <dd><span id="index-_002d_002dlisting_002drhs_002dwidth"></span>
  3034. <span id="index-Width-of-source-line-output"></span>
  3035. <p>Sets the maximum width, in characters, of the source line that is displayed
  3036. alongside the hex dump. The default value for this parameter is 100. The
  3037. source line is displayed on the right hand side of the listing output.
  3038. </p>
  3039. </dd>
  3040. <dt><code>--listing-cont-lines=&lsquo;<samp>number</samp>&rsquo;</code></dt>
  3041. <dd><span id="index-_002d_002dlisting_002dcont_002dlines"></span>
  3042. <span id="index-Maximum-number-of-continuation-lines"></span>
  3043. <p>Sets the maximum number of continuation lines of hex dump that will be
  3044. displayed for a given single line of source input. The default value is 4.
  3045. </p></dd>
  3046. </dl>
  3047. <hr>
  3048. <span id="M"></span><div class="header">
  3049. <p>
  3050. Next: <a href="#MD" accesskey="n" rel="next">MD</a>, Previous: <a href="#listing" accesskey="p" rel="prev">listing</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3051. </div>
  3052. <span id="Assemble-in-MRI-Compatibility-Mode_003a-_002dM"></span><h3 class="section">2.9 Assemble in MRI Compatibility Mode: <samp>-M</samp></h3>
  3053. <span id="index-_002dM"></span>
  3054. <span id="index-MRI-compatibility-mode"></span>
  3055. <p>The <samp>-M</samp> or <samp>--mri</samp> option selects MRI compatibility mode. This
  3056. changes the syntax and pseudo-op handling of <code>as</code> to make it
  3057. compatible with the <code>ASM68K</code> assembler from Microtec Research.
  3058. The exact nature of the
  3059. MRI syntax will not be documented here; see the MRI manuals for more
  3060. information. Note in particular that the handling of macros and macro
  3061. arguments is somewhat different. The purpose of this option is to permit
  3062. assembling existing MRI assembler code using <code>as</code>.
  3063. </p>
  3064. <p>The MRI compatibility is not complete. Certain operations of the MRI assembler
  3065. depend upon its object file format, and can not be supported using other object
  3066. file formats. Supporting these would require enhancing each object file format
  3067. individually. These are:
  3068. </p>
  3069. <ul>
  3070. <li> global symbols in common section
  3071. <p>The m68k MRI assembler supports common sections which are merged by the linker.
  3072. Other object file formats do not support this. <code>as</code> handles
  3073. common sections by treating them as a single common symbol. It permits local
  3074. symbols to be defined within a common section, but it can not support global
  3075. symbols, since it has no way to describe them.
  3076. </p>
  3077. </li><li> complex relocations
  3078. <p>The MRI assemblers support relocations against a negated section address, and
  3079. relocations which combine the start addresses of two or more sections. These
  3080. are not support by other object file formats.
  3081. </p>
  3082. </li><li> <code>END</code> pseudo-op specifying start address
  3083. <p>The MRI <code>END</code> pseudo-op permits the specification of a start address.
  3084. This is not supported by other object file formats. The start address may
  3085. instead be specified using the <samp>-e</samp> option to the linker, or in a linker
  3086. script.
  3087. </p>
  3088. </li><li> <code>IDNT</code>, <code>.ident</code> and <code>NAME</code> pseudo-ops
  3089. <p>The MRI <code>IDNT</code>, <code>.ident</code> and <code>NAME</code> pseudo-ops assign a module
  3090. name to the output file. This is not supported by other object file formats.
  3091. </p>
  3092. </li><li> <code>ORG</code> pseudo-op
  3093. <p>The m68k MRI <code>ORG</code> pseudo-op begins an absolute section at a given
  3094. address. This differs from the usual <code>as</code> <code>.org</code> pseudo-op,
  3095. which changes the location within the current section. Absolute sections are
  3096. not supported by other object file formats. The address of a section may be
  3097. assigned within a linker script.
  3098. </p></li></ul>
  3099. <p>There are some other features of the MRI assembler which are not supported by
  3100. <code>as</code>, typically either because they are difficult or because they
  3101. seem of little consequence. Some of these may be supported in future releases.
  3102. </p>
  3103. <ul>
  3104. <li> EBCDIC strings
  3105. <p>EBCDIC strings are not supported.
  3106. </p>
  3107. </li><li> packed binary coded decimal
  3108. <p>Packed binary coded decimal is not supported. This means that the <code>DC.P</code>
  3109. and <code>DCB.P</code> pseudo-ops are not supported.
  3110. </p>
  3111. </li><li> <code>FEQU</code> pseudo-op
  3112. <p>The m68k <code>FEQU</code> pseudo-op is not supported.
  3113. </p>
  3114. </li><li> <code>NOOBJ</code> pseudo-op
  3115. <p>The m68k <code>NOOBJ</code> pseudo-op is not supported.
  3116. </p>
  3117. </li><li> <code>OPT</code> branch control options
  3118. <p>The m68k <code>OPT</code> branch control options&mdash;<code>B</code>, <code>BRS</code>, <code>BRB</code>,
  3119. <code>BRL</code>, and <code>BRW</code>&mdash;are ignored. <code>as</code> automatically
  3120. relaxes all branches, whether forward or backward, to an appropriate size, so
  3121. these options serve no purpose.
  3122. </p>
  3123. </li><li> <code>OPT</code> list control options
  3124. <p>The following m68k <code>OPT</code> list control options are ignored: <code>C</code>,
  3125. <code>CEX</code>, <code>CL</code>, <code>CRE</code>, <code>E</code>, <code>G</code>, <code>I</code>, <code>M</code>,
  3126. <code>MEX</code>, <code>MC</code>, <code>MD</code>, <code>X</code>.
  3127. </p>
  3128. </li><li> other <code>OPT</code> options
  3129. <p>The following m68k <code>OPT</code> options are ignored: <code>NEST</code>, <code>O</code>,
  3130. <code>OLD</code>, <code>OP</code>, <code>P</code>, <code>PCO</code>, <code>PCR</code>, <code>PCS</code>, <code>R</code>.
  3131. </p>
  3132. </li><li> <code>OPT</code> <code>D</code> option is default
  3133. <p>The m68k <code>OPT</code> <code>D</code> option is the default, unlike the MRI assembler.
  3134. <code>OPT NOD</code> may be used to turn it off.
  3135. </p>
  3136. </li><li> <code>XREF</code> pseudo-op.
  3137. <p>The m68k <code>XREF</code> pseudo-op is ignored.
  3138. </p>
  3139. </li></ul>
  3140. <hr>
  3141. <span id="MD"></span><div class="header">
  3142. <p>
  3143. Next: <a href="#no_002dpad_002dsections" accesskey="n" rel="next">no-pad-sections</a>, Previous: <a href="#M" accesskey="p" rel="prev">M</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3144. </div>
  3145. <span id="Dependency-Tracking_003a-_002d_002dMD"></span><h3 class="section">2.10 Dependency Tracking: <samp>--MD</samp></h3>
  3146. <span id="index-_002d_002dMD"></span>
  3147. <span id="index-dependency-tracking"></span>
  3148. <span id="index-make-rules"></span>
  3149. <p><code>as</code> can generate a dependency file for the file it creates. This
  3150. file consists of a single rule suitable for <code>make</code> describing the
  3151. dependencies of the main source file.
  3152. </p>
  3153. <p>The rule is written to the file named in its argument.
  3154. </p>
  3155. <p>This feature is used in the automatic updating of makefiles.
  3156. </p>
  3157. <hr>
  3158. <span id="no_002dpad_002dsections"></span><div class="header">
  3159. <p>
  3160. Next: <a href="#o" accesskey="n" rel="next">o</a>, Previous: <a href="#MD" accesskey="p" rel="prev">MD</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3161. </div>
  3162. <span id="Output-Section-Padding"></span><h3 class="section">2.11 Output Section Padding</h3>
  3163. <span id="index-_002d_002dno_002dpad_002dsections"></span>
  3164. <span id="index-output-section-padding"></span>
  3165. <p>Normally the assembler will pad the end of each output section up to its
  3166. alignment boundary. But this can waste space, which can be significant on
  3167. memory constrained targets. So the <samp>--no-pad-sections</samp> option will
  3168. disable this behaviour.
  3169. </p>
  3170. <hr>
  3171. <span id="o"></span><div class="header">
  3172. <p>
  3173. Next: <a href="#R" accesskey="n" rel="next">R</a>, Previous: <a href="#no_002dpad_002dsections" accesskey="p" rel="prev">no-pad-sections</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3174. </div>
  3175. <span id="Name-the-Object-File_003a-_002do"></span><h3 class="section">2.12 Name the Object File: <samp>-o</samp></h3>
  3176. <span id="index-_002do"></span>
  3177. <span id="index-naming-object-file"></span>
  3178. <span id="index-object-file-name"></span>
  3179. <p>There is always one object file output when you run <code>as</code>. By
  3180. default it has the name <samp>a.out</samp>.
  3181. You use this option (which takes exactly one filename) to give the
  3182. object file a different name.
  3183. </p>
  3184. <p>Whatever the object file is called, <code>as</code> overwrites any
  3185. existing file of the same name.
  3186. </p>
  3187. <hr>
  3188. <span id="R"></span><div class="header">
  3189. <p>
  3190. Next: <a href="#statistics" accesskey="n" rel="next">statistics</a>, Previous: <a href="#o" accesskey="p" rel="prev">o</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3191. </div>
  3192. <span id="Join-Data-and-Text-Sections_003a-_002dR"></span><h3 class="section">2.13 Join Data and Text Sections: <samp>-R</samp></h3>
  3193. <span id="index-_002dR"></span>
  3194. <span id="index-data-and-text-sections_002c-joining"></span>
  3195. <span id="index-text-and-data-sections_002c-joining"></span>
  3196. <span id="index-joining-text-and-data-sections"></span>
  3197. <span id="index-merging-text-and-data-sections"></span>
  3198. <p><samp>-R</samp> tells <code>as</code> to write the object file as if all
  3199. data-section data lives in the text section. This is only done at
  3200. the very last moment: your binary data are the same, but data
  3201. section parts are relocated differently. The data section part of
  3202. your object file is zero bytes long because all its bytes are
  3203. appended to the text section. (See <a href="#Sections">Sections and Relocation</a>.)
  3204. </p>
  3205. <p>When you specify <samp>-R</samp> it would be possible to generate shorter
  3206. address displacements (because we do not have to cross between text and
  3207. data section). We refrain from doing this simply for compatibility with
  3208. older versions of <code>as</code>. In future, <samp>-R</samp> may work this way.
  3209. </p>
  3210. <p>When <code>as</code> is configured for COFF or ELF output,
  3211. this option is only useful if you use sections named &lsquo;<samp>.text</samp>&rsquo; and
  3212. &lsquo;<samp>.data</samp>&rsquo;.
  3213. </p>
  3214. <p><samp>-R</samp> is not supported for any of the HPPA targets. Using
  3215. <samp>-R</samp> generates a warning from <code>as</code>.
  3216. </p>
  3217. <hr>
  3218. <span id="statistics"></span><div class="header">
  3219. <p>
  3220. Next: <a href="#traditional_002dformat" accesskey="n" rel="next">traditional-format</a>, Previous: <a href="#R" accesskey="p" rel="prev">R</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3221. </div>
  3222. <span id="Display-Assembly-Statistics_003a-_002d_002dstatistics"></span><h3 class="section">2.14 Display Assembly Statistics: <samp>--statistics</samp></h3>
  3223. <span id="index-_002d_002dstatistics"></span>
  3224. <span id="index-statistics_002c-about-assembly"></span>
  3225. <span id="index-time_002c-total-for-assembly"></span>
  3226. <span id="index-space-used_002c-maximum-for-assembly"></span>
  3227. <p>Use &lsquo;<samp>--statistics</samp>&rsquo; to display two statistics about the resources used by
  3228. <code>as</code>: the maximum amount of space allocated during the assembly
  3229. (in bytes), and the total execution time taken for the assembly (in <small>CPU</small>
  3230. seconds).
  3231. </p>
  3232. <hr>
  3233. <span id="traditional_002dformat"></span><div class="header">
  3234. <p>
  3235. Next: <a href="#v" accesskey="n" rel="next">v</a>, Previous: <a href="#statistics" accesskey="p" rel="prev">statistics</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3236. </div>
  3237. <span id="Compatible-Output_003a-_002d_002dtraditional_002dformat"></span><h3 class="section">2.15 Compatible Output: <samp>--traditional-format</samp></h3>
  3238. <span id="index-_002d_002dtraditional_002dformat"></span>
  3239. <p>For some targets, the output of <code>as</code> is different in some ways
  3240. from the output of some existing assembler. This switch requests
  3241. <code>as</code> to use the traditional format instead.
  3242. </p>
  3243. <p>For example, it disables the exception frame optimizations which
  3244. <code>as</code> normally does by default on <code>gcc</code> output.
  3245. </p>
  3246. <hr>
  3247. <span id="v"></span><div class="header">
  3248. <p>
  3249. Next: <a href="#W" accesskey="n" rel="next">W</a>, Previous: <a href="#traditional_002dformat" accesskey="p" rel="prev">traditional-format</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3250. </div>
  3251. <span id="Announce-Version_003a-_002dv"></span><h3 class="section">2.16 Announce Version: <samp>-v</samp></h3>
  3252. <span id="index-_002dv"></span>
  3253. <span id="index-_002dversion"></span>
  3254. <span id="index-assembler-version"></span>
  3255. <span id="index-version-of-assembler"></span>
  3256. <p>You can find out what version of as is running by including the
  3257. option &lsquo;<samp>-v</samp>&rsquo; (which you can also spell as &lsquo;<samp>-version</samp>&rsquo;) on the
  3258. command line.
  3259. </p>
  3260. <hr>
  3261. <span id="W"></span><div class="header">
  3262. <p>
  3263. Next: <a href="#Z" accesskey="n" rel="next">Z</a>, Previous: <a href="#v" accesskey="p" rel="prev">v</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3264. </div>
  3265. <span id="Control-Warnings_003a-_002dW_002c-_002d_002dwarn_002c-_002d_002dno_002dwarn_002c-_002d_002dfatal_002dwarnings"></span><h3 class="section">2.17 Control Warnings: <samp>-W</samp>, <samp>--warn</samp>, <samp>--no-warn</samp>, <samp>--fatal-warnings</samp></h3>
  3266. <p><code>as</code> should never give a warning or error message when
  3267. assembling compiler output. But programs written by people often
  3268. cause <code>as</code> to give a warning that a particular assumption was
  3269. made. All such warnings are directed to the standard error file.
  3270. </p>
  3271. <span id="index-_002dW"></span>
  3272. <span id="index-_002d_002dno_002dwarn"></span>
  3273. <span id="index-suppressing-warnings"></span>
  3274. <span id="index-warnings_002c-suppressing"></span>
  3275. <p>If you use the <samp>-W</samp> and <samp>--no-warn</samp> options, no warnings are issued.
  3276. This only affects the warning messages: it does not change any particular of
  3277. how <code>as</code> assembles your file. Errors, which stop the assembly,
  3278. are still reported.
  3279. </p>
  3280. <span id="index-_002d_002dfatal_002dwarnings"></span>
  3281. <span id="index-errors_002c-caused-by-warnings"></span>
  3282. <span id="index-warnings_002c-causing-error"></span>
  3283. <p>If you use the <samp>--fatal-warnings</samp> option, <code>as</code> considers
  3284. files that generate warnings to be in error.
  3285. </p>
  3286. <span id="index-_002d_002dwarn"></span>
  3287. <span id="index-warnings_002c-switching-on"></span>
  3288. <p>You can switch these options off again by specifying <samp>--warn</samp>, which
  3289. causes warnings to be output as usual.
  3290. </p>
  3291. <hr>
  3292. <span id="Z"></span><div class="header">
  3293. <p>
  3294. Previous: <a href="#W" accesskey="p" rel="prev">W</a>, Up: <a href="#Invoking" accesskey="u" rel="up">Invoking</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3295. </div>
  3296. <span id="Generate-Object-File-in-Spite-of-Errors_003a-_002dZ"></span><h3 class="section">2.18 Generate Object File in Spite of Errors: <samp>-Z</samp></h3>
  3297. <span id="index-object-file_002c-after-errors"></span>
  3298. <span id="index-errors_002c-continuing-after"></span>
  3299. <p>After an error message, <code>as</code> normally produces no output. If for
  3300. some reason you are interested in object file output even after
  3301. <code>as</code> gives an error message on your program, use the &lsquo;<samp>-Z</samp>&rsquo;
  3302. option. If there are any errors, <code>as</code> continues anyways, and
  3303. writes an object file after a final warning message of the form &lsquo;<samp><var>n</var>
  3304. errors, <var>m</var> warnings, generating bad object file.</samp>&rsquo;
  3305. </p>
  3306. <hr>
  3307. <span id="Syntax"></span><div class="header">
  3308. <p>
  3309. Next: <a href="#Sections" accesskey="n" rel="next">Sections</a>, Previous: <a href="#Invoking" accesskey="p" rel="prev">Invoking</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3310. </div>
  3311. <span id="Syntax-1"></span><h2 class="chapter">3 Syntax</h2>
  3312. <span id="index-machine_002dindependent-syntax"></span>
  3313. <span id="index-syntax_002c-machine_002dindependent"></span>
  3314. <p>This chapter describes the machine-independent syntax allowed in a
  3315. source file. <code>as</code> syntax is similar to what many other
  3316. assemblers use; it is inspired by the BSD 4.2
  3317. assembler, except that <code>as</code> does not assemble Vax bit-fields.
  3318. </p>
  3319. <table class="menu" border="0" cellspacing="0">
  3320. <tr><td align="left" valign="top">&bull; <a href="#Preprocessing" accesskey="1">Preprocessing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Preprocessing
  3321. </td></tr>
  3322. <tr><td align="left" valign="top">&bull; <a href="#Whitespace" accesskey="2">Whitespace</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Whitespace
  3323. </td></tr>
  3324. <tr><td align="left" valign="top">&bull; <a href="#Comments" accesskey="3">Comments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Comments
  3325. </td></tr>
  3326. <tr><td align="left" valign="top">&bull; <a href="#Symbol-Intro" accesskey="4">Symbol Intro</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbols
  3327. </td></tr>
  3328. <tr><td align="left" valign="top">&bull; <a href="#Statements" accesskey="5">Statements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Statements
  3329. </td></tr>
  3330. <tr><td align="left" valign="top">&bull; <a href="#Constants" accesskey="6">Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Constants
  3331. </td></tr>
  3332. </table>
  3333. <hr>
  3334. <span id="Preprocessing"></span><div class="header">
  3335. <p>
  3336. Next: <a href="#Whitespace" accesskey="n" rel="next">Whitespace</a>, Up: <a href="#Syntax" accesskey="u" rel="up">Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3337. </div>
  3338. <span id="Preprocessing-1"></span><h3 class="section">3.1 Preprocessing</h3>
  3339. <span id="index-preprocessing"></span>
  3340. <p>The <code>as</code> internal preprocessor:
  3341. </p><ul>
  3342. <li> <span id="index-whitespace_002c-removed-by-preprocessor"></span>
  3343. adjusts and removes extra whitespace. It leaves one space or tab before
  3344. the keywords on a line, and turns any other whitespace on the line into
  3345. a single space.
  3346. </li><li> <span id="index-comments_002c-removed-by-preprocessor"></span>
  3347. removes all comments, replacing them with a single space, or an
  3348. appropriate number of newlines.
  3349. </li><li> <span id="index-constants_002c-converted-by-preprocessor"></span>
  3350. converts character constants into the appropriate numeric values.
  3351. </li></ul>
  3352. <p>It does not do macro processing, include file handling, or
  3353. anything else you may get from your C compiler&rsquo;s preprocessor. You can
  3354. do include file processing with the <code>.include</code> directive
  3355. (see <a href="#Include"><code>.include</code></a>). You can use the <small>GNU</small> C compiler driver
  3356. to get other &ldquo;CPP&rdquo; style preprocessing by giving the input file a
  3357. &lsquo;<samp>.S</samp>&rsquo; suffix. <a href="https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html#Overall-Options">See the &rsquo;Options Controlling the Kind of Output&rsquo; section of the GCC manual for
  3358. more details</a>
  3359. </p>
  3360. <p>Excess whitespace, comments, and character constants
  3361. cannot be used in the portions of the input text that are not
  3362. preprocessed.
  3363. </p>
  3364. <span id="index-turning-preprocessing-on-and-off"></span>
  3365. <span id="index-preprocessing_002c-turning-on-and-off"></span>
  3366. <span id="index-_0023NO_005fAPP"></span>
  3367. <span id="index-_0023APP"></span>
  3368. <p>If the first line of an input file is <code>#NO_APP</code> or if you use the
  3369. &lsquo;<samp>-f</samp>&rsquo; option, whitespace and comments are not removed from the input file.
  3370. Within an input file, you can ask for whitespace and comment removal in
  3371. specific portions of the file by putting a line that says <code>#APP</code> before the
  3372. text that may contain whitespace or comments, and putting a line that says
  3373. <code>#NO_APP</code> after this text. This feature is mainly intended to support
  3374. <code>asm</code> statements in compilers whose output is otherwise free of comments
  3375. and whitespace.
  3376. </p>
  3377. <hr>
  3378. <span id="Whitespace"></span><div class="header">
  3379. <p>
  3380. Next: <a href="#Comments" accesskey="n" rel="next">Comments</a>, Previous: <a href="#Preprocessing" accesskey="p" rel="prev">Preprocessing</a>, Up: <a href="#Syntax" accesskey="u" rel="up">Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3381. </div>
  3382. <span id="Whitespace-1"></span><h3 class="section">3.2 Whitespace</h3>
  3383. <span id="index-whitespace"></span>
  3384. <p><em>Whitespace</em> is one or more blanks or tabs, in any order.
  3385. Whitespace is used to separate symbols, and to make programs neater for
  3386. people to read. Unless within character constants
  3387. (see <a href="#Characters">Character Constants</a>), any whitespace means the same
  3388. as exactly one space.
  3389. </p>
  3390. <hr>
  3391. <span id="Comments"></span><div class="header">
  3392. <p>
  3393. Next: <a href="#Symbol-Intro" accesskey="n" rel="next">Symbol Intro</a>, Previous: <a href="#Whitespace" accesskey="p" rel="prev">Whitespace</a>, Up: <a href="#Syntax" accesskey="u" rel="up">Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3394. </div>
  3395. <span id="Comments-1"></span><h3 class="section">3.3 Comments</h3>
  3396. <span id="index-comments"></span>
  3397. <p>There are two ways of rendering comments to <code>as</code>. In both
  3398. cases the comment is equivalent to one space.
  3399. </p>
  3400. <p>Anything from &lsquo;<samp>/*</samp>&rsquo; through the next &lsquo;<samp>*/</samp>&rsquo; is a comment.
  3401. This means you may not nest these comments.
  3402. </p>
  3403. <div class="example">
  3404. <pre class="example">/*
  3405. The only way to include a newline ('\n') in a comment
  3406. is to use this sort of comment.
  3407. */
  3408. /* This sort of comment does not nest. */
  3409. </pre></div>
  3410. <span id="index-line-comment-character"></span>
  3411. <p>Anything from a <em>line comment</em> character up to the next newline is
  3412. considered a comment and is ignored. The line comment character is target
  3413. specific, and some targets support multiple comment characters. Some targets
  3414. also have line comment characters that only work if they are the first
  3415. character on a line. Some targets use a sequence of two characters to
  3416. introduce a line comment. Some targets can also change their line comment
  3417. characters depending upon command-line options that have been used. For more
  3418. details see the <em>Syntax</em> section in the documentation for individual
  3419. targets.
  3420. </p>
  3421. <p>If the line comment character is the hash sign (&lsquo;<samp>#</samp>&rsquo;) then it still has the
  3422. special ability to enable and disable preprocessing (see <a href="#Preprocessing">Preprocessing</a>) and
  3423. to specify logical line numbers:
  3424. </p>
  3425. <span id="index-_0023"></span>
  3426. <span id="index-lines-starting-with-_0023"></span>
  3427. <span id="index-logical-line-numbers"></span>
  3428. <p>To be compatible with past assemblers, lines that begin with &lsquo;<samp>#</samp>&rsquo; have a
  3429. special interpretation. Following the &lsquo;<samp>#</samp>&rsquo; should be an absolute
  3430. expression (see <a href="#Expressions">Expressions</a>): the logical line number of the <em>next</em>
  3431. line. Then a string (see <a href="#Strings">Strings</a>) is allowed: if present it is a
  3432. new logical file name. The rest of the line, if any, should be whitespace.
  3433. </p>
  3434. <p>If the first non-whitespace characters on the line are not numeric,
  3435. the line is ignored. (Just like a comment.)
  3436. </p>
  3437. <div class="example">
  3438. <pre class="example"> # This is an ordinary comment.
  3439. # 42-6 &quot;new_file_name&quot; # New logical file name
  3440. # This is logical line # 36.
  3441. </pre></div>
  3442. <p>This feature is deprecated, and may disappear from future versions
  3443. of <code>as</code>.
  3444. </p>
  3445. <hr>
  3446. <span id="Symbol-Intro"></span><div class="header">
  3447. <p>
  3448. Next: <a href="#Statements" accesskey="n" rel="next">Statements</a>, Previous: <a href="#Comments" accesskey="p" rel="prev">Comments</a>, Up: <a href="#Syntax" accesskey="u" rel="up">Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3449. </div>
  3450. <span id="Symbols-1"></span><h3 class="section">3.4 Symbols</h3>
  3451. <span id="index-characters-used-in-symbols"></span>
  3452. <p>A <em>symbol</em> is one or more characters chosen from the set of all
  3453. letters (both upper and lower case), digits and the three characters
  3454. &lsquo;<samp>_.$</samp>&rsquo;.
  3455. On most machines, you can also use <code>$</code> in symbol names; exceptions
  3456. are noted in <a href="#Machine-Dependencies">Machine Dependencies</a>.
  3457. No symbol may begin with a digit. Case is significant.
  3458. There is no length limit; all characters are significant. Multibyte characters
  3459. are supported, but note that the setting of the
  3460. <samp>--multibyte-handling</samp> option might prevent their use. Symbols
  3461. are delimited by characters not in that set, or by the beginning of a file
  3462. (since the source program must end with a newline, the end of a file is not a
  3463. possible symbol delimiter). See <a href="#Symbols">Symbols</a>.
  3464. </p>
  3465. <p>Symbol names may also be enclosed in double quote <code>&quot;</code> characters. In such
  3466. cases any characters are allowed, except for the NUL character. If a double
  3467. quote character is to be included in the symbol name it must be preceded by a
  3468. backslash <code>\</code> character.
  3469. <span id="index-length-of-symbols"></span>
  3470. </p>
  3471. <hr>
  3472. <span id="Statements"></span><div class="header">
  3473. <p>
  3474. Next: <a href="#Constants" accesskey="n" rel="next">Constants</a>, Previous: <a href="#Symbol-Intro" accesskey="p" rel="prev">Symbol Intro</a>, Up: <a href="#Syntax" accesskey="u" rel="up">Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3475. </div>
  3476. <span id="Statements-1"></span><h3 class="section">3.5 Statements</h3>
  3477. <span id="index-statements_002c-structure-of"></span>
  3478. <span id="index-line-separator-character"></span>
  3479. <span id="index-statement-separator-character"></span>
  3480. <p>A <em>statement</em> ends at a newline character (&lsquo;<samp>\n</samp>&rsquo;) or a
  3481. <em>line separator character</em>. The line separator character is target
  3482. specific and described in the <em>Syntax</em> section of each
  3483. target&rsquo;s documentation. Not all targets support a line separator character.
  3484. The newline or line separator character is considered to be part of the
  3485. preceding statement. Newlines and separators within character constants are an
  3486. exception: they do not end statements.
  3487. </p>
  3488. <span id="index-newline_002c-required-at-file-end"></span>
  3489. <span id="index-EOF_002c-newline-must-precede"></span>
  3490. <p>It is an error to end any statement with end-of-file: the last
  3491. character of any input file should be a newline.
  3492. </p>
  3493. <p>An empty statement is allowed, and may include whitespace. It is ignored.
  3494. </p>
  3495. <span id="index-instructions-and-directives"></span>
  3496. <span id="index-directives-and-instructions"></span>
  3497. <p>A statement begins with zero or more labels, optionally followed by a
  3498. key symbol which determines what kind of statement it is. The key
  3499. symbol determines the syntax of the rest of the statement. If the
  3500. symbol begins with a dot &lsquo;<samp>.</samp>&rsquo; then the statement is an assembler
  3501. directive: typically valid for any computer. If the symbol begins with
  3502. a letter the statement is an assembly language <em>instruction</em>: it
  3503. assembles into a machine language instruction.
  3504. Different versions of <code>as</code> for different computers
  3505. recognize different instructions. In fact, the same symbol may
  3506. represent a different instruction in a different computer&rsquo;s assembly
  3507. language.
  3508. </p>
  3509. <span id="index-_003a-_0028label_0029"></span>
  3510. <span id="index-label-_0028_003a_0029"></span>
  3511. <p>A label is a symbol immediately followed by a colon (<code>:</code>).
  3512. Whitespace before a label or after a colon is permitted, but you may not
  3513. have whitespace between a label&rsquo;s symbol and its colon. See <a href="#Labels">Labels</a>.
  3514. </p>
  3515. <p>For HPPA targets, labels need not be immediately followed by a colon, but
  3516. the definition of a label must begin in column zero. This also implies that
  3517. only one label may be defined on each line.
  3518. </p>
  3519. <div class="example">
  3520. <pre class="example">label: .directive followed by something
  3521. another_label: # This is an empty statement.
  3522. instruction operand_1, operand_2, &hellip;
  3523. </pre></div>
  3524. <hr>
  3525. <span id="Constants"></span><div class="header">
  3526. <p>
  3527. Previous: <a href="#Statements" accesskey="p" rel="prev">Statements</a>, Up: <a href="#Syntax" accesskey="u" rel="up">Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3528. </div>
  3529. <span id="Constants-1"></span><h3 class="section">3.6 Constants</h3>
  3530. <span id="index-constants"></span>
  3531. <p>A constant is a number, written so that its value is known by
  3532. inspection, without knowing any context. Like this:
  3533. </p><div class="example">
  3534. <pre class="example">.byte 74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value.
  3535. .ascii &quot;Ring the bell\7&quot; # A string constant.
  3536. .octa 0x123456789abcdef0123456789ABCDEF0 # A bignum.
  3537. .float 0f-314159265358979323846264338327\
  3538. 95028841971.693993751E-40 # - pi, a flonum.
  3539. </pre></div>
  3540. <table class="menu" border="0" cellspacing="0">
  3541. <tr><td align="left" valign="top">&bull; <a href="#Characters" accesskey="1">Characters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Character Constants
  3542. </td></tr>
  3543. <tr><td align="left" valign="top">&bull; <a href="#Numbers" accesskey="2">Numbers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Number Constants
  3544. </td></tr>
  3545. </table>
  3546. <hr>
  3547. <span id="Characters"></span><div class="header">
  3548. <p>
  3549. Next: <a href="#Numbers" accesskey="n" rel="next">Numbers</a>, Up: <a href="#Constants" accesskey="u" rel="up">Constants</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3550. </div>
  3551. <span id="Character-Constants"></span><h4 class="subsection">3.6.1 Character Constants</h4>
  3552. <span id="index-character-constants"></span>
  3553. <span id="index-constants_002c-character"></span>
  3554. <p>There are two kinds of character constants. A <em>character</em> stands
  3555. for one character in one byte and its value may be used in
  3556. numeric expressions. String constants (properly called string
  3557. <em>literals</em>) are potentially many bytes and their values may not be
  3558. used in arithmetic expressions.
  3559. </p>
  3560. <table class="menu" border="0" cellspacing="0">
  3561. <tr><td align="left" valign="top">&bull; <a href="#Strings" accesskey="1">Strings</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Strings
  3562. </td></tr>
  3563. <tr><td align="left" valign="top">&bull; <a href="#Chars" accesskey="2">Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Characters
  3564. </td></tr>
  3565. </table>
  3566. <hr>
  3567. <span id="Strings"></span><div class="header">
  3568. <p>
  3569. Next: <a href="#Chars" accesskey="n" rel="next">Chars</a>, Up: <a href="#Characters" accesskey="u" rel="up">Characters</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3570. </div>
  3571. <span id="Strings-1"></span><h4 class="subsubsection">3.6.1.1 Strings</h4>
  3572. <span id="index-string-constants"></span>
  3573. <span id="index-constants_002c-string"></span>
  3574. <p>A <em>string</em> is written between double-quotes. It may contain
  3575. double-quotes or null characters. The way to get special characters
  3576. into a string is to <em>escape</em> these characters: precede them with
  3577. a backslash &lsquo;<samp>\</samp>&rsquo; character. For example &lsquo;<samp>\\</samp>&rsquo; represents
  3578. one backslash: the first <code>\</code> is an escape which tells
  3579. <code>as</code> to interpret the second character literally as a backslash
  3580. (which prevents <code>as</code> from recognizing the second <code>\</code> as an
  3581. escape character). The complete list of escapes follows.
  3582. </p>
  3583. <span id="index-escape-codes_002c-character"></span>
  3584. <span id="index-character-escape-codes"></span>
  3585. <dl compact="compact">
  3586. <dd><span id="index--_005cb-_0028backspace-character_0029"></span>
  3587. <span id="index-backspace-_0028_005cb_0029"></span>
  3588. </dd>
  3589. <dt><kbd>\b</kbd></dt>
  3590. <dd><p>Mnemonic for backspace; for ASCII this is octal code 010.
  3591. </p>
  3592. <span id="index--_005cf-_0028formfeed-character_0029"></span>
  3593. <span id="index-formfeed-_0028_005cf_0029"></span>
  3594. </dd>
  3595. <dt><kbd>backslash-f</kbd></dt>
  3596. <dd><p>Mnemonic for FormFeed; for ASCII this is octal code 014.
  3597. </p>
  3598. <span id="index--_005cn-_0028newline-character_0029"></span>
  3599. <span id="index-newline-_0028_005cn_0029"></span>
  3600. </dd>
  3601. <dt><kbd>\n</kbd></dt>
  3602. <dd><p>Mnemonic for newline; for ASCII this is octal code 012.
  3603. </p>
  3604. <span id="index--_005cr-_0028carriage-return-character_0029"></span>
  3605. <span id="index-carriage-return-_0028backslash_002dr_0029"></span>
  3606. </dd>
  3607. <dt><kbd>\r</kbd></dt>
  3608. <dd><p>Mnemonic for carriage-Return; for ASCII this is octal code 015.
  3609. </p>
  3610. <span id="index--_005ct-_0028tab_0029"></span>
  3611. <span id="index-tab-_0028_005ct_0029"></span>
  3612. </dd>
  3613. <dt><kbd>\t</kbd></dt>
  3614. <dd><p>Mnemonic for horizontal Tab; for ASCII this is octal code 011.
  3615. </p>
  3616. <span id="index--_005cddd-_0028octal-character-code_0029"></span>
  3617. <span id="index-octal-character-code-_0028_005cddd_0029"></span>
  3618. </dd>
  3619. <dt><kbd>\ <var>digit</var> <var>digit</var> <var>digit</var></kbd></dt>
  3620. <dd><p>An octal character code. The numeric code is 3 octal digits.
  3621. For compatibility with other Unix systems, 8 and 9 are accepted as digits:
  3622. for example, <code>\008</code> has the value 010, and <code>\009</code> the value 011.
  3623. </p>
  3624. <span id="index--_005cxd_002e_002e_002e-_0028hex-character-code_0029"></span>
  3625. <span id="index-hex-character-code-_0028_005cxd_002e_002e_002e_0029"></span>
  3626. </dd>
  3627. <dt><kbd>\<code>x</code> <var>hex-digits...</var></kbd></dt>
  3628. <dd><p>A hex character code. All trailing hex digits are combined. Either upper or
  3629. lower case <code>x</code> works.
  3630. </p>
  3631. <span id="index--_005c_005c-_0028_005c-character_0029"></span>
  3632. <span id="index-backslash-_0028_005c_005c_0029"></span>
  3633. </dd>
  3634. <dt><kbd>\\</kbd></dt>
  3635. <dd><p>Represents one &lsquo;<samp>\</samp>&rsquo; character.
  3636. </p>
  3637. <span id="index--_005c_0022-_0028doublequote-character_0029"></span>
  3638. <span id="index-doublequote-_0028_005c_0022_0029"></span>
  3639. </dd>
  3640. <dt><kbd>\&quot;</kbd></dt>
  3641. <dd><p>Represents one &lsquo;<samp>&quot;</samp>&rsquo; character. Needed in strings to represent
  3642. this character, because an unescaped &lsquo;<samp>&quot;</samp>&rsquo; would end the string.
  3643. </p>
  3644. </dd>
  3645. <dt><kbd>\ <var>anything-else</var></kbd></dt>
  3646. <dd><p>Any other character when escaped by <kbd>\</kbd> gives a warning, but
  3647. assembles as if the &lsquo;<samp>\</samp>&rsquo; was not present. The idea is that if
  3648. you used an escape sequence you clearly didn&rsquo;t want the literal
  3649. interpretation of the following character. However <code>as</code> has no
  3650. other interpretation, so <code>as</code> knows it is giving you the wrong
  3651. code and warns you of the fact.
  3652. </p></dd>
  3653. </dl>
  3654. <p>Which characters are escapable, and what those escapes represent,
  3655. varies widely among assemblers. The current set is what we think
  3656. the BSD 4.2 assembler recognizes, and is a subset of what most C
  3657. compilers recognize. If you are in doubt, do not use an escape
  3658. sequence.
  3659. </p>
  3660. <hr>
  3661. <span id="Chars"></span><div class="header">
  3662. <p>
  3663. Previous: <a href="#Strings" accesskey="p" rel="prev">Strings</a>, Up: <a href="#Characters" accesskey="u" rel="up">Characters</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3664. </div>
  3665. <span id="Characters-1"></span><h4 class="subsubsection">3.6.1.2 Characters</h4>
  3666. <span id="index-single-character-constant"></span>
  3667. <span id="index-character_002c-single"></span>
  3668. <span id="index-constant_002c-single-character"></span>
  3669. <p>A single character may be written as a single quote immediately followed by
  3670. that character. Some backslash escapes apply to characters, <code>\b</code>,
  3671. <code>\f</code>, <code>\n</code>, <code>\r</code>, <code>\t</code>, and <code>\&quot;</code> with the same meaning
  3672. as for strings, plus <code>\'</code> for a single quote. So if you want to write the
  3673. character backslash, you must write <kbd>'\\</kbd> where the first <code>\</code> escapes
  3674. the second <code>\</code>. As you can see, the quote is an acute accent, not a grave
  3675. accent. A newline
  3676. immediately following an acute accent is taken as a literal character
  3677. and does not count as the end of a statement. The value of a character
  3678. constant in a numeric expression is the machine&rsquo;s byte-wide code for
  3679. that character. <code>as</code> assumes your character code is ASCII:
  3680. <kbd>'A</kbd> means 65, <kbd>'B</kbd> means 66, and so on.
  3681. </p>
  3682. <hr>
  3683. <span id="Numbers"></span><div class="header">
  3684. <p>
  3685. Previous: <a href="#Characters" accesskey="p" rel="prev">Characters</a>, Up: <a href="#Constants" accesskey="u" rel="up">Constants</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3686. </div>
  3687. <span id="Number-Constants"></span><h4 class="subsection">3.6.2 Number Constants</h4>
  3688. <span id="index-constants_002c-number"></span>
  3689. <span id="index-number-constants"></span>
  3690. <p><code>as</code> distinguishes three kinds of numbers according to how they
  3691. are stored in the target machine. <em>Integers</em> are numbers that
  3692. would fit into an <code>int</code> in the C language. <em>Bignums</em> are
  3693. integers, but they are stored in more than 32 bits. <em>Flonums</em>
  3694. are floating point numbers, described below.
  3695. </p>
  3696. <table class="menu" border="0" cellspacing="0">
  3697. <tr><td align="left" valign="top">&bull; <a href="#Integers" accesskey="1">Integers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Integers
  3698. </td></tr>
  3699. <tr><td align="left" valign="top">&bull; <a href="#Bignums" accesskey="2">Bignums</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Bignums
  3700. </td></tr>
  3701. <tr><td align="left" valign="top">&bull; <a href="#Flonums" accesskey="3">Flonums</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Flonums
  3702. </td></tr>
  3703. </table>
  3704. <hr>
  3705. <span id="Integers"></span><div class="header">
  3706. <p>
  3707. Next: <a href="#Bignums" accesskey="n" rel="next">Bignums</a>, Up: <a href="#Numbers" accesskey="u" rel="up">Numbers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3708. </div>
  3709. <span id="Integers-1"></span><h4 class="subsubsection">3.6.2.1 Integers</h4>
  3710. <span id="index-integers"></span>
  3711. <span id="index-constants_002c-integer"></span>
  3712. <span id="index-binary-integers"></span>
  3713. <span id="index-integers_002c-binary"></span>
  3714. <p>A binary integer is &lsquo;<samp>0b</samp>&rsquo; or &lsquo;<samp>0B</samp>&rsquo; followed by zero or more of
  3715. the binary digits &lsquo;<samp>01</samp>&rsquo;.
  3716. </p>
  3717. <span id="index-octal-integers"></span>
  3718. <span id="index-integers_002c-octal"></span>
  3719. <p>An octal integer is &lsquo;<samp>0</samp>&rsquo; followed by zero or more of the octal
  3720. digits (&lsquo;<samp>01234567</samp>&rsquo;).
  3721. </p>
  3722. <span id="index-decimal-integers"></span>
  3723. <span id="index-integers_002c-decimal"></span>
  3724. <p>A decimal integer starts with a non-zero digit followed by zero or
  3725. more digits (&lsquo;<samp>0123456789</samp>&rsquo;).
  3726. </p>
  3727. <span id="index-hexadecimal-integers"></span>
  3728. <span id="index-integers_002c-hexadecimal"></span>
  3729. <p>A hexadecimal integer is &lsquo;<samp>0x</samp>&rsquo; or &lsquo;<samp>0X</samp>&rsquo; followed by one or
  3730. more hexadecimal digits chosen from &lsquo;<samp>0123456789abcdefABCDEF</samp>&rsquo;.
  3731. </p>
  3732. <p>Integers have the usual values. To denote a negative integer, use
  3733. the prefix operator &lsquo;<samp>-</samp>&rsquo; discussed under expressions
  3734. (see <a href="#Prefix-Ops">Prefix Operators</a>).
  3735. </p>
  3736. <hr>
  3737. <span id="Bignums"></span><div class="header">
  3738. <p>
  3739. Next: <a href="#Flonums" accesskey="n" rel="next">Flonums</a>, Previous: <a href="#Integers" accesskey="p" rel="prev">Integers</a>, Up: <a href="#Numbers" accesskey="u" rel="up">Numbers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3740. </div>
  3741. <span id="Bignums-1"></span><h4 class="subsubsection">3.6.2.2 Bignums</h4>
  3742. <span id="index-bignums"></span>
  3743. <span id="index-constants_002c-bignum"></span>
  3744. <p>A <em>bignum</em> has the same syntax and semantics as an integer
  3745. except that the number (or its negative) takes more than 32 bits to
  3746. represent in binary. The distinction is made because in some places
  3747. integers are permitted while bignums are not.
  3748. </p>
  3749. <hr>
  3750. <span id="Flonums"></span><div class="header">
  3751. <p>
  3752. Previous: <a href="#Bignums" accesskey="p" rel="prev">Bignums</a>, Up: <a href="#Numbers" accesskey="u" rel="up">Numbers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3753. </div>
  3754. <span id="Flonums-1"></span><h4 class="subsubsection">3.6.2.3 Flonums</h4>
  3755. <span id="index-flonums"></span>
  3756. <span id="index-floating-point-numbers"></span>
  3757. <span id="index-constants_002c-floating-point"></span>
  3758. <span id="index-precision_002c-floating-point"></span>
  3759. <p>A <em>flonum</em> represents a floating point number. The translation is
  3760. indirect: a decimal floating point number from the text is converted by
  3761. <code>as</code> to a generic binary floating point number of more than
  3762. sufficient precision. This generic floating point number is converted
  3763. to a particular computer&rsquo;s floating point format (or formats) by a
  3764. portion of <code>as</code> specialized to that computer.
  3765. </p>
  3766. <p>A flonum is written by writing (in order)
  3767. </p><ul>
  3768. <li> The digit &lsquo;<samp>0</samp>&rsquo;.
  3769. (&lsquo;<samp>0</samp>&rsquo; is optional on the HPPA.)
  3770. </li><li> A letter, to tell <code>as</code> the rest of the number is a flonum.
  3771. <kbd>e</kbd> is recommended. Case is not important.
  3772. <p>On the H8/300 and Renesas / SuperH SH architectures, the letter must be
  3773. one of the letters &lsquo;<samp>DFPRSX</samp>&rsquo; (in upper or lower case).
  3774. </p>
  3775. <p>On the ARC, the letter must be one of the letters &lsquo;<samp>DFRS</samp>&rsquo;
  3776. (in upper or lower case).
  3777. </p>
  3778. <p>On the HPPA architecture, the letter must be &lsquo;<samp>E</samp>&rsquo; (upper case only).
  3779. </p>
  3780. </li><li> An optional sign: either &lsquo;<samp>+</samp>&rsquo; or &lsquo;<samp>-</samp>&rsquo;.
  3781. </li><li> An optional <em>integer part</em>: zero or more decimal digits.
  3782. </li><li> An optional <em>fractional part</em>: &lsquo;<samp>.</samp>&rsquo; followed by zero
  3783. or more decimal digits.
  3784. </li><li> An optional exponent, consisting of:
  3785. <ul>
  3786. <li> An &lsquo;<samp>E</samp>&rsquo; or &lsquo;<samp>e</samp>&rsquo;.
  3787. </li><li> Optional sign: either &lsquo;<samp>+</samp>&rsquo; or &lsquo;<samp>-</samp>&rsquo;.
  3788. </li><li> One or more decimal digits.
  3789. </li></ul>
  3790. </li></ul>
  3791. <p>At least one of the integer part or the fractional part must be
  3792. present. The floating point number has the usual base-10 value.
  3793. </p>
  3794. <p><code>as</code> does all processing using integers. Flonums are computed
  3795. independently of any floating point hardware in the computer running
  3796. <code>as</code>.
  3797. </p>
  3798. <hr>
  3799. <span id="Sections"></span><div class="header">
  3800. <p>
  3801. Next: <a href="#Symbols" accesskey="n" rel="next">Symbols</a>, Previous: <a href="#Syntax" accesskey="p" rel="prev">Syntax</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3802. </div>
  3803. <span id="Sections-and-Relocation"></span><h2 class="chapter">4 Sections and Relocation</h2>
  3804. <span id="index-sections"></span>
  3805. <span id="index-relocation"></span>
  3806. <table class="menu" border="0" cellspacing="0">
  3807. <tr><td align="left" valign="top">&bull; <a href="#Secs-Background" accesskey="1">Secs Background</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Background
  3808. </td></tr>
  3809. <tr><td align="left" valign="top">&bull; <a href="#Ld-Sections" accesskey="2">Ld Sections</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Linker Sections
  3810. </td></tr>
  3811. <tr><td align="left" valign="top">&bull; <a href="#As-Sections" accesskey="3">As Sections</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Internal Sections
  3812. </td></tr>
  3813. <tr><td align="left" valign="top">&bull; <a href="#Sub_002dSections" accesskey="4">Sub-Sections</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Sub-Sections
  3814. </td></tr>
  3815. <tr><td align="left" valign="top">&bull; <a href="#bss" accesskey="5">bss</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">bss Section
  3816. </td></tr>
  3817. </table>
  3818. <hr>
  3819. <span id="Secs-Background"></span><div class="header">
  3820. <p>
  3821. Next: <a href="#Ld-Sections" accesskey="n" rel="next">Ld Sections</a>, Up: <a href="#Sections" accesskey="u" rel="up">Sections</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3822. </div>
  3823. <span id="Background"></span><h3 class="section">4.1 Background</h3>
  3824. <p>Roughly, a section is a range of addresses, with no gaps; all data
  3825. &ldquo;in&rdquo; those addresses is treated the same for some particular purpose.
  3826. For example there may be a &ldquo;read only&rdquo; section.
  3827. </p>
  3828. <span id="index-linker_002c-and-assembler"></span>
  3829. <span id="index-assembler_002c-and-linker"></span>
  3830. <p>The linker <code>ld</code> reads many object files (partial programs) and
  3831. combines their contents to form a runnable program. When <code>as</code>
  3832. emits an object file, the partial program is assumed to start at address 0.
  3833. <code>ld</code> assigns the final addresses for the partial program, so that
  3834. different partial programs do not overlap. This is actually an
  3835. oversimplification, but it suffices to explain how <code>as</code> uses
  3836. sections.
  3837. </p>
  3838. <p><code>ld</code> moves blocks of bytes of your program to their run-time
  3839. addresses. These blocks slide to their run-time addresses as rigid
  3840. units; their length does not change and neither does the order of bytes
  3841. within them. Such a rigid unit is called a <em>section</em>. Assigning
  3842. run-time addresses to sections is called <em>relocation</em>. It includes
  3843. the task of adjusting mentions of object-file addresses so they refer to
  3844. the proper run-time addresses.
  3845. For the H8/300, and for the Renesas / SuperH SH,
  3846. <code>as</code> pads sections if needed to
  3847. ensure they end on a word (sixteen bit) boundary.
  3848. </p>
  3849. <span id="index-standard-assembler-sections"></span>
  3850. <p>An object file written by <code>as</code> has at least three sections, any
  3851. of which may be empty. These are named <em>text</em>, <em>data</em> and
  3852. <em>bss</em> sections.
  3853. </p>
  3854. <p>When it generates COFF or ELF output,
  3855. <code>as</code> can also generate whatever other named sections you specify
  3856. using the &lsquo;<samp>.section</samp>&rsquo; directive (see <a href="#Section"><code>.section</code></a>).
  3857. If you do not use any directives that place output in the &lsquo;<samp>.text</samp>&rsquo;
  3858. or &lsquo;<samp>.data</samp>&rsquo; sections, these sections still exist, but are empty.
  3859. </p>
  3860. <p>When <code>as</code> generates SOM or ELF output for the HPPA,
  3861. <code>as</code> can also generate whatever other named sections you
  3862. specify using the &lsquo;<samp>.space</samp>&rsquo; and &lsquo;<samp>.subspace</samp>&rsquo; directives. See
  3863. <cite>HP9000 Series 800 Assembly Language Reference Manual</cite>
  3864. (HP 92432-90001) for details on the &lsquo;<samp>.space</samp>&rsquo; and &lsquo;<samp>.subspace</samp>&rsquo;
  3865. assembler directives.
  3866. </p>
  3867. <p>Additionally, <code>as</code> uses different names for the standard
  3868. text, data, and bss sections when generating SOM output. Program text
  3869. is placed into the &lsquo;<samp>$CODE$</samp>&rsquo; section, data into &lsquo;<samp>$DATA$</samp>&rsquo;, and
  3870. BSS into &lsquo;<samp>$BSS$</samp>&rsquo;.
  3871. </p>
  3872. <p>Within the object file, the text section starts at address <code>0</code>, the
  3873. data section follows, and the bss section follows the data section.
  3874. </p>
  3875. <p>When generating either SOM or ELF output files on the HPPA, the text
  3876. section starts at address <code>0</code>, the data section at address
  3877. <code>0x4000000</code>, and the bss section follows the data section.
  3878. </p>
  3879. <p>To let <code>ld</code> know which data changes when the sections are
  3880. relocated, and how to change that data, <code>as</code> also writes to the
  3881. object file details of the relocation needed. To perform relocation
  3882. <code>ld</code> must know, each time an address in the object
  3883. file is mentioned:
  3884. </p><ul>
  3885. <li> Where in the object file is the beginning of this reference to
  3886. an address?
  3887. </li><li> How long (in bytes) is this reference?
  3888. </li><li> Which section does the address refer to? What is the numeric value of
  3889. <div class="display">
  3890. <pre class="display">(<var>address</var>) - (<var>start-address of section</var>)?
  3891. </pre></div>
  3892. </li><li> Is the reference to an address &ldquo;Program-Counter relative&rdquo;?
  3893. </li></ul>
  3894. <span id="index-addresses_002c-format-of"></span>
  3895. <span id="index-section_002drelative-addressing"></span>
  3896. <p>In fact, every address <code>as</code> ever uses is expressed as
  3897. </p><div class="display">
  3898. <pre class="display">(<var>section</var>) + (<var>offset into section</var>)
  3899. </pre></div>
  3900. <p>Further, most expressions <code>as</code> computes have this section-relative
  3901. nature.
  3902. (For some object formats, such as SOM for the HPPA, some expressions are
  3903. symbol-relative instead.)
  3904. </p>
  3905. <p>In this manual we use the notation {<var>secname</var> <var>N</var>} to mean &ldquo;offset
  3906. <var>N</var> into section <var>secname</var>.&rdquo;
  3907. </p>
  3908. <p>Apart from text, data and bss sections you need to know about the
  3909. <em>absolute</em> section. When <code>ld</code> mixes partial programs,
  3910. addresses in the absolute section remain unchanged. For example, address
  3911. <code>{absolute 0}</code> is &ldquo;relocated&rdquo; to run-time address 0 by
  3912. <code>ld</code>. Although the linker never arranges two partial programs&rsquo;
  3913. data sections with overlapping addresses after linking, <em>by definition</em>
  3914. their absolute sections must overlap. Address <code>{absolute&nbsp;239}</code> in one
  3915. part of a program is always the same address when the program is running as
  3916. address <code>{absolute&nbsp;239}</code> in any other part of the program.
  3917. </p>
  3918. <p>The idea of sections is extended to the <em>undefined</em> section. Any
  3919. address whose section is unknown at assembly time is by definition
  3920. rendered {undefined <var>U</var>}&mdash;where <var>U</var> is filled in later.
  3921. Since numbers are always defined, the only way to generate an undefined
  3922. address is to mention an undefined symbol. A reference to a named
  3923. common block would be such a symbol: its value is unknown at assembly
  3924. time so it has section <em>undefined</em>.
  3925. </p>
  3926. <p>By analogy the word <em>section</em> is used to describe groups of sections in
  3927. the linked program. <code>ld</code> puts all partial programs&rsquo; text
  3928. sections in contiguous addresses in the linked program. It is
  3929. customary to refer to the <em>text section</em> of a program, meaning all
  3930. the addresses of all partial programs&rsquo; text sections. Likewise for
  3931. data and bss sections.
  3932. </p>
  3933. <p>Some sections are manipulated by <code>ld</code>; others are invented for
  3934. use of <code>as</code> and have no meaning except during assembly.
  3935. </p>
  3936. <hr>
  3937. <span id="Ld-Sections"></span><div class="header">
  3938. <p>
  3939. Next: <a href="#As-Sections" accesskey="n" rel="next">As Sections</a>, Previous: <a href="#Secs-Background" accesskey="p" rel="prev">Secs Background</a>, Up: <a href="#Sections" accesskey="u" rel="up">Sections</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  3940. </div>
  3941. <span id="Linker-Sections"></span><h3 class="section">4.2 Linker Sections</h3>
  3942. <p><code>ld</code> deals with just four kinds of sections, summarized below.
  3943. </p>
  3944. <dl compact="compact">
  3945. <dd>
  3946. <span id="index-named-sections"></span>
  3947. <span id="index-sections_002c-named"></span>
  3948. </dd>
  3949. <dt><strong>named sections</strong></dt>
  3950. <dd><span id="index-text-section"></span>
  3951. <span id="index-data-section"></span>
  3952. </dd>
  3953. <dt><strong>text section</strong></dt>
  3954. <dt><strong>data section</strong></dt>
  3955. <dd><p>These sections hold your program. <code>as</code> and <code>ld</code> treat them as
  3956. separate but equal sections. Anything you can say of one section is
  3957. true of another.
  3958. When the program is running, however, it is
  3959. customary for the text section to be unalterable. The
  3960. text section is often shared among processes: it contains
  3961. instructions, constants and the like. The data section of a running
  3962. program is usually alterable: for example, C variables would be stored
  3963. in the data section.
  3964. </p>
  3965. <span id="index-bss-section"></span>
  3966. </dd>
  3967. <dt><strong>bss section</strong></dt>
  3968. <dd><p>This section contains zeroed bytes when your program begins running. It
  3969. is used to hold uninitialized variables or common storage. The length of
  3970. each partial program&rsquo;s bss section is important, but because it starts
  3971. out containing zeroed bytes there is no need to store explicit zero
  3972. bytes in the object file. The bss section was invented to eliminate
  3973. those explicit zeros from object files.
  3974. </p>
  3975. <span id="index-absolute-section"></span>
  3976. </dd>
  3977. <dt><strong>absolute section</strong></dt>
  3978. <dd><p>Address 0 of this section is always &ldquo;relocated&rdquo; to runtime address 0.
  3979. This is useful if you want to refer to an address that <code>ld</code> must
  3980. not change when relocating. In this sense we speak of absolute
  3981. addresses being &ldquo;unrelocatable&rdquo;: they do not change during relocation.
  3982. </p>
  3983. <span id="index-undefined-section"></span>
  3984. </dd>
  3985. <dt><strong>undefined section</strong></dt>
  3986. <dd><p>This &ldquo;section&rdquo; is a catch-all for address references to objects not in
  3987. the preceding sections.
  3988. </p></dd>
  3989. </dl>
  3990. <span id="index-relocation-example"></span>
  3991. <p>An idealized example of three relocatable sections follows.
  3992. The example uses the traditional section names &lsquo;<samp>.text</samp>&rsquo; and &lsquo;<samp>.data</samp>&rsquo;.
  3993. Memory addresses are on the horizontal axis.
  3994. </p>
  3995. <div class="example">
  3996. <pre class="example"> +-----+----+--+
  3997. partial program # 1: |ttttt|dddd|00|
  3998. +-----+----+--+
  3999. text data bss
  4000. seg. seg. seg.
  4001. +---+---+---+
  4002. partial program # 2: |TTT|DDD|000|
  4003. +---+---+---+
  4004. +--+---+-----+--+----+---+-----+~~
  4005. linked program: | |TTT|ttttt| |dddd|DDD|00000|
  4006. +--+---+-----+--+----+---+-----+~~
  4007. addresses: 0 &hellip;
  4008. </pre></div>
  4009. <hr>
  4010. <span id="As-Sections"></span><div class="header">
  4011. <p>
  4012. Next: <a href="#Sub_002dSections" accesskey="n" rel="next">Sub-Sections</a>, Previous: <a href="#Ld-Sections" accesskey="p" rel="prev">Ld Sections</a>, Up: <a href="#Sections" accesskey="u" rel="up">Sections</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4013. </div>
  4014. <span id="Assembler-Internal-Sections"></span><h3 class="section">4.3 Assembler Internal Sections</h3>
  4015. <span id="index-internal-assembler-sections"></span>
  4016. <span id="index-sections-in-messages_002c-internal"></span>
  4017. <p>These sections are meant only for the internal use of <code>as</code>. They
  4018. have no meaning at run-time. You do not really need to know about these
  4019. sections for most purposes; but they can be mentioned in <code>as</code>
  4020. warning messages, so it might be helpful to have an idea of their
  4021. meanings to <code>as</code>. These sections are used to permit the
  4022. value of every expression in your assembly language program to be a
  4023. section-relative address.
  4024. </p>
  4025. <dl compact="compact">
  4026. <dd><span id="index-assembler-internal-logic-error"></span>
  4027. </dd>
  4028. <dt><b>ASSEMBLER-INTERNAL-LOGIC-ERROR!</b></dt>
  4029. <dd><p>An internal assembler logic error has been found. This means there is a
  4030. bug in the assembler.
  4031. </p>
  4032. <span id="index-expr-_0028internal-section_0029"></span>
  4033. </dd>
  4034. <dt><b>expr section</b></dt>
  4035. <dd><p>The assembler stores complex expressions internally as combinations of
  4036. symbols. When it needs to represent an expression as a symbol, it puts
  4037. it in the expr section.
  4038. </p></dd>
  4039. </dl>
  4040. <hr>
  4041. <span id="Sub_002dSections"></span><div class="header">
  4042. <p>
  4043. Next: <a href="#bss" accesskey="n" rel="next">bss</a>, Previous: <a href="#As-Sections" accesskey="p" rel="prev">As Sections</a>, Up: <a href="#Sections" accesskey="u" rel="up">Sections</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4044. </div>
  4045. <span id="Sub_002dSections-1"></span><h3 class="section">4.4 Sub-Sections</h3>
  4046. <span id="index-numbered-subsections"></span>
  4047. <span id="index-grouping-data"></span>
  4048. <p>Assembled bytes
  4049. conventionally
  4050. fall into two sections: text and data.
  4051. You may have separate groups of
  4052. data in named sections
  4053. that you want to end up near to each other in the object file, even though they
  4054. are not contiguous in the assembler source. <code>as</code> allows you to
  4055. use <em>subsections</em> for this purpose. Within each section, there can be
  4056. numbered subsections with values from 0 to 8192. Objects assembled into the
  4057. same subsection go into the object file together with other objects in the same
  4058. subsection. For example, a compiler might want to store constants in the text
  4059. section, but might not want to have them interspersed with the program being
  4060. assembled. In this case, the compiler could issue a &lsquo;<samp>.text 0</samp>&rsquo; before each
  4061. section of code being output, and a &lsquo;<samp>.text 1</samp>&rsquo; before each group of
  4062. constants being output.
  4063. </p>
  4064. <p>Subsections are optional. If you do not use subsections, everything
  4065. goes in subsection number zero.
  4066. </p>
  4067. <p>Each subsection is zero-padded up to a multiple of four bytes.
  4068. (Subsections may be padded a different amount on different flavors
  4069. of <code>as</code>.)
  4070. </p>
  4071. <p>Subsections appear in your object file in numeric order, lowest numbered
  4072. to highest. (All this to be compatible with other people&rsquo;s assemblers.)
  4073. The object file contains no representation of subsections; <code>ld</code> and
  4074. other programs that manipulate object files see no trace of them.
  4075. They just see all your text subsections as a text section, and all your
  4076. data subsections as a data section.
  4077. </p>
  4078. <p>To specify which subsection you want subsequent statements assembled
  4079. into, use a numeric argument to specify it, in a &lsquo;<samp>.text
  4080. <var>expression</var></samp>&rsquo; or a &lsquo;<samp>.data <var>expression</var></samp>&rsquo; statement.
  4081. When generating COFF output, you
  4082. can also use an extra subsection
  4083. argument with arbitrary named sections: &lsquo;<samp>.section <var>name</var>,
  4084. <var>expression</var></samp>&rsquo;.
  4085. When generating ELF output, you
  4086. can also use the <code>.subsection</code> directive (see <a href="#SubSection">SubSection</a>)
  4087. to specify a subsection: &lsquo;<samp>.subsection <var>expression</var></samp>&rsquo;.
  4088. <var>Expression</var> should be an absolute expression
  4089. (see <a href="#Expressions">Expressions</a>). If you just say &lsquo;<samp>.text</samp>&rsquo; then &lsquo;<samp>.text 0</samp>&rsquo;
  4090. is assumed. Likewise &lsquo;<samp>.data</samp>&rsquo; means &lsquo;<samp>.data 0</samp>&rsquo;. Assembly
  4091. begins in <code>text 0</code>. For instance:
  4092. </p><div class="example">
  4093. <pre class="example">.text 0 # The default subsection is text 0 anyway.
  4094. .ascii &quot;This lives in the first text subsection. *&quot;
  4095. .text 1
  4096. .ascii &quot;But this lives in the second text subsection.&quot;
  4097. .data 0
  4098. .ascii &quot;This lives in the data section,&quot;
  4099. .ascii &quot;in the first data subsection.&quot;
  4100. .text 0
  4101. .ascii &quot;This lives in the first text section,&quot;
  4102. .ascii &quot;immediately following the asterisk (*).&quot;
  4103. </pre></div>
  4104. <p>Each section has a <em>location counter</em> incremented by one for every byte
  4105. assembled into that section. Because subsections are merely a convenience
  4106. restricted to <code>as</code> there is no concept of a subsection location
  4107. counter. There is no way to directly manipulate a location counter&mdash;but the
  4108. <code>.align</code> directive changes it, and any label definition captures its
  4109. current value. The location counter of the section where statements are being
  4110. assembled is said to be the <em>active</em> location counter.
  4111. </p>
  4112. <hr>
  4113. <span id="bss"></span><div class="header">
  4114. <p>
  4115. Previous: <a href="#Sub_002dSections" accesskey="p" rel="prev">Sub-Sections</a>, Up: <a href="#Sections" accesskey="u" rel="up">Sections</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4116. </div>
  4117. <span id="bss-Section"></span><h3 class="section">4.5 bss Section</h3>
  4118. <span id="index-bss-section-1"></span>
  4119. <span id="index-common-variable-storage"></span>
  4120. <p>The bss section is used for local common variable storage.
  4121. You may allocate address space in the bss section, but you may
  4122. not dictate data to load into it before your program executes. When
  4123. your program starts running, all the contents of the bss
  4124. section are zeroed bytes.
  4125. </p>
  4126. <p>The <code>.lcomm</code> pseudo-op defines a symbol in the bss section; see
  4127. <a href="#Lcomm"><code>.lcomm</code></a>.
  4128. </p>
  4129. <p>The <code>.comm</code> pseudo-op may be used to declare a common symbol, which is
  4130. another form of uninitialized symbol; see <a href="#Comm"><code>.comm</code></a>.
  4131. </p>
  4132. <p>When assembling for a target which supports multiple sections, such as ELF or
  4133. COFF, you may switch into the <code>.bss</code> section and define symbols as usual;
  4134. see <a href="#Section"><code>.section</code></a>. You may only assemble zero values into the
  4135. section. Typically the section will only contain symbol definitions and
  4136. <code>.skip</code> directives (see <a href="#Skip"><code>.skip</code></a>).
  4137. </p>
  4138. <hr>
  4139. <span id="Symbols"></span><div class="header">
  4140. <p>
  4141. Next: <a href="#Expressions" accesskey="n" rel="next">Expressions</a>, Previous: <a href="#Sections" accesskey="p" rel="prev">Sections</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4142. </div>
  4143. <span id="Symbols-2"></span><h2 class="chapter">5 Symbols</h2>
  4144. <span id="index-symbols"></span>
  4145. <p>Symbols are a central concept: the programmer uses symbols to name
  4146. things, the linker uses symbols to link, and the debugger uses symbols
  4147. to debug.
  4148. </p>
  4149. <blockquote>
  4150. <span id="index-debuggers_002c-and-symbol-order"></span>
  4151. <p><em>Warning:</em> <code>as</code> does not place symbols in the object file in
  4152. the same order they were declared. This may break some debuggers.
  4153. </p></blockquote>
  4154. <table class="menu" border="0" cellspacing="0">
  4155. <tr><td align="left" valign="top">&bull; <a href="#Labels" accesskey="1">Labels</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Labels
  4156. </td></tr>
  4157. <tr><td align="left" valign="top">&bull; <a href="#Setting-Symbols" accesskey="2">Setting Symbols</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Giving Symbols Other Values
  4158. </td></tr>
  4159. <tr><td align="left" valign="top">&bull; <a href="#Symbol-Names" accesskey="3">Symbol Names</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbol Names
  4160. </td></tr>
  4161. <tr><td align="left" valign="top">&bull; <a href="#Dot" accesskey="4">Dot</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The Special Dot Symbol
  4162. </td></tr>
  4163. <tr><td align="left" valign="top">&bull; <a href="#Symbol-Attributes" accesskey="5">Symbol Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbol Attributes
  4164. </td></tr>
  4165. </table>
  4166. <hr>
  4167. <span id="Labels"></span><div class="header">
  4168. <p>
  4169. Next: <a href="#Setting-Symbols" accesskey="n" rel="next">Setting Symbols</a>, Up: <a href="#Symbols" accesskey="u" rel="up">Symbols</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4170. </div>
  4171. <span id="Labels-1"></span><h3 class="section">5.1 Labels</h3>
  4172. <span id="index-labels"></span>
  4173. <p>A <em>label</em> is written as a symbol immediately followed by a colon
  4174. &lsquo;<samp>:</samp>&rsquo;. The symbol then represents the current value of the
  4175. active location counter, and is, for example, a suitable instruction
  4176. operand. You are warned if you use the same symbol to represent two
  4177. different locations: the first definition overrides any other
  4178. definitions.
  4179. </p>
  4180. <p>On the HPPA, the usual form for a label need not be immediately followed by a
  4181. colon, but instead must start in column zero. Only one label may be defined on
  4182. a single line. To work around this, the HPPA version of <code>as</code> also
  4183. provides a special directive <code>.label</code> for defining labels more flexibly.
  4184. </p>
  4185. <hr>
  4186. <span id="Setting-Symbols"></span><div class="header">
  4187. <p>
  4188. Next: <a href="#Symbol-Names" accesskey="n" rel="next">Symbol Names</a>, Previous: <a href="#Labels" accesskey="p" rel="prev">Labels</a>, Up: <a href="#Symbols" accesskey="u" rel="up">Symbols</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4189. </div>
  4190. <span id="Giving-Symbols-Other-Values"></span><h3 class="section">5.2 Giving Symbols Other Values</h3>
  4191. <span id="index-assigning-values-to-symbols"></span>
  4192. <span id="index-symbol-values_002c-assigning"></span>
  4193. <p>A symbol can be given an arbitrary value by writing a symbol, followed
  4194. by an equals sign &lsquo;<samp>=</samp>&rsquo;, followed by an expression
  4195. (see <a href="#Expressions">Expressions</a>). This is equivalent to using the <code>.set</code>
  4196. directive. See <a href="#Set"><code>.set</code></a>. In the same way, using a double
  4197. equals sign &lsquo;<samp>=</samp>&rsquo;&lsquo;<samp>=</samp>&rsquo; here represents an equivalent of the
  4198. <code>.eqv</code> directive. See <a href="#Eqv"><code>.eqv</code></a>.
  4199. </p>
  4200. <p>Blackfin does not support symbol assignment with &lsquo;<samp>=</samp>&rsquo;.
  4201. </p>
  4202. <hr>
  4203. <span id="Symbol-Names"></span><div class="header">
  4204. <p>
  4205. Next: <a href="#Dot" accesskey="n" rel="next">Dot</a>, Previous: <a href="#Setting-Symbols" accesskey="p" rel="prev">Setting Symbols</a>, Up: <a href="#Symbols" accesskey="u" rel="up">Symbols</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4206. </div>
  4207. <span id="Symbol-Names-1"></span><h3 class="section">5.3 Symbol Names</h3>
  4208. <span id="index-symbol-names"></span>
  4209. <span id="index-names_002c-symbol"></span>
  4210. <p>Symbol names begin with a letter or with one of &lsquo;<samp>._</samp>&rsquo;. On most
  4211. machines, you can also use <code>$</code> in symbol names; exceptions are
  4212. noted in <a href="#Machine-Dependencies">Machine Dependencies</a>. That character may be followed by any
  4213. string of digits, letters, dollar signs (unless otherwise noted for a
  4214. particular target machine), and underscores. These restrictions do not
  4215. apply when quoting symbol names by &lsquo;<samp>&quot;</samp>&rsquo;, which is permitted for most
  4216. targets. Escaping characters in quoted symbol names with &lsquo;<samp>\</samp>&rsquo; generally
  4217. extends only to &lsquo;<samp>\</samp>&rsquo; itself and &lsquo;<samp>&quot;</samp>&rsquo;, at the time of writing.
  4218. </p>
  4219. <p>Case of letters is significant: <code>foo</code> is a different symbol name
  4220. than <code>Foo</code>.
  4221. </p>
  4222. <p>Symbol names do not start with a digit. An exception to this rule is made for
  4223. Local Labels. See below.
  4224. </p>
  4225. <p>Multibyte characters are supported, but note that the setting of the
  4226. <samp>multibyte-handling</samp> option might prevent their use.
  4227. To generate a symbol name containing
  4228. multibyte characters enclose it within double quotes and use escape codes. cf
  4229. See <a href="#Strings">Strings</a>. Generating a multibyte symbol name from a label is not
  4230. currently supported.
  4231. </p>
  4232. <p>Since multibyte symbol names are unusual, and could possibly be used
  4233. maliciously, <code>as</code> provides a command line option
  4234. (<samp>--multibyte-handling=warn-sym-only</samp>) which can be used to generate a
  4235. warning message whenever a symbol name containing multibyte characters is defined.
  4236. </p>
  4237. <p>Each symbol has exactly one name. Each name in an assembly language program
  4238. refers to exactly one symbol. You may use that symbol name any number of times
  4239. in a program.
  4240. </p>
  4241. <span id="Local-Symbol-Names"></span><h4 class="subheading">Local Symbol Names</h4>
  4242. <span id="index-local-symbol-names"></span>
  4243. <span id="index-symbol-names_002c-local"></span>
  4244. <p>A local symbol is any symbol beginning with certain local label prefixes.
  4245. By default, the local label prefix is &lsquo;<samp>.L</samp>&rsquo; for ELF systems or
  4246. &lsquo;<samp>L</samp>&rsquo; for traditional a.out systems, but each target may have its own
  4247. set of local label prefixes.
  4248. On the HPPA local symbols begin with &lsquo;<samp>L$</samp>&rsquo;.
  4249. </p>
  4250. <p>Local symbols are defined and used within the assembler, but they are
  4251. normally not saved in object files. Thus, they are not visible when debugging.
  4252. You may use the &lsquo;<samp>-L</samp>&rsquo; option (see <a href="#L">Include Local Symbols</a>)
  4253. to retain the local symbols in the object files.
  4254. </p>
  4255. <span id="Local-Labels-1"></span><h4 class="subheading">Local Labels</h4>
  4256. <span id="index-local-labels"></span>
  4257. <span id="index-temporary-symbol-names"></span>
  4258. <span id="index-symbol-names_002c-temporary"></span>
  4259. <p>Local labels are different from local symbols. Local labels help compilers and
  4260. programmers use names temporarily. They create symbols which are guaranteed to
  4261. be unique over the entire scope of the input source code and which can be
  4262. referred to by a simple notation. To define a local label, write a label of
  4263. the form &lsquo;<samp><b>N</b>:</samp>&rsquo; (where <b>N</b> represents any non-negative integer).
  4264. To refer to the most recent previous definition of that label write
  4265. &lsquo;<samp><b>N</b>b</samp>&rsquo;, using the same number as when you defined the label. To refer
  4266. to the next definition of a local label, write &lsquo;<samp><b>N</b>f</samp>&rsquo;. The &lsquo;<samp>b</samp>&rsquo;
  4267. stands for &ldquo;backwards&rdquo; and the &lsquo;<samp>f</samp>&rsquo; stands for &ldquo;forwards&rdquo;.
  4268. </p>
  4269. <p>There is no restriction on how you can use these labels, and you can reuse them
  4270. too. So that it is possible to repeatedly define the same local label (using
  4271. the same number &lsquo;<samp><b>N</b></samp>&rsquo;), although you can only refer to the most recently
  4272. defined local label of that number (for a backwards reference) or the next
  4273. definition of a specific local label for a forward reference. It is also worth
  4274. noting that the first 10 local labels (&lsquo;<samp><b>0:</b></samp>&rsquo;&hellip;&lsquo;<samp><b>9:</b></samp>&rsquo;) are
  4275. implemented in a slightly more efficient manner than the others.
  4276. </p>
  4277. <p>Here is an example:
  4278. </p>
  4279. <div class="example">
  4280. <pre class="example">1: branch 1f
  4281. 2: branch 1b
  4282. 1: branch 2f
  4283. 2: branch 1b
  4284. </pre></div>
  4285. <p>Which is the equivalent of:
  4286. </p>
  4287. <div class="example">
  4288. <pre class="example">label_1: branch label_3
  4289. label_2: branch label_1
  4290. label_3: branch label_4
  4291. label_4: branch label_3
  4292. </pre></div>
  4293. <p>Local label names are only a notational device. They are immediately
  4294. transformed into more conventional symbol names before the assembler uses them.
  4295. The symbol names are stored in the symbol table, appear in error messages, and
  4296. are optionally emitted to the object file. The names are constructed using
  4297. these parts:
  4298. </p>
  4299. <dl compact="compact">
  4300. <dt><code><em>local label prefix</em></code></dt>
  4301. <dd><p>All local symbols begin with the system-specific local label prefix.
  4302. Normally both <code>as</code> and <code>ld</code> forget symbols
  4303. that start with the local label prefix. These labels are
  4304. used for symbols you are never intended to see. If you use the
  4305. &lsquo;<samp>-L</samp>&rsquo; option then <code>as</code> retains these symbols in the
  4306. object file. If you also instruct <code>ld</code> to retain these symbols,
  4307. you may use them in debugging.
  4308. </p>
  4309. </dd>
  4310. <dt><code><var>number</var></code></dt>
  4311. <dd><p>This is the number that was used in the local label definition. So if the
  4312. label is written &lsquo;<samp>55:</samp>&rsquo; then the number is &lsquo;<samp>55</samp>&rsquo;.
  4313. </p>
  4314. </dd>
  4315. <dt><code><kbd>C-B</kbd></code></dt>
  4316. <dd><p>This unusual character is included so you do not accidentally invent a symbol
  4317. of the same name. The character has ASCII value of &lsquo;<samp>\002</samp>&rsquo; (control-B).
  4318. </p>
  4319. </dd>
  4320. <dt><code><em>ordinal number</em></code></dt>
  4321. <dd><p>This is a serial number to keep the labels distinct. The first definition of
  4322. &lsquo;<samp>0:</samp>&rsquo; gets the number &lsquo;<samp>1</samp>&rsquo;. The 15th definition of &lsquo;<samp>0:</samp>&rsquo; gets the
  4323. number &lsquo;<samp>15</samp>&rsquo;, and so on. Likewise the first definition of &lsquo;<samp>1:</samp>&rsquo; gets
  4324. the number &lsquo;<samp>1</samp>&rsquo; and its 15th definition gets &lsquo;<samp>15</samp>&rsquo; as well.
  4325. </p></dd>
  4326. </dl>
  4327. <p>So for example, the first <code>1:</code> may be named <code>.L1<kbd>C-B</kbd>1</code>, and
  4328. the 44th <code>3:</code> may be named <code>.L3<kbd>C-B</kbd>44</code>.
  4329. </p>
  4330. <span id="Dollar-Local-Labels"></span><h4 class="subheading">Dollar Local Labels</h4>
  4331. <span id="index-dollar-local-symbols"></span>
  4332. <p>On some targets <code>as</code> also supports an even more local form of
  4333. local labels called dollar labels. These labels go out of scope (i.e., they
  4334. become undefined) as soon as a non-local label is defined. Thus they remain
  4335. valid for only a small region of the input source code. Normal local labels,
  4336. by contrast, remain in scope for the entire file, or until they are redefined
  4337. by another occurrence of the same local label.
  4338. </p>
  4339. <p>Dollar labels are defined in exactly the same way as ordinary local labels,
  4340. except that they have a dollar sign suffix to their numeric value, e.g.,
  4341. &lsquo;<samp><b>55$:</b></samp>&rsquo;.
  4342. </p>
  4343. <p>They can also be distinguished from ordinary local labels by their transformed
  4344. names which use ASCII character &lsquo;<samp>\001</samp>&rsquo; (control-A) as the magic character
  4345. to distinguish them from ordinary labels. For example, the fifth definition of
  4346. &lsquo;<samp>6$</samp>&rsquo; may be named &lsquo;<samp>.L6<kbd>C-A</kbd>5</samp>&rsquo;.
  4347. </p>
  4348. <hr>
  4349. <span id="Dot"></span><div class="header">
  4350. <p>
  4351. Next: <a href="#Symbol-Attributes" accesskey="n" rel="next">Symbol Attributes</a>, Previous: <a href="#Symbol-Names" accesskey="p" rel="prev">Symbol Names</a>, Up: <a href="#Symbols" accesskey="u" rel="up">Symbols</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4352. </div>
  4353. <span id="The-Special-Dot-Symbol"></span><h3 class="section">5.4 The Special Dot Symbol</h3>
  4354. <span id="index-dot-_0028symbol_0029"></span>
  4355. <span id="index-_002e-_0028symbol_0029"></span>
  4356. <span id="index-current-address"></span>
  4357. <span id="index-location-counter"></span>
  4358. <p>The special symbol &lsquo;<samp>.</samp>&rsquo; refers to the current address that
  4359. <code>as</code> is assembling into. Thus, the expression &lsquo;<samp>melvin:
  4360. .long .</samp>&rsquo; defines <code>melvin</code> to contain its own address.
  4361. Assigning a value to <code>.</code> is treated the same as a <code>.org</code>
  4362. directive.
  4363. Thus, the expression &lsquo;<samp>.=.+4</samp>&rsquo; is the same as saying
  4364. &lsquo;<samp>.space 4</samp>&rsquo;.
  4365. </p>
  4366. <hr>
  4367. <span id="Symbol-Attributes"></span><div class="header">
  4368. <p>
  4369. Previous: <a href="#Dot" accesskey="p" rel="prev">Dot</a>, Up: <a href="#Symbols" accesskey="u" rel="up">Symbols</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4370. </div>
  4371. <span id="Symbol-Attributes-1"></span><h3 class="section">5.5 Symbol Attributes</h3>
  4372. <span id="index-symbol-attributes"></span>
  4373. <span id="index-attributes_002c-symbol"></span>
  4374. <p>Every symbol has, as well as its name, the attributes &ldquo;Value&rdquo; and
  4375. &ldquo;Type&rdquo;. Depending on output format, symbols can also have auxiliary
  4376. attributes.
  4377. </p>
  4378. <p>If you use a symbol without defining it, <code>as</code> assumes zero for
  4379. all these attributes, and probably won&rsquo;t warn you. This makes the
  4380. symbol an externally defined symbol, which is generally what you
  4381. would want.
  4382. </p>
  4383. <table class="menu" border="0" cellspacing="0">
  4384. <tr><td align="left" valign="top">&bull; <a href="#Symbol-Value" accesskey="1">Symbol Value</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Value
  4385. </td></tr>
  4386. <tr><td align="left" valign="top">&bull; <a href="#Symbol-Type" accesskey="2">Symbol Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Type
  4387. </td></tr>
  4388. <tr><td align="left" valign="top">&bull; <a href="#a_002eout-Symbols" accesskey="3">a.out Symbols</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbol Attributes: <code>a.out</code>
  4389. </td></tr>
  4390. <tr><td align="left" valign="top">&bull; <a href="#COFF-Symbols" accesskey="4">COFF Symbols</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbol Attributes for COFF
  4391. </td></tr>
  4392. <tr><td align="left" valign="top">&bull; <a href="#SOM-Symbols" accesskey="5">SOM Symbols</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbol Attributes for SOM
  4393. </td></tr>
  4394. </table>
  4395. <hr>
  4396. <span id="Symbol-Value"></span><div class="header">
  4397. <p>
  4398. Next: <a href="#Symbol-Type" accesskey="n" rel="next">Symbol Type</a>, Up: <a href="#Symbol-Attributes" accesskey="u" rel="up">Symbol Attributes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4399. </div>
  4400. <span id="Value"></span><h4 class="subsection">5.5.1 Value</h4>
  4401. <span id="index-value-of-a-symbol"></span>
  4402. <span id="index-symbol-value"></span>
  4403. <p>The value of a symbol is (usually) 32 bits. For a symbol which labels a
  4404. location in the text, data, bss or absolute sections the value is the
  4405. number of addresses from the start of that section to the label.
  4406. Naturally for text, data and bss sections the value of a symbol changes
  4407. as <code>ld</code> changes section base addresses during linking. Absolute
  4408. symbols&rsquo; values do not change during linking: that is why they are
  4409. called absolute.
  4410. </p>
  4411. <p>The value of an undefined symbol is treated in a special way. If it is
  4412. 0 then the symbol is not defined in this assembler source file, and
  4413. <code>ld</code> tries to determine its value from other files linked into the
  4414. same program. You make this kind of symbol simply by mentioning a symbol
  4415. name without defining it. A non-zero value represents a <code>.comm</code>
  4416. common declaration. The value is how much common storage to reserve, in
  4417. bytes (addresses). The symbol refers to the first address of the
  4418. allocated storage.
  4419. </p>
  4420. <hr>
  4421. <span id="Symbol-Type"></span><div class="header">
  4422. <p>
  4423. Next: <a href="#a_002eout-Symbols" accesskey="n" rel="next">a.out Symbols</a>, Previous: <a href="#Symbol-Value" accesskey="p" rel="prev">Symbol Value</a>, Up: <a href="#Symbol-Attributes" accesskey="u" rel="up">Symbol Attributes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4424. </div>
  4425. <span id="Type-1"></span><h4 class="subsection">5.5.2 Type</h4>
  4426. <span id="index-type-of-a-symbol"></span>
  4427. <span id="index-symbol-type"></span>
  4428. <p>The type attribute of a symbol contains relocation (section)
  4429. information, any flag settings indicating that a symbol is external, and
  4430. (optionally), other information for linkers and debuggers. The exact
  4431. format depends on the object-code output format in use.
  4432. </p>
  4433. <hr>
  4434. <span id="a_002eout-Symbols"></span><div class="header">
  4435. <p>
  4436. Next: <a href="#COFF-Symbols" accesskey="n" rel="next">COFF Symbols</a>, Previous: <a href="#Symbol-Type" accesskey="p" rel="prev">Symbol Type</a>, Up: <a href="#Symbol-Attributes" accesskey="u" rel="up">Symbol Attributes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4437. </div>
  4438. <span id="Symbol-Attributes_003a-a_002eout"></span><h4 class="subsection">5.5.3 Symbol Attributes: <code>a.out</code></h4>
  4439. <span id="index-a_002eout-symbol-attributes"></span>
  4440. <span id="index-symbol-attributes_002c-a_002eout"></span>
  4441. <table class="menu" border="0" cellspacing="0">
  4442. <tr><td align="left" valign="top">&bull; <a href="#Symbol-Desc" accesskey="1">Symbol Desc</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Descriptor
  4443. </td></tr>
  4444. <tr><td align="left" valign="top">&bull; <a href="#Symbol-Other" accesskey="2">Symbol Other</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Other
  4445. </td></tr>
  4446. </table>
  4447. <hr>
  4448. <span id="Symbol-Desc"></span><div class="header">
  4449. <p>
  4450. Next: <a href="#Symbol-Other" accesskey="n" rel="next">Symbol Other</a>, Up: <a href="#a_002eout-Symbols" accesskey="u" rel="up">a.out Symbols</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4451. </div>
  4452. <span id="Descriptor"></span><h4 class="subsubsection">5.5.3.1 Descriptor</h4>
  4453. <span id="index-descriptor_002c-of-a_002eout-symbol"></span>
  4454. <p>This is an arbitrary 16-bit value. You may establish a symbol&rsquo;s
  4455. descriptor value by using a <code>.desc</code> statement
  4456. (see <a href="#Desc"><code>.desc</code></a>). A descriptor value means nothing to
  4457. <code>as</code>.
  4458. </p>
  4459. <hr>
  4460. <span id="Symbol-Other"></span><div class="header">
  4461. <p>
  4462. Previous: <a href="#Symbol-Desc" accesskey="p" rel="prev">Symbol Desc</a>, Up: <a href="#a_002eout-Symbols" accesskey="u" rel="up">a.out Symbols</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4463. </div>
  4464. <span id="Other"></span><h4 class="subsubsection">5.5.3.2 Other</h4>
  4465. <span id="index-other-attribute_002c-of-a_002eout-symbol"></span>
  4466. <p>This is an arbitrary 8-bit value. It means nothing to <code>as</code>.
  4467. </p>
  4468. <hr>
  4469. <span id="COFF-Symbols"></span><div class="header">
  4470. <p>
  4471. Next: <a href="#SOM-Symbols" accesskey="n" rel="next">SOM Symbols</a>, Previous: <a href="#a_002eout-Symbols" accesskey="p" rel="prev">a.out Symbols</a>, Up: <a href="#Symbol-Attributes" accesskey="u" rel="up">Symbol Attributes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4472. </div>
  4473. <span id="Symbol-Attributes-for-COFF"></span><h4 class="subsection">5.5.4 Symbol Attributes for COFF</h4>
  4474. <span id="index-COFF-symbol-attributes"></span>
  4475. <span id="index-symbol-attributes_002c-COFF"></span>
  4476. <p>The COFF format supports a multitude of auxiliary symbol attributes;
  4477. like the primary symbol attributes, they are set between <code>.def</code> and
  4478. <code>.endef</code> directives.
  4479. </p>
  4480. <span id="Primary-Attributes"></span><h4 class="subsubsection">5.5.4.1 Primary Attributes</h4>
  4481. <span id="index-primary-attributes_002c-COFF-symbols"></span>
  4482. <p>The symbol name is set with <code>.def</code>; the value and type,
  4483. respectively, with <code>.val</code> and <code>.type</code>.
  4484. </p>
  4485. <span id="Auxiliary-Attributes"></span><h4 class="subsubsection">5.5.4.2 Auxiliary Attributes</h4>
  4486. <span id="index-auxiliary-attributes_002c-COFF-symbols"></span>
  4487. <p>The <code>as</code> directives <code>.dim</code>, <code>.line</code>, <code>.scl</code>,
  4488. <code>.size</code>, <code>.tag</code>, and <code>.weak</code> can generate auxiliary symbol
  4489. table information for COFF.
  4490. </p>
  4491. <hr>
  4492. <span id="SOM-Symbols"></span><div class="header">
  4493. <p>
  4494. Previous: <a href="#COFF-Symbols" accesskey="p" rel="prev">COFF Symbols</a>, Up: <a href="#Symbol-Attributes" accesskey="u" rel="up">Symbol Attributes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4495. </div>
  4496. <span id="Symbol-Attributes-for-SOM"></span><h4 class="subsection">5.5.5 Symbol Attributes for SOM</h4>
  4497. <span id="index-SOM-symbol-attributes"></span>
  4498. <span id="index-symbol-attributes_002c-SOM"></span>
  4499. <p>The SOM format for the HPPA supports a multitude of symbol attributes set with
  4500. the <code>.EXPORT</code> and <code>.IMPORT</code> directives.
  4501. </p>
  4502. <p>The attributes are described in <cite>HP9000 Series 800 Assembly
  4503. Language Reference Manual</cite> (HP 92432-90001) under the <code>IMPORT</code> and
  4504. <code>EXPORT</code> assembler directive documentation.
  4505. </p>
  4506. <hr>
  4507. <span id="Expressions"></span><div class="header">
  4508. <p>
  4509. Next: <a href="#Pseudo-Ops" accesskey="n" rel="next">Pseudo Ops</a>, Previous: <a href="#Symbols" accesskey="p" rel="prev">Symbols</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4510. </div>
  4511. <span id="Expressions-1"></span><h2 class="chapter">6 Expressions</h2>
  4512. <span id="index-expressions"></span>
  4513. <span id="index-addresses"></span>
  4514. <span id="index-numeric-values"></span>
  4515. <p>An <em>expression</em> specifies an address or numeric value.
  4516. Whitespace may precede and/or follow an expression.
  4517. </p>
  4518. <p>The result of an expression must be an absolute number, or else an offset into
  4519. a particular section. If an expression is not absolute, and there is not
  4520. enough information when <code>as</code> sees the expression to know its
  4521. section, a second pass over the source program might be necessary to interpret
  4522. the expression&mdash;but the second pass is currently not implemented.
  4523. <code>as</code> aborts with an error message in this situation.
  4524. </p>
  4525. <table class="menu" border="0" cellspacing="0">
  4526. <tr><td align="left" valign="top">&bull; <a href="#Empty-Exprs" accesskey="1">Empty Exprs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Empty Expressions
  4527. </td></tr>
  4528. <tr><td align="left" valign="top">&bull; <a href="#Integer-Exprs" accesskey="2">Integer Exprs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Integer Expressions
  4529. </td></tr>
  4530. </table>
  4531. <hr>
  4532. <span id="Empty-Exprs"></span><div class="header">
  4533. <p>
  4534. Next: <a href="#Integer-Exprs" accesskey="n" rel="next">Integer Exprs</a>, Up: <a href="#Expressions" accesskey="u" rel="up">Expressions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4535. </div>
  4536. <span id="Empty-Expressions"></span><h3 class="section">6.1 Empty Expressions</h3>
  4537. <span id="index-empty-expressions"></span>
  4538. <span id="index-expressions_002c-empty"></span>
  4539. <p>An empty expression has no value: it is just whitespace or null.
  4540. Wherever an absolute expression is required, you may omit the
  4541. expression, and <code>as</code> assumes a value of (absolute) 0. This
  4542. is compatible with other assemblers.
  4543. </p>
  4544. <hr>
  4545. <span id="Integer-Exprs"></span><div class="header">
  4546. <p>
  4547. Previous: <a href="#Empty-Exprs" accesskey="p" rel="prev">Empty Exprs</a>, Up: <a href="#Expressions" accesskey="u" rel="up">Expressions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4548. </div>
  4549. <span id="Integer-Expressions"></span><h3 class="section">6.2 Integer Expressions</h3>
  4550. <span id="index-integer-expressions"></span>
  4551. <span id="index-expressions_002c-integer"></span>
  4552. <p>An <em>integer expression</em> is one or more <em>arguments</em> delimited
  4553. by <em>operators</em>.
  4554. </p>
  4555. <table class="menu" border="0" cellspacing="0">
  4556. <tr><td align="left" valign="top">&bull; <a href="#Arguments" accesskey="1">Arguments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Arguments
  4557. </td></tr>
  4558. <tr><td align="left" valign="top">&bull; <a href="#Operators" accesskey="2">Operators</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Operators
  4559. </td></tr>
  4560. <tr><td align="left" valign="top">&bull; <a href="#Prefix-Ops" accesskey="3">Prefix Ops</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Prefix Operators
  4561. </td></tr>
  4562. <tr><td align="left" valign="top">&bull; <a href="#Infix-Ops" accesskey="4">Infix Ops</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Infix Operators
  4563. </td></tr>
  4564. </table>
  4565. <hr>
  4566. <span id="Arguments"></span><div class="header">
  4567. <p>
  4568. Next: <a href="#Operators" accesskey="n" rel="next">Operators</a>, Up: <a href="#Integer-Exprs" accesskey="u" rel="up">Integer Exprs</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4569. </div>
  4570. <span id="Arguments-1"></span><h4 class="subsection">6.2.1 Arguments</h4>
  4571. <span id="index-expression-arguments"></span>
  4572. <span id="index-arguments-in-expressions"></span>
  4573. <span id="index-operands-in-expressions"></span>
  4574. <span id="index-arithmetic-operands"></span>
  4575. <p><em>Arguments</em> are symbols, numbers or subexpressions. In other
  4576. contexts arguments are sometimes called &ldquo;arithmetic operands&rdquo;. In
  4577. this manual, to avoid confusing them with the &ldquo;instruction operands&rdquo; of
  4578. the machine language, we use the term &ldquo;argument&rdquo; to refer to parts of
  4579. expressions only, reserving the word &ldquo;operand&rdquo; to refer only to machine
  4580. instruction operands.
  4581. </p>
  4582. <p>Symbols are evaluated to yield {<var>section</var> <var>NNN</var>} where
  4583. <var>section</var> is one of text, data, bss, absolute,
  4584. or undefined. <var>NNN</var> is a signed, 2&rsquo;s complement 32 bit
  4585. integer.
  4586. </p>
  4587. <p>Numbers are usually integers.
  4588. </p>
  4589. <p>A number can be a flonum or bignum. In this case, you are warned
  4590. that only the low order 32 bits are used, and <code>as</code> pretends
  4591. these 32 bits are an integer. You may write integer-manipulating
  4592. instructions that act on exotic constants, compatible with other
  4593. assemblers.
  4594. </p>
  4595. <span id="index-subexpressions"></span>
  4596. <p>Subexpressions are a left parenthesis &lsquo;<samp>(</samp>&rsquo; followed by an integer
  4597. expression, followed by a right parenthesis &lsquo;<samp>)</samp>&rsquo;; or a prefix
  4598. operator followed by an argument.
  4599. </p>
  4600. <hr>
  4601. <span id="Operators"></span><div class="header">
  4602. <p>
  4603. Next: <a href="#Prefix-Ops" accesskey="n" rel="next">Prefix Ops</a>, Previous: <a href="#Arguments" accesskey="p" rel="prev">Arguments</a>, Up: <a href="#Integer-Exprs" accesskey="u" rel="up">Integer Exprs</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4604. </div>
  4605. <span id="Operators-1"></span><h4 class="subsection">6.2.2 Operators</h4>
  4606. <span id="index-operators_002c-in-expressions"></span>
  4607. <span id="index-arithmetic-functions"></span>
  4608. <span id="index-functions_002c-in-expressions"></span>
  4609. <p><em>Operators</em> are arithmetic functions, like <code>+</code> or <code>%</code>. Prefix
  4610. operators are followed by an argument. Infix operators appear
  4611. between their arguments. Operators may be preceded and/or followed by
  4612. whitespace.
  4613. </p>
  4614. <hr>
  4615. <span id="Prefix-Ops"></span><div class="header">
  4616. <p>
  4617. Next: <a href="#Infix-Ops" accesskey="n" rel="next">Infix Ops</a>, Previous: <a href="#Operators" accesskey="p" rel="prev">Operators</a>, Up: <a href="#Integer-Exprs" accesskey="u" rel="up">Integer Exprs</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4618. </div>
  4619. <span id="Prefix-Operator"></span><h4 class="subsection">6.2.3 Prefix Operator</h4>
  4620. <span id="index-prefix-operators"></span>
  4621. <p><code>as</code> has the following <em>prefix operators</em>. They each take
  4622. one argument, which must be absolute.
  4623. </p>
  4624. <dl compact="compact">
  4625. <dt><code>-</code></dt>
  4626. <dd><p><em>Negation</em>. Two&rsquo;s complement negation.
  4627. </p></dd>
  4628. <dt><code>~</code></dt>
  4629. <dd><p><em>Complementation</em>. Bitwise not.
  4630. </p></dd>
  4631. </dl>
  4632. <hr>
  4633. <span id="Infix-Ops"></span><div class="header">
  4634. <p>
  4635. Previous: <a href="#Prefix-Ops" accesskey="p" rel="prev">Prefix Ops</a>, Up: <a href="#Integer-Exprs" accesskey="u" rel="up">Integer Exprs</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4636. </div>
  4637. <span id="Infix-Operators"></span><h4 class="subsection">6.2.4 Infix Operators</h4>
  4638. <span id="index-infix-operators"></span>
  4639. <span id="index-operators_002c-permitted-arguments"></span>
  4640. <p><em>Infix operators</em> take two arguments, one on either side. Operators
  4641. have precedence, but operations with equal precedence are performed left
  4642. to right. Apart from <code>+</code> or <samp>-</samp>, both arguments must be
  4643. absolute, and the result is absolute.
  4644. </p>
  4645. <ol>
  4646. <li><span id="index-operator-precedence"></span>
  4647. <span id="index-precedence-of-operators"></span>
  4648. </li><li> Highest Precedence
  4649. <dl compact="compact">
  4650. <dt><code>*</code></dt>
  4651. <dd><p><em>Multiplication</em>.
  4652. </p>
  4653. </dd>
  4654. <dt><code>/</code></dt>
  4655. <dd><p><em>Division</em>. Truncation is the same as the C operator &lsquo;<samp>/</samp>&rsquo;
  4656. </p>
  4657. </dd>
  4658. <dt><code>%</code></dt>
  4659. <dd><p><em>Remainder</em>.
  4660. </p>
  4661. </dd>
  4662. <dt><code>&lt;&lt;</code></dt>
  4663. <dd><p><em>Shift Left</em>. Same as the C operator &lsquo;<samp>&lt;&lt;</samp>&rsquo;.
  4664. </p>
  4665. </dd>
  4666. <dt><code>&gt;&gt;</code></dt>
  4667. <dd><p><em>Shift Right</em>. Same as the C operator &lsquo;<samp>&gt;&gt;</samp>&rsquo;.
  4668. </p></dd>
  4669. </dl>
  4670. </li><li> Intermediate precedence
  4671. <dl compact="compact">
  4672. <dt><code>|</code></dt>
  4673. <dd>
  4674. <p><em>Bitwise Inclusive Or</em>.
  4675. </p>
  4676. </dd>
  4677. <dt><code>&amp;</code></dt>
  4678. <dd><p><em>Bitwise And</em>.
  4679. </p>
  4680. </dd>
  4681. <dt><code>^</code></dt>
  4682. <dd><p><em>Bitwise Exclusive Or</em>.
  4683. </p>
  4684. </dd>
  4685. <dt><code>!</code></dt>
  4686. <dd><p><em>Bitwise Or Not</em>.
  4687. </p></dd>
  4688. </dl>
  4689. </li><li> Low Precedence
  4690. <dl compact="compact">
  4691. <dd><span id="index-addition_002c-permitted-arguments"></span>
  4692. <span id="index-plus_002c-permitted-arguments"></span>
  4693. <span id="index-arguments-for-addition"></span>
  4694. </dd>
  4695. <dt><code>+</code></dt>
  4696. <dd><p><em>Addition</em>. If either argument is absolute, the result has the section of
  4697. the other argument. You may not add together arguments from different
  4698. sections.
  4699. </p>
  4700. <span id="index-subtraction_002c-permitted-arguments"></span>
  4701. <span id="index-minus_002c-permitted-arguments"></span>
  4702. <span id="index-arguments-for-subtraction"></span>
  4703. </dd>
  4704. <dt><code>-</code></dt>
  4705. <dd><p><em>Subtraction</em>. If the right argument is absolute, the
  4706. result has the section of the left argument.
  4707. If both arguments are in the same section, the result is absolute.
  4708. You may not subtract arguments from different sections.
  4709. </p>
  4710. <span id="index-comparison-expressions"></span>
  4711. <span id="index-expressions_002c-comparison"></span>
  4712. </dd>
  4713. <dt><code>==</code></dt>
  4714. <dd><p><em>Is Equal To</em>
  4715. </p></dd>
  4716. <dt><code>&lt;&gt;</code></dt>
  4717. <dt><code>!=</code></dt>
  4718. <dd><p><em>Is Not Equal To</em>
  4719. </p></dd>
  4720. <dt><code>&lt;</code></dt>
  4721. <dd><p><em>Is Less Than</em>
  4722. </p></dd>
  4723. <dt><code>&gt;</code></dt>
  4724. <dd><p><em>Is Greater Than</em>
  4725. </p></dd>
  4726. <dt><code>&gt;=</code></dt>
  4727. <dd><p><em>Is Greater Than Or Equal To</em>
  4728. </p></dd>
  4729. <dt><code>&lt;=</code></dt>
  4730. <dd><p><em>Is Less Than Or Equal To</em>
  4731. </p>
  4732. <p>The comparison operators can be used as infix operators. A true result has a
  4733. value of -1 whereas a false result has a value of 0. Note, these operators
  4734. perform signed comparisons.
  4735. </p></dd>
  4736. </dl>
  4737. </li><li> Lowest Precedence
  4738. <dl compact="compact">
  4739. <dt><code>&amp;&amp;</code></dt>
  4740. <dd><p><em>Logical And</em>.
  4741. </p>
  4742. </dd>
  4743. <dt><code>||</code></dt>
  4744. <dd><p><em>Logical Or</em>.
  4745. </p>
  4746. <p>These two logical operations can be used to combine the results of sub
  4747. expressions. Note, unlike the comparison operators a true result returns a
  4748. value of 1 but a false result does still return 0. Also note that the logical
  4749. or operator has a slightly lower precedence than logical and.
  4750. </p>
  4751. </dd>
  4752. </dl>
  4753. </li></ol>
  4754. <p>In short, it&rsquo;s only meaningful to add or subtract the <em>offsets</em> in an
  4755. address; you can only have a defined section in one of the two arguments.
  4756. </p>
  4757. <hr>
  4758. <span id="Pseudo-Ops"></span><div class="header">
  4759. <p>
  4760. Next: <a href="#Object-Attributes" accesskey="n" rel="next">Object Attributes</a>, Previous: <a href="#Expressions" accesskey="p" rel="prev">Expressions</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  4761. </div>
  4762. <span id="Assembler-Directives"></span><h2 class="chapter">7 Assembler Directives</h2>
  4763. <span id="index-directives_002c-machine-independent"></span>
  4764. <span id="index-pseudo_002dops_002c-machine-independent"></span>
  4765. <span id="index-machine-independent-directives"></span>
  4766. <p>All assembler directives have names that begin with a period (&lsquo;<samp>.</samp>&rsquo;).
  4767. The names are case insensitive for most targets, and usually written
  4768. in lower case.
  4769. </p>
  4770. <p>This chapter discusses directives that are available regardless of the
  4771. target machine configuration for the <small>GNU</small> assembler.
  4772. Some machine configurations provide additional directives.
  4773. See <a href="#Machine-Dependencies">Machine Dependencies</a>.
  4774. </p>
  4775. <table class="menu" border="0" cellspacing="0">
  4776. <tr><td align="left" valign="top">&bull; <a href="#Abort" accesskey="1">Abort</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.abort</code>
  4777. </td></tr>
  4778. <tr><td align="left" valign="top">&bull; <a href="#ABORT-_0028COFF_0029" accesskey="2">ABORT (COFF)</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.ABORT</code>
  4779. </td></tr>
  4780. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4781. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Align" accesskey="3">Align</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.align [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code>
  4782. </td></tr>
  4783. <tr><td align="left" valign="top">&bull; <a href="#Altmacro" accesskey="4">Altmacro</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.altmacro</code>
  4784. </td></tr>
  4785. <tr><td align="left" valign="top">&bull; <a href="#Ascii" accesskey="5">Ascii</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.ascii &quot;<var>string</var>&quot;</code>&hellip;
  4786. </td></tr>
  4787. <tr><td align="left" valign="top">&bull; <a href="#Asciz" accesskey="6">Asciz</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.asciz &quot;<var>string</var>&quot;</code>&hellip;
  4788. </td></tr>
  4789. <tr><td align="left" valign="top">&bull; <a href="#Attach_005fto_005fgroup" accesskey="7">Attach_to_group</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.attach_to_group <var>name</var></code>
  4790. </td></tr>
  4791. <tr><td align="left" valign="top">&bull; <a href="#Balign" accesskey="8">Balign</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.balign [<var>abs-expr</var>[, <var>abs-expr</var>]]</code>
  4792. </td></tr>
  4793. <tr><td align="left" valign="top">&bull; <a href="#Bss" accesskey="9">Bss</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.bss <var>subsection</var></code>
  4794. </td></tr>
  4795. <tr><td align="left" valign="top">&bull; <a href="#Bundle-directives">Bundle directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.bundle_align_mode <var>abs-expr</var></code>, etc
  4796. </td></tr>
  4797. <tr><td align="left" valign="top">&bull; <a href="#Byte">Byte</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.byte <var>expressions</var></code>
  4798. </td></tr>
  4799. <tr><td align="left" valign="top">&bull; <a href="#CFI-directives">CFI directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.cfi_startproc [simple]</code>, <code>.cfi_endproc</code>, etc.
  4800. </td></tr>
  4801. <tr><td align="left" valign="top">&bull; <a href="#Comm">Comm</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.comm <var>symbol</var> , <var>length</var> </code>
  4802. </td></tr>
  4803. <tr><td align="left" valign="top">&bull; <a href="#Data">Data</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.data <var>subsection</var></code>
  4804. </td></tr>
  4805. <tr><td align="left" valign="top">&bull; <a href="#Dc">Dc</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.dc[<var>size</var>] <var>expressions</var></code>
  4806. </td></tr>
  4807. <tr><td align="left" valign="top">&bull; <a href="#Dcb">Dcb</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.dcb[<var>size</var>] <var>number</var> [,<var>fill</var>]</code>
  4808. </td></tr>
  4809. <tr><td align="left" valign="top">&bull; <a href="#Ds">Ds</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.ds[<var>size</var>] <var>number</var> [,<var>fill</var>]</code>
  4810. </td></tr>
  4811. <tr><td align="left" valign="top">&bull; <a href="#Def">Def</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.def <var>name</var></code>
  4812. </td></tr>
  4813. <tr><td align="left" valign="top">&bull; <a href="#Desc">Desc</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.desc <var>symbol</var>, <var>abs-expression</var></code>
  4814. </td></tr>
  4815. <tr><td align="left" valign="top">&bull; <a href="#Dim">Dim</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.dim</code>
  4816. </td></tr>
  4817. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4818. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Double">Double</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.double <var>flonums</var></code>
  4819. </td></tr>
  4820. <tr><td align="left" valign="top">&bull; <a href="#Eject">Eject</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.eject</code>
  4821. </td></tr>
  4822. <tr><td align="left" valign="top">&bull; <a href="#Else">Else</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.else</code>
  4823. </td></tr>
  4824. <tr><td align="left" valign="top">&bull; <a href="#Elseif">Elseif</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.elseif</code>
  4825. </td></tr>
  4826. <tr><td align="left" valign="top">&bull; <a href="#End">End</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.end</code>
  4827. </td></tr>
  4828. <tr><td align="left" valign="top">&bull; <a href="#Endef">Endef</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.endef</code>
  4829. </td></tr>
  4830. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4831. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Endfunc">Endfunc</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.endfunc</code>
  4832. </td></tr>
  4833. <tr><td align="left" valign="top">&bull; <a href="#Endif">Endif</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.endif</code>
  4834. </td></tr>
  4835. <tr><td align="left" valign="top">&bull; <a href="#Equ">Equ</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.equ <var>symbol</var>, <var>expression</var></code>
  4836. </td></tr>
  4837. <tr><td align="left" valign="top">&bull; <a href="#Equiv">Equiv</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.equiv <var>symbol</var>, <var>expression</var></code>
  4838. </td></tr>
  4839. <tr><td align="left" valign="top">&bull; <a href="#Eqv">Eqv</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.eqv <var>symbol</var>, <var>expression</var></code>
  4840. </td></tr>
  4841. <tr><td align="left" valign="top">&bull; <a href="#Err">Err</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.err</code>
  4842. </td></tr>
  4843. <tr><td align="left" valign="top">&bull; <a href="#Error">Error</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.error <var>string</var></code>
  4844. </td></tr>
  4845. <tr><td align="left" valign="top">&bull; <a href="#Exitm">Exitm</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.exitm</code>
  4846. </td></tr>
  4847. <tr><td align="left" valign="top">&bull; <a href="#Extern">Extern</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.extern</code>
  4848. </td></tr>
  4849. <tr><td align="left" valign="top">&bull; <a href="#Fail">Fail</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.fail</code>
  4850. </td></tr>
  4851. <tr><td align="left" valign="top">&bull; <a href="#File">File</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.file</code>
  4852. </td></tr>
  4853. <tr><td align="left" valign="top">&bull; <a href="#Fill">Fill</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.fill <var>repeat</var> , <var>size</var> , <var>value</var></code>
  4854. </td></tr>
  4855. <tr><td align="left" valign="top">&bull; <a href="#Float">Float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.float <var>flonums</var></code>
  4856. </td></tr>
  4857. <tr><td align="left" valign="top">&bull; <a href="#Func">Func</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.func</code>
  4858. </td></tr>
  4859. <tr><td align="left" valign="top">&bull; <a href="#Global">Global</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.global <var>symbol</var></code>, <code>.globl <var>symbol</var></code>
  4860. </td></tr>
  4861. <tr><td align="left" valign="top">&bull; <a href="#Gnu_005fattribute">Gnu_attribute</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.gnu_attribute <var>tag</var>,<var>value</var></code>
  4862. </td></tr>
  4863. <tr><td align="left" valign="top">&bull; <a href="#Hidden">Hidden</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.hidden <var>names</var></code>
  4864. </td></tr>
  4865. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4866. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#hword">hword</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.hword <var>expressions</var></code>
  4867. </td></tr>
  4868. <tr><td align="left" valign="top">&bull; <a href="#Ident">Ident</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.ident</code>
  4869. </td></tr>
  4870. <tr><td align="left" valign="top">&bull; <a href="#If">If</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.if <var>absolute expression</var></code>
  4871. </td></tr>
  4872. <tr><td align="left" valign="top">&bull; <a href="#Incbin">Incbin</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.incbin &quot;<var>file</var>&quot;[,<var>skip</var>[,<var>count</var>]]</code>
  4873. </td></tr>
  4874. <tr><td align="left" valign="top">&bull; <a href="#Include">Include</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.include &quot;<var>file</var>&quot;</code>
  4875. </td></tr>
  4876. <tr><td align="left" valign="top">&bull; <a href="#Int">Int</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.int <var>expressions</var></code>
  4877. </td></tr>
  4878. <tr><td align="left" valign="top">&bull; <a href="#Internal">Internal</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.internal <var>names</var></code>
  4879. </td></tr>
  4880. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4881. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Irp">Irp</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.irp <var>symbol</var>,<var>values</var></code>&hellip;
  4882. </td></tr>
  4883. <tr><td align="left" valign="top">&bull; <a href="#Irpc">Irpc</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.irpc <var>symbol</var>,<var>values</var></code>&hellip;
  4884. </td></tr>
  4885. <tr><td align="left" valign="top">&bull; <a href="#Lcomm">Lcomm</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.lcomm <var>symbol</var> , <var>length</var></code>
  4886. </td></tr>
  4887. <tr><td align="left" valign="top">&bull; <a href="#Lflags">Lflags</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.lflags</code>
  4888. </td></tr>
  4889. <tr><td align="left" valign="top">&bull; <a href="#Line">Line</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.line <var>line-number</var></code>
  4890. </td></tr>
  4891. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4892. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Linkonce">Linkonce</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.linkonce [<var>type</var>]</code>
  4893. </td></tr>
  4894. <tr><td align="left" valign="top">&bull; <a href="#List">List</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.list</code>
  4895. </td></tr>
  4896. <tr><td align="left" valign="top">&bull; <a href="#Ln">Ln</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.ln <var>line-number</var></code>
  4897. </td></tr>
  4898. <tr><td align="left" valign="top">&bull; <a href="#Loc">Loc</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.loc <var>fileno</var> <var>lineno</var></code>
  4899. </td></tr>
  4900. <tr><td align="left" valign="top">&bull; <a href="#Loc_005fmark_005flabels">Loc_mark_labels</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.loc_mark_labels <var>enable</var></code>
  4901. </td></tr>
  4902. <tr><td align="left" valign="top">&bull; <a href="#Local">Local</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.local <var>names</var></code>
  4903. </td></tr>
  4904. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4905. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Long">Long</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.long <var>expressions</var></code>
  4906. </td></tr>
  4907. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4908. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Macro">Macro</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.macro <var>name</var> <var>args</var></code>&hellip;
  4909. </td></tr>
  4910. <tr><td align="left" valign="top">&bull; <a href="#MRI">MRI</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.mri <var>val</var></code>
  4911. </td></tr>
  4912. <tr><td align="left" valign="top">&bull; <a href="#Noaltmacro">Noaltmacro</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.noaltmacro</code>
  4913. </td></tr>
  4914. <tr><td align="left" valign="top">&bull; <a href="#Nolist">Nolist</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.nolist</code>
  4915. </td></tr>
  4916. <tr><td align="left" valign="top">&bull; <a href="#Nop">Nop</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.nop</code>
  4917. </td></tr>
  4918. <tr><td align="left" valign="top">&bull; <a href="#Nops">Nops</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.nops <var>size</var>[, <var>control</var>]</code>
  4919. </td></tr>
  4920. <tr><td align="left" valign="top">&bull; <a href="#Octa">Octa</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.octa <var>bignums</var></code>
  4921. </td></tr>
  4922. <tr><td align="left" valign="top">&bull; <a href="#Offset">Offset</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.offset <var>loc</var></code>
  4923. </td></tr>
  4924. <tr><td align="left" valign="top">&bull; <a href="#Org">Org</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.org <var>new-lc</var>, <var>fill</var></code>
  4925. </td></tr>
  4926. <tr><td align="left" valign="top">&bull; <a href="#P2align">P2align</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.p2align [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code>
  4927. </td></tr>
  4928. <tr><td align="left" valign="top">&bull; <a href="#PopSection">PopSection</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.popsection</code>
  4929. </td></tr>
  4930. <tr><td align="left" valign="top">&bull; <a href="#Previous">Previous</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.previous</code>
  4931. </td></tr>
  4932. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4933. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Print">Print</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.print <var>string</var></code>
  4934. </td></tr>
  4935. <tr><td align="left" valign="top">&bull; <a href="#Protected">Protected</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.protected <var>names</var></code>
  4936. </td></tr>
  4937. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4938. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Psize">Psize</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.psize <var>lines</var>, <var>columns</var></code>
  4939. </td></tr>
  4940. <tr><td align="left" valign="top">&bull; <a href="#Purgem">Purgem</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.purgem <var>name</var></code>
  4941. </td></tr>
  4942. <tr><td align="left" valign="top">&bull; <a href="#PushSection">PushSection</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.pushsection <var>name</var></code>
  4943. </td></tr>
  4944. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4945. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Quad">Quad</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.quad <var>bignums</var></code>
  4946. </td></tr>
  4947. <tr><td align="left" valign="top">&bull; <a href="#Reloc">Reloc</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.reloc <var>offset</var>, <var>reloc_name</var>[, <var>expression</var>]</code>
  4948. </td></tr>
  4949. <tr><td align="left" valign="top">&bull; <a href="#Rept">Rept</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.rept <var>count</var></code>
  4950. </td></tr>
  4951. <tr><td align="left" valign="top">&bull; <a href="#Sbttl">Sbttl</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.sbttl &quot;<var>subheading</var>&quot;</code>
  4952. </td></tr>
  4953. <tr><td align="left" valign="top">&bull; <a href="#Scl">Scl</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.scl <var>class</var></code>
  4954. </td></tr>
  4955. <tr><td align="left" valign="top">&bull; <a href="#Section">Section</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.section <var>name</var>[, <var>flags</var>]</code>
  4956. </td></tr>
  4957. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4958. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Set">Set</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.set <var>symbol</var>, <var>expression</var></code>
  4959. </td></tr>
  4960. <tr><td align="left" valign="top">&bull; <a href="#Short">Short</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.short <var>expressions</var></code>
  4961. </td></tr>
  4962. <tr><td align="left" valign="top">&bull; <a href="#Single">Single</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.single <var>flonums</var></code>
  4963. </td></tr>
  4964. <tr><td align="left" valign="top">&bull; <a href="#Size">Size</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.size [<var>name</var> , <var>expression</var>]</code>
  4965. </td></tr>
  4966. <tr><td align="left" valign="top">&bull; <a href="#Skip">Skip</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.skip <var>size</var> [,<var>fill</var>]</code>
  4967. </td></tr>
  4968. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4969. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Sleb128">Sleb128</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.sleb128 <var>expressions</var></code>
  4970. </td></tr>
  4971. <tr><td align="left" valign="top">&bull; <a href="#Space">Space</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.space <var>size</var> [,<var>fill</var>]</code>
  4972. </td></tr>
  4973. <tr><td align="left" valign="top">&bull; <a href="#Stab">Stab</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.stabd, .stabn, .stabs</code>
  4974. </td></tr>
  4975. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4976. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#String">String</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.string &quot;<var>str</var>&quot;</code>, <code>.string8 &quot;<var>str</var>&quot;</code>, <code>.string16 &quot;<var>str</var>&quot;</code>, <code>.string32 &quot;<var>str</var>&quot;</code>, <code>.string64 &quot;<var>str</var>&quot;</code>
  4977. </td></tr>
  4978. <tr><td align="left" valign="top">&bull; <a href="#Struct">Struct</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.struct <var>expression</var></code>
  4979. </td></tr>
  4980. <tr><td align="left" valign="top">&bull; <a href="#SubSection">SubSection</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.subsection</code>
  4981. </td></tr>
  4982. <tr><td align="left" valign="top">&bull; <a href="#Symver">Symver</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.symver <var>name</var>,<var>name2@nodename</var>[,<var>visibility</var>]</code>
  4983. </td></tr>
  4984. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4985. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Tag">Tag</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.tag <var>structname</var></code>
  4986. </td></tr>
  4987. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4988. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Text">Text</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.text <var>subsection</var></code>
  4989. </td></tr>
  4990. <tr><td align="left" valign="top">&bull; <a href="#Title">Title</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.title &quot;<var>heading</var>&quot;</code>
  4991. </td></tr>
  4992. <tr><td align="left" valign="top">&bull; <a href="#Tls_005fcommon">Tls_common</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.tls_common <var>symbol</var>, <var>length</var>[, <var>alignment</var>]</code>
  4993. </td></tr>
  4994. <tr><td align="left" valign="top">&bull; <a href="#Type">Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.type &lt;<var>int</var> | <var>name</var> , <var>type description</var>&gt;</code>
  4995. </td></tr>
  4996. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  4997. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Uleb128">Uleb128</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.uleb128 <var>expressions</var></code>
  4998. </td></tr>
  4999. <tr><td align="left" valign="top">&bull; <a href="#Val">Val</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.val <var>addr</var></code>
  5000. </td></tr>
  5001. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  5002. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Version">Version</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.version &quot;<var>string</var>&quot;</code>
  5003. </td></tr>
  5004. <tr><td align="left" valign="top">&bull; <a href="#VTableEntry">VTableEntry</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.vtable_entry <var>table</var>, <var>offset</var></code>
  5005. </td></tr>
  5006. <tr><td align="left" valign="top">&bull; <a href="#VTableInherit">VTableInherit</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.vtable_inherit <var>child</var>, <var>parent</var></code>
  5007. </td></tr>
  5008. <tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
  5009. </pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Warning">Warning</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.warning <var>string</var></code>
  5010. </td></tr>
  5011. <tr><td align="left" valign="top">&bull; <a href="#Weak">Weak</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.weak <var>names</var></code>
  5012. </td></tr>
  5013. <tr><td align="left" valign="top">&bull; <a href="#Weakref">Weakref</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.weakref <var>alias</var>, <var>symbol</var></code>
  5014. </td></tr>
  5015. <tr><td align="left" valign="top">&bull; <a href="#Word">Word</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.word <var>expressions</var></code>
  5016. </td></tr>
  5017. <tr><td align="left" valign="top">&bull; <a href="#Zero">Zero</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.zero <var>size</var></code>
  5018. </td></tr>
  5019. <tr><td align="left" valign="top">&bull; <a href="#g_t2byte">2byte</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.2byte <var>expressions</var></code>
  5020. </td></tr>
  5021. <tr><td align="left" valign="top">&bull; <a href="#g_t4byte">4byte</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.4byte <var>expressions</var></code>
  5022. </td></tr>
  5023. <tr><td align="left" valign="top">&bull; <a href="#g_t8byte">8byte</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><code>.8byte <var>expressions</var></code>
  5024. </td></tr>
  5025. <tr><td align="left" valign="top">&bull; <a href="#Deprecated">Deprecated</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Deprecated Directives
  5026. </td></tr>
  5027. </table>
  5028. <hr>
  5029. <span id="Abort"></span><div class="header">
  5030. <p>
  5031. Next: <a href="#ABORT-_0028COFF_0029" accesskey="n" rel="next">ABORT (COFF)</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5032. </div>
  5033. <span id="g_t_002eabort"></span><h3 class="section">7.1 <code>.abort</code></h3>
  5034. <span id="index-abort-directive"></span>
  5035. <span id="index-stopping-the-assembly"></span>
  5036. <p>This directive stops the assembly immediately. It is for
  5037. compatibility with other assemblers. The original idea was that the
  5038. assembly language source would be piped into the assembler. If the sender
  5039. of the source quit, it could use this directive tells <code>as</code> to
  5040. quit also. One day <code>.abort</code> will not be supported.
  5041. </p>
  5042. <hr>
  5043. <span id="ABORT-_0028COFF_0029"></span><div class="header">
  5044. <p>
  5045. Next: <a href="#Align" accesskey="n" rel="next">Align</a>, Previous: <a href="#Abort" accesskey="p" rel="prev">Abort</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5046. </div>
  5047. <span id="g_t_002eABORT-_0028COFF_0029"></span><h3 class="section">7.2 <code>.ABORT</code> (COFF)</h3>
  5048. <span id="index-ABORT-directive"></span>
  5049. <p>When producing COFF output, <code>as</code> accepts this directive as a
  5050. synonym for &lsquo;<samp>.abort</samp>&rsquo;.
  5051. </p>
  5052. <hr>
  5053. <span id="Align"></span><div class="header">
  5054. <p>
  5055. Next: <a href="#Altmacro" accesskey="n" rel="next">Altmacro</a>, Previous: <a href="#ABORT-_0028COFF_0029" accesskey="p" rel="prev">ABORT (COFF)</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5056. </div>
  5057. <span id="g_t_002ealign-_005babs_002dexpr_005b_002c-abs_002dexpr_005b_002c-abs_002dexpr_005d_005d_005d"></span><h3 class="section">7.3 <code>.align [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code></h3>
  5058. <span id="index-padding-the-location-counter"></span>
  5059. <span id="index-align-directive"></span>
  5060. <p>Pad the location counter (in the current subsection) to a particular storage
  5061. boundary. The first expression (which must be absolute) is the alignment
  5062. required, as described below. If this expression is omitted then a default
  5063. value of 0 is used, effectively disabling alignment requirements.
  5064. </p>
  5065. <p>The second expression (also absolute) gives the fill value to be stored in the
  5066. padding bytes. It (and the comma) may be omitted. If it is omitted, the
  5067. padding bytes are normally zero. However, on most systems, if the section is
  5068. marked as containing code and the fill value is omitted, the space is filled
  5069. with no-op instructions.
  5070. </p>
  5071. <p>The third expression is also absolute, and is also optional. If it is present,
  5072. it is the maximum number of bytes that should be skipped by this alignment
  5073. directive. If doing the alignment would require skipping more bytes than the
  5074. specified maximum, then the alignment is not done at all. You can omit the
  5075. fill value (the second argument) entirely by simply using two commas after the
  5076. required alignment; this can be useful if you want the alignment to be filled
  5077. with no-op instructions when appropriate.
  5078. </p>
  5079. <p>The way the required alignment is specified varies from system to system.
  5080. For the arc, hppa, i386 using ELF, iq2000, m68k, or1k,
  5081. s390, sparc, tic4x and xtensa, the first expression is the
  5082. alignment request in bytes. For example &lsquo;<samp>.align 8</samp>&rsquo; advances
  5083. the location counter until it is a multiple of 8. If the location counter
  5084. is already a multiple of 8, no change is needed. For the tic54x, the
  5085. first expression is the alignment request in words.
  5086. </p>
  5087. <p>For other systems, including ppc, i386 using a.out format, arm and
  5088. strongarm, it is the
  5089. number of low-order zero bits the location counter must have after
  5090. advancement. For example &lsquo;<samp>.align 3</samp>&rsquo; advances the location
  5091. counter until it is a multiple of 8. If the location counter is already a
  5092. multiple of 8, no change is needed.
  5093. </p>
  5094. <p>This inconsistency is due to the different behaviors of the various
  5095. native assemblers for these systems which GAS must emulate.
  5096. GAS also provides <code>.balign</code> and <code>.p2align</code> directives,
  5097. described later, which have a consistent behavior across all
  5098. architectures (but are specific to GAS).
  5099. </p>
  5100. <hr>
  5101. <span id="Altmacro"></span><div class="header">
  5102. <p>
  5103. Next: <a href="#Ascii" accesskey="n" rel="next">Ascii</a>, Previous: <a href="#Align" accesskey="p" rel="prev">Align</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5104. </div>
  5105. <span id="g_t_002ealtmacro"></span><h3 class="section">7.4 <code>.altmacro</code></h3>
  5106. <p>Enable alternate macro mode, enabling:
  5107. </p>
  5108. <dl compact="compact">
  5109. <dt><code>LOCAL <var>name</var> [ , &hellip; ]</code>
  5110. <span id="index-LOCAL-name-_005b-_002c-_2026-_005d"></span>
  5111. </dt>
  5112. <dd><p>One additional directive, <code>LOCAL</code>, is available. It is used to
  5113. generate a string replacement for each of the <var>name</var> arguments, and
  5114. replace any instances of <var>name</var> in each macro expansion. The
  5115. replacement string is unique in the assembly, and different for each
  5116. separate macro expansion. <code>LOCAL</code> allows you to write macros that
  5117. define symbols, without fear of conflict between separate macro expansions.
  5118. </p>
  5119. </dd>
  5120. <dt><code>String delimiters</code>
  5121. <span id="index-String-delimiters"></span>
  5122. </dt>
  5123. <dd><p>You can write strings delimited in these other ways besides
  5124. <code>&quot;<var>string</var>&quot;</code>:
  5125. </p>
  5126. <dl compact="compact">
  5127. <dt><code>'<var>string</var>'</code></dt>
  5128. <dd><p>You can delimit strings with single-quote characters.
  5129. </p>
  5130. </dd>
  5131. <dt><code>&lt;<var>string</var>&gt;</code></dt>
  5132. <dd><p>You can delimit strings with matching angle brackets.
  5133. </p></dd>
  5134. </dl>
  5135. </dd>
  5136. <dt><code>single-character string escape</code>
  5137. <span id="index-single_002dcharacter-string-escape"></span>
  5138. </dt>
  5139. <dd><p>To include any single character literally in a string (even if the
  5140. character would otherwise have some special meaning), you can prefix the
  5141. character with &lsquo;<samp>!</samp>&rsquo; (an exclamation mark). For example, you can
  5142. write &lsquo;<samp>&lt;4.3 !&gt; 5.4!!&gt;</samp>&rsquo; to get the literal text &lsquo;<samp>4.3 &gt; 5.4!</samp>&rsquo;.
  5143. </p>
  5144. </dd>
  5145. <dt><code>Expression results as strings</code>
  5146. <span id="index-Expression-results-as-strings"></span>
  5147. </dt>
  5148. <dd><p>You can write &lsquo;<samp>%<var>expr</var></samp>&rsquo; to evaluate the expression <var>expr</var>
  5149. and use the result as a string.
  5150. </p></dd>
  5151. </dl>
  5152. <hr>
  5153. <span id="Ascii"></span><div class="header">
  5154. <p>
  5155. Next: <a href="#Asciz" accesskey="n" rel="next">Asciz</a>, Previous: <a href="#Altmacro" accesskey="p" rel="prev">Altmacro</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5156. </div>
  5157. <span id="g_t_002eascii-_0022string_0022_2026"></span><h3 class="section">7.5 <code>.ascii &quot;<var>string</var>&quot;</code>&hellip;</h3>
  5158. <span id="index-ascii-directive"></span>
  5159. <span id="index-string-literals"></span>
  5160. <p><code>.ascii</code> expects zero or more string literals (see <a href="#Strings">Strings</a>)
  5161. separated by commas. It assembles each string (with no automatic
  5162. trailing zero byte) into consecutive addresses.
  5163. </p>
  5164. <hr>
  5165. <span id="Asciz"></span><div class="header">
  5166. <p>
  5167. Next: <a href="#Attach_005fto_005fgroup" accesskey="n" rel="next">Attach_to_group</a>, Previous: <a href="#Ascii" accesskey="p" rel="prev">Ascii</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5168. </div>
  5169. <span id="g_t_002easciz-_0022string_0022_2026"></span><h3 class="section">7.6 <code>.asciz &quot;<var>string</var>&quot;</code>&hellip;</h3>
  5170. <span id="index-asciz-directive"></span>
  5171. <span id="index-zero_002dterminated-strings"></span>
  5172. <span id="index-null_002dterminated-strings"></span>
  5173. <p><code>.asciz</code> is just like <code>.ascii</code>, but each string is followed by
  5174. a zero byte. The &ldquo;z&rdquo; in &lsquo;<samp>.asciz</samp>&rsquo; stands for &ldquo;zero&rdquo;. Note that
  5175. multiple string arguments not separated by commas will be concatenated
  5176. together and only one final zero byte will be stored.
  5177. </p>
  5178. <hr>
  5179. <span id="Attach_005fto_005fgroup"></span><div class="header">
  5180. <p>
  5181. Next: <a href="#Balign" accesskey="n" rel="next">Balign</a>, Previous: <a href="#Asciz" accesskey="p" rel="prev">Asciz</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5182. </div>
  5183. <span id="g_t_002eattach_005fto_005fgroup-name"></span><h3 class="section">7.7 <code>.attach_to_group <var>name</var></code></h3>
  5184. <p>Attaches the current section to the named group. This is like declaring
  5185. the section with the <code>G</code> attribute, but can be done after the section
  5186. has been created. Note if the group section does not exist at the point that
  5187. this directive is used then it will be created.
  5188. </p>
  5189. <hr>
  5190. <span id="Balign"></span><div class="header">
  5191. <p>
  5192. Next: <a href="#Bss" accesskey="n" rel="next">Bss</a>, Previous: <a href="#Attach_005fto_005fgroup" accesskey="p" rel="prev">Attach_to_group</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5193. </div>
  5194. <span id="g_t_002ebalign_005bwl_005d-_005babs_002dexpr_005b_002c-abs_002dexpr_005b_002c-abs_002dexpr_005d_005d_005d"></span><h3 class="section">7.8 <code>.balign[wl] [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code></h3>
  5195. <span id="index-padding-the-location-counter-given-number-of-bytes"></span>
  5196. <span id="index-balign-directive"></span>
  5197. <p>Pad the location counter (in the current subsection) to a particular
  5198. storage boundary. The first expression (which must be absolute) is the
  5199. alignment request in bytes. For example &lsquo;<samp>.balign 8</samp>&rsquo; advances
  5200. the location counter until it is a multiple of 8. If the location counter
  5201. is already a multiple of 8, no change is needed. If the expression is omitted
  5202. then a default value of 0 is used, effectively disabling alignment requirements.
  5203. </p>
  5204. <p>The second expression (also absolute) gives the fill value to be stored in the
  5205. padding bytes. It (and the comma) may be omitted. If it is omitted, the
  5206. padding bytes are normally zero. However, on most systems, if the section is
  5207. marked as containing code and the fill value is omitted, the space is filled
  5208. with no-op instructions.
  5209. </p>
  5210. <p>The third expression is also absolute, and is also optional. If it is present,
  5211. it is the maximum number of bytes that should be skipped by this alignment
  5212. directive. If doing the alignment would require skipping more bytes than the
  5213. specified maximum, then the alignment is not done at all. You can omit the
  5214. fill value (the second argument) entirely by simply using two commas after the
  5215. required alignment; this can be useful if you want the alignment to be filled
  5216. with no-op instructions when appropriate.
  5217. </p>
  5218. <span id="index-balignw-directive"></span>
  5219. <span id="index-balignl-directive"></span>
  5220. <p>The <code>.balignw</code> and <code>.balignl</code> directives are variants of the
  5221. <code>.balign</code> directive. The <code>.balignw</code> directive treats the fill
  5222. pattern as a two byte word value. The <code>.balignl</code> directives treats the
  5223. fill pattern as a four byte longword value. For example, <code>.balignw
  5224. 4,0x368d</code> will align to a multiple of 4. If it skips two bytes, they will be
  5225. filled in with the value 0x368d (the exact placement of the bytes depends upon
  5226. the endianness of the processor). If it skips 1 or 3 bytes, the fill value is
  5227. undefined.
  5228. </p>
  5229. <hr>
  5230. <span id="Bss"></span><div class="header">
  5231. <p>
  5232. Next: <a href="#Bundle-directives" accesskey="n" rel="next">Bundle directives</a>, Previous: <a href="#Balign" accesskey="p" rel="prev">Balign</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5233. </div>
  5234. <span id="g_t_002ebss-subsection"></span><h3 class="section">7.9 <code>.bss <var>subsection</var></code></h3>
  5235. <span id="index-bss-directive"></span>
  5236. <p><code>.bss</code> tells <code>as</code> to assemble the following statements
  5237. onto the end of the bss section.
  5238. For most ELF based targets an optional <var>subsection</var> expression (which must
  5239. evaluate to a positive integer) can be provided. In this case the statements
  5240. are appended to the end of the indicated bss subsection.
  5241. </p>
  5242. <hr>
  5243. <span id="Bundle-directives"></span><div class="header">
  5244. <p>
  5245. Next: <a href="#Byte" accesskey="n" rel="next">Byte</a>, Previous: <a href="#Bss" accesskey="p" rel="prev">Bss</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5246. </div>
  5247. <span id="Bundle-directives-1"></span><h3 class="section">7.10 Bundle directives</h3>
  5248. <span id="g_t_002ebundle_005falign_005fmode-abs_002dexpr"></span><h4 class="subsection">7.10.1 <code>.bundle_align_mode <var>abs-expr</var></code></h4>
  5249. <span id="index-bundle_005falign_005fmode-directive"></span>
  5250. <span id="index-bundle"></span>
  5251. <span id="index-instruction-bundle"></span>
  5252. <span id="index-aligned-instruction-bundle"></span>
  5253. <p><code>.bundle_align_mode</code> enables or disables <em>aligned instruction
  5254. bundle</em> mode. In this mode, sequences of adjacent instructions are grouped
  5255. into fixed-sized <em>bundles</em>. If the argument is zero, this mode is
  5256. disabled (which is the default state). If the argument it not zero, it
  5257. gives the size of an instruction bundle as a power of two (as for the
  5258. <code>.p2align</code> directive, see <a href="#P2align">P2align</a>).
  5259. </p>
  5260. <p>For some targets, it&rsquo;s an ABI requirement that no instruction may span a
  5261. certain aligned boundary. A <em>bundle</em> is simply a sequence of
  5262. instructions that starts on an aligned boundary. For example, if
  5263. <var>abs-expr</var> is <code>5</code> then the bundle size is 32, so each aligned
  5264. chunk of 32 bytes is a bundle. When aligned instruction bundle mode is in
  5265. effect, no single instruction may span a boundary between bundles. If an
  5266. instruction would start too close to the end of a bundle for the length of
  5267. that particular instruction to fit within the bundle, then the space at the
  5268. end of that bundle is filled with no-op instructions so the instruction
  5269. starts in the next bundle. As a corollary, it&rsquo;s an error if any single
  5270. instruction&rsquo;s encoding is longer than the bundle size.
  5271. </p>
  5272. <span id="g_t_002ebundle_005flock-and-_002ebundle_005funlock"></span><h4 class="subsection">7.10.2 <code>.bundle_lock</code> and <code>.bundle_unlock</code></h4>
  5273. <span id="index-bundle_005flock-directive"></span>
  5274. <span id="index-bundle_005funlock-directive"></span>
  5275. <p>The <code>.bundle_lock</code> and directive <code>.bundle_unlock</code> directives
  5276. allow explicit control over instruction bundle padding. These directives
  5277. are only valid when <code>.bundle_align_mode</code> has been used to enable
  5278. aligned instruction bundle mode. It&rsquo;s an error if they appear when
  5279. <code>.bundle_align_mode</code> has not been used at all, or when the last
  5280. directive was <code><span class="nolinebreak">.bundle_align_mode</span>&nbsp;0</code><!-- /@w -->.
  5281. </p>
  5282. <span id="index-bundle_002dlocked"></span>
  5283. <p>For some targets, it&rsquo;s an ABI requirement that certain instructions may
  5284. appear only as part of specified permissible sequences of multiple
  5285. instructions, all within the same bundle. A pair of <code>.bundle_lock</code>
  5286. and <code>.bundle_unlock</code> directives define a <em>bundle-locked</em>
  5287. instruction sequence. For purposes of aligned instruction bundle mode, a
  5288. sequence starting with <code>.bundle_lock</code> and ending with
  5289. <code>.bundle_unlock</code> is treated as a single instruction. That is, the
  5290. entire sequence must fit into a single bundle and may not span a bundle
  5291. boundary. If necessary, no-op instructions will be inserted before the
  5292. first instruction of the sequence so that the whole sequence starts on an
  5293. aligned bundle boundary. It&rsquo;s an error if the sequence is longer than the
  5294. bundle size.
  5295. </p>
  5296. <p>For convenience when using <code>.bundle_lock</code> and <code>.bundle_unlock</code>
  5297. inside assembler macros (see <a href="#Macro">Macro</a>), bundle-locked sequences may be
  5298. nested. That is, a second <code>.bundle_lock</code> directive before the next
  5299. <code>.bundle_unlock</code> directive has no effect except that it must be
  5300. matched by another closing <code>.bundle_unlock</code> so that there is the
  5301. same number of <code>.bundle_lock</code> and <code>.bundle_unlock</code> directives.
  5302. </p>
  5303. <hr>
  5304. <span id="Byte"></span><div class="header">
  5305. <p>
  5306. Next: <a href="#CFI-directives" accesskey="n" rel="next">CFI directives</a>, Previous: <a href="#Bundle-directives" accesskey="p" rel="prev">Bundle directives</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5307. </div>
  5308. <span id="g_t_002ebyte-expressions"></span><h3 class="section">7.11 <code>.byte <var>expressions</var></code></h3>
  5309. <span id="index-byte-directive"></span>
  5310. <span id="index-integers_002c-one-byte"></span>
  5311. <p><code>.byte</code> expects zero or more expressions, separated by commas.
  5312. Each expression is assembled into the next byte.
  5313. </p>
  5314. <p>Note - this directive is not intended for encoding instructions, and it will
  5315. not trigger effects like DWARF line number generation. Instead some targets
  5316. support special directives for encoding arbitrary binary sequences as
  5317. instructions such as <code>.insn</code> or <code>.inst</code>.
  5318. </p>
  5319. <hr>
  5320. <span id="CFI-directives"></span><div class="header">
  5321. <p>
  5322. Next: <a href="#Comm" accesskey="n" rel="next">Comm</a>, Previous: <a href="#Byte" accesskey="p" rel="prev">Byte</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5323. </div>
  5324. <span id="CFI-directives-1"></span><h3 class="section">7.12 CFI directives</h3>
  5325. <span id="g_t_002ecfi_005fsections-section_005flist"></span><h4 class="subsection">7.12.1 <code>.cfi_sections <var>section_list</var></code></h4>
  5326. <span id="index-cfi_005fsections-directive"></span>
  5327. <p><code>.cfi_sections</code> may be used to specify whether CFI directives
  5328. should emit <code>.eh_frame</code> section, <code>.debug_frame</code> section and/or
  5329. <code>.sframe</code> section. If <var>section_list</var> contains <code>.eh_frame</code>,
  5330. <code>.eh_frame</code> is emitted, if <var>section_list</var> contains
  5331. <code>.debug_frame</code>, <code>.debug_frame</code> is emitted, and finally, if
  5332. <var>section_list</var> contains <code>.sframe</code>, <code>.sframe</code> is emitted.
  5333. To emit multiple sections, specify them together in a list. For example, to
  5334. emit both <code>.eh_frame</code> and <code>.debug_frame</code>, use
  5335. <code>.eh_frame, .debug_frame</code>. The default if this directive is not used
  5336. is <code>.cfi_sections .eh_frame</code>.
  5337. </p>
  5338. <p>On targets that support compact unwinding tables these can be generated
  5339. by specifying <code>.eh_frame_entry</code> instead of <code>.eh_frame</code>.
  5340. </p>
  5341. <p>Some targets may support an additional name, such as <code>.c6xabi.exidx</code>
  5342. which is used by the target.
  5343. </p>
  5344. <p>The <code>.cfi_sections</code> directive can be repeated, with the same or different
  5345. arguments, provided that CFI generation has not yet started. Once CFI
  5346. generation has started however the section list is fixed and any attempts to
  5347. redefine it will result in an error.
  5348. </p>
  5349. <span id="g_t_002ecfi_005fstartproc-_005bsimple_005d"></span><h4 class="subsection">7.12.2 <code>.cfi_startproc [simple]</code></h4>
  5350. <span id="index-cfi_005fstartproc-directive"></span>
  5351. <p><code>.cfi_startproc</code> is used at the beginning of each function that
  5352. should have an entry in <code>.eh_frame</code>. It initializes some internal
  5353. data structures. Don&rsquo;t forget to close the function by
  5354. <code>.cfi_endproc</code>.
  5355. </p>
  5356. <p>Unless <code>.cfi_startproc</code> is used along with parameter <code>simple</code>
  5357. it also emits some architecture dependent initial CFI instructions.
  5358. </p>
  5359. <span id="g_t_002ecfi_005fendproc"></span><h4 class="subsection">7.12.3 <code>.cfi_endproc</code></h4>
  5360. <span id="index-cfi_005fendproc-directive"></span>
  5361. <p><code>.cfi_endproc</code> is used at the end of a function where it closes its
  5362. unwind entry previously opened by
  5363. <code>.cfi_startproc</code>, and emits it to <code>.eh_frame</code>.
  5364. </p>
  5365. <span id="g_t_002ecfi_005fpersonality-encoding-_005b_002c-exp_005d"></span><h4 class="subsection">7.12.4 <code>.cfi_personality <var>encoding</var> [, <var>exp</var>]</code></h4>
  5366. <span id="index-cfi_005fpersonality-directive"></span>
  5367. <p><code>.cfi_personality</code> defines personality routine and its encoding.
  5368. <var>encoding</var> must be a constant determining how the personality
  5369. should be encoded. If it is 255 (<code>DW_EH_PE_omit</code>), second
  5370. argument is not present, otherwise second argument should be
  5371. a constant or a symbol name. When using indirect encodings,
  5372. the symbol provided should be the location where personality
  5373. can be loaded from, not the personality routine itself.
  5374. The default after <code>.cfi_startproc</code> is <code>.cfi_personality 0xff</code>,
  5375. no personality routine.
  5376. </p>
  5377. <span id="g_t_002ecfi_005fpersonality_005fid-id"></span><h4 class="subsection">7.12.5 <code>.cfi_personality_id <var>id</var></code></h4>
  5378. <span id="index-cfi_005fpersonality_005fid-directive"></span>
  5379. <p><code>cfi_personality_id</code> defines a personality routine by its index as
  5380. defined in a compact unwinding format.
  5381. Only valid when generating compact EH frames (i.e.
  5382. with <code>.cfi_sections eh_frame_entry</code>.
  5383. </p>
  5384. <span id="g_t_002ecfi_005ffde_005fdata-_005bopcode1-_005b_002c-_2026_005d_005d"></span><h4 class="subsection">7.12.6 <code>.cfi_fde_data [<var>opcode1</var> [, &hellip;]]</code></h4>
  5385. <span id="index-cfi_005ffde_005fdata-directive"></span>
  5386. <p><code>cfi_fde_data</code> is used to describe the compact unwind opcodes to be
  5387. used for the current function. These are emitted inline in the
  5388. <code>.eh_frame_entry</code> section if small enough and there is no LSDA, or
  5389. in the <code>.gnu.extab</code> section otherwise.
  5390. Only valid when generating compact EH frames (i.e.
  5391. with <code>.cfi_sections eh_frame_entry</code>.
  5392. </p>
  5393. <span id="g_t_002ecfi_005flsda-encoding-_005b_002c-exp_005d"></span><h4 class="subsection">7.12.7 <code>.cfi_lsda <var>encoding</var> [, <var>exp</var>]</code></h4>
  5394. <p><code>.cfi_lsda</code> defines LSDA and its encoding.
  5395. <var>encoding</var> must be a constant determining how the LSDA
  5396. should be encoded. If it is 255 (<code>DW_EH_PE_omit</code>), the second
  5397. argument is not present, otherwise the second argument should be a constant
  5398. or a symbol name. The default after <code>.cfi_startproc</code> is <code>.cfi_lsda 0xff</code>,
  5399. meaning that no LSDA is present.
  5400. </p>
  5401. <span id="g_t_002ecfi_005finline_005flsda-_005balign_005d"></span><h4 class="subsection">7.12.8 <code>.cfi_inline_lsda</code> [<var>align</var>]</h4>
  5402. <p><code>.cfi_inline_lsda</code> marks the start of a LSDA data section and
  5403. switches to the corresponding <code>.gnu.extab</code> section.
  5404. Must be preceded by a CFI block containing a <code>.cfi_lsda</code> directive.
  5405. Only valid when generating compact EH frames (i.e.
  5406. with <code>.cfi_sections eh_frame_entry</code>.
  5407. </p>
  5408. <p>The table header and unwinding opcodes will be generated at this point,
  5409. so that they are immediately followed by the LSDA data. The symbol
  5410. referenced by the <code>.cfi_lsda</code> directive should still be defined
  5411. in case a fallback FDE based encoding is used. The LSDA data is terminated
  5412. by a section directive.
  5413. </p>
  5414. <p>The optional <var>align</var> argument specifies the alignment required.
  5415. The alignment is specified as a power of two, as with the
  5416. <code>.p2align</code> directive.
  5417. </p>
  5418. <span id="g_t_002ecfi_005fdef_005fcfa-register_002c-offset"></span><h4 class="subsection">7.12.9 <code>.cfi_def_cfa <var>register</var>, <var>offset</var></code></h4>
  5419. <p><code>.cfi_def_cfa</code> defines a rule for computing CFA as: <i>take
  5420. address from <var>register</var> and add <var>offset</var> to it</i>.
  5421. </p>
  5422. <span id="g_t_002ecfi_005fdef_005fcfa_005fregister-register"></span><h4 class="subsection">7.12.10 <code>.cfi_def_cfa_register <var>register</var></code></h4>
  5423. <p><code>.cfi_def_cfa_register</code> modifies a rule for computing CFA. From
  5424. now on <var>register</var> will be used instead of the old one. Offset
  5425. remains the same.
  5426. </p>
  5427. <span id="g_t_002ecfi_005fdef_005fcfa_005foffset-offset"></span><h4 class="subsection">7.12.11 <code>.cfi_def_cfa_offset <var>offset</var></code></h4>
  5428. <p><code>.cfi_def_cfa_offset</code> modifies a rule for computing CFA. Register
  5429. remains the same, but <var>offset</var> is new. Note that it is the
  5430. absolute offset that will be added to a defined register to compute
  5431. CFA address.
  5432. </p>
  5433. <span id="g_t_002ecfi_005fadjust_005fcfa_005foffset-offset"></span><h4 class="subsection">7.12.12 <code>.cfi_adjust_cfa_offset <var>offset</var></code></h4>
  5434. <p>Same as <code>.cfi_def_cfa_offset</code> but <var>offset</var> is a relative
  5435. value that is added/subtracted from the previous offset.
  5436. </p>
  5437. <span id="g_t_002ecfi_005foffset-register_002c-offset"></span><h4 class="subsection">7.12.13 <code>.cfi_offset <var>register</var>, <var>offset</var></code></h4>
  5438. <p>Previous value of <var>register</var> is saved at offset <var>offset</var> from
  5439. CFA.
  5440. </p>
  5441. <span id="g_t_002ecfi_005fval_005foffset-register_002c-offset"></span><h4 class="subsection">7.12.14 <code>.cfi_val_offset <var>register</var>, <var>offset</var></code></h4>
  5442. <p>Previous value of <var>register</var> is CFA + <var>offset</var>.
  5443. </p>
  5444. <span id="g_t_002ecfi_005frel_005foffset-register_002c-offset"></span><h4 class="subsection">7.12.15 <code>.cfi_rel_offset <var>register</var>, <var>offset</var></code></h4>
  5445. <p>Previous value of <var>register</var> is saved at offset <var>offset</var> from
  5446. the current CFA register. This is transformed to <code>.cfi_offset</code>
  5447. using the known displacement of the CFA register from the CFA.
  5448. This is often easier to use, because the number will match the
  5449. code it&rsquo;s annotating.
  5450. </p>
  5451. <span id="g_t_002ecfi_005fregister-register1_002c-register2"></span><h4 class="subsection">7.12.16 <code>.cfi_register <var>register1</var>, <var>register2</var></code></h4>
  5452. <p>Previous value of <var>register1</var> is saved in register <var>register2</var>.
  5453. </p>
  5454. <span id="g_t_002ecfi_005frestore-register"></span><h4 class="subsection">7.12.17 <code>.cfi_restore <var>register</var></code></h4>
  5455. <p><code>.cfi_restore</code> says that the rule for <var>register</var> is now the
  5456. same as it was at the beginning of the function, after all initial
  5457. instruction added by <code>.cfi_startproc</code> were executed.
  5458. </p>
  5459. <span id="g_t_002ecfi_005fundefined-register"></span><h4 class="subsection">7.12.18 <code>.cfi_undefined <var>register</var></code></h4>
  5460. <p>From now on the previous value of <var>register</var> can&rsquo;t be restored anymore.
  5461. </p>
  5462. <span id="g_t_002ecfi_005fsame_005fvalue-register"></span><h4 class="subsection">7.12.19 <code>.cfi_same_value <var>register</var></code></h4>
  5463. <p>Current value of <var>register</var> is the same like in the previous frame,
  5464. i.e. no restoration needed.
  5465. </p>
  5466. <span id="g_t_002ecfi_005fremember_005fstate-and-_002ecfi_005frestore_005fstate"></span><h4 class="subsection">7.12.20 <code>.cfi_remember_state</code> and <code>.cfi_restore_state</code></h4>
  5467. <p><code>.cfi_remember_state</code> pushes the set of rules for every register onto an
  5468. implicit stack, while <code>.cfi_restore_state</code> pops them off the stack and
  5469. places them in the current row. This is useful for situations where you have
  5470. multiple <code>.cfi_*</code> directives that need to be undone due to the control
  5471. flow of the program. For example, we could have something like this (assuming
  5472. the CFA is the value of <code>rbp</code>):
  5473. </p>
  5474. <div class="example">
  5475. <pre class="example"> je label
  5476. popq %rbx
  5477. .cfi_restore %rbx
  5478. popq %r12
  5479. .cfi_restore %r12
  5480. popq %rbp
  5481. .cfi_restore %rbp
  5482. .cfi_def_cfa %rsp, 8
  5483. ret
  5484. label:
  5485. /* Do something else */
  5486. </pre></div>
  5487. <p>Here, we want the <code>.cfi</code> directives to affect only the rows corresponding
  5488. to the instructions before <code>label</code>. This means we&rsquo;d have to add multiple
  5489. <code>.cfi</code> directives after <code>label</code> to recreate the original save
  5490. locations of the registers, as well as setting the CFA back to the value of
  5491. <code>rbp</code>. This would be clumsy, and result in a larger binary size. Instead,
  5492. we can write:
  5493. </p>
  5494. <div class="example">
  5495. <pre class="example"> je label
  5496. popq %rbx
  5497. .cfi_remember_state
  5498. .cfi_restore %rbx
  5499. popq %r12
  5500. .cfi_restore %r12
  5501. popq %rbp
  5502. .cfi_restore %rbp
  5503. .cfi_def_cfa %rsp, 8
  5504. ret
  5505. label:
  5506. .cfi_restore_state
  5507. /* Do something else */
  5508. </pre></div>
  5509. <p>That way, the rules for the instructions after <code>label</code> will be the same
  5510. as before the first <code>.cfi_restore</code> without having to use multiple
  5511. <code>.cfi</code> directives.
  5512. </p>
  5513. <span id="g_t_002ecfi_005freturn_005fcolumn-register"></span><h4 class="subsection">7.12.21 <code>.cfi_return_column <var>register</var></code></h4>
  5514. <p>Change return column <var>register</var>, i.e. the return address is either
  5515. directly in <var>register</var> or can be accessed by rules for <var>register</var>.
  5516. </p>
  5517. <span id="g_t_002ecfi_005fsignal_005fframe"></span><h4 class="subsection">7.12.22 <code>.cfi_signal_frame</code></h4>
  5518. <p>Mark current function as signal trampoline.
  5519. </p>
  5520. <span id="g_t_002ecfi_005fwindow_005fsave"></span><h4 class="subsection">7.12.23 <code>.cfi_window_save</code></h4>
  5521. <p>SPARC register window has been saved.
  5522. </p>
  5523. <span id="g_t_002ecfi_005fescape-expression_005b_002c-_2026_005d"></span><h4 class="subsection">7.12.24 <code>.cfi_escape</code> <var>expression</var>[, &hellip;]</h4>
  5524. <p>Allows the user to add arbitrary bytes to the unwind info. One
  5525. might use this to add OS-specific CFI opcodes, or generic CFI
  5526. opcodes that GAS does not yet support.
  5527. </p>
  5528. <span id="g_t_002ecfi_005fval_005fencoded_005faddr-register_002c-encoding_002c-label"></span><h4 class="subsection">7.12.25 <code>.cfi_val_encoded_addr <var>register</var>, <var>encoding</var>, <var>label</var></code></h4>
  5529. <p>The current value of <var>register</var> is <var>label</var>. The value of <var>label</var>
  5530. will be encoded in the output file according to <var>encoding</var>; see the
  5531. description of <code>.cfi_personality</code> for details on this encoding.
  5532. </p>
  5533. <p>The usefulness of equating a register to a fixed label is probably
  5534. limited to the return address register. Here, it can be useful to
  5535. mark a code segment that has only one return address which is reached
  5536. by a direct branch and no copy of the return address exists in memory
  5537. or another register.
  5538. </p>
  5539. <hr>
  5540. <span id="Comm"></span><div class="header">
  5541. <p>
  5542. Next: <a href="#Data" accesskey="n" rel="next">Data</a>, Previous: <a href="#CFI-directives" accesskey="p" rel="prev">CFI directives</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5543. </div>
  5544. <span id="g_t_002ecomm-symbol-_002c-length-"></span><h3 class="section">7.13 <code>.comm <var>symbol</var> , <var>length</var> </code></h3>
  5545. <span id="index-comm-directive"></span>
  5546. <span id="index-symbol_002c-common"></span>
  5547. <p><code>.comm</code> declares a common symbol named <var>symbol</var>. When linking, a
  5548. common symbol in one object file may be merged with a defined or common symbol
  5549. of the same name in another object file. If <code>ld</code> does not see a
  5550. definition for the symbol&ndash;just one or more common symbols&ndash;then it will
  5551. allocate <var>length</var> bytes of uninitialized memory. <var>length</var> must be an
  5552. absolute expression. If <code>ld</code> sees multiple common symbols with
  5553. the same name, and they do not all have the same size, it will allocate space
  5554. using the largest size.
  5555. </p>
  5556. <p>When using ELF or (as a GNU extension) PE, the <code>.comm</code> directive takes
  5557. an optional third argument. This is the desired alignment of the symbol,
  5558. specified for ELF as a byte boundary (for example, an alignment of 16 means
  5559. that the least significant 4 bits of the address should be zero), and for PE
  5560. as a power of two (for example, an alignment of 5 means aligned to a 32-byte
  5561. boundary). The alignment must be an absolute expression, and it must be a
  5562. power of two. If <code>ld</code> allocates uninitialized memory for the
  5563. common symbol, it will use the alignment when placing the symbol. If no
  5564. alignment is specified, <code>as</code> will set the alignment to the
  5565. largest power of two less than or equal to the size of the symbol, up to a
  5566. maximum of 16 on ELF, or the default section alignment of 4 on PE<a id="DOCF1" href="#FOOT1"><sup>1</sup></a>.
  5567. </p>
  5568. <p>The syntax for <code>.comm</code> differs slightly on the HPPA. The syntax is
  5569. &lsquo;<samp><var>symbol</var> .comm, <var>length</var></samp>&rsquo;; <var>symbol</var> is optional.
  5570. </p>
  5571. <hr>
  5572. <span id="Data"></span><div class="header">
  5573. <p>
  5574. Next: <a href="#Dc" accesskey="n" rel="next">Dc</a>, Previous: <a href="#Comm" accesskey="p" rel="prev">Comm</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5575. </div>
  5576. <span id="g_t_002edata-subsection"></span><h3 class="section">7.14 <code>.data <var>subsection</var></code></h3>
  5577. <span id="index-data-directive"></span>
  5578. <p><code>.data</code> tells <code>as</code> to assemble the following statements onto the
  5579. end of the data subsection numbered <var>subsection</var> (which is an
  5580. absolute expression). If <var>subsection</var> is omitted, it defaults
  5581. to zero.
  5582. </p>
  5583. <hr>
  5584. <span id="Dc"></span><div class="header">
  5585. <p>
  5586. Next: <a href="#Dcb" accesskey="n" rel="next">Dcb</a>, Previous: <a href="#Data" accesskey="p" rel="prev">Data</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5587. </div>
  5588. <span id="g_t_002edc_005bsize_005d-expressions"></span><h3 class="section">7.15 <code>.dc[<var>size</var>] <var>expressions</var></code></h3>
  5589. <span id="index-dc-directive"></span>
  5590. <p>The <code>.dc</code> directive expects zero or more <var>expressions</var> separated by
  5591. commas. These expressions are evaluated and their values inserted into the
  5592. current section. The size of the emitted value depends upon the suffix to the
  5593. <code>.dc</code> directive:
  5594. </p>
  5595. <dl compact="compact">
  5596. <dt><code>&lsquo;<samp>.a</samp>&rsquo;</code></dt>
  5597. <dd><p>Emits N-bit values, where N is the size of an address on the target system.
  5598. </p></dd>
  5599. <dt><code>&lsquo;<samp>.b</samp>&rsquo;</code></dt>
  5600. <dd><p>Emits 8-bit values.
  5601. </p></dd>
  5602. <dt><code>&lsquo;<samp>.d</samp>&rsquo;</code></dt>
  5603. <dd><p>Emits double precision floating-point values.
  5604. </p></dd>
  5605. <dt><code>&lsquo;<samp>.l</samp>&rsquo;</code></dt>
  5606. <dd><p>Emits 32-bit values.
  5607. </p></dd>
  5608. <dt><code>&lsquo;<samp>.s</samp>&rsquo;</code></dt>
  5609. <dd><p>Emits single precision floating-point values.
  5610. </p></dd>
  5611. <dt><code>&lsquo;<samp>.w</samp>&rsquo;</code></dt>
  5612. <dd><p>Emits 16-bit values.
  5613. Note - this is true even on targets where the <code>.word</code> directive would emit
  5614. 32-bit values.
  5615. </p></dd>
  5616. <dt><code>&lsquo;<samp>.x</samp>&rsquo;</code></dt>
  5617. <dd><p>Emits long double precision floating-point values.
  5618. </p></dd>
  5619. </dl>
  5620. <p>If no suffix is used then &lsquo;<samp>.w</samp>&rsquo; is assumed.
  5621. </p>
  5622. <p>The byte ordering is target dependent, as is the size and format of floating
  5623. point values.
  5624. </p>
  5625. <p>Note - these directives are not intended for encoding instructions, and they
  5626. will not trigger effects like DWARF line number generation. Instead some
  5627. targets support special directives for encoding arbitrary binary sequences as
  5628. instructions such as <code>.insn</code> or <code>.inst</code>.
  5629. </p>
  5630. <hr>
  5631. <span id="Dcb"></span><div class="header">
  5632. <p>
  5633. Next: <a href="#Ds" accesskey="n" rel="next">Ds</a>, Previous: <a href="#Dc" accesskey="p" rel="prev">Dc</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5634. </div>
  5635. <span id="g_t_002edcb_005bsize_005d-number-_005b_002cfill_005d"></span><h3 class="section">7.16 <code>.dcb[<var>size</var>] <var>number</var> [,<var>fill</var>]</code></h3>
  5636. <span id="index-dcb-directive"></span>
  5637. <p>This directive emits <var>number</var> copies of <var>fill</var>, each of <var>size</var>
  5638. bytes. Both <var>number</var> and <var>fill</var> are absolute expressions. If the
  5639. comma and <var>fill</var> are omitted, <var>fill</var> is assumed to be zero. The
  5640. <var>size</var> suffix, if present, must be one of:
  5641. </p>
  5642. <dl compact="compact">
  5643. <dt><code>&lsquo;<samp>.b</samp>&rsquo;</code></dt>
  5644. <dd><p>Emits single byte values.
  5645. </p></dd>
  5646. <dt><code>&lsquo;<samp>.d</samp>&rsquo;</code></dt>
  5647. <dd><p>Emits double-precision floating point values.
  5648. </p></dd>
  5649. <dt><code>&lsquo;<samp>.l</samp>&rsquo;</code></dt>
  5650. <dd><p>Emits 4-byte values.
  5651. </p></dd>
  5652. <dt><code>&lsquo;<samp>.s</samp>&rsquo;</code></dt>
  5653. <dd><p>Emits single-precision floating point values.
  5654. </p></dd>
  5655. <dt><code>&lsquo;<samp>.w</samp>&rsquo;</code></dt>
  5656. <dd><p>Emits 2-byte values.
  5657. </p></dd>
  5658. <dt><code>&lsquo;<samp>.x</samp>&rsquo;</code></dt>
  5659. <dd><p>Emits long double-precision floating point values.
  5660. </p></dd>
  5661. </dl>
  5662. <p>If the <var>size</var> suffix is omitted then &lsquo;<samp>.w</samp>&rsquo; is assumed.
  5663. </p>
  5664. <p>The byte ordering is target dependent, as is the size and format of floating
  5665. point values.
  5666. </p>
  5667. <hr>
  5668. <span id="Ds"></span><div class="header">
  5669. <p>
  5670. Next: <a href="#Def" accesskey="n" rel="next">Def</a>, Previous: <a href="#Dcb" accesskey="p" rel="prev">Dcb</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5671. </div>
  5672. <span id="g_t_002eds_005bsize_005d-number-_005b_002cfill_005d"></span><h3 class="section">7.17 <code>.ds[<var>size</var>] <var>number</var> [,<var>fill</var>]</code></h3>
  5673. <span id="index-ds-directive"></span>
  5674. <p>This directive emits <var>number</var> copies of <var>fill</var>, each of <var>size</var>
  5675. bytes. Both <var>number</var> and <var>fill</var> are absolute expressions. If the
  5676. comma and <var>fill</var> are omitted, <var>fill</var> is assumed to be zero. The
  5677. <var>size</var> suffix, if present, must be one of:
  5678. </p>
  5679. <dl compact="compact">
  5680. <dt><code>&lsquo;<samp>.b</samp>&rsquo;</code></dt>
  5681. <dd><p>Emits single byte values.
  5682. </p></dd>
  5683. <dt><code>&lsquo;<samp>.d</samp>&rsquo;</code></dt>
  5684. <dd><p>Emits 8-byte values.
  5685. </p></dd>
  5686. <dt><code>&lsquo;<samp>.l</samp>&rsquo;</code></dt>
  5687. <dd><p>Emits 4-byte values.
  5688. </p></dd>
  5689. <dt><code>&lsquo;<samp>.p</samp>&rsquo;</code></dt>
  5690. <dd><p>Emits values with size matching packed-decimal floating-point ones.
  5691. </p></dd>
  5692. <dt><code>&lsquo;<samp>.s</samp>&rsquo;</code></dt>
  5693. <dd><p>Emits 4-byte values.
  5694. </p></dd>
  5695. <dt><code>&lsquo;<samp>.w</samp>&rsquo;</code></dt>
  5696. <dd><p>Emits 2-byte values.
  5697. </p></dd>
  5698. <dt><code>&lsquo;<samp>.x</samp>&rsquo;</code></dt>
  5699. <dd><p>Emits values with size matching long double precision floating-point ones.
  5700. </p></dd>
  5701. </dl>
  5702. <p>Note - unlike the <code>.dcb</code> directive the &lsquo;<samp>.d</samp>&rsquo;, &lsquo;<samp>.s</samp>&rsquo; and &lsquo;<samp>.x</samp>&rsquo;
  5703. suffixes do not indicate that floating-point values are to be inserted.
  5704. </p>
  5705. <p>If the <var>size</var> suffix is omitted then &lsquo;<samp>.w</samp>&rsquo; is assumed.
  5706. </p>
  5707. <p>The byte ordering is target dependent.
  5708. </p>
  5709. <hr>
  5710. <span id="Def"></span><div class="header">
  5711. <p>
  5712. Next: <a href="#Desc" accesskey="n" rel="next">Desc</a>, Previous: <a href="#Ds" accesskey="p" rel="prev">Ds</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5713. </div>
  5714. <span id="g_t_002edef-name"></span><h3 class="section">7.18 <code>.def <var>name</var></code></h3>
  5715. <span id="index-def-directive"></span>
  5716. <span id="index-COFF-symbols_002c-debugging"></span>
  5717. <span id="index-debugging-COFF-symbols"></span>
  5718. <p>Begin defining debugging information for a symbol <var>name</var>; the
  5719. definition extends until the <code>.endef</code> directive is encountered.
  5720. </p>
  5721. <hr>
  5722. <span id="Desc"></span><div class="header">
  5723. <p>
  5724. Next: <a href="#Dim" accesskey="n" rel="next">Dim</a>, Previous: <a href="#Def" accesskey="p" rel="prev">Def</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5725. </div>
  5726. <span id="g_t_002edesc-symbol_002c-abs_002dexpression"></span><h3 class="section">7.19 <code>.desc <var>symbol</var>, <var>abs-expression</var></code></h3>
  5727. <span id="index-desc-directive"></span>
  5728. <span id="index-COFF-symbol-descriptor"></span>
  5729. <span id="index-symbol-descriptor_002c-COFF"></span>
  5730. <p>This directive sets the descriptor of the symbol (see <a href="#Symbol-Attributes">Symbol Attributes</a>)
  5731. to the low 16 bits of an absolute expression.
  5732. </p>
  5733. <p>The &lsquo;<samp>.desc</samp>&rsquo; directive is not available when <code>as</code> is
  5734. configured for COFF output; it is only for <code>a.out</code> or <code>b.out</code>
  5735. object format. For the sake of compatibility, <code>as</code> accepts
  5736. it, but produces no output, when configured for COFF.
  5737. </p>
  5738. <hr>
  5739. <span id="Dim"></span><div class="header">
  5740. <p>
  5741. Next: <a href="#Double" accesskey="n" rel="next">Double</a>, Previous: <a href="#Desc" accesskey="p" rel="prev">Desc</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5742. </div>
  5743. <span id="g_t_002edim"></span><h3 class="section">7.20 <code>.dim</code></h3>
  5744. <span id="index-dim-directive"></span>
  5745. <span id="index-COFF-auxiliary-symbol-information"></span>
  5746. <span id="index-auxiliary-symbol-information_002c-COFF"></span>
  5747. <p>This directive is generated by compilers to include auxiliary debugging
  5748. information in the symbol table. It is only permitted inside
  5749. <code>.def</code>/<code>.endef</code> pairs.
  5750. </p>
  5751. <hr>
  5752. <span id="Double"></span><div class="header">
  5753. <p>
  5754. Next: <a href="#Eject" accesskey="n" rel="next">Eject</a>, Previous: <a href="#Dim" accesskey="p" rel="prev">Dim</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5755. </div>
  5756. <span id="g_t_002edouble-flonums"></span><h3 class="section">7.21 <code>.double <var>flonums</var></code></h3>
  5757. <span id="index-double-directive"></span>
  5758. <span id="index-floating-point-numbers-_0028double_0029"></span>
  5759. <p><code>.double</code> expects zero or more flonums, separated by commas. It
  5760. assembles floating point numbers.
  5761. The exact kind of floating point numbers emitted depends on how
  5762. <code>as</code> is configured. See <a href="#Machine-Dependencies">Machine Dependencies</a>.
  5763. </p>
  5764. <hr>
  5765. <span id="Eject"></span><div class="header">
  5766. <p>
  5767. Next: <a href="#Else" accesskey="n" rel="next">Else</a>, Previous: <a href="#Double" accesskey="p" rel="prev">Double</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5768. </div>
  5769. <span id="g_t_002eeject"></span><h3 class="section">7.22 <code>.eject</code></h3>
  5770. <span id="index-eject-directive"></span>
  5771. <span id="index-new-page_002c-in-listings"></span>
  5772. <span id="index-page_002c-in-listings"></span>
  5773. <span id="index-listing-control_003a-new-page"></span>
  5774. <p>Force a page break at this point, when generating assembly listings.
  5775. </p>
  5776. <hr>
  5777. <span id="Else"></span><div class="header">
  5778. <p>
  5779. Next: <a href="#Elseif" accesskey="n" rel="next">Elseif</a>, Previous: <a href="#Eject" accesskey="p" rel="prev">Eject</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5780. </div>
  5781. <span id="g_t_002eelse"></span><h3 class="section">7.23 <code>.else</code></h3>
  5782. <span id="index-else-directive"></span>
  5783. <p><code>.else</code> is part of the <code>as</code> support for conditional
  5784. assembly; see <a href="#If"><code>.if</code></a>. It marks the beginning of a section
  5785. of code to be assembled if the condition for the preceding <code>.if</code>
  5786. was false.
  5787. </p>
  5788. <hr>
  5789. <span id="Elseif"></span><div class="header">
  5790. <p>
  5791. Next: <a href="#End" accesskey="n" rel="next">End</a>, Previous: <a href="#Else" accesskey="p" rel="prev">Else</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5792. </div>
  5793. <span id="g_t_002eelseif"></span><h3 class="section">7.24 <code>.elseif</code></h3>
  5794. <span id="index-elseif-directive"></span>
  5795. <p><code>.elseif</code> is part of the <code>as</code> support for conditional
  5796. assembly; see <a href="#If"><code>.if</code></a>. It is shorthand for beginning a new
  5797. <code>.if</code> block that would otherwise fill the entire <code>.else</code> section.
  5798. </p>
  5799. <hr>
  5800. <span id="End"></span><div class="header">
  5801. <p>
  5802. Next: <a href="#Endef" accesskey="n" rel="next">Endef</a>, Previous: <a href="#Elseif" accesskey="p" rel="prev">Elseif</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5803. </div>
  5804. <span id="g_t_002eend"></span><h3 class="section">7.25 <code>.end</code></h3>
  5805. <span id="index-end-directive"></span>
  5806. <p><code>.end</code> marks the end of the assembly file. <code>as</code> does not
  5807. process anything in the file past the <code>.end</code> directive.
  5808. </p>
  5809. <hr>
  5810. <span id="Endef"></span><div class="header">
  5811. <p>
  5812. Next: <a href="#Endfunc" accesskey="n" rel="next">Endfunc</a>, Previous: <a href="#End" accesskey="p" rel="prev">End</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5813. </div>
  5814. <span id="g_t_002eendef"></span><h3 class="section">7.26 <code>.endef</code></h3>
  5815. <span id="index-endef-directive"></span>
  5816. <p>This directive flags the end of a symbol definition begun with
  5817. <code>.def</code>.
  5818. </p>
  5819. <hr>
  5820. <span id="Endfunc"></span><div class="header">
  5821. <p>
  5822. Next: <a href="#Endif" accesskey="n" rel="next">Endif</a>, Previous: <a href="#Endef" accesskey="p" rel="prev">Endef</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5823. </div>
  5824. <span id="g_t_002eendfunc"></span><h3 class="section">7.27 <code>.endfunc</code></h3>
  5825. <span id="index-endfunc-directive"></span>
  5826. <p><code>.endfunc</code> marks the end of a function specified with <code>.func</code>.
  5827. </p>
  5828. <hr>
  5829. <span id="Endif"></span><div class="header">
  5830. <p>
  5831. Next: <a href="#Equ" accesskey="n" rel="next">Equ</a>, Previous: <a href="#Endfunc" accesskey="p" rel="prev">Endfunc</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5832. </div>
  5833. <span id="g_t_002eendif"></span><h3 class="section">7.28 <code>.endif</code></h3>
  5834. <span id="index-endif-directive"></span>
  5835. <p><code>.endif</code> is part of the <code>as</code> support for conditional assembly;
  5836. it marks the end of a block of code that is only assembled
  5837. conditionally. See <a href="#If"><code>.if</code></a>.
  5838. </p>
  5839. <hr>
  5840. <span id="Equ"></span><div class="header">
  5841. <p>
  5842. Next: <a href="#Equiv" accesskey="n" rel="next">Equiv</a>, Previous: <a href="#Endif" accesskey="p" rel="prev">Endif</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5843. </div>
  5844. <span id="g_t_002eequ-symbol_002c-expression"></span><h3 class="section">7.29 <code>.equ <var>symbol</var>, <var>expression</var></code></h3>
  5845. <span id="index-equ-directive"></span>
  5846. <span id="index-assigning-values-to-symbols-1"></span>
  5847. <span id="index-symbols_002c-assigning-values-to"></span>
  5848. <p>This directive sets the value of <var>symbol</var> to <var>expression</var>.
  5849. It is synonymous with &lsquo;<samp>.set</samp>&rsquo;; see <a href="#Set"><code>.set</code></a>.
  5850. </p>
  5851. <p>The syntax for <code>equ</code> on the HPPA is
  5852. &lsquo;<samp><var>symbol</var> .equ <var>expression</var></samp>&rsquo;.
  5853. </p>
  5854. <p>The syntax for <code>equ</code> on the Z80 is
  5855. &lsquo;<samp><var>symbol</var> equ <var>expression</var></samp>&rsquo;.
  5856. On the Z80 it is an error if <var>symbol</var> is already defined,
  5857. but the symbol is not protected from later redefinition.
  5858. Compare <a href="#Equiv">Equiv</a>.
  5859. </p>
  5860. <hr>
  5861. <span id="Equiv"></span><div class="header">
  5862. <p>
  5863. Next: <a href="#Eqv" accesskey="n" rel="next">Eqv</a>, Previous: <a href="#Equ" accesskey="p" rel="prev">Equ</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5864. </div>
  5865. <span id="g_t_002eequiv-symbol_002c-expression"></span><h3 class="section">7.30 <code>.equiv <var>symbol</var>, <var>expression</var></code></h3>
  5866. <span id="index-equiv-directive"></span>
  5867. <p>The <code>.equiv</code> directive is like <code>.equ</code> and <code>.set</code>, except that
  5868. the assembler will signal an error if <var>symbol</var> is already defined. Note a
  5869. symbol which has been referenced but not actually defined is considered to be
  5870. undefined.
  5871. </p>
  5872. <p>Except for the contents of the error message, this is roughly equivalent to
  5873. </p><div class="example">
  5874. <pre class="example">.ifdef SYM
  5875. .err
  5876. .endif
  5877. .equ SYM,VAL
  5878. </pre></div>
  5879. <p>plus it protects the symbol from later redefinition.
  5880. </p>
  5881. <hr>
  5882. <span id="Eqv"></span><div class="header">
  5883. <p>
  5884. Next: <a href="#Err" accesskey="n" rel="next">Err</a>, Previous: <a href="#Equiv" accesskey="p" rel="prev">Equiv</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5885. </div>
  5886. <span id="g_t_002eeqv-symbol_002c-expression"></span><h3 class="section">7.31 <code>.eqv <var>symbol</var>, <var>expression</var></code></h3>
  5887. <span id="index-eqv-directive"></span>
  5888. <p>The <code>.eqv</code> directive is like <code>.equiv</code>, but no attempt is made to
  5889. evaluate the expression or any part of it immediately. Instead each time
  5890. the resulting symbol is used in an expression, a snapshot of its current
  5891. value is taken.
  5892. </p>
  5893. <hr>
  5894. <span id="Err"></span><div class="header">
  5895. <p>
  5896. Next: <a href="#Error" accesskey="n" rel="next">Error</a>, Previous: <a href="#Eqv" accesskey="p" rel="prev">Eqv</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5897. </div>
  5898. <span id="g_t_002eerr"></span><h3 class="section">7.32 <code>.err</code></h3>
  5899. <span id="index-err-directive"></span>
  5900. <p>If <code>as</code> assembles a <code>.err</code> directive, it will print an error
  5901. message and, unless the <samp>-Z</samp> option was used, it will not generate an
  5902. object file. This can be used to signal an error in conditionally compiled code.
  5903. </p>
  5904. <hr>
  5905. <span id="Error"></span><div class="header">
  5906. <p>
  5907. Next: <a href="#Exitm" accesskey="n" rel="next">Exitm</a>, Previous: <a href="#Err" accesskey="p" rel="prev">Err</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5908. </div>
  5909. <span id="g_t_002eerror-_0022string_0022"></span><h3 class="section">7.33 <code>.error &quot;<var>string</var>&quot;</code></h3>
  5910. <span id="index-error-directive"></span>
  5911. <p>Similarly to <code>.err</code>, this directive emits an error, but you can specify a
  5912. string that will be emitted as the error message. If you don&rsquo;t specify the
  5913. message, it defaults to <code>&quot;.error directive invoked in source file&quot;</code>.
  5914. See <a href="#Errors">Error and Warning Messages</a>.
  5915. </p>
  5916. <div class="example">
  5917. <pre class="example"> .error &quot;This code has not been assembled and tested.&quot;
  5918. </pre></div>
  5919. <hr>
  5920. <span id="Exitm"></span><div class="header">
  5921. <p>
  5922. Next: <a href="#Extern" accesskey="n" rel="next">Extern</a>, Previous: <a href="#Error" accesskey="p" rel="prev">Error</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5923. </div>
  5924. <span id="g_t_002eexitm"></span><h3 class="section">7.34 <code>.exitm</code></h3>
  5925. <p>Exit early from the current macro definition. See <a href="#Macro">Macro</a>.
  5926. </p>
  5927. <hr>
  5928. <span id="Extern"></span><div class="header">
  5929. <p>
  5930. Next: <a href="#Fail" accesskey="n" rel="next">Fail</a>, Previous: <a href="#Exitm" accesskey="p" rel="prev">Exitm</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5931. </div>
  5932. <span id="g_t_002eextern"></span><h3 class="section">7.35 <code>.extern</code></h3>
  5933. <span id="index-extern-directive"></span>
  5934. <p><code>.extern</code> is accepted in the source program&mdash;for compatibility
  5935. with other assemblers&mdash;but it is ignored. <code>as</code> treats
  5936. all undefined symbols as external.
  5937. </p>
  5938. <hr>
  5939. <span id="Fail"></span><div class="header">
  5940. <p>
  5941. Next: <a href="#File" accesskey="n" rel="next">File</a>, Previous: <a href="#Extern" accesskey="p" rel="prev">Extern</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5942. </div>
  5943. <span id="g_t_002efail-expression"></span><h3 class="section">7.36 <code>.fail <var>expression</var></code></h3>
  5944. <span id="index-fail-directive"></span>
  5945. <p>Generates an error or a warning. If the value of the <var>expression</var> is 500
  5946. or more, <code>as</code> will print a warning message. If the value is less
  5947. than 500, <code>as</code> will print an error message. The message will
  5948. include the value of <var>expression</var>. This can occasionally be useful inside
  5949. complex nested macros or conditional assembly.
  5950. </p>
  5951. <hr>
  5952. <span id="File"></span><div class="header">
  5953. <p>
  5954. Next: <a href="#Fill" accesskey="n" rel="next">Fill</a>, Previous: <a href="#Fail" accesskey="p" rel="prev">Fail</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  5955. </div>
  5956. <span id="g_t_002efile"></span><h3 class="section">7.37 <code>.file</code></h3>
  5957. <span id="index-file-directive"></span>
  5958. <p>There are two different versions of the <code>.file</code> directive. Targets
  5959. that support DWARF2 line number information use the DWARF2 version of
  5960. <code>.file</code>. Other targets use the default version.
  5961. </p>
  5962. <span id="Default-Version"></span><h4 class="subheading">Default Version</h4>
  5963. <span id="index-logical-file-name"></span>
  5964. <span id="index-file-name_002c-logical"></span>
  5965. <p>This version of the <code>.file</code> directive tells <code>as</code> that we
  5966. are about to start a new logical file. The syntax is:
  5967. </p>
  5968. <div class="example">
  5969. <pre class="example">.file <var>string</var>
  5970. </pre></div>
  5971. <p><var>string</var> is the new file name. In general, the filename is
  5972. recognized whether or not it is surrounded by quotes &lsquo;<samp>&quot;</samp>&rsquo;; but if you wish
  5973. to specify an empty file name, you must give the quotes&ndash;<code>&quot;&quot;</code>. This
  5974. statement may go away in future: it is only recognized to be compatible with
  5975. old <code>as</code> programs.
  5976. </p>
  5977. <span id="DWARF2-Version"></span><h4 class="subheading">DWARF2 Version</h4>
  5978. <p>When emitting DWARF2 line number information, <code>.file</code> assigns filenames
  5979. to the <code>.debug_line</code> file name table. The syntax is:
  5980. </p>
  5981. <div class="example">
  5982. <pre class="example">.file <var>fileno</var> <var>filename</var>
  5983. </pre></div>
  5984. <p>The <var>fileno</var> operand should be a unique positive integer to use as the
  5985. index of the entry in the table. The <var>filename</var> operand is a C string
  5986. literal enclosed in double quotes. The <var>filename</var> can include directory
  5987. elements. If it does, then the directory will be added to the directory table
  5988. and the basename will be added to the file table.
  5989. </p>
  5990. <p>The detail of filename indices is exposed to the user because the filename
  5991. table is shared with the <code>.debug_info</code> section of the DWARF2 debugging
  5992. information, and thus the user must know the exact indices that table
  5993. entries will have.
  5994. </p>
  5995. <p>If DWARF5 support has been enabled via the <samp>-gdwarf-5</samp> option then
  5996. an extended version of <code>.file</code> is also allowed:
  5997. </p>
  5998. <div class="example">
  5999. <pre class="example">.file <var>fileno</var> [<var>dirname</var>] <var>filename</var> [md5 <var>value</var>]
  6000. </pre></div>
  6001. <p>With this version a separate directory name is allowed, although if this is
  6002. used then <var>filename</var> should not contain any directory component, except
  6003. for <var>fileno</var> equal to 0: in this case, <var>dirname</var> is expected to be
  6004. the current directory and <var>filename</var> the currently processed file, and
  6005. the latter need not be located in the former. In addition an MD5 hash value
  6006. of the contents of <var>filename</var> can be provided. This will be stored in
  6007. the the file table as well, and can be used by tools reading the debug
  6008. information to verify that the contents of the source file match the
  6009. contents of the compiled file.
  6010. </p>
  6011. <hr>
  6012. <span id="Fill"></span><div class="header">
  6013. <p>
  6014. Next: <a href="#Float" accesskey="n" rel="next">Float</a>, Previous: <a href="#File" accesskey="p" rel="prev">File</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6015. </div>
  6016. <span id="g_t_002efill-repeat-_002c-size-_002c-value"></span><h3 class="section">7.38 <code>.fill <var>repeat</var> , <var>size</var> , <var>value</var></code></h3>
  6017. <span id="index-fill-directive"></span>
  6018. <span id="index-writing-patterns-in-memory"></span>
  6019. <span id="index-patterns_002c-writing-in-memory"></span>
  6020. <p><var>repeat</var>, <var>size</var> and <var>value</var> are absolute expressions.
  6021. This emits <var>repeat</var> copies of <var>size</var> bytes. <var>Repeat</var>
  6022. may be zero or more. <var>Size</var> may be zero or more, but if it is
  6023. more than 8, then it is deemed to have the value 8, compatible with
  6024. other people&rsquo;s assemblers. The contents of each <var>repeat</var> bytes
  6025. is taken from an 8-byte number. The highest order 4 bytes are
  6026. zero. The lowest order 4 bytes are <var>value</var> rendered in the
  6027. byte-order of an integer on the computer <code>as</code> is assembling for.
  6028. Each <var>size</var> bytes in a repetition is taken from the lowest order
  6029. <var>size</var> bytes of this number. Again, this bizarre behavior is
  6030. compatible with other people&rsquo;s assemblers.
  6031. </p>
  6032. <p><var>size</var> and <var>value</var> are optional.
  6033. If the second comma and <var>value</var> are absent, <var>value</var> is
  6034. assumed zero. If the first comma and following tokens are absent,
  6035. <var>size</var> is assumed to be 1.
  6036. </p>
  6037. <hr>
  6038. <span id="Float"></span><div class="header">
  6039. <p>
  6040. Next: <a href="#Func" accesskey="n" rel="next">Func</a>, Previous: <a href="#Fill" accesskey="p" rel="prev">Fill</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6041. </div>
  6042. <span id="g_t_002efloat-flonums"></span><h3 class="section">7.39 <code>.float <var>flonums</var></code></h3>
  6043. <span id="index-floating-point-numbers-_0028single_0029"></span>
  6044. <span id="index-float-directive"></span>
  6045. <p>This directive assembles zero or more flonums, separated by commas. It
  6046. has the same effect as <code>.single</code>.
  6047. The exact kind of floating point numbers emitted depends on how
  6048. <code>as</code> is configured.
  6049. See <a href="#Machine-Dependencies">Machine Dependencies</a>.
  6050. </p>
  6051. <hr>
  6052. <span id="Func"></span><div class="header">
  6053. <p>
  6054. Next: <a href="#Global" accesskey="n" rel="next">Global</a>, Previous: <a href="#Float" accesskey="p" rel="prev">Float</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6055. </div>
  6056. <span id="g_t_002efunc-name_005b_002clabel_005d"></span><h3 class="section">7.40 <code>.func <var>name</var>[,<var>label</var>]</code></h3>
  6057. <span id="index-func-directive"></span>
  6058. <p><code>.func</code> emits debugging information to denote function <var>name</var>, and
  6059. is ignored unless the file is assembled with debugging enabled.
  6060. Only &lsquo;<samp>--gstabs[+]</samp>&rsquo; is currently supported.
  6061. <var>label</var> is the entry point of the function and if omitted <var>name</var>
  6062. prepended with the &lsquo;<samp>leading char</samp>&rsquo; is used.
  6063. &lsquo;<samp>leading char</samp>&rsquo; is usually <code>_</code> or nothing, depending on the target.
  6064. All functions are currently defined to have <code>void</code> return type.
  6065. The function must be terminated with <code>.endfunc</code>.
  6066. </p>
  6067. <hr>
  6068. <span id="Global"></span><div class="header">
  6069. <p>
  6070. Next: <a href="#Gnu_005fattribute" accesskey="n" rel="next">Gnu_attribute</a>, Previous: <a href="#Func" accesskey="p" rel="prev">Func</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6071. </div>
  6072. <span id="g_t_002eglobal-symbol_002c-_002eglobl-symbol"></span><h3 class="section">7.41 <code>.global <var>symbol</var></code>, <code>.globl <var>symbol</var></code></h3>
  6073. <span id="index-global-directive"></span>
  6074. <span id="index-symbol_002c-making-visible-to-linker"></span>
  6075. <p><code>.global</code> makes the symbol visible to <code>ld</code>. If you define
  6076. <var>symbol</var> in your partial program, its value is made available to
  6077. other partial programs that are linked with it. Otherwise,
  6078. <var>symbol</var> takes its attributes from a symbol of the same name
  6079. from another file linked into the same program.
  6080. </p>
  6081. <p>Both spellings (&lsquo;<samp>.globl</samp>&rsquo; and &lsquo;<samp>.global</samp>&rsquo;) are accepted, for
  6082. compatibility with other assemblers.
  6083. </p>
  6084. <p>On the HPPA, <code>.global</code> is not always enough to make it accessible to other
  6085. partial programs. You may need the HPPA-only <code>.EXPORT</code> directive as well.
  6086. See <a href="#HPPA-Directives">HPPA Assembler Directives</a>.
  6087. </p>
  6088. <hr>
  6089. <span id="Gnu_005fattribute"></span><div class="header">
  6090. <p>
  6091. Next: <a href="#Hidden" accesskey="n" rel="next">Hidden</a>, Previous: <a href="#Global" accesskey="p" rel="prev">Global</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6092. </div>
  6093. <span id="g_t_002egnu_005fattribute-tag_002cvalue"></span><h3 class="section">7.42 <code>.gnu_attribute <var>tag</var>,<var>value</var></code></h3>
  6094. <p>Record a <small>GNU</small> object attribute for this file. See <a href="#Object-Attributes">Object Attributes</a>.
  6095. </p>
  6096. <hr>
  6097. <span id="Hidden"></span><div class="header">
  6098. <p>
  6099. Next: <a href="#hword" accesskey="n" rel="next">hword</a>, Previous: <a href="#Gnu_005fattribute" accesskey="p" rel="prev">Gnu_attribute</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6100. </div>
  6101. <span id="g_t_002ehidden-names"></span><h3 class="section">7.43 <code>.hidden <var>names</var></code></h3>
  6102. <span id="index-hidden-directive"></span>
  6103. <span id="index-visibility"></span>
  6104. <p>This is one of the ELF visibility directives. The other two are
  6105. <code>.internal</code> (see <a href="#Internal"><code>.internal</code></a>) and
  6106. <code>.protected</code> (see <a href="#Protected"><code>.protected</code></a>).
  6107. </p>
  6108. <p>This directive overrides the named symbols default visibility (which is set by
  6109. their binding: local, global or weak). The directive sets the visibility to
  6110. <code>hidden</code> which means that the symbols are not visible to other components.
  6111. Such symbols are always considered to be <code>protected</code> as well.
  6112. </p>
  6113. <hr>
  6114. <span id="hword"></span><div class="header">
  6115. <p>
  6116. Next: <a href="#Ident" accesskey="n" rel="next">Ident</a>, Previous: <a href="#Hidden" accesskey="p" rel="prev">Hidden</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6117. </div>
  6118. <span id="g_t_002ehword-expressions"></span><h3 class="section">7.44 <code>.hword <var>expressions</var></code></h3>
  6119. <span id="index-hword-directive"></span>
  6120. <span id="index-integers_002c-16_002dbit"></span>
  6121. <span id="index-numbers_002c-16_002dbit"></span>
  6122. <span id="index-sixteen-bit-integers"></span>
  6123. <p>This expects zero or more <var>expressions</var>, and emits
  6124. a 16 bit number for each.
  6125. </p>
  6126. <p>This directive is a synonym for &lsquo;<samp>.short</samp>&rsquo;; depending on the target
  6127. architecture, it may also be a synonym for &lsquo;<samp>.word</samp>&rsquo;.
  6128. </p>
  6129. <hr>
  6130. <span id="Ident"></span><div class="header">
  6131. <p>
  6132. Next: <a href="#If" accesskey="n" rel="next">If</a>, Previous: <a href="#hword" accesskey="p" rel="prev">hword</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6133. </div>
  6134. <span id="g_t_002eident"></span><h3 class="section">7.45 <code>.ident</code></h3>
  6135. <span id="index-ident-directive"></span>
  6136. <p>This directive is used by some assemblers to place tags in object files. The
  6137. behavior of this directive varies depending on the target. When using the
  6138. a.out object file format, <code>as</code> simply accepts the directive for
  6139. source-file compatibility with existing assemblers, but does not emit anything
  6140. for it. When using COFF, comments are emitted to the <code>.comment</code> or
  6141. <code>.rdata</code> section, depending on the target. When using ELF, comments are
  6142. emitted to the <code>.comment</code> section.
  6143. </p>
  6144. <hr>
  6145. <span id="If"></span><div class="header">
  6146. <p>
  6147. Next: <a href="#Incbin" accesskey="n" rel="next">Incbin</a>, Previous: <a href="#Ident" accesskey="p" rel="prev">Ident</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6148. </div>
  6149. <span id="g_t_002eif-absolute-expression"></span><h3 class="section">7.46 <code>.if <var>absolute expression</var></code></h3>
  6150. <span id="index-conditional-assembly"></span>
  6151. <span id="index-if-directive"></span>
  6152. <p><code>.if</code> marks the beginning of a section of code which is only
  6153. considered part of the source program being assembled if the argument
  6154. (which must be an <var>absolute expression</var>) is non-zero. The end of
  6155. the conditional section of code must be marked by <code>.endif</code>
  6156. (see <a href="#Endif"><code>.endif</code></a>); optionally, you may include code for the
  6157. alternative condition, flagged by <code>.else</code> (see <a href="#Else"><code>.else</code></a>).
  6158. If you have several conditions to check, <code>.elseif</code> may be used to avoid
  6159. nesting blocks if/else within each subsequent <code>.else</code> block.
  6160. </p>
  6161. <p>The following variants of <code>.if</code> are also supported:
  6162. </p><dl compact="compact">
  6163. <dd><span id="index-ifdef-directive"></span>
  6164. </dd>
  6165. <dt><code>.ifdef <var>symbol</var></code></dt>
  6166. <dd><p>Assembles the following section of code if the specified <var>symbol</var>
  6167. has been defined. Note a symbol which has been referenced but not yet defined
  6168. is considered to be undefined.
  6169. </p>
  6170. <span id="index-ifb-directive"></span>
  6171. </dd>
  6172. <dt><code>.ifb <var>text</var></code></dt>
  6173. <dd><p>Assembles the following section of code if the operand is blank (empty).
  6174. </p>
  6175. <span id="index-ifc-directive"></span>
  6176. </dd>
  6177. <dt><code>.ifc <var>string1</var>,<var>string2</var></code></dt>
  6178. <dd><p>Assembles the following section of code if the two strings are the same. The
  6179. strings may be optionally quoted with single quotes. If they are not quoted,
  6180. the first string stops at the first comma, and the second string stops at the
  6181. end of the line. Strings which contain whitespace should be quoted. The
  6182. string comparison is case sensitive.
  6183. </p>
  6184. <span id="index-ifeq-directive"></span>
  6185. </dd>
  6186. <dt><code>.ifeq <var>absolute expression</var></code></dt>
  6187. <dd><p>Assembles the following section of code if the argument is zero.
  6188. </p>
  6189. <span id="index-ifeqs-directive"></span>
  6190. </dd>
  6191. <dt><code>.ifeqs <var>string1</var>,<var>string2</var></code></dt>
  6192. <dd><p>Another form of <code>.ifc</code>. The strings must be quoted using double quotes.
  6193. </p>
  6194. <span id="index-ifge-directive"></span>
  6195. </dd>
  6196. <dt><code>.ifge <var>absolute expression</var></code></dt>
  6197. <dd><p>Assembles the following section of code if the argument is greater than or
  6198. equal to zero.
  6199. </p>
  6200. <span id="index-ifgt-directive"></span>
  6201. </dd>
  6202. <dt><code>.ifgt <var>absolute expression</var></code></dt>
  6203. <dd><p>Assembles the following section of code if the argument is greater than zero.
  6204. </p>
  6205. <span id="index-ifle-directive"></span>
  6206. </dd>
  6207. <dt><code>.ifle <var>absolute expression</var></code></dt>
  6208. <dd><p>Assembles the following section of code if the argument is less than or equal
  6209. to zero.
  6210. </p>
  6211. <span id="index-iflt-directive"></span>
  6212. </dd>
  6213. <dt><code>.iflt <var>absolute expression</var></code></dt>
  6214. <dd><p>Assembles the following section of code if the argument is less than zero.
  6215. </p>
  6216. <span id="index-ifnb-directive"></span>
  6217. </dd>
  6218. <dt><code>.ifnb <var>text</var></code></dt>
  6219. <dd><p>Like <code>.ifb</code>, but the sense of the test is reversed: this assembles the
  6220. following section of code if the operand is non-blank (non-empty).
  6221. </p>
  6222. <span id="index-ifnc-directive"></span>
  6223. </dd>
  6224. <dt><code>.ifnc <var>string1</var>,<var>string2</var>.</code></dt>
  6225. <dd><p>Like <code>.ifc</code>, but the sense of the test is reversed: this assembles the
  6226. following section of code if the two strings are not the same.
  6227. </p>
  6228. <span id="index-ifndef-directive"></span>
  6229. <span id="index-ifnotdef-directive"></span>
  6230. </dd>
  6231. <dt><code>.ifndef <var>symbol</var></code></dt>
  6232. <dt><code>.ifnotdef <var>symbol</var></code></dt>
  6233. <dd><p>Assembles the following section of code if the specified <var>symbol</var>
  6234. has not been defined. Both spelling variants are equivalent. Note a symbol
  6235. which has been referenced but not yet defined is considered to be undefined.
  6236. </p>
  6237. <span id="index-ifne-directive"></span>
  6238. </dd>
  6239. <dt><code>.ifne <var>absolute expression</var></code></dt>
  6240. <dd><p>Assembles the following section of code if the argument is not equal to zero
  6241. (in other words, this is equivalent to <code>.if</code>).
  6242. </p>
  6243. <span id="index-ifnes-directive"></span>
  6244. </dd>
  6245. <dt><code>.ifnes <var>string1</var>,<var>string2</var></code></dt>
  6246. <dd><p>Like <code>.ifeqs</code>, but the sense of the test is reversed: this assembles the
  6247. following section of code if the two strings are not the same.
  6248. </p></dd>
  6249. </dl>
  6250. <hr>
  6251. <span id="Incbin"></span><div class="header">
  6252. <p>
  6253. Next: <a href="#Include" accesskey="n" rel="next">Include</a>, Previous: <a href="#If" accesskey="p" rel="prev">If</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6254. </div>
  6255. <span id="g_t_002eincbin-_0022file_0022_005b_002cskip_005b_002ccount_005d_005d"></span><h3 class="section">7.47 <code>.incbin &quot;<var>file</var>&quot;[,<var>skip</var>[,<var>count</var>]]</code></h3>
  6256. <span id="index-incbin-directive"></span>
  6257. <span id="index-binary-files_002c-including"></span>
  6258. <p>The <code>incbin</code> directive includes <var>file</var> verbatim at the current
  6259. location. You can control the search paths used with the &lsquo;<samp>-I</samp>&rsquo; command-line
  6260. option (see <a href="#Invoking">Command-Line Options</a>). Quotation marks are required
  6261. around <var>file</var>.
  6262. </p>
  6263. <p>The <var>skip</var> argument skips a number of bytes from the start of the
  6264. <var>file</var>. The <var>count</var> argument indicates the maximum number of bytes to
  6265. read. Note that the data is not aligned in any way, so it is the user&rsquo;s
  6266. responsibility to make sure that proper alignment is provided both before and
  6267. after the <code>incbin</code> directive.
  6268. </p>
  6269. <hr>
  6270. <span id="Include"></span><div class="header">
  6271. <p>
  6272. Next: <a href="#Int" accesskey="n" rel="next">Int</a>, Previous: <a href="#Incbin" accesskey="p" rel="prev">Incbin</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6273. </div>
  6274. <span id="g_t_002einclude-_0022file_0022"></span><h3 class="section">7.48 <code>.include &quot;<var>file</var>&quot;</code></h3>
  6275. <span id="index-include-directive"></span>
  6276. <span id="index-supporting-files_002c-including"></span>
  6277. <span id="index-files_002c-including"></span>
  6278. <p>This directive provides a way to include supporting files at specified
  6279. points in your source program. The code from <var>file</var> is assembled as
  6280. if it followed the point of the <code>.include</code>; when the end of the
  6281. included file is reached, assembly of the original file continues. You
  6282. can control the search paths used with the &lsquo;<samp>-I</samp>&rsquo; command-line option
  6283. (see <a href="#Invoking">Command-Line Options</a>). Quotation marks are required
  6284. around <var>file</var>.
  6285. </p>
  6286. <hr>
  6287. <span id="Int"></span><div class="header">
  6288. <p>
  6289. Next: <a href="#Internal" accesskey="n" rel="next">Internal</a>, Previous: <a href="#Include" accesskey="p" rel="prev">Include</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6290. </div>
  6291. <span id="g_t_002eint-expressions"></span><h3 class="section">7.49 <code>.int <var>expressions</var></code></h3>
  6292. <span id="index-int-directive"></span>
  6293. <span id="index-integers_002c-32_002dbit"></span>
  6294. <p>Expect zero or more <var>expressions</var>, of any section, separated by commas.
  6295. For each expression, emit a number that, at run time, is the value of that
  6296. expression. The byte order and bit size of the number depends on what kind
  6297. of target the assembly is for.
  6298. </p>
  6299. <p>Note - this directive is not intended for encoding instructions, and it will
  6300. not trigger effects like DWARF line number generation. Instead some targets
  6301. support special directives for encoding arbitrary binary sequences as
  6302. instructions such as eg <code>.insn</code> or <code>.inst</code>.
  6303. </p>
  6304. <hr>
  6305. <span id="Internal"></span><div class="header">
  6306. <p>
  6307. Next: <a href="#Irp" accesskey="n" rel="next">Irp</a>, Previous: <a href="#Int" accesskey="p" rel="prev">Int</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6308. </div>
  6309. <span id="g_t_002einternal-names"></span><h3 class="section">7.50 <code>.internal <var>names</var></code></h3>
  6310. <span id="index-internal-directive"></span>
  6311. <span id="index-visibility-1"></span>
  6312. <p>This is one of the ELF visibility directives. The other two are
  6313. <code>.hidden</code> (see <a href="#Hidden"><code>.hidden</code></a>) and
  6314. <code>.protected</code> (see <a href="#Protected"><code>.protected</code></a>).
  6315. </p>
  6316. <p>This directive overrides the named symbols default visibility (which is set by
  6317. their binding: local, global or weak). The directive sets the visibility to
  6318. <code>internal</code> which means that the symbols are considered to be <code>hidden</code>
  6319. (i.e., not visible to other components), and that some extra, processor specific
  6320. processing must also be performed upon the symbols as well.
  6321. </p>
  6322. <hr>
  6323. <span id="Irp"></span><div class="header">
  6324. <p>
  6325. Next: <a href="#Irpc" accesskey="n" rel="next">Irpc</a>, Previous: <a href="#Internal" accesskey="p" rel="prev">Internal</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6326. </div>
  6327. <span id="g_t_002eirp-symbol_002cvalues_2026"></span><h3 class="section">7.51 <code>.irp <var>symbol</var>,<var>values</var></code>&hellip;</h3>
  6328. <span id="index-irp-directive"></span>
  6329. <p>Evaluate a sequence of statements assigning different values to <var>symbol</var>.
  6330. The sequence of statements starts at the <code>.irp</code> directive, and is
  6331. terminated by an <code>.endr</code> directive. For each <var>value</var>, <var>symbol</var> is
  6332. set to <var>value</var>, and the sequence of statements is assembled. If no
  6333. <var>value</var> is listed, the sequence of statements is assembled once, with
  6334. <var>symbol</var> set to the null string. To refer to <var>symbol</var> within the
  6335. sequence of statements, use <var>\symbol</var>.
  6336. </p>
  6337. <p>For example, assembling
  6338. </p>
  6339. <div class="example">
  6340. <pre class="example"> .irp param,1,2,3
  6341. move d\param,sp@-
  6342. .endr
  6343. </pre></div>
  6344. <p>is equivalent to assembling
  6345. </p>
  6346. <div class="example">
  6347. <pre class="example"> move d1,sp@-
  6348. move d2,sp@-
  6349. move d3,sp@-
  6350. </pre></div>
  6351. <p>For some caveats with the spelling of <var>symbol</var>, see also <a href="#Macro">Macro</a>.
  6352. </p>
  6353. <hr>
  6354. <span id="Irpc"></span><div class="header">
  6355. <p>
  6356. Next: <a href="#Lcomm" accesskey="n" rel="next">Lcomm</a>, Previous: <a href="#Irp" accesskey="p" rel="prev">Irp</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6357. </div>
  6358. <span id="g_t_002eirpc-symbol_002cvalues_2026"></span><h3 class="section">7.52 <code>.irpc <var>symbol</var>,<var>values</var></code>&hellip;</h3>
  6359. <span id="index-irpc-directive"></span>
  6360. <p>Evaluate a sequence of statements assigning different values to <var>symbol</var>.
  6361. The sequence of statements starts at the <code>.irpc</code> directive, and is
  6362. terminated by an <code>.endr</code> directive. For each character in <var>value</var>,
  6363. <var>symbol</var> is set to the character, and the sequence of statements is
  6364. assembled. If no <var>value</var> is listed, the sequence of statements is
  6365. assembled once, with <var>symbol</var> set to the null string. To refer to
  6366. <var>symbol</var> within the sequence of statements, use <var>\symbol</var>.
  6367. </p>
  6368. <p>For example, assembling
  6369. </p>
  6370. <div class="example">
  6371. <pre class="example"> .irpc param,123
  6372. move d\param,sp@-
  6373. .endr
  6374. </pre></div>
  6375. <p>is equivalent to assembling
  6376. </p>
  6377. <div class="example">
  6378. <pre class="example"> move d1,sp@-
  6379. move d2,sp@-
  6380. move d3,sp@-
  6381. </pre></div>
  6382. <p>For some caveats with the spelling of <var>symbol</var>, see also the discussion
  6383. at See <a href="#Macro">Macro</a>.
  6384. </p>
  6385. <hr>
  6386. <span id="Lcomm"></span><div class="header">
  6387. <p>
  6388. Next: <a href="#Lflags" accesskey="n" rel="next">Lflags</a>, Previous: <a href="#Irpc" accesskey="p" rel="prev">Irpc</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6389. </div>
  6390. <span id="g_t_002elcomm-symbol-_002c-length"></span><h3 class="section">7.53 <code>.lcomm <var>symbol</var> , <var>length</var></code></h3>
  6391. <span id="index-lcomm-directive"></span>
  6392. <span id="index-local-common-symbols"></span>
  6393. <span id="index-symbols_002c-local-common"></span>
  6394. <p>Reserve <var>length</var> (an absolute expression) bytes for a local common
  6395. denoted by <var>symbol</var>. The section and value of <var>symbol</var> are
  6396. those of the new local common. The addresses are allocated in the bss
  6397. section, so that at run-time the bytes start off zeroed. <var>Symbol</var>
  6398. is not declared global (see <a href="#Global"><code>.global</code></a>), so is normally
  6399. not visible to <code>ld</code>.
  6400. </p>
  6401. <p>Some targets permit a third argument to be used with <code>.lcomm</code>. This
  6402. argument specifies the desired alignment of the symbol in the bss section.
  6403. </p>
  6404. <p>The syntax for <code>.lcomm</code> differs slightly on the HPPA. The syntax is
  6405. &lsquo;<samp><var>symbol</var> .lcomm, <var>length</var></samp>&rsquo;; <var>symbol</var> is optional.
  6406. </p>
  6407. <hr>
  6408. <span id="Lflags"></span><div class="header">
  6409. <p>
  6410. Next: <a href="#Line" accesskey="n" rel="next">Line</a>, Previous: <a href="#Lcomm" accesskey="p" rel="prev">Lcomm</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6411. </div>
  6412. <span id="g_t_002elflags"></span><h3 class="section">7.54 <code>.lflags</code></h3>
  6413. <span id="index-lflags-directive-_0028ignored_0029"></span>
  6414. <p><code>as</code> accepts this directive, for compatibility with other
  6415. assemblers, but ignores it.
  6416. </p>
  6417. <hr>
  6418. <span id="Line"></span><div class="header">
  6419. <p>
  6420. Next: <a href="#Linkonce" accesskey="n" rel="next">Linkonce</a>, Previous: <a href="#Lflags" accesskey="p" rel="prev">Lflags</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6421. </div>
  6422. <span id="g_t_002eline-line_002dnumber"></span><h3 class="section">7.55 <code>.line <var>line-number</var></code></h3>
  6423. <span id="index-line-directive"></span>
  6424. <span id="index-logical-line-number"></span>
  6425. <p>Change the logical line number. <var>line-number</var> must be an absolute
  6426. expression. The next line has that logical line number. Therefore any other
  6427. statements on the current line (after a statement separator character) are
  6428. reported as on logical line number <var>line-number</var> - 1. One day
  6429. <code>as</code> will no longer support this directive: it is recognized only
  6430. for compatibility with existing assembler programs.
  6431. </p>
  6432. <p>Even though this is a directive associated with the <code>a.out</code> or
  6433. <code>b.out</code> object-code formats, <code>as</code> still recognizes it
  6434. when producing COFF output, and treats &lsquo;<samp>.line</samp>&rsquo; as though it
  6435. were the COFF &lsquo;<samp>.ln</samp>&rsquo; <em>if</em> it is found outside a
  6436. <code>.def</code>/<code>.endef</code> pair.
  6437. </p>
  6438. <p>Inside a <code>.def</code>, &lsquo;<samp>.line</samp>&rsquo; is, instead, one of the directives
  6439. used by compilers to generate auxiliary symbol information for
  6440. debugging.
  6441. </p>
  6442. <hr>
  6443. <span id="Linkonce"></span><div class="header">
  6444. <p>
  6445. Next: <a href="#List" accesskey="n" rel="next">List</a>, Previous: <a href="#Line" accesskey="p" rel="prev">Line</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6446. </div>
  6447. <span id="g_t_002elinkonce-_005btype_005d"></span><h3 class="section">7.56 <code>.linkonce [<var>type</var>]</code></h3>
  6448. <span id="index-COMDAT"></span>
  6449. <span id="index-linkonce-directive"></span>
  6450. <span id="index-common-sections"></span>
  6451. <p>Mark the current section so that the linker only includes a single copy of it.
  6452. This may be used to include the same section in several different object files,
  6453. but ensure that the linker will only include it once in the final output file.
  6454. The <code>.linkonce</code> pseudo-op must be used for each instance of the section.
  6455. Duplicate sections are detected based on the section name, so it should be
  6456. unique.
  6457. </p>
  6458. <p>This directive is only supported by a few object file formats; as of this
  6459. writing, the only object file format which supports it is the Portable
  6460. Executable format used on Windows NT.
  6461. </p>
  6462. <p>The <var>type</var> argument is optional. If specified, it must be one of the
  6463. following strings. For example:
  6464. </p><div class="example">
  6465. <pre class="example">.linkonce same_size
  6466. </pre></div>
  6467. <p>Not all types may be supported on all object file formats.
  6468. </p>
  6469. <dl compact="compact">
  6470. <dt><code>discard</code></dt>
  6471. <dd><p>Silently discard duplicate sections. This is the default.
  6472. </p>
  6473. </dd>
  6474. <dt><code>one_only</code></dt>
  6475. <dd><p>Warn if there are duplicate sections, but still keep only one copy.
  6476. </p>
  6477. </dd>
  6478. <dt><code>same_size</code></dt>
  6479. <dd><p>Warn if any of the duplicates have different sizes.
  6480. </p>
  6481. </dd>
  6482. <dt><code>same_contents</code></dt>
  6483. <dd><p>Warn if any of the duplicates do not have exactly the same contents.
  6484. </p></dd>
  6485. </dl>
  6486. <hr>
  6487. <span id="List"></span><div class="header">
  6488. <p>
  6489. Next: <a href="#Ln" accesskey="n" rel="next">Ln</a>, Previous: <a href="#Linkonce" accesskey="p" rel="prev">Linkonce</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6490. </div>
  6491. <span id="g_t_002elist"></span><h3 class="section">7.57 <code>.list</code></h3>
  6492. <span id="index-list-directive"></span>
  6493. <span id="index-listing-control_002c-turning-on"></span>
  6494. <p>Control (in conjunction with the <code>.nolist</code> directive) whether or
  6495. not assembly listings are generated. These two directives maintain an
  6496. internal counter (which is zero initially). <code>.list</code> increments the
  6497. counter, and <code>.nolist</code> decrements it. Assembly listings are
  6498. generated whenever the counter is greater than zero.
  6499. </p>
  6500. <p>By default, listings are disabled. When you enable them (with the
  6501. &lsquo;<samp>-a</samp>&rsquo; command-line option; see <a href="#Invoking">Command-Line Options</a>),
  6502. the initial value of the listing counter is one.
  6503. </p>
  6504. <hr>
  6505. <span id="Ln"></span><div class="header">
  6506. <p>
  6507. Next: <a href="#Loc" accesskey="n" rel="next">Loc</a>, Previous: <a href="#List" accesskey="p" rel="prev">List</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6508. </div>
  6509. <span id="g_t_002eln-line_002dnumber"></span><h3 class="section">7.58 <code>.ln <var>line-number</var></code></h3>
  6510. <span id="index-ln-directive"></span>
  6511. <p>&lsquo;<samp>.ln</samp>&rsquo; is a synonym for &lsquo;<samp>.line</samp>&rsquo;.
  6512. </p>
  6513. <hr>
  6514. <span id="Loc"></span><div class="header">
  6515. <p>
  6516. Next: <a href="#Loc_005fmark_005flabels" accesskey="n" rel="next">Loc_mark_labels</a>, Previous: <a href="#Ln" accesskey="p" rel="prev">Ln</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6517. </div>
  6518. <span id="g_t_002eloc-fileno-lineno-_005bcolumn_005d-_005boptions_005d"></span><h3 class="section">7.59 <code>.loc <var>fileno</var> <var>lineno</var> [<var>column</var>] [<var>options</var>]</code></h3>
  6519. <span id="index-loc-directive"></span>
  6520. <p>When emitting DWARF2 line number information,
  6521. the <code>.loc</code> directive will add a row to the <code>.debug_line</code> line
  6522. number matrix corresponding to the immediately following assembly
  6523. instruction. The <var>fileno</var>, <var>lineno</var>, and optional <var>column</var>
  6524. arguments will be applied to the <code>.debug_line</code> state machine before
  6525. the row is added. It is an error for the input assembly file to generate
  6526. a non-empty <code>.debug_line</code> and also use <code>loc</code> directives.
  6527. </p>
  6528. <p>The <var>options</var> are a sequence of the following tokens in any order:
  6529. </p>
  6530. <dl compact="compact">
  6531. <dt><code>basic_block</code></dt>
  6532. <dd><p>This option will set the <code>basic_block</code> register in the
  6533. <code>.debug_line</code> state machine to <code>true</code>.
  6534. </p>
  6535. </dd>
  6536. <dt><code>prologue_end</code></dt>
  6537. <dd><p>This option will set the <code>prologue_end</code> register in the
  6538. <code>.debug_line</code> state machine to <code>true</code>.
  6539. </p>
  6540. </dd>
  6541. <dt><code>epilogue_begin</code></dt>
  6542. <dd><p>This option will set the <code>epilogue_begin</code> register in the
  6543. <code>.debug_line</code> state machine to <code>true</code>.
  6544. </p>
  6545. </dd>
  6546. <dt><code>is_stmt <var>value</var></code></dt>
  6547. <dd><p>This option will set the <code>is_stmt</code> register in the
  6548. <code>.debug_line</code> state machine to <code>value</code>, which must be
  6549. either 0 or 1.
  6550. </p>
  6551. </dd>
  6552. <dt><code>isa <var>value</var></code></dt>
  6553. <dd><p>This directive will set the <code>isa</code> register in the <code>.debug_line</code>
  6554. state machine to <var>value</var>, which must be an unsigned integer.
  6555. </p>
  6556. </dd>
  6557. <dt><code>discriminator <var>value</var></code></dt>
  6558. <dd><p>This directive will set the <code>discriminator</code> register in the <code>.debug_line</code>
  6559. state machine to <var>value</var>, which must be an unsigned integer.
  6560. </p>
  6561. </dd>
  6562. <dt><code>view <var>value</var></code></dt>
  6563. <dd><p>This option causes a row to be added to <code>.debug_line</code> in reference to the
  6564. current address (which might not be the same as that of the following assembly
  6565. instruction), and to associate <var>value</var> with the <code>view</code> register in the
  6566. <code>.debug_line</code> state machine. If <var>value</var> is a label, both the
  6567. <code>view</code> register and the label are set to the number of prior <code>.loc</code>
  6568. directives at the same program location. If <var>value</var> is the literal
  6569. <code>0</code>, the <code>view</code> register is set to zero, and the assembler asserts
  6570. that there aren&rsquo;t any prior <code>.loc</code> directives at the same program
  6571. location. If <var>value</var> is the literal <code>-0</code>, the assembler arrange for
  6572. the <code>view</code> register to be reset in this row, even if there are prior
  6573. <code>.loc</code> directives at the same program location.
  6574. </p>
  6575. </dd>
  6576. </dl>
  6577. <hr>
  6578. <span id="Loc_005fmark_005flabels"></span><div class="header">
  6579. <p>
  6580. Next: <a href="#Local" accesskey="n" rel="next">Local</a>, Previous: <a href="#Loc" accesskey="p" rel="prev">Loc</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6581. </div>
  6582. <span id="g_t_002eloc_005fmark_005flabels-enable"></span><h3 class="section">7.60 <code>.loc_mark_labels <var>enable</var></code></h3>
  6583. <span id="index-loc_005fmark_005flabels-directive"></span>
  6584. <p>When emitting DWARF2 line number information,
  6585. the <code>.loc_mark_labels</code> directive makes the assembler emit an entry
  6586. to the <code>.debug_line</code> line number matrix with the <code>basic_block</code>
  6587. register in the state machine set whenever a code label is seen.
  6588. The <var>enable</var> argument should be either 1 or 0, to enable or disable
  6589. this function respectively.
  6590. </p>
  6591. <hr>
  6592. <span id="Local"></span><div class="header">
  6593. <p>
  6594. Next: <a href="#Long" accesskey="n" rel="next">Long</a>, Previous: <a href="#Loc_005fmark_005flabels" accesskey="p" rel="prev">Loc_mark_labels</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6595. </div>
  6596. <span id="g_t_002elocal-names"></span><h3 class="section">7.61 <code>.local <var>names</var></code></h3>
  6597. <span id="index-local-directive"></span>
  6598. <p>This directive, which is available for ELF targets, marks each symbol in
  6599. the comma-separated list of <code>names</code> as a local symbol so that it
  6600. will not be externally visible. If the symbols do not already exist,
  6601. they will be created.
  6602. </p>
  6603. <p>For targets where the <code>.lcomm</code> directive (see <a href="#Lcomm">Lcomm</a>) does not
  6604. accept an alignment argument, which is the case for most ELF targets,
  6605. the <code>.local</code> directive can be used in combination with <code>.comm</code>
  6606. (see <a href="#Comm">Comm</a>) to define aligned local common data.
  6607. </p>
  6608. <hr>
  6609. <span id="Long"></span><div class="header">
  6610. <p>
  6611. Next: <a href="#Macro" accesskey="n" rel="next">Macro</a>, Previous: <a href="#Local" accesskey="p" rel="prev">Local</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6612. </div>
  6613. <span id="g_t_002elong-expressions"></span><h3 class="section">7.62 <code>.long <var>expressions</var></code></h3>
  6614. <span id="index-long-directive"></span>
  6615. <p><code>.long</code> is the same as &lsquo;<samp>.int</samp>&rsquo;. See <a href="#Int"><code>.int</code></a>.
  6616. </p>
  6617. <hr>
  6618. <span id="Macro"></span><div class="header">
  6619. <p>
  6620. Next: <a href="#MRI" accesskey="n" rel="next">MRI</a>, Previous: <a href="#Long" accesskey="p" rel="prev">Long</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6621. </div>
  6622. <span id="g_t_002emacro"></span><h3 class="section">7.63 <code>.macro</code></h3>
  6623. <span id="index-macros"></span>
  6624. <p>The commands <code>.macro</code> and <code>.endm</code> allow you to define macros that
  6625. generate assembly output. For example, this definition specifies a macro
  6626. <code>sum</code> that puts a sequence of numbers into memory:
  6627. </p>
  6628. <div class="example">
  6629. <pre class="example"> .macro sum from=0, to=5
  6630. .long \from
  6631. .if \to-\from
  6632. sum &quot;(\from+1)&quot;,\to
  6633. .endif
  6634. .endm
  6635. </pre></div>
  6636. <p>With that definition, &lsquo;<samp>SUM 0,5</samp>&rsquo; is equivalent to this assembly input:
  6637. </p>
  6638. <div class="example">
  6639. <pre class="example"> .long 0
  6640. .long 1
  6641. .long 2
  6642. .long 3
  6643. .long 4
  6644. .long 5
  6645. </pre></div>
  6646. <dl compact="compact">
  6647. <dt><code>.macro <var>macname</var></code>
  6648. <span id="index-_002emacro-macname"></span>
  6649. </dt>
  6650. <dt><code>.macro <var>macname</var> <var>macargs</var> &hellip;</code>
  6651. <span id="index-_002emacro-macname-macargs-_2026"></span>
  6652. </dt>
  6653. <dd><span id="index-macro-directive"></span>
  6654. <p>Begin the definition of a macro called <var>macname</var>. If your macro
  6655. definition requires arguments, specify their names after the macro name,
  6656. separated by commas or spaces. You can qualify the macro argument to
  6657. indicate whether all invocations must specify a non-blank value (through
  6658. &lsquo;<samp>:<code>req</code></samp>&rsquo;), or whether it takes all of the remaining arguments
  6659. (through &lsquo;<samp>:<code>vararg</code></samp>&rsquo;). You can supply a default value for any
  6660. macro argument by following the name with &lsquo;<samp>=<var>deflt</var></samp>&rsquo;. You
  6661. cannot define two macros with the same <var>macname</var> unless it has been
  6662. subject to the <code>.purgem</code> directive (see <a href="#Purgem">Purgem</a>) between the two
  6663. definitions. For example, these are all valid <code>.macro</code> statements:
  6664. </p>
  6665. <dl compact="compact">
  6666. <dt><code>.macro comm</code></dt>
  6667. <dd><p>Begin the definition of a macro called <code>comm</code>, which takes no
  6668. arguments.
  6669. </p>
  6670. </dd>
  6671. <dt><code>.macro plus1 p, p1</code></dt>
  6672. <dt><code>.macro plus1 p p1</code></dt>
  6673. <dd><p>Either statement begins the definition of a macro called <code>plus1</code>,
  6674. which takes two arguments; within the macro definition, write
  6675. &lsquo;<samp>\p</samp>&rsquo; or &lsquo;<samp>\p1</samp>&rsquo; to evaluate the arguments.
  6676. </p>
  6677. </dd>
  6678. <dt><code>.macro reserve_str p1=0 p2</code></dt>
  6679. <dd><p>Begin the definition of a macro called <code>reserve_str</code>, with two
  6680. arguments. The first argument has a default value, but not the second.
  6681. After the definition is complete, you can call the macro either as
  6682. &lsquo;<samp>reserve_str <var>a</var>,<var>b</var></samp>&rsquo; (with &lsquo;<samp>\p1</samp>&rsquo; evaluating to
  6683. <var>a</var> and &lsquo;<samp>\p2</samp>&rsquo; evaluating to <var>b</var>), or as &lsquo;<samp>reserve_str
  6684. ,<var>b</var></samp>&rsquo; (with &lsquo;<samp>\p1</samp>&rsquo; evaluating as the default, in this case
  6685. &lsquo;<samp>0</samp>&rsquo;, and &lsquo;<samp>\p2</samp>&rsquo; evaluating to <var>b</var>).
  6686. </p>
  6687. </dd>
  6688. <dt><code>.macro m p1:req, p2=0, p3:vararg</code></dt>
  6689. <dd><p>Begin the definition of a macro called <code>m</code>, with at least three
  6690. arguments. The first argument must always have a value specified, but
  6691. not the second, which instead has a default value. The third formal
  6692. will get assigned all remaining arguments specified at invocation time.
  6693. </p>
  6694. <p>When you call a macro, you can specify the argument values either by
  6695. position, or by keyword. For example, &lsquo;<samp>sum 9,17</samp>&rsquo; is equivalent to
  6696. &lsquo;<samp>sum to=17, from=9</samp>&rsquo;.
  6697. </p>
  6698. </dd>
  6699. </dl>
  6700. <p>Note that since each of the <var>macargs</var> can be an identifier exactly
  6701. as any other one permitted by the target architecture, there may be
  6702. occasional problems if the target hand-crafts special meanings to certain
  6703. characters when they occur in a special position. For example, if the colon
  6704. (<code>:</code>) is generally permitted to be part of a symbol name, but the
  6705. architecture specific code special-cases it when occurring as the final
  6706. character of a symbol (to denote a label), then the macro parameter
  6707. replacement code will have no way of knowing that and consider the whole
  6708. construct (including the colon) an identifier, and check only this
  6709. identifier for being the subject to parameter substitution. So for example
  6710. this macro definition:
  6711. </p>
  6712. <div class="example">
  6713. <pre class="example"> .macro label l
  6714. \l:
  6715. .endm
  6716. </pre></div>
  6717. <p>might not work as expected. Invoking &lsquo;<samp>label foo</samp>&rsquo; might not create a label
  6718. called &lsquo;<samp>foo</samp>&rsquo; but instead just insert the text &lsquo;<samp>\l:</samp>&rsquo; into the
  6719. assembler source, probably generating an error about an unrecognised
  6720. identifier.
  6721. </p>
  6722. <p>Similarly problems might occur with the period character (&lsquo;<samp>.</samp>&rsquo;)
  6723. which is often allowed inside opcode names (and hence identifier names). So
  6724. for example constructing a macro to build an opcode from a base name and a
  6725. length specifier like this:
  6726. </p>
  6727. <div class="example">
  6728. <pre class="example"> .macro opcode base length
  6729. \base.\length
  6730. .endm
  6731. </pre></div>
  6732. <p>and invoking it as &lsquo;<samp>opcode store l</samp>&rsquo; will not create a &lsquo;<samp>store.l</samp>&rsquo;
  6733. instruction but instead generate some kind of error as the assembler tries to
  6734. interpret the text &lsquo;<samp>\base.\length</samp>&rsquo;.
  6735. </p>
  6736. <p>There are several possible ways around this problem:
  6737. </p>
  6738. <dl compact="compact">
  6739. <dt><code>Insert white space</code></dt>
  6740. <dd><p>If it is possible to use white space characters then this is the simplest
  6741. solution. eg:
  6742. </p>
  6743. <div class="example">
  6744. <pre class="example"> .macro label l
  6745. \l :
  6746. .endm
  6747. </pre></div>
  6748. </dd>
  6749. <dt><code>Use &lsquo;<samp>\()</samp>&rsquo;</code></dt>
  6750. <dd><p>The string &lsquo;<samp>\()</samp>&rsquo; can be used to separate the end of a macro argument from
  6751. the following text. eg:
  6752. </p>
  6753. <div class="example">
  6754. <pre class="example"> .macro opcode base length
  6755. \base\().\length
  6756. .endm
  6757. </pre></div>
  6758. </dd>
  6759. <dt><code>Use the alternate macro syntax mode</code></dt>
  6760. <dd><p>In the alternative macro syntax mode the ampersand character (&lsquo;<samp>&amp;</samp>&rsquo;) can be
  6761. used as a separator. eg:
  6762. </p>
  6763. <div class="example">
  6764. <pre class="example"> .altmacro
  6765. .macro label l
  6766. l&amp;:
  6767. .endm
  6768. </pre></div>
  6769. </dd>
  6770. </dl>
  6771. <p>Note: this problem of correctly identifying string parameters to pseudo ops
  6772. also applies to the identifiers used in <code>.irp</code> (see <a href="#Irp">Irp</a>)
  6773. and <code>.irpc</code> (see <a href="#Irpc">Irpc</a>) as well.
  6774. </p>
  6775. <p>Another issue can occur with the actual arguments passed during macro
  6776. invocation: Multiple arguments can be separated by blanks or commas. To have
  6777. arguments actually contain blanks or commas (or potentially other non-alpha-
  6778. numeric characters), individual arguments will need to be enclosed in either
  6779. parentheses <code>()</code>, square brackets <code>[]</code>, or double quote <code>&quot;</code>
  6780. characters. The latter may be the only viable option in certain situations,
  6781. as only double quotes are actually stripped while establishing arguments. It
  6782. may be important to be aware of two escaping models used when processing such
  6783. quoted argument strings: For one two adjacent double quotes represent a single
  6784. double quote in the resulting argument, going along the lines of the stripping
  6785. of the enclosing quotes. But then double quotes can also be escaped by a
  6786. backslash <code>\</code>, but this backslash will not be retained in the resulting
  6787. actual argument as then seen / used while expanding the macro.
  6788. </p>
  6789. <p>As a consequence to the first of these escaping mechanisms two string literals
  6790. intended to be representing separate macro arguments need to be separated by
  6791. white space (or, better yet, by a comma). To state it differently, such
  6792. adjacent string literals - even if separated only by a blank - will not be
  6793. concatenated when determining macro arguments, even if they&rsquo;re only separated
  6794. by white space. This is unlike certain other pseudo ops, e.g. <code>.ascii</code>.
  6795. </p>
  6796. </dd>
  6797. <dt><code>.endm</code>
  6798. <span id="index-_002eendm"></span>
  6799. </dt>
  6800. <dd><span id="index-endm-directive"></span>
  6801. <p>Mark the end of a macro definition.
  6802. </p>
  6803. </dd>
  6804. <dt><code>.exitm</code>
  6805. <span id="index-_002eexitm"></span>
  6806. </dt>
  6807. <dd><span id="index-exitm-directive"></span>
  6808. <p>Exit early from the current macro definition.
  6809. </p>
  6810. <span id="index-number-of-macros-executed"></span>
  6811. <span id="index-macros_002c-count-executed"></span>
  6812. </dd>
  6813. <dt><code>\@</code>
  6814. <span id="index-_005c_0040"></span>
  6815. </dt>
  6816. <dd><p><code>as</code> maintains a counter of how many macros it has
  6817. executed in this pseudo-variable; you can copy that number to your
  6818. output with &lsquo;<samp>\@</samp>&rsquo;, but <em>only within a macro definition</em>.
  6819. </p>
  6820. </dd>
  6821. <dt><code>LOCAL <var>name</var> [ , &hellip; ]</code>
  6822. <span id="index-LOCAL-name-_005b-_002c-_2026-_005d-1"></span>
  6823. </dt>
  6824. <dd><p><em>Warning: <code>LOCAL</code> is only available if you select &ldquo;alternate
  6825. macro syntax&rdquo; with &lsquo;<samp>--alternate</samp>&rsquo; or <code>.altmacro</code>.</em>
  6826. See <a href="#Altmacro"><code>.altmacro</code></a>.
  6827. </p></dd>
  6828. </dl>
  6829. <hr>
  6830. <span id="MRI"></span><div class="header">
  6831. <p>
  6832. Next: <a href="#Noaltmacro" accesskey="n" rel="next">Noaltmacro</a>, Previous: <a href="#Macro" accesskey="p" rel="prev">Macro</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6833. </div>
  6834. <span id="g_t_002emri-val"></span><h3 class="section">7.64 <code>.mri <var>val</var></code></h3>
  6835. <span id="index-mri-directive"></span>
  6836. <span id="index-MRI-mode_002c-temporarily"></span>
  6837. <p>If <var>val</var> is non-zero, this tells <code>as</code> to enter MRI mode. If
  6838. <var>val</var> is zero, this tells <code>as</code> to exit MRI mode. This change
  6839. affects code assembled until the next <code>.mri</code> directive, or until the end
  6840. of the file. See <a href="#M">MRI mode</a>.
  6841. </p>
  6842. <hr>
  6843. <span id="Noaltmacro"></span><div class="header">
  6844. <p>
  6845. Next: <a href="#Nolist" accesskey="n" rel="next">Nolist</a>, Previous: <a href="#MRI" accesskey="p" rel="prev">MRI</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6846. </div>
  6847. <span id="g_t_002enoaltmacro"></span><h3 class="section">7.65 <code>.noaltmacro</code></h3>
  6848. <p>Disable alternate macro mode. See <a href="#Altmacro">Altmacro</a>.
  6849. </p>
  6850. <hr>
  6851. <span id="Nolist"></span><div class="header">
  6852. <p>
  6853. Next: <a href="#Nop" accesskey="n" rel="next">Nop</a>, Previous: <a href="#Noaltmacro" accesskey="p" rel="prev">Noaltmacro</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6854. </div>
  6855. <span id="g_t_002enolist"></span><h3 class="section">7.66 <code>.nolist</code></h3>
  6856. <span id="index-nolist-directive"></span>
  6857. <span id="index-listing-control_002c-turning-off"></span>
  6858. <p>Control (in conjunction with the <code>.list</code> directive) whether or
  6859. not assembly listings are generated. These two directives maintain an
  6860. internal counter (which is zero initially). <code>.list</code> increments the
  6861. counter, and <code>.nolist</code> decrements it. Assembly listings are
  6862. generated whenever the counter is greater than zero.
  6863. </p>
  6864. <hr>
  6865. <span id="Nop"></span><div class="header">
  6866. <p>
  6867. Next: <a href="#Nops" accesskey="n" rel="next">Nops</a>, Previous: <a href="#Nolist" accesskey="p" rel="prev">Nolist</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6868. </div>
  6869. <span id="g_t_002enop-_005bsize_005d"></span><h3 class="section">7.67 <code>.nop [<var>size</var>]</code></h3>
  6870. <span id="index-nop-directive"></span>
  6871. <span id="index-filling-memory-with-no_002dop-instructions"></span>
  6872. <p>This directive emits no-op instructions. It is provided on all architectures,
  6873. allowing the creation of architecture neutral tests involving actual code. The
  6874. size of the generated instruction is target specific, but if the optional
  6875. <var>size</var> argument is given and resolves to an absolute positive value at that
  6876. point in assembly (no forward expressions allowed) then the fewest no-op
  6877. instructions are emitted that equal or exceed a total <var>size</var> in bytes.
  6878. <code>.nop</code> does affect the generation of DWARF debug line information.
  6879. Some targets do not support using <code>.nop</code> with <var>size</var>.
  6880. </p>
  6881. <hr>
  6882. <span id="Nops"></span><div class="header">
  6883. <p>
  6884. Next: <a href="#Octa" accesskey="n" rel="next">Octa</a>, Previous: <a href="#Nop" accesskey="p" rel="prev">Nop</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6885. </div>
  6886. <span id="g_t_002enops-size_005b_002c-control_005d"></span><h3 class="section">7.68 <code>.nops <var>size</var>[, <var>control</var>]</code></h3>
  6887. <span id="index-nops-directive"></span>
  6888. <span id="index-filling-memory-with-no_002dop-instructions-1"></span>
  6889. <p>This directive emits no-op instructions. It is specific to the Intel 80386 and
  6890. AMD x86-64 targets. It takes a <var>size</var> argument and generates <var>size</var>
  6891. bytes of no-op instructions. <var>size</var> must be absolute and positive. These
  6892. bytes do not affect the generation of DWARF debug line information.
  6893. </p>
  6894. <p>The optional <var>control</var> argument specifies a size limit for a single no-op
  6895. instruction. If not provided then a value of 0 is assumed. The valid values
  6896. of <var>control</var> are between 0 and 4 in 16-bit mode, between 0 and 7 when
  6897. tuning for older processors in 32-bit mode, between 0 and 11 in 64-bit mode or
  6898. when tuning for newer processors in 32-bit mode. When 0 is used, the no-op
  6899. instruction size limit is set to the maximum supported size.
  6900. </p>
  6901. <hr>
  6902. <span id="Octa"></span><div class="header">
  6903. <p>
  6904. Next: <a href="#Offset" accesskey="n" rel="next">Offset</a>, Previous: <a href="#Nops" accesskey="p" rel="prev">Nops</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6905. </div>
  6906. <span id="g_t_002eocta-bignums"></span><h3 class="section">7.69 <code>.octa <var>bignums</var></code></h3>
  6907. <span id="index-octa-directive"></span>
  6908. <span id="index-integer_002c-16_002dbyte"></span>
  6909. <span id="index-sixteen-byte-integer"></span>
  6910. <p>This directive expects zero or more bignums, separated by commas. For each
  6911. bignum, it emits a 16-byte integer.
  6912. </p>
  6913. <p>The term &ldquo;octa&rdquo; comes from contexts in which a &ldquo;word&rdquo; is two bytes;
  6914. hence <em>octa</em>-word for 16 bytes.
  6915. </p>
  6916. <hr>
  6917. <span id="Offset"></span><div class="header">
  6918. <p>
  6919. Next: <a href="#Org" accesskey="n" rel="next">Org</a>, Previous: <a href="#Octa" accesskey="p" rel="prev">Octa</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6920. </div>
  6921. <span id="g_t_002eoffset-loc"></span><h3 class="section">7.70 <code>.offset <var>loc</var></code></h3>
  6922. <span id="index-offset-directive"></span>
  6923. <p>Set the location counter to <var>loc</var> in the absolute section. <var>loc</var> must
  6924. be an absolute expression. This directive may be useful for defining
  6925. symbols with absolute values. Do not confuse it with the <code>.org</code>
  6926. directive.
  6927. </p>
  6928. <hr>
  6929. <span id="Org"></span><div class="header">
  6930. <p>
  6931. Next: <a href="#P2align" accesskey="n" rel="next">P2align</a>, Previous: <a href="#Offset" accesskey="p" rel="prev">Offset</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6932. </div>
  6933. <span id="g_t_002eorg-new_002dlc-_002c-fill"></span><h3 class="section">7.71 <code>.org <var>new-lc</var> , <var>fill</var></code></h3>
  6934. <span id="index-org-directive"></span>
  6935. <span id="index-location-counter_002c-advancing"></span>
  6936. <span id="index-advancing-location-counter"></span>
  6937. <span id="index-current-address_002c-advancing"></span>
  6938. <p>Advance the location counter of the current section to
  6939. <var>new-lc</var>. <var>new-lc</var> is either an absolute expression or an
  6940. expression with the same section as the current subsection. That is,
  6941. you can&rsquo;t use <code>.org</code> to cross sections: if <var>new-lc</var> has the
  6942. wrong section, the <code>.org</code> directive is ignored. To be compatible
  6943. with former assemblers, if the section of <var>new-lc</var> is absolute,
  6944. <code>as</code> issues a warning, then pretends the section of <var>new-lc</var>
  6945. is the same as the current subsection.
  6946. </p>
  6947. <p><code>.org</code> may only increase the location counter, or leave it
  6948. unchanged; you cannot use <code>.org</code> to move the location counter
  6949. backwards.
  6950. </p>
  6951. <p>Because <code>as</code> tries to assemble programs in one pass, <var>new-lc</var>
  6952. may not be undefined. If you really detest this restriction we eagerly await
  6953. a chance to share your improved assembler.
  6954. </p>
  6955. <p>Beware that the origin is relative to the start of the section, not
  6956. to the start of the subsection. This is compatible with other
  6957. people&rsquo;s assemblers.
  6958. </p>
  6959. <p>When the location counter (of the current subsection) is advanced, the
  6960. intervening bytes are filled with <var>fill</var> which should be an
  6961. absolute expression. If the comma and <var>fill</var> are omitted,
  6962. <var>fill</var> defaults to zero.
  6963. </p>
  6964. <hr>
  6965. <span id="P2align"></span><div class="header">
  6966. <p>
  6967. Next: <a href="#PopSection" accesskey="n" rel="next">PopSection</a>, Previous: <a href="#Org" accesskey="p" rel="prev">Org</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  6968. </div>
  6969. <span id="g_t_002ep2align_005bwl_005d-_005babs_002dexpr_005b_002c-abs_002dexpr_005b_002c-abs_002dexpr_005d_005d_005d"></span><h3 class="section">7.72 <code>.p2align[wl] [<var>abs-expr</var>[, <var>abs-expr</var>[, <var>abs-expr</var>]]]</code></h3>
  6970. <span id="index-padding-the-location-counter-given-a-power-of-two"></span>
  6971. <span id="index-p2align-directive"></span>
  6972. <p>Pad the location counter (in the current subsection) to a particular
  6973. storage boundary. The first expression (which must be absolute) is the
  6974. number of low-order zero bits the location counter must have after
  6975. advancement. For example &lsquo;<samp>.p2align 3</samp>&rsquo; advances the location
  6976. counter until it is a multiple of 8. If the location counter is already a
  6977. multiple of 8, no change is needed. If the expression is omitted then a
  6978. default value of 0 is used, effectively disabling alignment requirements.
  6979. </p>
  6980. <p>The second expression (also absolute) gives the fill value to be stored in the
  6981. padding bytes. It (and the comma) may be omitted. If it is omitted, the
  6982. padding bytes are normally zero. However, on most systems, if the section is
  6983. marked as containing code and the fill value is omitted, the space is filled
  6984. with no-op instructions.
  6985. </p>
  6986. <p>The third expression is also absolute, and is also optional. If it is present,
  6987. it is the maximum number of bytes that should be skipped by this alignment
  6988. directive. If doing the alignment would require skipping more bytes than the
  6989. specified maximum, then the alignment is not done at all. You can omit the
  6990. fill value (the second argument) entirely by simply using two commas after the
  6991. required alignment; this can be useful if you want the alignment to be filled
  6992. with no-op instructions when appropriate.
  6993. </p>
  6994. <span id="index-p2alignw-directive"></span>
  6995. <span id="index-p2alignl-directive"></span>
  6996. <p>The <code>.p2alignw</code> and <code>.p2alignl</code> directives are variants of the
  6997. <code>.p2align</code> directive. The <code>.p2alignw</code> directive treats the fill
  6998. pattern as a two byte word value. The <code>.p2alignl</code> directives treats the
  6999. fill pattern as a four byte longword value. For example, <code>.p2alignw
  7000. 2,0x368d</code> will align to a multiple of 4. If it skips two bytes, they will be
  7001. filled in with the value 0x368d (the exact placement of the bytes depends upon
  7002. the endianness of the processor). If it skips 1 or 3 bytes, the fill value is
  7003. undefined.
  7004. </p>
  7005. <hr>
  7006. <span id="PopSection"></span><div class="header">
  7007. <p>
  7008. Next: <a href="#Previous" accesskey="n" rel="next">Previous</a>, Previous: <a href="#P2align" accesskey="p" rel="prev">P2align</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7009. </div>
  7010. <span id="g_t_002epopsection"></span><h3 class="section">7.73 <code>.popsection</code></h3>
  7011. <span id="index-popsection-directive"></span>
  7012. <span id="index-Section-Stack"></span>
  7013. <p>This is one of the ELF section stack manipulation directives. The others are
  7014. <code>.section</code> (see <a href="#Section">Section</a>), <code>.subsection</code> (see <a href="#SubSection">SubSection</a>),
  7015. <code>.pushsection</code> (see <a href="#PushSection">PushSection</a>), and <code>.previous</code>
  7016. (see <a href="#Previous">Previous</a>).
  7017. </p>
  7018. <p>This directive replaces the current section (and subsection) with the top
  7019. section (and subsection) on the section stack. This section is popped off the
  7020. stack.
  7021. </p>
  7022. <hr>
  7023. <span id="Previous"></span><div class="header">
  7024. <p>
  7025. Next: <a href="#Print" accesskey="n" rel="next">Print</a>, Previous: <a href="#PopSection" accesskey="p" rel="prev">PopSection</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7026. </div>
  7027. <span id="g_t_002eprevious"></span><h3 class="section">7.74 <code>.previous</code></h3>
  7028. <span id="index-previous-directive"></span>
  7029. <span id="index-Section-Stack-1"></span>
  7030. <p>This is one of the ELF section stack manipulation directives. The others are
  7031. <code>.section</code> (see <a href="#Section">Section</a>), <code>.subsection</code> (see <a href="#SubSection">SubSection</a>),
  7032. <code>.pushsection</code> (see <a href="#PushSection">PushSection</a>), and <code>.popsection</code>
  7033. (see <a href="#PopSection">PopSection</a>).
  7034. </p>
  7035. <p>This directive swaps the current section (and subsection) with most recently
  7036. referenced section/subsection pair prior to this one. Multiple
  7037. <code>.previous</code> directives in a row will flip between two sections (and their
  7038. subsections). For example:
  7039. </p>
  7040. <div class="example">
  7041. <pre class="example">.section A
  7042. .subsection 1
  7043. .word 0x1234
  7044. .subsection 2
  7045. .word 0x5678
  7046. .previous
  7047. .word 0x9abc
  7048. </pre></div>
  7049. <p>Will place 0x1234 and 0x9abc into subsection 1 and 0x5678 into subsection 2 of
  7050. section A. Whilst:
  7051. </p>
  7052. <div class="example">
  7053. <pre class="example">.section A
  7054. .subsection 1
  7055. # Now in section A subsection 1
  7056. .word 0x1234
  7057. .section B
  7058. .subsection 0
  7059. # Now in section B subsection 0
  7060. .word 0x5678
  7061. .subsection 1
  7062. # Now in section B subsection 1
  7063. .word 0x9abc
  7064. .previous
  7065. # Now in section B subsection 0
  7066. .word 0xdef0
  7067. </pre></div>
  7068. <p>Will place 0x1234 into section A, 0x5678 and 0xdef0 into subsection 0 of
  7069. section B and 0x9abc into subsection 1 of section B.
  7070. </p>
  7071. <p>In terms of the section stack, this directive swaps the current section with
  7072. the top section on the section stack.
  7073. </p>
  7074. <hr>
  7075. <span id="Print"></span><div class="header">
  7076. <p>
  7077. Next: <a href="#Protected" accesskey="n" rel="next">Protected</a>, Previous: <a href="#Previous" accesskey="p" rel="prev">Previous</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7078. </div>
  7079. <span id="g_t_002eprint-string"></span><h3 class="section">7.75 <code>.print <var>string</var></code></h3>
  7080. <span id="index-print-directive"></span>
  7081. <p><code>as</code> will print <var>string</var> on the standard output during
  7082. assembly. You must put <var>string</var> in double quotes.
  7083. </p>
  7084. <hr>
  7085. <span id="Protected"></span><div class="header">
  7086. <p>
  7087. Next: <a href="#Psize" accesskey="n" rel="next">Psize</a>, Previous: <a href="#Print" accesskey="p" rel="prev">Print</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7088. </div>
  7089. <span id="g_t_002eprotected-names"></span><h3 class="section">7.76 <code>.protected <var>names</var></code></h3>
  7090. <span id="index-protected-directive"></span>
  7091. <span id="index-visibility-2"></span>
  7092. <p>This is one of the ELF visibility directives. The other two are
  7093. <code>.hidden</code> (see <a href="#Hidden">Hidden</a>) and <code>.internal</code> (see <a href="#Internal">Internal</a>).
  7094. </p>
  7095. <p>This directive overrides the named symbols default visibility (which is set by
  7096. their binding: local, global or weak). The directive sets the visibility to
  7097. <code>protected</code> which means that any references to the symbols from within the
  7098. components that defines them must be resolved to the definition in that
  7099. component, even if a definition in another component would normally preempt
  7100. this.
  7101. </p>
  7102. <hr>
  7103. <span id="Psize"></span><div class="header">
  7104. <p>
  7105. Next: <a href="#Purgem" accesskey="n" rel="next">Purgem</a>, Previous: <a href="#Protected" accesskey="p" rel="prev">Protected</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7106. </div>
  7107. <span id="g_t_002epsize-lines-_002c-columns"></span><h3 class="section">7.77 <code>.psize <var>lines</var> , <var>columns</var></code></h3>
  7108. <span id="index-psize-directive"></span>
  7109. <span id="index-listing-control_003a-paper-size"></span>
  7110. <span id="index-paper-size_002c-for-listings"></span>
  7111. <p>Use this directive to declare the number of lines&mdash;and, optionally, the
  7112. number of columns&mdash;to use for each page, when generating listings.
  7113. </p>
  7114. <p>If you do not use <code>.psize</code>, listings use a default line-count
  7115. of 60. You may omit the comma and <var>columns</var> specification; the
  7116. default width is 200 columns.
  7117. </p>
  7118. <p><code>as</code> generates formfeeds whenever the specified number of
  7119. lines is exceeded (or whenever you explicitly request one, using
  7120. <code>.eject</code>).
  7121. </p>
  7122. <p>If you specify <var>lines</var> as <code>0</code>, no formfeeds are generated save
  7123. those explicitly specified with <code>.eject</code>.
  7124. </p>
  7125. <hr>
  7126. <span id="Purgem"></span><div class="header">
  7127. <p>
  7128. Next: <a href="#PushSection" accesskey="n" rel="next">PushSection</a>, Previous: <a href="#Psize" accesskey="p" rel="prev">Psize</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7129. </div>
  7130. <span id="g_t_002epurgem-name"></span><h3 class="section">7.78 <code>.purgem <var>name</var></code></h3>
  7131. <span id="index-purgem-directive"></span>
  7132. <p>Undefine the macro <var>name</var>, so that later uses of the string will not be
  7133. expanded. See <a href="#Macro">Macro</a>.
  7134. </p>
  7135. <hr>
  7136. <span id="PushSection"></span><div class="header">
  7137. <p>
  7138. Next: <a href="#Quad" accesskey="n" rel="next">Quad</a>, Previous: <a href="#Purgem" accesskey="p" rel="prev">Purgem</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7139. </div>
  7140. <span id="g_t_002epushsection-name-_005b_002c-subsection_005d-_005b_002c-_0022flags_0022_005b_002c-_0040type_005b_002carguments_005d_005d_005d"></span><h3 class="section">7.79 <code>.pushsection <var>name</var> [, <var>subsection</var>] [, &quot;<var>flags</var>&quot;[, @<var>type</var>[,<var>arguments</var>]]]</code></h3>
  7141. <span id="index-pushsection-directive"></span>
  7142. <span id="index-Section-Stack-2"></span>
  7143. <p>This is one of the ELF section stack manipulation directives. The others are
  7144. <code>.section</code> (see <a href="#Section">Section</a>), <code>.subsection</code> (see <a href="#SubSection">SubSection</a>),
  7145. <code>.popsection</code> (see <a href="#PopSection">PopSection</a>), and <code>.previous</code>
  7146. (see <a href="#Previous">Previous</a>).
  7147. </p>
  7148. <p>This directive pushes the current section (and subsection) onto the
  7149. top of the section stack, and then replaces the current section and
  7150. subsection with <code>name</code> and <code>subsection</code>. The optional
  7151. <code>flags</code>, <code>type</code> and <code>arguments</code> are treated the same
  7152. as in the <code>.section</code> (see <a href="#Section">Section</a>) directive.
  7153. </p>
  7154. <hr>
  7155. <span id="Quad"></span><div class="header">
  7156. <p>
  7157. Next: <a href="#Reloc" accesskey="n" rel="next">Reloc</a>, Previous: <a href="#PushSection" accesskey="p" rel="prev">PushSection</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7158. </div>
  7159. <span id="g_t_002equad-expressions"></span><h3 class="section">7.80 <code>.quad <var>expressions</var></code></h3>
  7160. <span id="index-quad-directive"></span>
  7161. <p>For 64-bit architectures, or more generally with any GAS configured to support
  7162. 64-bit target virtual addresses, this is like &lsquo;<samp>.int</samp>&rsquo;, but emitting 64-bit
  7163. quantities. Otherwise <code>.quad</code> expects zero or more bignums, separated by
  7164. commas. For each item, it emits an 8-byte integer. If a bignum won&rsquo;t fit in
  7165. 8 bytes, a warning message is printed and just the lowest order 8 bytes of the
  7166. bignum are taken.
  7167. <span id="index-eight_002dbyte-integer"></span>
  7168. <span id="index-integer_002c-8_002dbyte"></span>
  7169. </p>
  7170. <p>The term &ldquo;quad&rdquo; comes from contexts in which a &ldquo;word&rdquo; is two bytes;
  7171. hence <em>quad</em>-word for 8 bytes.
  7172. </p>
  7173. <p>Note - this directive is not intended for encoding instructions, and it will
  7174. not trigger effects like DWARF line number generation. Instead some targets
  7175. support special directives for encoding arbitrary binary sequences as
  7176. instructions such as <code>.insn</code> or <code>.inst</code>.
  7177. </p>
  7178. <hr>
  7179. <span id="Reloc"></span><div class="header">
  7180. <p>
  7181. Next: <a href="#Rept" accesskey="n" rel="next">Rept</a>, Previous: <a href="#Quad" accesskey="p" rel="prev">Quad</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7182. </div>
  7183. <span id="g_t_002ereloc-offset_002c-reloc_005fname_005b_002c-expression_005d"></span><h3 class="section">7.81 <code>.reloc <var>offset</var>, <var>reloc_name</var>[, <var>expression</var>]</code></h3>
  7184. <span id="index-reloc-directive"></span>
  7185. <p>Generate a relocation at <var>offset</var> of type <var>reloc_name</var> with value
  7186. <var>expression</var>. If <var>offset</var> is a number, the relocation is generated in
  7187. the current section. If <var>offset</var> is an expression that resolves to a
  7188. symbol plus offset, the relocation is generated in the given symbol&rsquo;s section.
  7189. <var>expression</var>, if present, must resolve to a symbol plus addend or to an
  7190. absolute value, but note that not all targets support an addend. e.g. ELF REL
  7191. targets such as i386 store an addend in the section contents rather than in the
  7192. relocation. This low level interface does not support addends stored in the
  7193. section.
  7194. </p>
  7195. <hr>
  7196. <span id="Rept"></span><div class="header">
  7197. <p>
  7198. Next: <a href="#Sbttl" accesskey="n" rel="next">Sbttl</a>, Previous: <a href="#Reloc" accesskey="p" rel="prev">Reloc</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7199. </div>
  7200. <span id="g_t_002erept-count"></span><h3 class="section">7.82 <code>.rept <var>count</var></code></h3>
  7201. <span id="index-rept-directive"></span>
  7202. <p>Repeat the sequence of lines between the <code>.rept</code> directive and the next
  7203. <code>.endr</code> directive <var>count</var> times.
  7204. </p>
  7205. <p>For example, assembling
  7206. </p>
  7207. <div class="example">
  7208. <pre class="example"> .rept 3
  7209. .long 0
  7210. .endr
  7211. </pre></div>
  7212. <p>is equivalent to assembling
  7213. </p>
  7214. <div class="example">
  7215. <pre class="example"> .long 0
  7216. .long 0
  7217. .long 0
  7218. </pre></div>
  7219. <p>A count of zero is allowed, but nothing is generated. Negative counts are not
  7220. allowed and if encountered will be treated as if they were zero.
  7221. </p>
  7222. <hr>
  7223. <span id="Sbttl"></span><div class="header">
  7224. <p>
  7225. Next: <a href="#Scl" accesskey="n" rel="next">Scl</a>, Previous: <a href="#Rept" accesskey="p" rel="prev">Rept</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7226. </div>
  7227. <span id="g_t_002esbttl-_0022subheading_0022"></span><h3 class="section">7.83 <code>.sbttl &quot;<var>subheading</var>&quot;</code></h3>
  7228. <span id="index-sbttl-directive"></span>
  7229. <span id="index-subtitles-for-listings"></span>
  7230. <span id="index-listing-control_003a-subtitle"></span>
  7231. <p>Use <var>subheading</var> as the title (third line, immediately after the
  7232. title line) when generating assembly listings.
  7233. </p>
  7234. <p>This directive affects subsequent pages, as well as the current page if
  7235. it appears within ten lines of the top of a page.
  7236. </p>
  7237. <hr>
  7238. <span id="Scl"></span><div class="header">
  7239. <p>
  7240. Next: <a href="#Section" accesskey="n" rel="next">Section</a>, Previous: <a href="#Sbttl" accesskey="p" rel="prev">Sbttl</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7241. </div>
  7242. <span id="g_t_002escl-class"></span><h3 class="section">7.84 <code>.scl <var>class</var></code></h3>
  7243. <span id="index-scl-directive"></span>
  7244. <span id="index-symbol-storage-class-_0028COFF_0029"></span>
  7245. <span id="index-COFF-symbol-storage-class"></span>
  7246. <p>Set the storage-class value for a symbol. This directive may only be
  7247. used inside a <code>.def</code>/<code>.endef</code> pair. Storage class may flag
  7248. whether a symbol is static or external, or it may record further
  7249. symbolic debugging information.
  7250. </p>
  7251. <hr>
  7252. <span id="Section"></span><div class="header">
  7253. <p>
  7254. Next: <a href="#Set" accesskey="n" rel="next">Set</a>, Previous: <a href="#Scl" accesskey="p" rel="prev">Scl</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7255. </div>
  7256. <span id="g_t_002esection-name"></span><h3 class="section">7.85 <code>.section <var>name</var></code></h3>
  7257. <span id="index-named-section"></span>
  7258. <p>Use the <code>.section</code> directive to assemble the following code into a section
  7259. named <var>name</var>.
  7260. </p>
  7261. <p>This directive is only supported for targets that actually support arbitrarily
  7262. named sections; on <code>a.out</code> targets, for example, it is not accepted, even
  7263. with a standard <code>a.out</code> section name.
  7264. </p>
  7265. <span id="COFF-Version"></span><h4 class="subheading">COFF Version</h4>
  7266. <span id="index-section-directive-_0028COFF-version_0029"></span>
  7267. <p>For COFF targets, the <code>.section</code> directive is used in one of the following
  7268. ways:
  7269. </p>
  7270. <div class="example">
  7271. <pre class="example">.section <var>name</var>[, &quot;<var>flags</var>&quot;]
  7272. .section <var>name</var>[, <var>subsection</var>]
  7273. </pre></div>
  7274. <p>If the optional argument is quoted, it is taken as flags to use for the
  7275. section. Each flag is a single character. The following flags are recognized:
  7276. </p>
  7277. <dl compact="compact">
  7278. <dt><code>b</code></dt>
  7279. <dd><p>bss section (uninitialized data)
  7280. </p></dd>
  7281. <dt><code>n</code></dt>
  7282. <dd><p>section is not loaded
  7283. </p></dd>
  7284. <dt><code>w</code></dt>
  7285. <dd><p>writable section
  7286. </p></dd>
  7287. <dt><code>d</code></dt>
  7288. <dd><p>data section
  7289. </p></dd>
  7290. <dt><code>e</code></dt>
  7291. <dd><p>exclude section from linking
  7292. </p></dd>
  7293. <dt><code>r</code></dt>
  7294. <dd><p>read-only section
  7295. </p></dd>
  7296. <dt><code>x</code></dt>
  7297. <dd><p>executable section
  7298. </p></dd>
  7299. <dt><code>s</code></dt>
  7300. <dd><p>shared section (meaningful for PE targets)
  7301. </p></dd>
  7302. <dt><code>a</code></dt>
  7303. <dd><p>ignored. (For compatibility with the ELF version)
  7304. </p></dd>
  7305. <dt><code>y</code></dt>
  7306. <dd><p>section is not readable (meaningful for PE targets)
  7307. </p></dd>
  7308. <dt><code>0-9</code></dt>
  7309. <dd><p>single-digit power-of-two section alignment (GNU extension)
  7310. </p></dd>
  7311. </dl>
  7312. <p>If no flags are specified, the default flags depend upon the section name. If
  7313. the section name is not recognized, the default will be for the section to be
  7314. loaded and writable. Note the <code>n</code> and <code>w</code> flags remove attributes
  7315. from the section, rather than adding them, so if they are used on their own it
  7316. will be as if no flags had been specified at all.
  7317. </p>
  7318. <p>If the optional argument to the <code>.section</code> directive is not quoted, it is
  7319. taken as a subsection number (see <a href="#Sub_002dSections">Sub-Sections</a>).
  7320. </p>
  7321. <span id="ELF-Version"></span><h4 class="subheading">ELF Version</h4>
  7322. <span id="index-Section-Stack-3"></span>
  7323. <p>This is one of the ELF section stack manipulation directives. The others are
  7324. <code>.subsection</code> (see <a href="#SubSection">SubSection</a>), <code>.pushsection</code>
  7325. (see <a href="#PushSection">PushSection</a>), <code>.popsection</code> (see <a href="#PopSection">PopSection</a>), and
  7326. <code>.previous</code> (see <a href="#Previous">Previous</a>).
  7327. </p>
  7328. <span id="index-section-directive-_0028ELF-version_0029"></span>
  7329. <p>For ELF targets, the <code>.section</code> directive is used like this:
  7330. </p>
  7331. <div class="example">
  7332. <pre class="example">.section <var>name</var> [, &quot;<var>flags</var>&quot;[, @<var>type</var>[,<var>flag_specific_arguments</var>]]]
  7333. </pre></div>
  7334. <span id="Section-Name-Substitutions"></span><span id="index-_002d_002dsectname_002dsubst"></span>
  7335. <span id="index-section-name-substitution"></span>
  7336. <p>If the &lsquo;<samp>--sectname-subst</samp>&rsquo; command-line option is provided, the <var>name</var>
  7337. argument may contain a substitution sequence. Only <code>%S</code> is supported
  7338. at the moment, and substitutes the current section name. For example:
  7339. </p>
  7340. <div class="example">
  7341. <pre class="example">.macro exception_code
  7342. .section %S.exception
  7343. [exception code here]
  7344. .previous
  7345. .endm
  7346. .text
  7347. [code]
  7348. exception_code
  7349. [...]
  7350. .section .init
  7351. [init code]
  7352. exception_code
  7353. [...]
  7354. </pre></div>
  7355. <p>The two <code>exception_code</code> invocations above would create the
  7356. <code>.text.exception</code> and <code>.init.exception</code> sections respectively.
  7357. This is useful e.g. to discriminate between ancillary sections that are
  7358. tied to setup code to be discarded after use from ancillary sections that
  7359. need to stay resident without having to define multiple <code>exception_code</code>
  7360. macros just for that purpose.
  7361. </p>
  7362. <p>The optional <var>flags</var> argument is a quoted string which may contain any
  7363. combination of the following characters:
  7364. </p>
  7365. <dl compact="compact">
  7366. <dt><code>a</code></dt>
  7367. <dd><p>section is allocatable
  7368. </p></dd>
  7369. <dt><code>d</code></dt>
  7370. <dd><p>section is a GNU_MBIND section
  7371. </p></dd>
  7372. <dt><code>e</code></dt>
  7373. <dd><p>section is excluded from executable and shared library.
  7374. </p></dd>
  7375. <dt><code>o</code></dt>
  7376. <dd><p>section references a symbol defined in another section (the linked-to
  7377. section) in the same file.
  7378. </p></dd>
  7379. <dt><code>w</code></dt>
  7380. <dd><p>section is writable
  7381. </p></dd>
  7382. <dt><code>x</code></dt>
  7383. <dd><p>section is executable
  7384. </p></dd>
  7385. <dt><code>M</code></dt>
  7386. <dd><p>section is mergeable
  7387. </p></dd>
  7388. <dt><code>S</code></dt>
  7389. <dd><p>section contains zero terminated strings
  7390. </p></dd>
  7391. <dt><code>G</code></dt>
  7392. <dd><p>section is a member of a section group
  7393. </p></dd>
  7394. <dt><code>T</code></dt>
  7395. <dd><p>section is used for thread-local-storage
  7396. </p></dd>
  7397. <dt><code>?</code></dt>
  7398. <dd><p>section is a member of the previously-current section&rsquo;s group, if any
  7399. </p></dd>
  7400. <dt><code>+</code></dt>
  7401. <dd><p>section inherits attributes and (unless explicitly specified) type from the
  7402. previously-current section, adding other attributes as specified
  7403. </p></dd>
  7404. <dt><code>-</code></dt>
  7405. <dd><p>section inherits attributes and (unless explicitly specified) type from the
  7406. previously-current section, removing other attributes as specified
  7407. </p></dd>
  7408. <dt><code>R</code></dt>
  7409. <dd><p>retained section (apply SHF_GNU_RETAIN to prevent linker garbage
  7410. collection, GNU ELF extension)
  7411. </p></dd>
  7412. <dt><code><code>&lt;number&gt;</code></code></dt>
  7413. <dd><p>a numeric value indicating the bits to be set in the ELF section header&rsquo;s flags
  7414. field. Note - if one or more of the alphabetic characters described above is
  7415. also included in the flags field, their bit values will be ORed into the
  7416. resulting value.
  7417. </p></dd>
  7418. <dt><code><code>&lt;target specific&gt;</code></code></dt>
  7419. <dd><p>some targets extend this list with their own flag characters
  7420. </p></dd>
  7421. </dl>
  7422. <p>Note - once a section&rsquo;s flags have been set they cannot be changed. There are
  7423. a few exceptions to this rule however. Processor and application specific
  7424. flags can be added to an already defined section. The <code>.interp</code>,
  7425. <code>.strtab</code> and <code>.symtab</code> sections can have the allocate flag
  7426. (<code>a</code>) set after they are initially defined, and the <code>.note-GNU-stack</code>
  7427. section may have the executable (<code>x</code>) flag added. Also note that the
  7428. <code>.attach_to_group</code> directive can be used to add a section to a group even
  7429. if the section was not originally declared to be part of that group.
  7430. </p>
  7431. <p>Note further that <code>+</code> and <code>-</code> need to come first and can only take
  7432. the effect described here unless overridden by a target. The attributes
  7433. inherited are those in effect at the time the directive is processed.
  7434. Attributes added later (see above) will not be inherited. Using either
  7435. together with <code>?</code> is undefined at this point.
  7436. </p>
  7437. <p>The optional <var>type</var> argument may contain one of the following constants:
  7438. </p>
  7439. <dl compact="compact">
  7440. <dt><code>@progbits</code></dt>
  7441. <dd><p>section contains data
  7442. </p></dd>
  7443. <dt><code>@nobits</code></dt>
  7444. <dd><p>section does not contain data (i.e., section only occupies space)
  7445. </p></dd>
  7446. <dt><code>@note</code></dt>
  7447. <dd><p>section contains data which is used by things other than the program
  7448. </p></dd>
  7449. <dt><code>@init_array</code></dt>
  7450. <dd><p>section contains an array of pointers to init functions
  7451. </p></dd>
  7452. <dt><code>@fini_array</code></dt>
  7453. <dd><p>section contains an array of pointers to finish functions
  7454. </p></dd>
  7455. <dt><code>@preinit_array</code></dt>
  7456. <dd><p>section contains an array of pointers to pre-init functions
  7457. </p></dd>
  7458. <dt><code>@<code>&lt;number&gt;</code></code></dt>
  7459. <dd><p>a numeric value to be set as the ELF section header&rsquo;s type field.
  7460. </p></dd>
  7461. <dt><code>@<code>&lt;target specific&gt;</code></code></dt>
  7462. <dd><p>some targets extend this list with their own types
  7463. </p></dd>
  7464. </dl>
  7465. <p>Many targets only support the first three section types. The type may be
  7466. enclosed in double quotes if necessary.
  7467. </p>
  7468. <p>Note on targets where the <code>@</code> character is the start of a comment (eg
  7469. ARM) then another character is used instead. For example the ARM port uses the
  7470. <code>%</code> character.
  7471. </p>
  7472. <p>Note - some sections, eg <code>.text</code> and <code>.data</code> are considered to be
  7473. special and have fixed types. Any attempt to declare them with a different
  7474. type will generate an error from the assembler.
  7475. </p>
  7476. <p>If <var>flags</var> contains the <code>M</code> symbol then the <var>type</var> argument must
  7477. be specified as well as an extra argument&mdash;<var>entsize</var>&mdash;like this:
  7478. </p>
  7479. <div class="example">
  7480. <pre class="example">.section <var>name</var> , &quot;<var>flags</var>&quot;M, @<var>type</var>, <var>entsize</var>
  7481. </pre></div>
  7482. <p>Sections with the <code>M</code> flag but not <code>S</code> flag must contain fixed size
  7483. constants, each <var>entsize</var> octets long. Sections with both <code>M</code> and
  7484. <code>S</code> must contain zero terminated strings where each character is
  7485. <var>entsize</var> bytes long. The linker may remove duplicates within sections with
  7486. the same name, same entity size and same flags. <var>entsize</var> must be an
  7487. absolute expression. For sections with both <code>M</code> and <code>S</code>, a string
  7488. which is a suffix of a larger string is considered a duplicate. Thus
  7489. <code>&quot;def&quot;</code> will be merged with <code>&quot;abcdef&quot;</code>; A reference to the first
  7490. <code>&quot;def&quot;</code> will be changed to a reference to <code>&quot;abcdef&quot;+3</code>.
  7491. </p>
  7492. <p>If <var>flags</var> contains the <code>o</code> flag, then the <var>type</var> argument
  7493. must be present along with an additional field like this:
  7494. </p>
  7495. <div class="example">
  7496. <pre class="example">.section <var>name</var>,&quot;<var>flags</var>&quot;o,@<var>type</var>,<var>SymbolName</var>|<var>SectionIndex</var>
  7497. </pre></div>
  7498. <p>The <var>SymbolName</var> field specifies the symbol name which the section
  7499. references. Alternatively a numeric <var>SectionIndex</var> can be provided. This
  7500. is not generally a good idea as section indices are rarely known at assembly
  7501. time, but the facility is provided for testing purposes. An index of zero is
  7502. allowed. It indicates that the linked-to section has already been discarded.
  7503. </p>
  7504. <p>Note: If both the <var>M</var> and <var>o</var> flags are present, then the fields
  7505. for the Merge flag should come first, like this:
  7506. </p>
  7507. <div class="example">
  7508. <pre class="example">.section <var>name</var>,&quot;<var>flags</var>&quot;Mo,@<var>type</var>,<var>entsize</var>,<var>SymbolName</var>
  7509. </pre></div>
  7510. <p>If <var>flags</var> contains the <code>G</code> symbol then the <var>type</var> argument must
  7511. be present along with an additional field like this:
  7512. </p>
  7513. <div class="example">
  7514. <pre class="example">.section <var>name</var> , &quot;<var>flags</var>&quot;G, @<var>type</var>, <var>GroupName</var>[, <var>linkage</var>]
  7515. </pre></div>
  7516. <p>The <var>GroupName</var> field specifies the name of the section group to which this
  7517. particular section belongs. The optional linkage field can contain:
  7518. </p>
  7519. <dl compact="compact">
  7520. <dt><code>comdat</code></dt>
  7521. <dd><p>indicates that only one copy of this section should be retained
  7522. </p></dd>
  7523. <dt><code>.gnu.linkonce</code></dt>
  7524. <dd><p>an alias for comdat
  7525. </p></dd>
  7526. </dl>
  7527. <p>Note: if both the <var>M</var> and <var>G</var> flags are present then the fields for
  7528. the Merge flag should come first, like this:
  7529. </p>
  7530. <div class="example">
  7531. <pre class="example">.section <var>name</var> , &quot;<var>flags</var>&quot;MG, @<var>type</var>, <var>entsize</var>, <var>GroupName</var>[, <var>linkage</var>]
  7532. </pre></div>
  7533. <p>If both <code>o</code> flag and <code>G</code> flag are present, then the
  7534. <var>SymbolName</var> field for <code>o</code> comes first, like this:
  7535. </p>
  7536. <div class="example">
  7537. <pre class="example">.section <var>name</var>,&quot;<var>flags</var>&quot;oG,@<var>type</var>,<var>SymbolName</var>,<var>GroupName</var>[,<var>linkage</var>]
  7538. </pre></div>
  7539. <p>If <var>flags</var> contains the <code>?</code> symbol then it may not also contain the
  7540. <code>G</code> symbol and the <var>GroupName</var> or <var>linkage</var> fields should not be
  7541. present. Instead, <code>?</code> says to consider the section that&rsquo;s current before
  7542. this directive. If that section used <code>G</code>, then the new section will use
  7543. <code>G</code> with those same <var>GroupName</var> and <var>linkage</var> fields implicitly.
  7544. If not, then the <code>?</code> symbol has no effect.
  7545. </p>
  7546. <p>The optional <var>unique,<code>&lt;number&gt;</code></var> argument must come last. It
  7547. assigns <var><code>&lt;number&gt;</code></var> as a unique section ID to distinguish
  7548. different sections with the same section name like these:
  7549. </p>
  7550. <div class="example">
  7551. <pre class="example">.section <var>name</var>,&quot;<var>flags</var>&quot;,@<var>type</var>,<var>unique,<code>&lt;number&gt;</code></var>
  7552. .section <var>name</var>,&quot;<var>flags</var>&quot;G,@<var>type</var>,<var>GroupName</var>,[<var>linkage</var>],<var>unique,<code>&lt;number&gt;</code></var>
  7553. .section <var>name</var>,&quot;<var>flags</var>&quot;MG,@<var>type</var>,<var>entsize</var>,<var>GroupName</var>[,<var>linkage</var>],<var>unique,<code>&lt;number&gt;</code></var>
  7554. </pre></div>
  7555. <p>The valid values of <var><code>&lt;number&gt;</code></var> are between 0 and 4294967295.
  7556. </p>
  7557. <p>If no flags are specified, the default flags depend upon the section name. If
  7558. the section name is not recognized, the default will be for the section to have
  7559. none of the above flags: it will not be allocated in memory, nor writable, nor
  7560. executable. The section will contain data.
  7561. </p>
  7562. <p>For SPARC ELF targets, the assembler supports another type of <code>.section</code>
  7563. directive for compatibility with the Solaris assembler:
  7564. </p>
  7565. <div class="example">
  7566. <pre class="example">.section &quot;<var>name</var>&quot;[, <var>flags</var>...]
  7567. </pre></div>
  7568. <p>Note that the section name is quoted. There may be a sequence of comma
  7569. separated flags:
  7570. </p>
  7571. <dl compact="compact">
  7572. <dt><code>#alloc</code></dt>
  7573. <dd><p>section is allocatable
  7574. </p></dd>
  7575. <dt><code>#write</code></dt>
  7576. <dd><p>section is writable
  7577. </p></dd>
  7578. <dt><code>#execinstr</code></dt>
  7579. <dd><p>section is executable
  7580. </p></dd>
  7581. <dt><code>#exclude</code></dt>
  7582. <dd><p>section is excluded from executable and shared library.
  7583. </p></dd>
  7584. <dt><code>#tls</code></dt>
  7585. <dd><p>section is used for thread local storage
  7586. </p></dd>
  7587. </dl>
  7588. <p>This directive replaces the current section and subsection. See the
  7589. contents of the gas testsuite directory <code>gas/testsuite/gas/elf</code> for
  7590. some examples of how this directive and the other section stack directives
  7591. work.
  7592. </p>
  7593. <hr>
  7594. <span id="Set"></span><div class="header">
  7595. <p>
  7596. Next: <a href="#Short" accesskey="n" rel="next">Short</a>, Previous: <a href="#Section" accesskey="p" rel="prev">Section</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7597. </div>
  7598. <span id="g_t_002eset-symbol_002c-expression"></span><h3 class="section">7.86 <code>.set <var>symbol</var>, <var>expression</var></code></h3>
  7599. <span id="index-set-directive"></span>
  7600. <span id="index-symbol-value_002c-setting"></span>
  7601. <p>Set the value of <var>symbol</var> to <var>expression</var>. This
  7602. changes <var>symbol</var>&rsquo;s value and type to conform to
  7603. <var>expression</var>. If <var>symbol</var> was flagged as external, it remains
  7604. flagged (see <a href="#Symbol-Attributes">Symbol Attributes</a>).
  7605. </p>
  7606. <p>You may <code>.set</code> a symbol many times in the same assembly provided that the
  7607. values given to the symbol are constants. Values that are based on expressions
  7608. involving other symbols are allowed, but some targets may restrict this to only
  7609. being done once per assembly. This is because those targets do not set the
  7610. addresses of symbols at assembly time, but rather delay the assignment until a
  7611. final link is performed. This allows the linker a chance to change the code in
  7612. the files, changing the location of, and the relative distance between, various
  7613. different symbols.
  7614. </p>
  7615. <p>If you <code>.set</code> a global symbol, the value stored in the object
  7616. file is the last value stored into it.
  7617. </p>
  7618. <p>On Z80 <code>set</code> is a real instruction, use <code>.set</code> or
  7619. &lsquo;<samp><var>symbol</var> defl <var>expression</var></samp>&rsquo; instead.
  7620. </p>
  7621. <hr>
  7622. <span id="Short"></span><div class="header">
  7623. <p>
  7624. Next: <a href="#Single" accesskey="n" rel="next">Single</a>, Previous: <a href="#Set" accesskey="p" rel="prev">Set</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7625. </div>
  7626. <span id="g_t_002eshort-expressions"></span><h3 class="section">7.87 <code>.short <var>expressions</var></code></h3>
  7627. <span id="index-short-directive"></span>
  7628. <p><code>.short</code> is normally the same as &lsquo;<samp>.word</samp>&rsquo;.
  7629. See <a href="#Word"><code>.word</code></a>.
  7630. </p>
  7631. <p>In some configurations, however, <code>.short</code> and <code>.word</code> generate
  7632. numbers of different lengths. See <a href="#Machine-Dependencies">Machine Dependencies</a>.
  7633. </p>
  7634. <p>Note - this directive is not intended for encoding instructions, and it will
  7635. not trigger effects like DWARF line number generation. Instead some targets
  7636. support special directives for encoding arbitrary binary sequences as
  7637. instructions such as <code>.insn</code> or <code>.inst</code>.
  7638. </p>
  7639. <hr>
  7640. <span id="Single"></span><div class="header">
  7641. <p>
  7642. Next: <a href="#Size" accesskey="n" rel="next">Size</a>, Previous: <a href="#Short" accesskey="p" rel="prev">Short</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7643. </div>
  7644. <span id="g_t_002esingle-flonums"></span><h3 class="section">7.88 <code>.single <var>flonums</var></code></h3>
  7645. <span id="index-single-directive"></span>
  7646. <span id="index-floating-point-numbers-_0028single_0029-1"></span>
  7647. <p>This directive assembles zero or more flonums, separated by commas. It
  7648. has the same effect as <code>.float</code>.
  7649. The exact kind of floating point numbers emitted depends on how
  7650. <code>as</code> is configured. See <a href="#Machine-Dependencies">Machine Dependencies</a>.
  7651. </p>
  7652. <hr>
  7653. <span id="Size"></span><div class="header">
  7654. <p>
  7655. Next: <a href="#Skip" accesskey="n" rel="next">Skip</a>, Previous: <a href="#Single" accesskey="p" rel="prev">Single</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7656. </div>
  7657. <span id="g_t_002esize"></span><h3 class="section">7.89 <code>.size</code></h3>
  7658. <p>This directive is used to set the size associated with a symbol.
  7659. </p>
  7660. <span id="COFF-Version-1"></span><h4 class="subheading">COFF Version</h4>
  7661. <span id="index-size-directive-_0028COFF-version_0029"></span>
  7662. <p>For COFF targets, the <code>.size</code> directive is only permitted inside
  7663. <code>.def</code>/<code>.endef</code> pairs. It is used like this:
  7664. </p>
  7665. <div class="example">
  7666. <pre class="example">.size <var>expression</var>
  7667. </pre></div>
  7668. <span id="ELF-Version-1"></span><h4 class="subheading">ELF Version</h4>
  7669. <span id="index-size-directive-_0028ELF-version_0029"></span>
  7670. <p>For ELF targets, the <code>.size</code> directive is used like this:
  7671. </p>
  7672. <div class="example">
  7673. <pre class="example">.size <var>name</var> , <var>expression</var>
  7674. </pre></div>
  7675. <p>This directive sets the size associated with a symbol <var>name</var>.
  7676. The size in bytes is computed from <var>expression</var> which can make use of label
  7677. arithmetic. This directive is typically used to set the size of function
  7678. symbols.
  7679. </p>
  7680. <hr>
  7681. <span id="Skip"></span><div class="header">
  7682. <p>
  7683. Next: <a href="#Sleb128" accesskey="n" rel="next">Sleb128</a>, Previous: <a href="#Size" accesskey="p" rel="prev">Size</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7684. </div>
  7685. <span id="g_t_002eskip-size-_005b_002cfill_005d"></span><h3 class="section">7.90 <code>.skip <var>size</var> [,<var>fill</var>]</code></h3>
  7686. <span id="index-skip-directive"></span>
  7687. <span id="index-filling-memory"></span>
  7688. <p>This directive emits <var>size</var> bytes, each of value <var>fill</var>. Both
  7689. <var>size</var> and <var>fill</var> are absolute expressions. If the comma and
  7690. <var>fill</var> are omitted, <var>fill</var> is assumed to be zero. This is the same as
  7691. &lsquo;<samp>.space</samp>&rsquo;.
  7692. </p>
  7693. <hr>
  7694. <span id="Sleb128"></span><div class="header">
  7695. <p>
  7696. Next: <a href="#Space" accesskey="n" rel="next">Space</a>, Previous: <a href="#Skip" accesskey="p" rel="prev">Skip</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7697. </div>
  7698. <span id="g_t_002esleb128-expressions"></span><h3 class="section">7.91 <code>.sleb128 <var>expressions</var></code></h3>
  7699. <span id="index-sleb128-directive"></span>
  7700. <p><var>sleb128</var> stands for &ldquo;signed little endian base 128.&rdquo; This is a
  7701. compact, variable length representation of numbers used by the DWARF
  7702. symbolic debugging format. See <a href="#Uleb128"><code>.uleb128</code></a>.
  7703. </p>
  7704. <hr>
  7705. <span id="Space"></span><div class="header">
  7706. <p>
  7707. Next: <a href="#Stab" accesskey="n" rel="next">Stab</a>, Previous: <a href="#Sleb128" accesskey="p" rel="prev">Sleb128</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7708. </div>
  7709. <span id="g_t_002espace-size-_005b_002cfill_005d"></span><h3 class="section">7.92 <code>.space <var>size</var> [,<var>fill</var>]</code></h3>
  7710. <span id="index-space-directive"></span>
  7711. <span id="index-filling-memory-1"></span>
  7712. <p>This directive emits <var>size</var> bytes, each of value <var>fill</var>. Both
  7713. <var>size</var> and <var>fill</var> are absolute expressions. If the comma
  7714. and <var>fill</var> are omitted, <var>fill</var> is assumed to be zero. This is the same
  7715. as &lsquo;<samp>.skip</samp>&rsquo;.
  7716. </p>
  7717. <blockquote>
  7718. <p><em>Warning:</em> <code>.space</code> has a completely different meaning for HPPA
  7719. targets; use <code>.block</code> as a substitute. See <cite>HP9000 Series 800
  7720. Assembly Language Reference Manual</cite> (HP 92432-90001) for the meaning of the
  7721. <code>.space</code> directive. See <a href="#HPPA-Directives">HPPA Assembler Directives</a>,
  7722. for a summary.
  7723. </p></blockquote>
  7724. <hr>
  7725. <span id="Stab"></span><div class="header">
  7726. <p>
  7727. Next: <a href="#String" accesskey="n" rel="next">String</a>, Previous: <a href="#Space" accesskey="p" rel="prev">Space</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7728. </div>
  7729. <span id="g_t_002estabd_002c-_002estabn_002c-_002estabs"></span><h3 class="section">7.93 <code>.stabd, .stabn, .stabs</code></h3>
  7730. <span id="index-symbolic-debuggers_002c-information-for"></span>
  7731. <span id="index-stabx-directives"></span>
  7732. <p>There are three directives that begin &lsquo;<samp>.stab</samp>&rsquo;.
  7733. All emit symbols (see <a href="#Symbols">Symbols</a>), for use by symbolic debuggers.
  7734. The symbols are not entered in the <code>as</code> hash table: they
  7735. cannot be referenced elsewhere in the source file.
  7736. Up to five fields are required:
  7737. </p>
  7738. <dl compact="compact">
  7739. <dt><var>string</var></dt>
  7740. <dd><p>This is the symbol&rsquo;s name. It may contain any character except
  7741. &lsquo;<samp>\000</samp>&rsquo;, so is more general than ordinary symbol names. Some
  7742. debuggers used to code arbitrarily complex structures into symbol names
  7743. using this field.
  7744. </p>
  7745. </dd>
  7746. <dt><var>type</var></dt>
  7747. <dd><p>An absolute expression. The symbol&rsquo;s type is set to the low 8 bits of
  7748. this expression. Any bit pattern is permitted, but <code>ld</code>
  7749. and debuggers choke on silly bit patterns.
  7750. </p>
  7751. </dd>
  7752. <dt><var>other</var></dt>
  7753. <dd><p>An absolute expression. The symbol&rsquo;s &ldquo;other&rdquo; attribute is set to the
  7754. low 8 bits of this expression.
  7755. </p>
  7756. </dd>
  7757. <dt><var>desc</var></dt>
  7758. <dd><p>An absolute expression. The symbol&rsquo;s descriptor is set to the low 16
  7759. bits of this expression.
  7760. </p>
  7761. </dd>
  7762. <dt><var>value</var></dt>
  7763. <dd><p>An absolute expression which becomes the symbol&rsquo;s value.
  7764. </p></dd>
  7765. </dl>
  7766. <p>If a warning is detected while reading a <code>.stabd</code>, <code>.stabn</code>,
  7767. or <code>.stabs</code> statement, the symbol has probably already been created;
  7768. you get a half-formed symbol in your object file. This is
  7769. compatible with earlier assemblers!
  7770. </p>
  7771. <dl compact="compact">
  7772. <dd><span id="index-stabd-directive"></span>
  7773. </dd>
  7774. <dt><code>.stabd <var>type</var> , <var>other</var> , <var>desc</var></code></dt>
  7775. <dd>
  7776. <p>The &ldquo;name&rdquo; of the symbol generated is not even an empty string.
  7777. It is a null pointer, for compatibility. Older assemblers used a
  7778. null pointer so they didn&rsquo;t waste space in object files with empty
  7779. strings.
  7780. </p>
  7781. <p>The symbol&rsquo;s value is set to the location counter,
  7782. relocatably. When your program is linked, the value of this symbol
  7783. is the address of the location counter when the <code>.stabd</code> was
  7784. assembled.
  7785. </p>
  7786. <span id="index-stabn-directive"></span>
  7787. </dd>
  7788. <dt><code>.stabn <var>type</var> , <var>other</var> , <var>desc</var> , <var>value</var></code></dt>
  7789. <dd><p>The name of the symbol is set to the empty string <code>&quot;&quot;</code>.
  7790. </p>
  7791. <span id="index-stabs-directive"></span>
  7792. </dd>
  7793. <dt><code>.stabs <var>string</var> , <var>type</var> , <var>other</var> , <var>desc</var> , <var>value</var></code></dt>
  7794. <dd><p>All five fields are specified.
  7795. </p></dd>
  7796. </dl>
  7797. <hr>
  7798. <span id="String"></span><div class="header">
  7799. <p>
  7800. Next: <a href="#Struct" accesskey="n" rel="next">Struct</a>, Previous: <a href="#Stab" accesskey="p" rel="prev">Stab</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7801. </div>
  7802. <span id="g_t_002estring-_0022str_0022_002c-_002estring8-_0022str_0022_002c-_002estring16"></span><h3 class="section">7.94 <code>.string</code> &quot;<var>str</var>&quot;, <code>.string8</code> &quot;<var>str</var>&quot;, <code>.string16</code></h3>
  7803. <p>&quot;<var>str</var>&quot;, <code>.string32</code> &quot;<var>str</var>&quot;, <code>.string64</code> &quot;<var>str</var>&quot;
  7804. </p>
  7805. <span id="index-string_002c-copying-to-object-file"></span>
  7806. <span id="index-string8_002c-copying-to-object-file"></span>
  7807. <span id="index-string16_002c-copying-to-object-file"></span>
  7808. <span id="index-string32_002c-copying-to-object-file"></span>
  7809. <span id="index-string64_002c-copying-to-object-file"></span>
  7810. <span id="index-string-directive"></span>
  7811. <span id="index-string8-directive"></span>
  7812. <span id="index-string16-directive"></span>
  7813. <span id="index-string32-directive"></span>
  7814. <span id="index-string64-directive"></span>
  7815. <p>Copy the characters in <var>str</var> to the object file. You may specify more than
  7816. one string to copy, separated by commas. Unless otherwise specified for a
  7817. particular machine, the assembler marks the end of each string with a 0 byte.
  7818. You can use any of the escape sequences described in <a href="#Strings">Strings</a>.
  7819. </p>
  7820. <p>The variants <code>string16</code>, <code>string32</code> and <code>string64</code> differ from
  7821. the <code>string</code> pseudo opcode in that each 8-bit character from <var>str</var> is
  7822. copied and expanded to 16, 32 or 64 bits respectively. The expanded characters
  7823. are stored in target endianness byte order.
  7824. </p>
  7825. <p>Example:
  7826. </p><div class="example">
  7827. <pre class="example"> .string32 &quot;BYE&quot;
  7828. expands to:
  7829. .string &quot;B\0\0\0Y\0\0\0E\0\0\0&quot; /* On little endian targets. */
  7830. .string &quot;\0\0\0B\0\0\0Y\0\0\0E&quot; /* On big endian targets. */
  7831. </pre></div>
  7832. <hr>
  7833. <span id="Struct"></span><div class="header">
  7834. <p>
  7835. Next: <a href="#SubSection" accesskey="n" rel="next">SubSection</a>, Previous: <a href="#String" accesskey="p" rel="prev">String</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7836. </div>
  7837. <span id="g_t_002estruct-expression"></span><h3 class="section">7.95 <code>.struct <var>expression</var></code></h3>
  7838. <span id="index-struct-directive"></span>
  7839. <p>Switch to the absolute section, and set the section offset to <var>expression</var>,
  7840. which must be an absolute expression. You might use this as follows:
  7841. </p><div class="example">
  7842. <pre class="example"> .struct 0
  7843. field1:
  7844. .struct field1 + 4
  7845. field2:
  7846. .struct field2 + 4
  7847. field3:
  7848. </pre></div>
  7849. <p>This would define the symbol <code>field1</code> to have the value 0, the symbol
  7850. <code>field2</code> to have the value 4, and the symbol <code>field3</code> to have the
  7851. value 8. Assembly would be left in the absolute section, and you would need to
  7852. use a <code>.section</code> directive of some sort to change to some other section
  7853. before further assembly.
  7854. </p>
  7855. <hr>
  7856. <span id="SubSection"></span><div class="header">
  7857. <p>
  7858. Next: <a href="#Symver" accesskey="n" rel="next">Symver</a>, Previous: <a href="#Struct" accesskey="p" rel="prev">Struct</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7859. </div>
  7860. <span id="g_t_002esubsection-name"></span><h3 class="section">7.96 <code>.subsection <var>name</var></code></h3>
  7861. <span id="index-subsection-directive"></span>
  7862. <span id="index-Section-Stack-4"></span>
  7863. <p>This is one of the ELF section stack manipulation directives. The others are
  7864. <code>.section</code> (see <a href="#Section">Section</a>), <code>.pushsection</code> (see <a href="#PushSection">PushSection</a>),
  7865. <code>.popsection</code> (see <a href="#PopSection">PopSection</a>), and <code>.previous</code>
  7866. (see <a href="#Previous">Previous</a>).
  7867. </p>
  7868. <p>This directive replaces the current subsection with <code>name</code>. The current
  7869. section is not changed. The replaced subsection is put onto the section stack
  7870. in place of the then current top of stack subsection.
  7871. </p>
  7872. <hr>
  7873. <span id="Symver"></span><div class="header">
  7874. <p>
  7875. Next: <a href="#Tag" accesskey="n" rel="next">Tag</a>, Previous: <a href="#SubSection" accesskey="p" rel="prev">SubSection</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7876. </div>
  7877. <span id="g_t_002esymver"></span><h3 class="section">7.97 <code>.symver</code></h3>
  7878. <span id="index-symver-directive"></span>
  7879. <span id="index-symbol-versioning"></span>
  7880. <span id="index-versions-of-symbols"></span>
  7881. <p>Use the <code>.symver</code> directive to bind symbols to specific version nodes
  7882. within a source file. This is only supported on ELF platforms, and is
  7883. typically used when assembling files to be linked into a shared library.
  7884. There are cases where it may make sense to use this in objects to be bound
  7885. into an application itself so as to override a versioned symbol from a
  7886. shared library.
  7887. </p>
  7888. <p>For ELF targets, the <code>.symver</code> directive can be used like this:
  7889. </p><div class="example">
  7890. <pre class="example">.symver <var>name</var>, <var>name2@nodename</var>[ ,<var>visibility</var>]
  7891. </pre></div>
  7892. <p>If the original symbol <var>name</var> is defined within the file
  7893. being assembled, the <code>.symver</code> directive effectively creates a symbol
  7894. alias with the name <var>name2@nodename</var>, and in fact the main reason that we
  7895. just don&rsquo;t try and create a regular alias is that the <var>@</var> character isn&rsquo;t
  7896. permitted in symbol names. The <var>name2</var> part of the name is the actual name
  7897. of the symbol by which it will be externally referenced. The name <var>name</var>
  7898. itself is merely a name of convenience that is used so that it is possible to
  7899. have definitions for multiple versions of a function within a single source
  7900. file, and so that the compiler can unambiguously know which version of a
  7901. function is being mentioned. The <var>nodename</var> portion of the alias should be
  7902. the name of a node specified in the version script supplied to the linker when
  7903. building a shared library. If you are attempting to override a versioned
  7904. symbol from a shared library, then <var>nodename</var> should correspond to the
  7905. nodename of the symbol you are trying to override. The optional argument
  7906. <var>visibility</var> updates the visibility of the original symbol. The valid
  7907. visibilities are <code>local</code>, <code>hidden</code>, and <code>remove</code>. The
  7908. <code>local</code> visibility makes the original symbol a local symbol
  7909. (see <a href="#Local">Local</a>). The <code>hidden</code> visibility sets the visibility of the
  7910. original symbol to <code>hidden</code> (see <a href="#Hidden">Hidden</a>). The <code>remove</code>
  7911. visibility removes the original symbol from the symbol table. If visibility
  7912. isn&rsquo;t specified, the original symbol is unchanged.
  7913. </p>
  7914. <p>If the symbol <var>name</var> is not defined within the file being assembled, all
  7915. references to <var>name</var> will be changed to <var>name2@nodename</var>. If no
  7916. reference to <var>name</var> is made, <var>name2@nodename</var> will be removed from the
  7917. symbol table.
  7918. </p>
  7919. <p>Another usage of the <code>.symver</code> directive is:
  7920. </p><div class="example">
  7921. <pre class="example">.symver <var>name</var>, <var>name2@@nodename</var>
  7922. </pre></div>
  7923. <p>In this case, the symbol <var>name</var> must exist and be defined within
  7924. the file being assembled. It is similar to <var>name2@nodename</var>. The
  7925. difference is <var>name2@@nodename</var> will also be used to resolve
  7926. references to <var>name2</var> by the linker.
  7927. </p>
  7928. <p>The third usage of the <code>.symver</code> directive is:
  7929. </p><div class="example">
  7930. <pre class="example">.symver <var>name</var>, <var>name2@@@nodename</var>
  7931. </pre></div>
  7932. <p>When <var>name</var> is not defined within the
  7933. file being assembled, it is treated as <var>name2@nodename</var>. When
  7934. <var>name</var> is defined within the file being assembled, the symbol
  7935. name, <var>name</var>, will be changed to <var>name2@@nodename</var>.
  7936. </p>
  7937. <hr>
  7938. <span id="Tag"></span><div class="header">
  7939. <p>
  7940. Next: <a href="#Text" accesskey="n" rel="next">Text</a>, Previous: <a href="#Symver" accesskey="p" rel="prev">Symver</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7941. </div>
  7942. <span id="g_t_002etag-structname"></span><h3 class="section">7.98 <code>.tag <var>structname</var></code></h3>
  7943. <span id="index-COFF-structure-debugging"></span>
  7944. <span id="index-structure-debugging_002c-COFF"></span>
  7945. <span id="index-tag-directive"></span>
  7946. <p>This directive is generated by compilers to include auxiliary debugging
  7947. information in the symbol table. It is only permitted inside
  7948. <code>.def</code>/<code>.endef</code> pairs. Tags are used to link structure
  7949. definitions in the symbol table with instances of those structures.
  7950. </p>
  7951. <hr>
  7952. <span id="Text"></span><div class="header">
  7953. <p>
  7954. Next: <a href="#Title" accesskey="n" rel="next">Title</a>, Previous: <a href="#Tag" accesskey="p" rel="prev">Tag</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7955. </div>
  7956. <span id="g_t_002etext-subsection"></span><h3 class="section">7.99 <code>.text <var>subsection</var></code></h3>
  7957. <span id="index-text-directive"></span>
  7958. <p>Tells <code>as</code> to assemble the following statements onto the end of
  7959. the text subsection numbered <var>subsection</var>, which is an absolute
  7960. expression. If <var>subsection</var> is omitted, subsection number zero
  7961. is used.
  7962. </p>
  7963. <hr>
  7964. <span id="Title"></span><div class="header">
  7965. <p>
  7966. Next: <a href="#Tls_005fcommon" accesskey="n" rel="next">Tls_common</a>, Previous: <a href="#Text" accesskey="p" rel="prev">Text</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7967. </div>
  7968. <span id="g_t_002etitle-_0022heading_0022"></span><h3 class="section">7.100 <code>.title &quot;<var>heading</var>&quot;</code></h3>
  7969. <span id="index-title-directive"></span>
  7970. <span id="index-listing-control_003a-title-line"></span>
  7971. <p>Use <var>heading</var> as the title (second line, immediately after the
  7972. source file name and pagenumber) when generating assembly listings.
  7973. </p>
  7974. <p>This directive affects subsequent pages, as well as the current page if
  7975. it appears within ten lines of the top of a page.
  7976. </p>
  7977. <hr>
  7978. <span id="Tls_005fcommon"></span><div class="header">
  7979. <p>
  7980. Next: <a href="#Type" accesskey="n" rel="next">Type</a>, Previous: <a href="#Title" accesskey="p" rel="prev">Title</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7981. </div>
  7982. <span id="g_t_002etls_005fcommon-symbol_002c-length_005b_002c-alignment_005d"></span><h3 class="section">7.101 <code>.tls_common <var>symbol</var>, <var>length</var>[, <var>alignment</var>]</code></h3>
  7983. <span id="index-tls_005fcommon-directive"></span>
  7984. <p>This directive behaves in the same way as the <code>.comm</code> directive
  7985. (see <a href="#Comm">Comm</a>) except that <var>symbol</var> has type of STT_TLS instead of
  7986. STT_OBJECT.
  7987. </p>
  7988. <hr>
  7989. <span id="Type"></span><div class="header">
  7990. <p>
  7991. Next: <a href="#Uleb128" accesskey="n" rel="next">Uleb128</a>, Previous: <a href="#Tls_005fcommon" accesskey="p" rel="prev">Tls_common</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  7992. </div>
  7993. <span id="g_t_002etype"></span><h3 class="section">7.102 <code>.type</code></h3>
  7994. <p>This directive is used to set the type of a symbol.
  7995. </p>
  7996. <span id="COFF-Version-2"></span><h4 class="subheading">COFF Version</h4>
  7997. <span id="index-COFF-symbol-type"></span>
  7998. <span id="index-symbol-type_002c-COFF"></span>
  7999. <span id="index-type-directive-_0028COFF-version_0029"></span>
  8000. <p>For COFF targets, this directive is permitted only within
  8001. <code>.def</code>/<code>.endef</code> pairs. It is used like this:
  8002. </p>
  8003. <div class="example">
  8004. <pre class="example">.type <var>int</var>
  8005. </pre></div>
  8006. <p>This records the integer <var>int</var> as the type attribute of a symbol table
  8007. entry.
  8008. </p>
  8009. <span id="ELF-Version-2"></span><h4 class="subheading">ELF Version</h4>
  8010. <span id="index-ELF-symbol-type"></span>
  8011. <span id="index-symbol-type_002c-ELF"></span>
  8012. <span id="index-type-directive-_0028ELF-version_0029"></span>
  8013. <p>For ELF targets, the <code>.type</code> directive is used like this:
  8014. </p>
  8015. <div class="example">
  8016. <pre class="example">.type <var>name</var> , <var>type description</var>
  8017. </pre></div>
  8018. <p>This sets the type of symbol <var>name</var> to be either a
  8019. function symbol or an object symbol. There are five different syntaxes
  8020. supported for the <var>type description</var> field, in order to provide
  8021. compatibility with various other assemblers.
  8022. </p>
  8023. <p>Because some of the characters used in these syntaxes (such as &lsquo;<samp>@</samp>&rsquo; and
  8024. &lsquo;<samp>#</samp>&rsquo;) are comment characters for some architectures, some of the syntaxes
  8025. below do not work on all architectures. The first variant will be accepted by
  8026. the GNU assembler on all architectures so that variant should be used for
  8027. maximum portability, if you do not need to assemble your code with other
  8028. assemblers.
  8029. </p>
  8030. <p>The syntaxes supported are:
  8031. </p>
  8032. <div class="example">
  8033. <pre class="example"> .type &lt;name&gt; STT_&lt;TYPE_IN_UPPER_CASE&gt;
  8034. .type &lt;name&gt;,#&lt;type&gt;
  8035. .type &lt;name&gt;,@&lt;type&gt;
  8036. .type &lt;name&gt;,%&lt;type&gt;
  8037. .type &lt;name&gt;,&quot;&lt;type&gt;&quot;
  8038. </pre></div>
  8039. <p>The types supported are:
  8040. </p>
  8041. <dl compact="compact">
  8042. <dt><code>STT_FUNC</code></dt>
  8043. <dt><code>function</code></dt>
  8044. <dd><p>Mark the symbol as being a function name.
  8045. </p>
  8046. </dd>
  8047. <dt><code>STT_GNU_IFUNC</code></dt>
  8048. <dt><code>gnu_indirect_function</code></dt>
  8049. <dd><p>Mark the symbol as an indirect function when evaluated during reloc
  8050. processing. (This is only supported on assemblers targeting GNU systems).
  8051. </p>
  8052. </dd>
  8053. <dt><code>STT_OBJECT</code></dt>
  8054. <dt><code>object</code></dt>
  8055. <dd><p>Mark the symbol as being a data object.
  8056. </p>
  8057. </dd>
  8058. <dt><code>STT_TLS</code></dt>
  8059. <dt><code>tls_object</code></dt>
  8060. <dd><p>Mark the symbol as being a thread-local data object.
  8061. </p>
  8062. </dd>
  8063. <dt><code>STT_COMMON</code></dt>
  8064. <dt><code>common</code></dt>
  8065. <dd><p>Mark the symbol as being a common data object.
  8066. </p>
  8067. </dd>
  8068. <dt><code>STT_NOTYPE</code></dt>
  8069. <dt><code>notype</code></dt>
  8070. <dd><p>Does not mark the symbol in any way. It is supported just for completeness.
  8071. </p>
  8072. </dd>
  8073. <dt><code>gnu_unique_object</code></dt>
  8074. <dd><p>Marks the symbol as being a globally unique data object. The dynamic linker
  8075. will make sure that in the entire process there is just one symbol with this
  8076. name and type in use. (This is only supported on assemblers targeting GNU
  8077. systems).
  8078. </p>
  8079. </dd>
  8080. </dl>
  8081. <p>Changing between incompatible types other than from/to STT_NOTYPE will
  8082. result in a diagnostic. An intermediate change to STT_NOTYPE will silence
  8083. this.
  8084. </p>
  8085. <p>Note: Some targets support extra types in addition to those listed above.
  8086. </p>
  8087. <hr>
  8088. <span id="Uleb128"></span><div class="header">
  8089. <p>
  8090. Next: <a href="#Val" accesskey="n" rel="next">Val</a>, Previous: <a href="#Type" accesskey="p" rel="prev">Type</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8091. </div>
  8092. <span id="g_t_002euleb128-expressions"></span><h3 class="section">7.103 <code>.uleb128 <var>expressions</var></code></h3>
  8093. <span id="index-uleb128-directive"></span>
  8094. <p><var>uleb128</var> stands for &ldquo;unsigned little endian base 128.&rdquo; This is a
  8095. compact, variable length representation of numbers used by the DWARF
  8096. symbolic debugging format. See <a href="#Sleb128"><code>.sleb128</code></a>.
  8097. </p>
  8098. <hr>
  8099. <span id="Val"></span><div class="header">
  8100. <p>
  8101. Next: <a href="#Version" accesskey="n" rel="next">Version</a>, Previous: <a href="#Uleb128" accesskey="p" rel="prev">Uleb128</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8102. </div>
  8103. <span id="g_t_002eval-addr"></span><h3 class="section">7.104 <code>.val <var>addr</var></code></h3>
  8104. <span id="index-val-directive"></span>
  8105. <span id="index-COFF-value-attribute"></span>
  8106. <span id="index-value-attribute_002c-COFF"></span>
  8107. <p>This directive, permitted only within <code>.def</code>/<code>.endef</code> pairs,
  8108. records the address <var>addr</var> as the value attribute of a symbol table
  8109. entry.
  8110. </p>
  8111. <hr>
  8112. <span id="Version"></span><div class="header">
  8113. <p>
  8114. Next: <a href="#VTableEntry" accesskey="n" rel="next">VTableEntry</a>, Previous: <a href="#Val" accesskey="p" rel="prev">Val</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8115. </div>
  8116. <span id="g_t_002eversion-_0022string_0022"></span><h3 class="section">7.105 <code>.version &quot;<var>string</var>&quot;</code></h3>
  8117. <span id="index-version-directive"></span>
  8118. <p>This directive creates a <code>.note</code> section and places into it an ELF
  8119. formatted note of type NT_VERSION. The note&rsquo;s name is set to <code>string</code>.
  8120. </p>
  8121. <hr>
  8122. <span id="VTableEntry"></span><div class="header">
  8123. <p>
  8124. Next: <a href="#VTableInherit" accesskey="n" rel="next">VTableInherit</a>, Previous: <a href="#Version" accesskey="p" rel="prev">Version</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8125. </div>
  8126. <span id="g_t_002evtable_005fentry-table_002c-offset"></span><h3 class="section">7.106 <code>.vtable_entry <var>table</var>, <var>offset</var></code></h3>
  8127. <span id="index-vtable_005fentry-directive"></span>
  8128. <p>This directive finds or creates a symbol <code>table</code> and creates a
  8129. <code>VTABLE_ENTRY</code> relocation for it with an addend of <code>offset</code>.
  8130. </p>
  8131. <hr>
  8132. <span id="VTableInherit"></span><div class="header">
  8133. <p>
  8134. Next: <a href="#Warning" accesskey="n" rel="next">Warning</a>, Previous: <a href="#VTableEntry" accesskey="p" rel="prev">VTableEntry</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8135. </div>
  8136. <span id="g_t_002evtable_005finherit-child_002c-parent"></span><h3 class="section">7.107 <code>.vtable_inherit <var>child</var>, <var>parent</var></code></h3>
  8137. <span id="index-vtable_005finherit-directive"></span>
  8138. <p>This directive finds the symbol <code>child</code> and finds or creates the symbol
  8139. <code>parent</code> and then creates a <code>VTABLE_INHERIT</code> relocation for the
  8140. parent whose addend is the value of the child symbol. As a special case the
  8141. parent name of <code>0</code> is treated as referring to the <code>*ABS*</code> section.
  8142. </p>
  8143. <hr>
  8144. <span id="Warning"></span><div class="header">
  8145. <p>
  8146. Next: <a href="#Weak" accesskey="n" rel="next">Weak</a>, Previous: <a href="#VTableInherit" accesskey="p" rel="prev">VTableInherit</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8147. </div>
  8148. <span id="g_t_002ewarning-_0022string_0022"></span><h3 class="section">7.108 <code>.warning &quot;<var>string</var>&quot;</code></h3>
  8149. <span id="index-warning-directive"></span>
  8150. <p>Similar to the directive <code>.error</code>
  8151. (see <a href="#Error"><code>.error &quot;<var>string</var>&quot;</code></a>), but just emits a warning.
  8152. </p>
  8153. <hr>
  8154. <span id="Weak"></span><div class="header">
  8155. <p>
  8156. Next: <a href="#Weakref" accesskey="n" rel="next">Weakref</a>, Previous: <a href="#Warning" accesskey="p" rel="prev">Warning</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8157. </div>
  8158. <span id="g_t_002eweak-names"></span><h3 class="section">7.109 <code>.weak <var>names</var></code></h3>
  8159. <span id="index-weak-directive"></span>
  8160. <p>This directive sets the weak attribute on the comma separated list of symbol
  8161. <code>names</code>. If the symbols do not already exist, they will be created.
  8162. </p>
  8163. <p>On COFF targets other than PE, weak symbols are a GNU extension. This
  8164. directive sets the weak attribute on the comma separated list of symbol
  8165. <code>names</code>. If the symbols do not already exist, they will be created.
  8166. </p>
  8167. <p>On the PE target, weak symbols are supported natively as weak aliases.
  8168. When a weak symbol is created that is not an alias, GAS creates an
  8169. alternate symbol to hold the default value.
  8170. </p>
  8171. <hr>
  8172. <span id="Weakref"></span><div class="header">
  8173. <p>
  8174. Next: <a href="#Word" accesskey="n" rel="next">Word</a>, Previous: <a href="#Weak" accesskey="p" rel="prev">Weak</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8175. </div>
  8176. <span id="g_t_002eweakref-alias_002c-target"></span><h3 class="section">7.110 <code>.weakref <var>alias</var>, <var>target</var></code></h3>
  8177. <span id="index-weakref-directive"></span>
  8178. <p>This directive creates an alias to the target symbol that enables the symbol to
  8179. be referenced with weak-symbol semantics, but without actually making it weak.
  8180. If direct references or definitions of the symbol are present, then the symbol
  8181. will not be weak, but if all references to it are through weak references, the
  8182. symbol will be marked as weak in the symbol table.
  8183. </p>
  8184. <p>The effect is equivalent to moving all references to the alias to a separate
  8185. assembly source file, renaming the alias to the symbol in it, declaring the
  8186. symbol as weak there, and running a reloadable link to merge the object files
  8187. resulting from the assembly of the new source file and the old source file that
  8188. had the references to the alias removed.
  8189. </p>
  8190. <p>The alias itself never makes to the symbol table, and is entirely handled
  8191. within the assembler.
  8192. </p>
  8193. <hr>
  8194. <span id="Word"></span><div class="header">
  8195. <p>
  8196. Next: <a href="#Zero" accesskey="n" rel="next">Zero</a>, Previous: <a href="#Weakref" accesskey="p" rel="prev">Weakref</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8197. </div>
  8198. <span id="g_t_002eword-expressions"></span><h3 class="section">7.111 <code>.word <var>expressions</var></code></h3>
  8199. <span id="index-word-directive"></span>
  8200. <p>This directive expects zero or more <var>expressions</var>, of any section,
  8201. separated by commas.
  8202. </p>
  8203. <p>The size of the number emitted, and its byte order,
  8204. depend on what target computer the assembly is for.
  8205. </p>
  8206. <span id="index-difference-tables-altered"></span>
  8207. <span id="index-altered-difference-tables"></span>
  8208. <blockquote>
  8209. <p><em>Warning: Special Treatment to support Compilers</em>
  8210. </p></blockquote>
  8211. <p>Machines with a 32-bit address space, but that do less than 32-bit
  8212. addressing, require the following special treatment. If the machine of
  8213. interest to you does 32-bit addressing (or doesn&rsquo;t require it;
  8214. see <a href="#Machine-Dependencies">Machine Dependencies</a>), you can ignore this issue.
  8215. </p>
  8216. <p>In order to assemble compiler output into something that works,
  8217. <code>as</code> occasionally does strange things to &lsquo;<samp>.word</samp>&rsquo; directives.
  8218. Directives of the form &lsquo;<samp>.word sym1-sym2</samp>&rsquo; are often emitted by
  8219. compilers as part of jump tables. Therefore, when <code>as</code> assembles a
  8220. directive of the form &lsquo;<samp>.word sym1-sym2</samp>&rsquo;, and the difference between
  8221. <code>sym1</code> and <code>sym2</code> does not fit in 16 bits, <code>as</code>
  8222. creates a <em>secondary jump table</em>, immediately before the next label.
  8223. This secondary jump table is preceded by a short-jump to the
  8224. first byte after the secondary table. This short-jump prevents the flow
  8225. of control from accidentally falling into the new table. Inside the
  8226. table is a long-jump to <code>sym2</code>. The original &lsquo;<samp>.word</samp>&rsquo;
  8227. contains <code>sym1</code> minus the address of the long-jump to
  8228. <code>sym2</code>.
  8229. </p>
  8230. <p>If there were several occurrences of &lsquo;<samp>.word sym1-sym2</samp>&rsquo; before the
  8231. secondary jump table, all of them are adjusted. If there was a
  8232. &lsquo;<samp>.word sym3-sym4</samp>&rsquo;, that also did not fit in sixteen bits, a
  8233. long-jump to <code>sym4</code> is included in the secondary jump table,
  8234. and the <code>.word</code> directives are adjusted to contain <code>sym3</code>
  8235. minus the address of the long-jump to <code>sym4</code>; and so on, for as many
  8236. entries in the original jump table as necessary.
  8237. </p>
  8238. <hr>
  8239. <span id="Zero"></span><div class="header">
  8240. <p>
  8241. Next: <a href="#g_t2byte" accesskey="n" rel="next">2byte</a>, Previous: <a href="#Word" accesskey="p" rel="prev">Word</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8242. </div>
  8243. <span id="g_t_002ezero-size"></span><h3 class="section">7.112 <code>.zero <var>size</var></code></h3>
  8244. <span id="index-zero-directive"></span>
  8245. <span id="index-filling-memory-with-zero-bytes"></span>
  8246. <p>This directive emits <var>size</var> 0-valued bytes. <var>size</var> must be an absolute
  8247. expression. This directive is actually an alias for the &lsquo;<samp>.skip</samp>&rsquo; directive
  8248. so it can take an optional second argument of the value to store in the bytes
  8249. instead of zero. Using &lsquo;<samp>.zero</samp>&rsquo; in this way would be confusing however.
  8250. </p>
  8251. <hr>
  8252. <span id="g_t2byte"></span><div class="header">
  8253. <p>
  8254. Next: <a href="#g_t4byte" accesskey="n" rel="next">4byte</a>, Previous: <a href="#Zero" accesskey="p" rel="prev">Zero</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8255. </div>
  8256. <span id="g_t_002e2byte-expression-_005b_002c-expression_005d_002a"></span><h3 class="section">7.113 <code>.2byte <var>expression</var> [, <var>expression</var>]*</code></h3>
  8257. <span id="index-2byte-directive"></span>
  8258. <span id="index-two_002dbyte-integer"></span>
  8259. <span id="index-integer_002c-2_002dbyte"></span>
  8260. <p>This directive expects zero or more expressions, separated by commas. If there
  8261. are no expressions then the directive does nothing. Otherwise each expression
  8262. is evaluated in turn and placed in the next two bytes of the current output
  8263. section, using the endian model of the target. If an expression will not fit
  8264. in two bytes, a warning message is displayed and the least significant two
  8265. bytes of the expression&rsquo;s value are used. If an expression cannot be evaluated
  8266. at assembly time then relocations will be generated in order to compute the
  8267. value at link time.
  8268. </p>
  8269. <p>This directive does not apply any alignment before or after inserting the
  8270. values. As a result of this, if relocations are generated, they may be
  8271. different from those used for inserting values with a guaranteed alignment.
  8272. </p>
  8273. <hr>
  8274. <span id="g_t4byte"></span><div class="header">
  8275. <p>
  8276. Next: <a href="#g_t8byte" accesskey="n" rel="next">8byte</a>, Previous: <a href="#g_t2byte" accesskey="p" rel="prev">2byte</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8277. </div>
  8278. <span id="g_t_002e4byte-expression-_005b_002c-expression_005d_002a"></span><h3 class="section">7.114 <code>.4byte <var>expression</var> [, <var>expression</var>]*</code></h3>
  8279. <span id="index-4byte-directive"></span>
  8280. <span id="index-four_002dbyte-integer"></span>
  8281. <span id="index-integer_002c-4_002dbyte"></span>
  8282. <p>Like the <samp>.2byte</samp> directive, except that it inserts unaligned, four byte
  8283. long values into the output.
  8284. </p>
  8285. <hr>
  8286. <span id="g_t8byte"></span><div class="header">
  8287. <p>
  8288. Next: <a href="#Deprecated" accesskey="n" rel="next">Deprecated</a>, Previous: <a href="#g_t4byte" accesskey="p" rel="prev">4byte</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8289. </div>
  8290. <span id="g_t_002e8byte-expression-_005b_002c-expression_005d_002a"></span><h3 class="section">7.115 <code>.8byte <var>expression</var> [, <var>expression</var>]*</code></h3>
  8291. <span id="index-8byte-directive"></span>
  8292. <span id="index-eight_002dbyte-integer-1"></span>
  8293. <span id="index-integer_002c-8_002dbyte-1"></span>
  8294. <p>For 64-bit architectures, or more generally with any GAS configured to support
  8295. 64-bit target virtual addresses, this is like the <samp>.2byte</samp> directive,
  8296. except that it inserts unaligned, eight byte long values into the output.
  8297. Otherwise, like <a href="#Quad"><code>.quad <var>expressions</var></code></a>, it expects zero or
  8298. more bignums, separated by commas.
  8299. </p>
  8300. <hr>
  8301. <span id="Deprecated"></span><div class="header">
  8302. <p>
  8303. Previous: <a href="#g_t8byte" accesskey="p" rel="prev">8byte</a>, Up: <a href="#Pseudo-Ops" accesskey="u" rel="up">Pseudo Ops</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8304. </div>
  8305. <span id="Deprecated-Directives"></span><h3 class="section">7.116 Deprecated Directives</h3>
  8306. <span id="index-deprecated-directives"></span>
  8307. <span id="index-obsolescent-directives"></span>
  8308. <p>One day these directives won&rsquo;t work.
  8309. They are included for compatibility with older assemblers.
  8310. </p><dl compact="compact">
  8311. <dt><tt>.abort</tt></dt>
  8312. <dt><tt>.line</tt></dt>
  8313. </dl>
  8314. <hr>
  8315. <span id="Object-Attributes"></span><div class="header">
  8316. <p>
  8317. Next: <a href="#Machine-Dependencies" accesskey="n" rel="next">Machine Dependencies</a>, Previous: <a href="#Pseudo-Ops" accesskey="p" rel="prev">Pseudo Ops</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8318. </div>
  8319. <span id="Object-Attributes-1"></span><h2 class="chapter">8 Object Attributes</h2>
  8320. <span id="index-object-attributes"></span>
  8321. <p><code>as</code> assembles source files written for a specific architecture
  8322. into object files for that architecture. But not all object files are alike.
  8323. Many architectures support incompatible variations. For instance, floating
  8324. point arguments might be passed in floating point registers if the object file
  8325. requires hardware floating point support&mdash;or floating point arguments might be
  8326. passed in integer registers if the object file supports processors with no
  8327. hardware floating point unit. Or, if two objects are built for different
  8328. generations of the same architecture, the combination may require the
  8329. newer generation at run-time.
  8330. </p>
  8331. <p>This information is useful during and after linking. At link time,
  8332. <code>ld</code> can warn about incompatible object files. After link
  8333. time, tools like <code>gdb</code> can use it to process the linked file
  8334. correctly.
  8335. </p>
  8336. <p>Compatibility information is recorded as a series of object attributes. Each
  8337. attribute has a <em>vendor</em>, <em>tag</em>, and <em>value</em>. The vendor is a
  8338. string, and indicates who sets the meaning of the tag. The tag is an integer,
  8339. and indicates what property the attribute describes. The value may be a string
  8340. or an integer, and indicates how the property affects this object. Missing
  8341. attributes are the same as attributes with a zero value or empty string value.
  8342. </p>
  8343. <p>Object attributes were developed as part of the ABI for the ARM Architecture.
  8344. The file format is documented in <cite>ELF for the ARM Architecture</cite>.
  8345. </p>
  8346. <table class="menu" border="0" cellspacing="0">
  8347. <tr><td align="left" valign="top">&bull; <a href="#GNU-Object-Attributes" accesskey="1">GNU Object Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top"><small>GNU</small> Object Attributes
  8348. </td></tr>
  8349. <tr><td align="left" valign="top">&bull; <a href="#Defining-New-Object-Attributes" accesskey="2">Defining New Object Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining New Object Attributes
  8350. </td></tr>
  8351. </table>
  8352. <hr>
  8353. <span id="GNU-Object-Attributes"></span><div class="header">
  8354. <p>
  8355. Next: <a href="#Defining-New-Object-Attributes" accesskey="n" rel="next">Defining New Object Attributes</a>, Up: <a href="#Object-Attributes" accesskey="u" rel="up">Object Attributes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8356. </div>
  8357. <span id="GNU-Object-Attributes-1"></span><h3 class="section">8.1 <small>GNU</small> Object Attributes</h3>
  8358. <p>The <code>.gnu_attribute</code> directive records an object attribute
  8359. with vendor &lsquo;<samp>gnu</samp>&rsquo;.
  8360. </p>
  8361. <p>Except for &lsquo;<samp>Tag_compatibility</samp>&rsquo;, which has both an integer and a string for
  8362. its value, <small>GNU</small> attributes have a string value if the tag number is odd and
  8363. an integer value if the tag number is even. The second bit (<code><var>tag</var> &amp;
  8364. 2</code> is set for architecture-independent attributes and clear for
  8365. architecture-dependent ones.
  8366. </p>
  8367. <span id="Common-GNU-attributes"></span><h4 class="subsection">8.1.1 Common <small>GNU</small> attributes</h4>
  8368. <p>These attributes are valid on all architectures.
  8369. </p>
  8370. <dl compact="compact">
  8371. <dt><span class="roman">Tag_compatibility (32)</span></dt>
  8372. <dd><p>The compatibility attribute takes an integer flag value and a vendor name. If
  8373. the flag value is 0, the file is compatible with other toolchains. If it is 1,
  8374. then the file is only compatible with the named toolchain. If it is greater
  8375. than 1, the file can only be processed by other toolchains under some private
  8376. arrangement indicated by the flag value and the vendor name.
  8377. </p></dd>
  8378. </dl>
  8379. <span id="M680x0-Attributes"></span><h4 class="subsection">8.1.2 M680x0 Attributes</h4>
  8380. <dl compact="compact">
  8381. <dt><span class="roman">Tag_GNU_M68K_ABI_FP (4)</span></dt>
  8382. <dd><p>The floating-point ABI used by this object file. The value will be:
  8383. </p>
  8384. <ul>
  8385. <li> 0 for files not affected by the floating-point ABI.
  8386. </li><li> 1 for files using double-precision hardware floating-point ABI.
  8387. </li><li> 2 for files using the software floating-point ABI.
  8388. </li></ul>
  8389. </dd>
  8390. </dl>
  8391. <span id="MIPS-Attributes"></span><h4 class="subsection">8.1.3 MIPS Attributes</h4>
  8392. <dl compact="compact">
  8393. <dt><span class="roman">Tag_GNU_MIPS_ABI_FP (4)</span></dt>
  8394. <dd><p>The floating-point ABI used by this object file. The value will be:
  8395. </p>
  8396. <ul>
  8397. <li> 0 for files not affected by the floating-point ABI.
  8398. </li><li> 1 for files using the hardware floating-point ABI with a standard
  8399. double-precision FPU.
  8400. </li><li> 2 for files using the hardware floating-point ABI with a single-precision FPU.
  8401. </li><li> 3 for files using the software floating-point ABI.
  8402. </li><li> 4 for files using the deprecated hardware floating-point ABI which used 64-bit
  8403. floating-point registers, 32-bit general-purpose registers and increased the
  8404. number of callee-saved floating-point registers.
  8405. </li><li> 5 for files using the hardware floating-point ABI with a double-precision FPU
  8406. with either 32-bit or 64-bit floating-point registers and 32-bit
  8407. general-purpose registers.
  8408. </li><li> 6 for files using the hardware floating-point ABI with 64-bit floating-point
  8409. registers and 32-bit general-purpose registers.
  8410. </li><li> 7 for files using the hardware floating-point ABI with 64-bit floating-point
  8411. registers, 32-bit general-purpose registers and a rule that forbids the
  8412. direct use of odd-numbered single-precision floating-point registers.
  8413. </li></ul>
  8414. </dd>
  8415. <dt><span class="roman">Tag_GNU_MIPS_ABI_MSA (8)</span></dt>
  8416. <dd><p>The MIPS SIMD Architecture (MSA) ABI used by this object file. The value
  8417. will be:
  8418. </p>
  8419. <ul>
  8420. <li> 0 for files not affected by the MSA ABI.
  8421. </li><li> 1 for files using the 128-bit MSA ABI.
  8422. </li></ul>
  8423. </dd>
  8424. </dl>
  8425. <span id="PowerPC-Attributes"></span><h4 class="subsection">8.1.4 PowerPC Attributes</h4>
  8426. <dl compact="compact">
  8427. <dt><span class="roman">Tag_GNU_Power_ABI_FP (4)</span></dt>
  8428. <dd><p>The floating-point ABI used by this object file. The value will be:
  8429. </p>
  8430. <ul>
  8431. <li> 0 for files not affected by the floating-point ABI.
  8432. </li><li> 1 for files using double-precision hardware floating-point ABI.
  8433. </li><li> 2 for files using the software floating-point ABI.
  8434. </li><li> 3 for files using single-precision hardware floating-point ABI.
  8435. </li></ul>
  8436. </dd>
  8437. <dt><span class="roman">Tag_GNU_Power_ABI_Vector (8)</span></dt>
  8438. <dd><p>The vector ABI used by this object file. The value will be:
  8439. </p>
  8440. <ul>
  8441. <li> 0 for files not affected by the vector ABI.
  8442. </li><li> 1 for files using general purpose registers to pass vectors.
  8443. </li><li> 2 for files using AltiVec registers to pass vectors.
  8444. </li><li> 3 for files using SPE registers to pass vectors.
  8445. </li></ul>
  8446. </dd>
  8447. </dl>
  8448. <span id="IBM-z-Systems-Attributes"></span><h4 class="subsection">8.1.5 IBM z Systems Attributes</h4>
  8449. <dl compact="compact">
  8450. <dt><span class="roman">Tag_GNU_S390_ABI_Vector (8)</span></dt>
  8451. <dd><p>The vector ABI used by this object file. The value will be:
  8452. </p>
  8453. <ul>
  8454. <li> 0 for files not affected by the vector ABI.
  8455. </li><li> 1 for files using software vector ABI.
  8456. </li><li> 2 for files using hardware vector ABI.
  8457. </li></ul>
  8458. </dd>
  8459. </dl>
  8460. <span id="MSP430-Attributes"></span><h4 class="subsection">8.1.6 MSP430 Attributes</h4>
  8461. <dl compact="compact">
  8462. <dt><span class="roman">Tag_GNU_MSP430_Data_Region (4)</span></dt>
  8463. <dd><p>The data region used by this object file. The value will be:
  8464. </p>
  8465. <ul>
  8466. <li> 0 for files not using the large memory model.
  8467. </li><li> 1 for files which have been compiled with the condition that all
  8468. data is in the lower memory region, i.e. below address 0x10000.
  8469. </li><li> 2 for files which allow data to be placed in the full 20-bit memory range.
  8470. </li></ul>
  8471. </dd>
  8472. </dl>
  8473. <hr>
  8474. <span id="Defining-New-Object-Attributes"></span><div class="header">
  8475. <p>
  8476. Previous: <a href="#GNU-Object-Attributes" accesskey="p" rel="prev">GNU Object Attributes</a>, Up: <a href="#Object-Attributes" accesskey="u" rel="up">Object Attributes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8477. </div>
  8478. <span id="Defining-New-Object-Attributes-1"></span><h3 class="section">8.2 Defining New Object Attributes</h3>
  8479. <p>If you want to define a new <small>GNU</small> object attribute, here are the places you
  8480. will need to modify. New attributes should be discussed on the &lsquo;<samp>binutils</samp>&rsquo;
  8481. mailing list.
  8482. </p>
  8483. <ul>
  8484. <li> This manual, which is the official register of attributes.
  8485. </li><li> The header for your architecture <samp>include/elf</samp>, to define the tag.
  8486. </li><li> The <samp>bfd</samp> support file for your architecture, to merge the attribute
  8487. and issue any appropriate link warnings.
  8488. </li><li> Test cases in <samp>ld/testsuite</samp> for merging and link warnings.
  8489. </li><li> <samp>binutils/readelf.c</samp> to display your attribute.
  8490. </li><li> GCC, if you want the compiler to mark the attribute automatically.
  8491. </li></ul>
  8492. <hr>
  8493. <span id="Machine-Dependencies"></span><div class="header">
  8494. <p>
  8495. Next: <a href="#Reporting-Bugs" accesskey="n" rel="next">Reporting Bugs</a>, Previous: <a href="#Object-Attributes" accesskey="p" rel="prev">Object Attributes</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8496. </div>
  8497. <span id="Machine-Dependent-Features"></span><h2 class="chapter">9 Machine Dependent Features</h2>
  8498. <span id="index-machine-dependencies"></span>
  8499. <p>The machine instruction sets are (almost by definition) different on
  8500. each machine where <code>as</code> runs. Floating point representations
  8501. vary as well, and <code>as</code> often supports a few additional
  8502. directives or command-line options for compatibility with other
  8503. assemblers on a particular platform. Finally, some versions of
  8504. <code>as</code> support special pseudo-instructions for branch
  8505. optimization.
  8506. </p>
  8507. <p>This chapter discusses most of these differences, though it does not
  8508. include details on any machine&rsquo;s instruction set. For details on that
  8509. subject, see the hardware manufacturer&rsquo;s manual.
  8510. </p>
  8511. <table class="menu" border="0" cellspacing="0">
  8512. <tr><td align="left" valign="top">&bull; <a href="#AArch64_002dDependent" accesskey="1">AArch64-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">AArch64 Dependent Features
  8513. </td></tr>
  8514. <tr><td align="left" valign="top">&bull; <a href="#Alpha_002dDependent" accesskey="2">Alpha-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Alpha Dependent Features
  8515. </td></tr>
  8516. <tr><td align="left" valign="top">&bull; <a href="#ARC_002dDependent" accesskey="3">ARC-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">ARC Dependent Features
  8517. </td></tr>
  8518. <tr><td align="left" valign="top">&bull; <a href="#ARM_002dDependent" accesskey="4">ARM-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">ARM Dependent Features
  8519. </td></tr>
  8520. <tr><td align="left" valign="top">&bull; <a href="#AVR_002dDependent" accesskey="5">AVR-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">AVR Dependent Features
  8521. </td></tr>
  8522. <tr><td align="left" valign="top">&bull; <a href="#Blackfin_002dDependent" accesskey="6">Blackfin-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Blackfin Dependent Features
  8523. </td></tr>
  8524. <tr><td align="left" valign="top">&bull; <a href="#BPF_002dDependent" accesskey="7">BPF-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">BPF Dependent Features
  8525. </td></tr>
  8526. <tr><td align="left" valign="top">&bull; <a href="#CR16_002dDependent" accesskey="8">CR16-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">CR16 Dependent Features
  8527. </td></tr>
  8528. <tr><td align="left" valign="top">&bull; <a href="#CRIS_002dDependent" accesskey="9">CRIS-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">CRIS Dependent Features
  8529. </td></tr>
  8530. <tr><td align="left" valign="top">&bull; <a href="#C_002dSKY_002dDependent">C-SKY-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">C-SKY Dependent Features
  8531. </td></tr>
  8532. <tr><td align="left" valign="top">&bull; <a href="#D10V_002dDependent">D10V-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">D10V Dependent Features
  8533. </td></tr>
  8534. <tr><td align="left" valign="top">&bull; <a href="#D30V_002dDependent">D30V-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">D30V Dependent Features
  8535. </td></tr>
  8536. <tr><td align="left" valign="top">&bull; <a href="#Epiphany_002dDependent">Epiphany-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">EPIPHANY Dependent Features
  8537. </td></tr>
  8538. <tr><td align="left" valign="top">&bull; <a href="#H8_002f300_002dDependent">H8/300-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Renesas H8/300 Dependent Features
  8539. </td></tr>
  8540. <tr><td align="left" valign="top">&bull; <a href="#HPPA_002dDependent">HPPA-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">HPPA Dependent Features
  8541. </td></tr>
  8542. <tr><td align="left" valign="top">&bull; <a href="#i386_002dDependent">i386-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Intel 80386 and AMD x86-64 Dependent Features
  8543. </td></tr>
  8544. <tr><td align="left" valign="top">&bull; <a href="#IA_002d64_002dDependent">IA-64-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Intel IA-64 Dependent Features
  8545. </td></tr>
  8546. <tr><td align="left" valign="top">&bull; <a href="#IP2K_002dDependent">IP2K-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">IP2K Dependent Features
  8547. </td></tr>
  8548. <tr><td align="left" valign="top">&bull; <a href="#LM32_002dDependent">LM32-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">LM32 Dependent Features
  8549. </td></tr>
  8550. <tr><td align="left" valign="top">&bull; <a href="#KVX_002dDependent">KVX-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">KVX Dependent Features
  8551. </td></tr>
  8552. <tr><td align="left" valign="top">&bull; <a href="#M32C_002dDependent">M32C-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">M32C Dependent Features
  8553. </td></tr>
  8554. <tr><td align="left" valign="top">&bull; <a href="#M32R_002dDependent">M32R-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">M32R Dependent Features
  8555. </td></tr>
  8556. <tr><td align="left" valign="top">&bull; <a href="#M68K_002dDependent">M68K-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">M680x0 Dependent Features
  8557. </td></tr>
  8558. <tr><td align="left" valign="top">&bull; <a href="#M68HC11_002dDependent">M68HC11-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">M68HC11 and 68HC12 Dependent Features
  8559. </td></tr>
  8560. <tr><td align="left" valign="top">&bull; <a href="#S12Z_002dDependent">S12Z-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">S12Z Dependent Features
  8561. </td></tr>
  8562. <tr><td align="left" valign="top">&bull; <a href="#Meta_002dDependent">Meta-Dependent </a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Meta Dependent Features
  8563. </td></tr>
  8564. <tr><td align="left" valign="top">&bull; <a href="#MicroBlaze_002dDependent">MicroBlaze-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">MICROBLAZE Dependent Features
  8565. </td></tr>
  8566. <tr><td align="left" valign="top">&bull; <a href="#MIPS_002dDependent">MIPS-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">MIPS Dependent Features
  8567. </td></tr>
  8568. <tr><td align="left" valign="top">&bull; <a href="#MMIX_002dDependent">MMIX-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">MMIX Dependent Features
  8569. </td></tr>
  8570. <tr><td align="left" valign="top">&bull; <a href="#MSP430_002dDependent">MSP430-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">MSP430 Dependent Features
  8571. </td></tr>
  8572. <tr><td align="left" valign="top">&bull; <a href="#NDS32_002dDependent">NDS32-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Andes NDS32 Dependent Features
  8573. </td></tr>
  8574. <tr><td align="left" valign="top">&bull; <a href="#NiosII_002dDependent">NiosII-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Altera Nios II Dependent Features
  8575. </td></tr>
  8576. <tr><td align="left" valign="top">&bull; <a href="#NS32K_002dDependent">NS32K-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">NS32K Dependent Features
  8577. </td></tr>
  8578. <tr><td align="left" valign="top">&bull; <a href="#OpenRISC_002dDependent">OpenRISC-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">OpenRISC 1000 Features
  8579. </td></tr>
  8580. <tr><td align="left" valign="top">&bull; <a href="#PDP_002d11_002dDependent">PDP-11-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">PDP-11 Dependent Features
  8581. </td></tr>
  8582. <tr><td align="left" valign="top">&bull; <a href="#PJ_002dDependent">PJ-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">picoJava Dependent Features
  8583. </td></tr>
  8584. <tr><td align="left" valign="top">&bull; <a href="#PPC_002dDependent">PPC-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">PowerPC Dependent Features
  8585. </td></tr>
  8586. <tr><td align="left" valign="top">&bull; <a href="#PRU_002dDependent">PRU-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">PRU Dependent Features
  8587. </td></tr>
  8588. <tr><td align="left" valign="top">&bull; <a href="#RISC_002dV_002dDependent">RISC-V-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RISC-V Dependent Features
  8589. </td></tr>
  8590. <tr><td align="left" valign="top">&bull; <a href="#RL78_002dDependent">RL78-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RL78 Dependent Features
  8591. </td></tr>
  8592. <tr><td align="left" valign="top">&bull; <a href="#RX_002dDependent">RX-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RX Dependent Features
  8593. </td></tr>
  8594. <tr><td align="left" valign="top">&bull; <a href="#S_002f390_002dDependent">S/390-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">IBM S/390 Dependent Features
  8595. </td></tr>
  8596. <tr><td align="left" valign="top">&bull; <a href="#SCORE_002dDependent">SCORE-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">SCORE Dependent Features
  8597. </td></tr>
  8598. <tr><td align="left" valign="top">&bull; <a href="#SH_002dDependent">SH-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Renesas / SuperH SH Dependent Features
  8599. </td></tr>
  8600. <tr><td align="left" valign="top">&bull; <a href="#Sparc_002dDependent">Sparc-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">SPARC Dependent Features
  8601. </td></tr>
  8602. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dDependent">TIC54X-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">TI TMS320C54x Dependent Features
  8603. </td></tr>
  8604. <tr><td align="left" valign="top">&bull; <a href="#TIC6X_002dDependent">TIC6X-Dependent </a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">TI TMS320C6x Dependent Features
  8605. </td></tr>
  8606. <tr><td align="left" valign="top">&bull; <a href="#TILE_002dGx_002dDependent">TILE-Gx-Dependent </a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Tilera TILE-Gx Dependent Features
  8607. </td></tr>
  8608. <tr><td align="left" valign="top">&bull; <a href="#TILEPro_002dDependent">TILEPro-Dependent </a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Tilera TILEPro Dependent Features
  8609. </td></tr>
  8610. <tr><td align="left" valign="top">&bull; <a href="#V850_002dDependent">V850-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">V850 Dependent Features
  8611. </td></tr>
  8612. <tr><td align="left" valign="top">&bull; <a href="#Vax_002dDependent">Vax-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">VAX Dependent Features
  8613. </td></tr>
  8614. <tr><td align="left" valign="top">&bull; <a href="#Visium_002dDependent">Visium-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Visium Dependent Features
  8615. </td></tr>
  8616. <tr><td align="left" valign="top">&bull; <a href="#WebAssembly_002dDependent">WebAssembly-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">WebAssembly Dependent Features
  8617. </td></tr>
  8618. <tr><td align="left" valign="top">&bull; <a href="#XGATE_002dDependent">XGATE-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">XGATE Dependent Features
  8619. </td></tr>
  8620. <tr><td align="left" valign="top">&bull; <a href="#XSTORMY16_002dDependent">XSTORMY16-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">XStormy16 Dependent Features
  8621. </td></tr>
  8622. <tr><td align="left" valign="top">&bull; <a href="#Xtensa_002dDependent">Xtensa-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Xtensa Dependent Features
  8623. </td></tr>
  8624. <tr><td align="left" valign="top">&bull; <a href="#Z80_002dDependent">Z80-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Z80 Dependent Features
  8625. </td></tr>
  8626. <tr><td align="left" valign="top">&bull; <a href="#Z8000_002dDependent">Z8000-Dependent</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Z8000 Dependent Features
  8627. </td></tr>
  8628. </table>
  8629. <hr>
  8630. <span id="AArch64_002dDependent"></span><div class="header">
  8631. <p>
  8632. Next: <a href="#Alpha_002dDependent" accesskey="n" rel="next">Alpha-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8633. </div>
  8634. <span id="AArch64-Dependent-Features"></span><h3 class="section">9.1 AArch64 Dependent Features</h3>
  8635. <span id="index-AArch64-support"></span>
  8636. <table class="menu" border="0" cellspacing="0">
  8637. <tr><td align="left" valign="top">&bull; <a href="#AArch64-Options" accesskey="1">AArch64 Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  8638. </td></tr>
  8639. <tr><td align="left" valign="top">&bull; <a href="#AArch64-Extensions" accesskey="2">AArch64 Extensions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Extensions
  8640. </td></tr>
  8641. <tr><td align="left" valign="top">&bull; <a href="#AArch64-Syntax" accesskey="3">AArch64 Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  8642. </td></tr>
  8643. <tr><td align="left" valign="top">&bull; <a href="#AArch64-Floating-Point" accesskey="4">AArch64 Floating Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  8644. </td></tr>
  8645. <tr><td align="left" valign="top">&bull; <a href="#AArch64-Directives" accesskey="5">AArch64 Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">AArch64 Machine Directives
  8646. </td></tr>
  8647. <tr><td align="left" valign="top">&bull; <a href="#AArch64-Opcodes" accesskey="6">AArch64 Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  8648. </td></tr>
  8649. <tr><td align="left" valign="top">&bull; <a href="#AArch64-Mapping-Symbols" accesskey="7">AArch64 Mapping Symbols</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Mapping Symbols
  8650. </td></tr>
  8651. </table>
  8652. <hr>
  8653. <span id="AArch64-Options"></span><div class="header">
  8654. <p>
  8655. Next: <a href="#AArch64-Extensions" accesskey="n" rel="next">AArch64 Extensions</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8656. </div>
  8657. <span id="Options"></span><h4 class="subsection">9.1.1 Options</h4>
  8658. <span id="index-AArch64-options-_0028none_0029"></span>
  8659. <span id="index-options-for-AArch64-_0028none_0029"></span>
  8660. <dl compact="compact">
  8661. <dd>
  8662. <span id="index-_002dEB-command_002dline-option_002c-AArch64"></span>
  8663. </dd>
  8664. <dt><code>-EB</code></dt>
  8665. <dd><p>This option specifies that the output generated by the assembler should
  8666. be marked as being encoded for a big-endian processor.
  8667. </p>
  8668. <span id="index-_002dEL-command_002dline-option_002c-AArch64"></span>
  8669. </dd>
  8670. <dt><code>-EL</code></dt>
  8671. <dd><p>This option specifies that the output generated by the assembler should
  8672. be marked as being encoded for a little-endian processor.
  8673. </p>
  8674. <span id="index-_002dmabi_003d-command_002dline-option_002c-AArch64"></span>
  8675. </dd>
  8676. <dt><code>-mabi=<var>abi</var></code></dt>
  8677. <dd><p>Specify which ABI the source code uses. The recognized arguments
  8678. are: <code>ilp32</code> and <code>lp64</code>, which decides the generated object
  8679. file in ELF32 and ELF64 format respectively. The default is <code>lp64</code>.
  8680. </p>
  8681. <span id="index-_002dmcpu_003d-command_002dline-option_002c-AArch64"></span>
  8682. </dd>
  8683. <dt><code>-mcpu=<var>processor</var>[+<var>extension</var>&hellip;]</code></dt>
  8684. <dd><p>This option specifies the target processor. The assembler will issue an error
  8685. message if an attempt is made to assemble an instruction which will not execute
  8686. on the target processor. The following processor names are recognized:
  8687. <code>cortex-a34</code>,
  8688. <code>cortex-a35</code>,
  8689. <code>cortex-a53</code>,
  8690. <code>cortex-a55</code>,
  8691. <code>cortex-a57</code>,
  8692. <code>cortex-a65</code>,
  8693. <code>cortex-a65ae</code>,
  8694. <code>cortex-a72</code>,
  8695. <code>cortex-a73</code>,
  8696. <code>cortex-a75</code>,
  8697. <code>cortex-a76</code>,
  8698. <code>cortex-a76ae</code>,
  8699. <code>cortex-a77</code>,
  8700. <code>cortex-a78</code>,
  8701. <code>cortex-a78ae</code>,
  8702. <code>cortex-a78c</code>,
  8703. <code>cortex-a510</code>,
  8704. <code>cortex-a520</code>,
  8705. <code>cortex-a710</code>,
  8706. <code>cortex-a720</code>,
  8707. <code>ares</code>,
  8708. <code>exynos-m1</code>,
  8709. <code>falkor</code>,
  8710. <code>neoverse-n1</code>,
  8711. <code>neoverse-n2</code>,
  8712. <code>neoverse-e1</code>,
  8713. <code>neoverse-v1</code>,
  8714. <code>qdf24xx</code>,
  8715. <code>saphira</code>,
  8716. <code>thunderx</code>,
  8717. <code>vulcan</code>,
  8718. <code>xgene1</code>
  8719. <code>xgene2</code>,
  8720. <code>cortex-r82</code>,
  8721. <code>cortex-x1</code>,
  8722. <code>cortex-x2</code>,
  8723. <code>cortex-x3</code>,
  8724. and
  8725. <code>cortex-x4</code>.
  8726. The special name <code>all</code> may be used to allow the assembler to accept
  8727. instructions valid for any supported processor, including all optional
  8728. extensions.
  8729. </p>
  8730. <p>In addition to the basic instruction set, the assembler can be told to
  8731. accept, or restrict, various extension mnemonics that extend the
  8732. processor. See <a href="#AArch64-Extensions">AArch64 Extensions</a>.
  8733. </p>
  8734. <p>If some implementations of a particular processor can have an
  8735. extension, then then those extensions are automatically enabled.
  8736. Consequently, you will not normally have to specify any additional
  8737. extensions.
  8738. </p>
  8739. <span id="index-_002dmarch_003d-command_002dline-option_002c-AArch64"></span>
  8740. </dd>
  8741. <dt><code>-march=<var>architecture</var>[+<var>extension</var>&hellip;]</code></dt>
  8742. <dd><p>This option specifies the target architecture. The assembler will
  8743. issue an error message if an attempt is made to assemble an
  8744. instruction which will not execute on the target architecture. The
  8745. following architecture names are recognized: <code>armv8-a</code>,
  8746. <code>armv8.1-a</code>, <code>armv8.2-a</code>, <code>armv8.3-a</code>, <code>armv8.4-a</code>
  8747. <code>armv8.5-a</code>, <code>armv8.6-a</code>, <code>armv8.7-a</code>, <code>armv8.8-a</code>,
  8748. <code>armv8.9-a</code>, <code>armv8-r</code>, <code>armv9-a</code>, <code>armv9.1-a</code>,
  8749. <code>armv9.2-a</code>, <code>armv9.3-a</code> and <code>armv9.4-a</code>.
  8750. </p>
  8751. <p>If both <samp>-mcpu</samp> and <samp>-march</samp> are specified, the
  8752. assembler will use the setting for <samp>-mcpu</samp>. If neither are
  8753. specified, the assembler will default to <samp>-mcpu=all</samp>.
  8754. </p>
  8755. <p>The architecture option can be extended with the same instruction set
  8756. extension options as the <samp>-mcpu</samp> option. Unlike
  8757. <samp>-mcpu</samp>, extensions are not always enabled by default.
  8758. See <a href="#AArch64-Extensions">AArch64 Extensions</a>.
  8759. </p>
  8760. <span id="index-_002dmverbose_002derror-command_002dline-option_002c-AArch64"></span>
  8761. </dd>
  8762. <dt><code>-mverbose-error</code></dt>
  8763. <dd><p>This option enables verbose error messages for AArch64 gas. This option
  8764. is enabled by default.
  8765. </p>
  8766. <span id="index-_002dmno_002dverbose_002derror-command_002dline-option_002c-AArch64"></span>
  8767. </dd>
  8768. <dt><code>-mno-verbose-error</code></dt>
  8769. <dd><p>This option disables verbose error messages in AArch64 gas.
  8770. </p>
  8771. </dd>
  8772. </dl>
  8773. <hr>
  8774. <span id="AArch64-Extensions"></span><div class="header">
  8775. <p>
  8776. Next: <a href="#AArch64-Syntax" accesskey="n" rel="next">AArch64 Syntax</a>, Previous: <a href="#AArch64-Options" accesskey="p" rel="prev">AArch64 Options</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8777. </div>
  8778. <span id="Architecture-Extensions"></span><h4 class="subsection">9.1.2 Architecture Extensions</h4>
  8779. <p>The tables below lists the permitted architecture extensions and architecture
  8780. versions that are supported by the assembler, including a brief description and
  8781. a list of other extensions that they depend upon.
  8782. </p>
  8783. <p>Multiple extensions may be specified, separated by a <code>+</code>.
  8784. Extension mnemonics may also be removed from those the assembler
  8785. accepts. This is done by prepending <code>no</code> to the option that adds
  8786. the extension. Extensions that are removed must be listed after all
  8787. extensions that have been added.
  8788. </p>
  8789. <p>Enabling an extension that depends upon other extensions (either directly or
  8790. recursively) will automatically cause those extensions to be enabled.
  8791. Similarly, disabling an extension that is required by other extensions will
  8792. automatically cause those extensions to be disabled.
  8793. </p>
  8794. <table>
  8795. <thead><tr><th width="16%">Extension</th><th width="22%">Depends upon</th><th width="62%">Description</th></tr></thead>
  8796. <tr><td width="16%"><code>aes</code></td><td width="22%"><code>simd</code></td><td width="62%">Enable the AES and PMULL cryptographic extensions.</td></tr>
  8797. <tr><td width="16%"><code>bf16</code></td><td width="22%"><code>fp</code></td><td width="62%">Enable BFloat16 extension.</td></tr>
  8798. <tr><td width="16%"><code>chk</code></td><td width="22%"></td><td width="62%">Enable the Check Feature Status Extension.</td></tr>
  8799. <tr><td width="16%"><code>compnum</code></td><td width="22%"><code>simd</code></td><td width="62%">Enable the complex number SIMD extensions. An alias of <code>fcma</code>.</td></tr>
  8800. <tr><td width="16%"><code>crc</code></td><td width="22%"></td><td width="62%">Enable CRC instructions.</td></tr>
  8801. <tr><td width="16%"><code>crypto</code></td><td width="22%"><code>simd</code></td><td width="62%">Enable cryptographic extensions. This is equivalent to <code>aes+sha2</code>.</td></tr>
  8802. <tr><td width="16%"><code>cssc</code></td><td width="22%"></td><td width="62%">Enable the Armv8.9-A Common Short Sequence Compression instructions.</td></tr>
  8803. <tr><td width="16%"><code>d128</code></td><td width="22%"><code>lse128</code></td><td width="62%">Enable the 128-bit Page Descriptor Extension. This implies <code>lse128</code>.</td></tr>
  8804. <tr><td width="16%"><code>dotprod</code></td><td width="22%"><code>simd</code></td><td width="62%">Enable the Dot Product extension.</td></tr>
  8805. <tr><td width="16%"><code>f32mm</code></td><td width="22%"><code>sve</code></td><td width="62%">Enable the F32 Matrix Multiply extension</td></tr>
  8806. <tr><td width="16%"><code>f64mm</code></td><td width="22%"><code>sve</code></td><td width="62%">Enable the F64 Matrix Multiply extension.</td></tr>
  8807. <tr><td width="16%"><code>fcma</code></td><td width="22%"><code>fp16</code>, <code>simd</code></td><td width="62%">Enable the complex number SIMD extensions.</td></tr>
  8808. <tr><td width="16%"><code>flagm</code></td><td width="22%"></td><td width="62%">Enable Flag Manipulation instructions.</td></tr>
  8809. <tr><td width="16%"><code>flagm2</code></td><td width="22%"><code>flagm</code></td><td width="62%">Enable FlagM2 flag conversion instructions.</td></tr>
  8810. <tr><td width="16%"><code>fp16fml</code></td><td width="22%"><code>fp16</code></td><td width="62%">Enable Armv8.2 16-bit floating-point multiplication variant support.</td></tr>
  8811. <tr><td width="16%"><code>fp16</code></td><td width="22%"><code>fp</code></td><td width="62%">Enable Armv8.2 16-bit floating-point support.</td></tr>
  8812. <tr><td width="16%"><code>fp</code></td><td width="22%"></td><td width="62%">Enable floating-point extensions.</td></tr>
  8813. <tr><td width="16%"><code>frintts</code></td><td width="22%"><code>simd</code></td><td width="62%">Enable floating-point round to integral value instructions.</td></tr>
  8814. <tr><td width="16%"><code>gcs</code></td><td width="22%"></td><td width="62%">Enable the Guarded Control Stack Extension.</td></tr>
  8815. <tr><td width="16%"><code>hbc</code></td><td width="22%"></td><td width="62%">Enable Armv8.8-A hinted conditional branch instructions</td></tr>
  8816. <tr><td width="16%"><code>i8mm</code></td><td width="22%"><code>simd</code></td><td width="62%">Enable the Int8 Matrix Multiply extension.</td></tr>
  8817. <tr><td width="16%"><code>ite</code></td><td width="22%"></td><td width="62%">Enable the TRCIT instruction.</td></tr>
  8818. <tr><td width="16%"><code>jscvt</code></td><td width="22%"><code>fp</code></td><td width="62%">Enable the <code>fjcvtzs</code> JavaScript conversion instruction.</td></tr>
  8819. <tr><td width="16%"><code>lor</code></td><td width="22%"></td><td width="62%">Enable Limited Ordering Regions extensions.</td></tr>
  8820. <tr><td width="16%"><code>ls64</code></td><td width="22%"></td><td width="62%">Enable the 64 Byte Loads/Stores extensions.</td></tr>
  8821. <tr><td width="16%"><code>lse</code></td><td width="22%"></td><td width="62%">Enable Large System extensions.</td></tr>
  8822. <tr><td width="16%"><code>lse128</code></td><td width="22%"><code>lse</code></td><td width="62%">Enable the 128-bit Atomic Instructions extension.</td></tr>
  8823. <tr><td width="16%"><code>memtag</code></td><td width="22%"></td><td width="62%">Enable Armv8.5-A Memory Tagging Extensions.</td></tr>
  8824. <tr><td width="16%"><code>mops</code></td><td width="22%"></td><td width="62%">Enable Armv8.8-A memcpy and memset acceleration instructions</td></tr>
  8825. <tr><td width="16%"><code>pan</code></td><td width="22%"></td><td width="62%">Enable Privileged Access Never support.</td></tr>
  8826. <tr><td width="16%"><code>pauth</code></td><td width="22%"></td><td width="62%">Enable Pointer Authentication.</td></tr>
  8827. <tr><td width="16%"><code>predres</code></td><td width="22%"></td><td width="62%">Enable the Execution and Data and Prediction instructions.</td></tr>
  8828. <tr><td width="16%"><code>predres2</code></td><td width="22%"><code>predres</code></td><td width="62%">Enable Prediction instructions.</td></tr>
  8829. <tr><td width="16%"><code>profile</code></td><td width="22%"></td><td width="62%">Enable statistical profiling extensions.</td></tr>
  8830. <tr><td width="16%"><code>ras</code></td><td width="22%"></td><td width="62%">Enable the Reliability, Availability and Serviceability extension.</td></tr>
  8831. <tr><td width="16%"><code>rasv2</code></td><td width="22%"><code>ras</code></td><td width="62%">Enable the Reliability, Availability and Serviceability extension v2.</td></tr>
  8832. <tr><td width="16%"><code>rcpc</code></td><td width="22%"></td><td width="62%">Enable the Load-Acquire RCpc instructions extension.</td></tr>
  8833. <tr><td width="16%"><code>rcpc2</code></td><td width="22%"><code>rcpc</code></td><td width="62%">Enable the Load-Acquire RCpc instructions extension v2.</td></tr>
  8834. <tr><td width="16%"><code>rcpc3</code></td><td width="22%"><code>rcpc2</code></td><td width="62%">Enable the Load-Acquire RCpc instructions extension v3.</td></tr>
  8835. <tr><td width="16%"><code>rdma</code></td><td width="22%"><code>simd</code></td><td width="62%">Enable rounding doubling multiply accumulate instructions.</td></tr>
  8836. <tr><td width="16%"><code>rdm</code></td><td width="22%"><code>simd</code></td><td width="62%">An alias of <code>rdma</code>.</td></tr>
  8837. <tr><td width="16%"><code>rng</code></td><td width="22%"></td><td width="62%">Enable Armv8.5-A random number instructions.</td></tr>
  8838. <tr><td width="16%"><code>sb</code></td><td width="22%"></td><td width="62%">Enable the speculation barrier instruction sb.</td></tr>
  8839. <tr><td width="16%"><code>sha2</code></td><td width="22%"><code>simd</code></td><td width="62%">Enable the SHA1 and SHA256 cryptographic extensions.</td></tr>
  8840. <tr><td width="16%"><code>sha3</code></td><td width="22%"><code>sha2</code></td><td width="62%">Enable the SHA512 and SHA3 cryptographic extensions.</td></tr>
  8841. <tr><td width="16%"><code>simd</code></td><td width="22%"><code>fp</code></td><td width="62%">Enable Advanced SIMD extensions.</td></tr>
  8842. <tr><td width="16%"><code>sm4</code></td><td width="22%"><code>simd</code></td><td width="62%">Enable the SM3 and SM4 cryptographic extensions.</td></tr>
  8843. <tr><td width="16%"><code>sme</code></td><td width="22%"><code>sve2</code>, <code>bf16</code></td><td width="62%">Enable the Scalable Matrix Extension.</td></tr>
  8844. <tr><td width="16%"><code>sme-f64f64</code></td><td width="22%"><code>sme</code></td><td width="62%">Enable SME F64F64 Extension.</td></tr>
  8845. <tr><td width="16%"><code>sme-i16i64</code></td><td width="22%"><code>sme</code></td><td width="62%">Enable SME I16I64 Extension.</td></tr>
  8846. <tr><td width="16%"><code>sme2</code></td><td width="22%"><code>sme</code></td><td width="62%">Enable SME2.</td></tr>
  8847. <tr><td width="16%"><code>ssbs</code></td><td width="22%"></td><td width="62%">Enable Speculative Store Bypassing Safe state read and write.</td></tr>
  8848. <tr><td width="16%"><code>sve</code></td><td width="22%"><code>fcma</code></td><td width="62%">Enable the Scalable Vector Extension.</td></tr>
  8849. <tr><td width="16%"><code>sve2</code></td><td width="22%"><code>sve</code></td><td width="62%">Enable SVE2.</td></tr>
  8850. <tr><td width="16%"><code>sve2-aes</code></td><td width="22%"><code>sve2</code>, <code>aes</code></td><td width="62%">Enable the SVE2 AES and PMULL Extensions.</td></tr>
  8851. <tr><td width="16%"><code>sve2-bitperm</code></td><td width="22%"><code>sve2</code></td><td width="62%">Enable the SVE2 BITPERM Extension.</td></tr>
  8852. <tr><td width="16%"><code>sve2-sha3</code></td><td width="22%"><code>sve2</code>, <code>sha3</code></td><td width="62%">Enable the SVE2 SHA3 Extension.</td></tr>
  8853. <tr><td width="16%"><code>sve2-sm4</code></td><td width="22%"><code>sve2</code>, <code>sm4</code></td><td width="62%">Enable the SVE2 SM4 Extension.</td></tr>
  8854. <tr><td width="16%"><code>the</code></td><td width="22%"></td><td width="62%">Enable the Translation Hardening Extension.</td></tr>
  8855. <tr><td width="16%"><code>tme</code></td><td width="22%"></td><td width="62%">Enable the Transactional Memory Extension.</td></tr>
  8856. <tr><td width="16%"><code>wfxt</code></td><td width="22%"></td><td width="62%">Enable <code>wfet</code> and <code>wfit</code> instructions.</td></tr>
  8857. <tr><td width="16%"><code>xs</code></td><td width="22%"></td><td width="62%">Enable the XS memory attribute extension.</td></tr>
  8858. </table>
  8859. <table>
  8860. <thead><tr><th width="20%">Architecture Version</th><th width="80%">Includes</th></tr></thead>
  8861. <tr><td width="20%"><code>armv8-a</code></td><td width="80%"><code>simd</code>, <code>chk</code>, <code>ras</code></td></tr>
  8862. <tr><td width="20%"><code>armv8.1-a</code></td><td width="80%"><code>armv8-a</code>, <code>crc</code>, <code>lse</code>, <code>rdma</code>, <code>pan</code>, <code>lor</code></td></tr>
  8863. <tr><td width="20%"><code>armv8.2-a</code></td><td width="80%"><code>armv8.1-a</code></td></tr>
  8864. <tr><td width="20%"><code>armv8.3-a</code></td><td width="80%"><code>armv8.2-a</code>, <code>fcma</code>, <code>jscvt</code>, <code>pauth</code>, <code>rcpc</code></td></tr>
  8865. <tr><td width="20%"><code>armv8.4-a</code></td><td width="80%"><code>armv8.3-a</code>, <code>fp16fml</code>, <code>dotprod</code>, <code>flagm</code>, <code>rcpc2</code></td></tr>
  8866. <tr><td width="20%"><code>armv8.5-a</code></td><td width="80%"><code>armv8.4-a</code>, <code>frintts</code>, <code>flagm2</code>, <code>predres</code>, <code>sb</code>, <code>ssbs</code></td></tr>
  8867. <tr><td width="20%"><code>armv8.6-a</code></td><td width="80%"><code>armv8.5-a</code>, <code>bf16</code>, <code>i8mm</code></td></tr>
  8868. <tr><td width="20%"><code>armv8.7-a</code></td><td width="80%"><code>armv8.6-a</code>, <code>ls64</code>, <code>xs</code>, <code>wfxt</code></td></tr>
  8869. <tr><td width="20%"><code>armv8.8-a</code></td><td width="80%"><code>armv8.7-a</code>, <code>hbc</code>, <code>mops</code></td></tr>
  8870. <tr><td width="20%"><code>armv8.9-a</code></td><td width="80%"><code>armv8.8-a</code>, <code>rasv2</code>, <code>predres2</code></td></tr>
  8871. <tr><td width="20%"><code>armv9-a</code></td><td width="80%"><code>armv8.5-a</code>, <code>sve2</code></td></tr>
  8872. <tr><td width="20%"><code>armv9.1-a</code></td><td width="80%"><code>armv9-a</code>, <code>armv8.6-a</code></td></tr>
  8873. <tr><td width="20%"><code>armv9.2-a</code></td><td width="80%"><code>armv9.1-a</code>, <code>armv8.7-a</code></td></tr>
  8874. <tr><td width="20%"><code>armv9.3-a</code></td><td width="80%"><code>armv9.2-a</code>, <code>armv8.8-a</code></td></tr>
  8875. <tr><td width="20%"><code>armv9.4-a</code></td><td width="80%"><code>armv9.3-a</code>, <code>armv8.9-a</code></td></tr>
  8876. <tr><td width="20%"><code>armv8-r</code></td><td width="80%"><code>armv8.4-a+nolor</code></td></tr>
  8877. </table>
  8878. <hr>
  8879. <span id="AArch64-Syntax"></span><div class="header">
  8880. <p>
  8881. Next: <a href="#AArch64-Floating-Point" accesskey="n" rel="next">AArch64 Floating Point</a>, Previous: <a href="#AArch64-Extensions" accesskey="p" rel="prev">AArch64 Extensions</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8882. </div>
  8883. <span id="Syntax-2"></span><h4 class="subsection">9.1.3 Syntax</h4>
  8884. <table class="menu" border="0" cellspacing="0">
  8885. <tr><td align="left" valign="top">&bull; <a href="#AArch64_002dChars" accesskey="1">AArch64-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  8886. </td></tr>
  8887. <tr><td align="left" valign="top">&bull; <a href="#AArch64_002dRegs" accesskey="2">AArch64-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  8888. </td></tr>
  8889. <tr><td align="left" valign="top">&bull; <a href="#AArch64_002dRelocations" accesskey="3">AArch64-Relocations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relocations
  8890. </td></tr>
  8891. </table>
  8892. <hr>
  8893. <span id="AArch64_002dChars"></span><div class="header">
  8894. <p>
  8895. Next: <a href="#AArch64_002dRegs" accesskey="n" rel="next">AArch64-Regs</a>, Up: <a href="#AArch64-Syntax" accesskey="u" rel="up">AArch64 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8896. </div>
  8897. <span id="Special-Characters"></span><h4 class="subsubsection">9.1.3.1 Special Characters</h4>
  8898. <span id="index-line-comment-character_002c-AArch64"></span>
  8899. <span id="index-AArch64-line-comment-character"></span>
  8900. <p>The presence of a &lsquo;<samp>//</samp>&rsquo; on a line indicates the start of a comment
  8901. that extends to the end of the current line. If a &lsquo;<samp>#</samp>&rsquo; appears as
  8902. the first character of a line, the whole line is treated as a comment.
  8903. </p>
  8904. <span id="index-line-separator_002c-AArch64"></span>
  8905. <span id="index-statement-separator_002c-AArch64"></span>
  8906. <span id="index-AArch64-line-separator"></span>
  8907. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used instead of a newline to separate
  8908. statements.
  8909. </p>
  8910. <span id="index-immediate-character_002c-AArch64"></span>
  8911. <span id="index-AArch64-immediate-character"></span>
  8912. <p>The &lsquo;<samp>#</samp>&rsquo; can be optionally used to indicate immediate operands.
  8913. </p>
  8914. <hr>
  8915. <span id="AArch64_002dRegs"></span><div class="header">
  8916. <p>
  8917. Next: <a href="#AArch64_002dRelocations" accesskey="n" rel="next">AArch64-Relocations</a>, Previous: <a href="#AArch64_002dChars" accesskey="p" rel="prev">AArch64-Chars</a>, Up: <a href="#AArch64-Syntax" accesskey="u" rel="up">AArch64 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8918. </div>
  8919. <span id="Register-Names"></span><h4 class="subsubsection">9.1.3.2 Register Names</h4>
  8920. <span id="index-AArch64-register-names"></span>
  8921. <span id="index-register-names_002c-AArch64"></span>
  8922. <p>Please refer to the section &lsquo;<samp>4.4 Register Names</samp>&rsquo; of
  8923. &lsquo;<samp>ARMv8 Instruction Set Overview</samp>&rsquo;, which is available at
  8924. <a href="http://infocenter.arm.com">http://infocenter.arm.com</a>.
  8925. </p>
  8926. <hr>
  8927. <span id="AArch64_002dRelocations"></span><div class="header">
  8928. <p>
  8929. Previous: <a href="#AArch64_002dRegs" accesskey="p" rel="prev">AArch64-Regs</a>, Up: <a href="#AArch64-Syntax" accesskey="u" rel="up">AArch64 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8930. </div>
  8931. <span id="Relocations"></span><h4 class="subsubsection">9.1.3.3 Relocations</h4>
  8932. <span id="index-relocations_002c-AArch64"></span>
  8933. <span id="index-AArch64-relocations"></span>
  8934. <span id="index-MOVN_002c-MOVZ-and-MOVK-group-relocations_002c-AArch64"></span>
  8935. <p>Relocations for &lsquo;<samp>MOVZ</samp>&rsquo; and &lsquo;<samp>MOVK</samp>&rsquo; instructions can be generated
  8936. by prefixing the label with &lsquo;<samp>#:abs_g2:</samp>&rsquo; etc.
  8937. For example to load the 48-bit absolute address of <var>foo</var> into x0:
  8938. </p>
  8939. <div class="example">
  8940. <pre class="example"> movz x0, #:abs_g2:foo // bits 32-47, overflow check
  8941. movk x0, #:abs_g1_nc:foo // bits 16-31, no overflow check
  8942. movk x0, #:abs_g0_nc:foo // bits 0-15, no overflow check
  8943. </pre></div>
  8944. <span id="index-ADRP_002c-ADD_002c-LDR_002fSTR-group-relocations_002c-AArch64"></span>
  8945. <p>Relocations for &lsquo;<samp>ADRP</samp>&rsquo;, and &lsquo;<samp>ADD</samp>&rsquo;, &lsquo;<samp>LDR</samp>&rsquo; or &lsquo;<samp>STR</samp>&rsquo;
  8946. instructions can be generated by prefixing the label with
  8947. &lsquo;<samp>:pg_hi21:</samp>&rsquo; and &lsquo;<samp>#:lo12:</samp>&rsquo; respectively.
  8948. </p>
  8949. <p>For example to use 33-bit (+/-4GB) pc-relative addressing to
  8950. load the address of <var>foo</var> into x0:
  8951. </p>
  8952. <div class="example">
  8953. <pre class="example"> adrp x0, :pg_hi21:foo
  8954. add x0, x0, #:lo12:foo
  8955. </pre></div>
  8956. <p>Or to load the value of <var>foo</var> into x0:
  8957. </p>
  8958. <div class="example">
  8959. <pre class="example"> adrp x0, :pg_hi21:foo
  8960. ldr x0, [x0, #:lo12:foo]
  8961. </pre></div>
  8962. <p>Note that &lsquo;<samp>:pg_hi21:</samp>&rsquo; is optional.
  8963. </p>
  8964. <div class="example">
  8965. <pre class="example"> adrp x0, foo
  8966. </pre></div>
  8967. <p>is equivalent to
  8968. </p>
  8969. <div class="example">
  8970. <pre class="example"> adrp x0, :pg_hi21:foo
  8971. </pre></div>
  8972. <hr>
  8973. <span id="AArch64-Floating-Point"></span><div class="header">
  8974. <p>
  8975. Next: <a href="#AArch64-Directives" accesskey="n" rel="next">AArch64 Directives</a>, Previous: <a href="#AArch64-Syntax" accesskey="p" rel="prev">AArch64 Syntax</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8976. </div>
  8977. <span id="Floating-Point"></span><h4 class="subsection">9.1.4 Floating Point</h4>
  8978. <span id="index-floating-point_002c-AArch64-_0028IEEE_0029"></span>
  8979. <span id="index-AArch64-floating-point-_0028IEEE_0029"></span>
  8980. <p>The AArch64 architecture uses <small>IEEE</small> floating-point numbers.
  8981. </p>
  8982. <hr>
  8983. <span id="AArch64-Directives"></span><div class="header">
  8984. <p>
  8985. Next: <a href="#AArch64-Opcodes" accesskey="n" rel="next">AArch64 Opcodes</a>, Previous: <a href="#AArch64-Floating-Point" accesskey="p" rel="prev">AArch64 Floating Point</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  8986. </div>
  8987. <span id="AArch64-Machine-Directives"></span><h4 class="subsection">9.1.5 AArch64 Machine Directives</h4>
  8988. <span id="index-machine-directives_002c-AArch64"></span>
  8989. <span id="index-AArch64-machine-directives"></span>
  8990. <dl compact="compact">
  8991. <dd>
  8992. <span id="index-_002earch-directive_002c-AArch64"></span>
  8993. </dd>
  8994. <dt><code>.arch <var>name</var></code></dt>
  8995. <dd><p>Select the target architecture. Valid values for <var>name</var> are the same as
  8996. for the <samp>-march</samp> command-line option.
  8997. </p>
  8998. <p>Specifying <code>.arch</code> clears any previously selected architecture
  8999. extensions.
  9000. </p>
  9001. <span id="index-_002earch_005fextension-directive_002c-AArch64"></span>
  9002. </dd>
  9003. <dt><code>.arch_extension <var>name</var></code></dt>
  9004. <dd><p>Add or remove an architecture extension to the target architecture. Valid
  9005. values for <var>name</var> are the same as those accepted as architectural
  9006. extensions by the <samp>-mcpu</samp> command-line option.
  9007. </p>
  9008. <p><code>.arch_extension</code> may be used multiple times to add or remove extensions
  9009. incrementally to the architecture being compiled for.
  9010. </p>
  9011. <span id="index-_002ecpu-directive_002c-AArch64"></span>
  9012. </dd>
  9013. <dt><code>.cpu <var>name</var></code></dt>
  9014. <dd><p>Set the target processor. Valid values for <var>name</var> are the same as
  9015. those accepted by the <samp>-mcpu=</samp> command-line option.
  9016. </p>
  9017. <span id="index-_002edword-directive_002c-AArch64"></span>
  9018. </dd>
  9019. <dt><code>.dword <var>expressions</var></code></dt>
  9020. <dd><p>The <code>.dword</code> directive produces 64 bit values.
  9021. </p>
  9022. <span id="index-_002eeven-directive_002c-AArch64"></span>
  9023. </dd>
  9024. <dt><code>.even</code></dt>
  9025. <dd><p>The <code>.even</code> directive aligns the output on the next even byte
  9026. boundary.
  9027. </p>
  9028. <span id="index-_002efloat16-directive_002c-AArch64"></span>
  9029. </dd>
  9030. <dt><code>.float16 <var>value [,...,value_n]</var></code></dt>
  9031. <dd><p>Place the half precision floating point representation of one or more
  9032. floating-point values into the current section.
  9033. The format used to encode the floating point values is always the
  9034. IEEE 754-2008 half precision floating point format.
  9035. </p>
  9036. <span id="index-_002einst-directive_002c-AArch64"></span>
  9037. </dd>
  9038. <dt><code>.inst <var>expressions</var></code></dt>
  9039. <dd><p>Inserts the expressions into the output as if they were instructions,
  9040. rather than data.
  9041. </p>
  9042. <span id="index-_002eltorg-directive_002c-AArch64"></span>
  9043. </dd>
  9044. <dt><code>.ltorg</code></dt>
  9045. <dd><p>This directive causes the current contents of the literal pool to be
  9046. dumped into the current section (which is assumed to be the .text
  9047. section) at the current location (aligned to a word boundary).
  9048. GAS maintains a separate literal pool for each section and each
  9049. sub-section. The <code>.ltorg</code> directive will only affect the literal
  9050. pool of the current section and sub-section. At the end of assembly
  9051. all remaining, un-empty literal pools will automatically be dumped.
  9052. </p>
  9053. <p>Note - older versions of GAS would dump the current literal
  9054. pool any time a section change occurred. This is no longer done, since
  9055. it prevents accurate control of the placement of literal pools.
  9056. </p>
  9057. <span id="index-_002epool-directive_002c-AArch64"></span>
  9058. </dd>
  9059. <dt><code>.pool</code></dt>
  9060. <dd><p>This is a synonym for .ltorg.
  9061. </p>
  9062. <span id="index-_002ereq-directive_002c-AArch64"></span>
  9063. </dd>
  9064. <dt><code><var>name</var> .req <var>register name</var></code></dt>
  9065. <dd><p>This creates an alias for <var>register name</var> called <var>name</var>. For
  9066. example:
  9067. </p>
  9068. <div class="example">
  9069. <pre class="example"> foo .req w0
  9070. </pre></div>
  9071. <p>ip0, ip1, lr and fp are automatically defined to
  9072. alias to X16, X17, X30 and X29 respectively.
  9073. </p>
  9074. <span id="index-_002etlsdescadd-directive_002c-AArch64"></span>
  9075. </dd>
  9076. <dt><code><code>.tlsdescadd</code></code></dt>
  9077. <dd><p>Emits a TLSDESC_ADD reloc on the next instruction.
  9078. </p>
  9079. <span id="index-_002etlsdesccall-directive_002c-AArch64"></span>
  9080. </dd>
  9081. <dt><code><code>.tlsdesccall</code></code></dt>
  9082. <dd><p>Emits a TLSDESC_CALL reloc on the next instruction.
  9083. </p>
  9084. <span id="index-_002etlsdescldr-directive_002c-AArch64"></span>
  9085. </dd>
  9086. <dt><code><code>.tlsdescldr</code></code></dt>
  9087. <dd><p>Emits a TLSDESC_LDR reloc on the next instruction.
  9088. </p>
  9089. <span id="index-_002eunreq-directive_002c-AArch64"></span>
  9090. </dd>
  9091. <dt><code>.unreq <var>alias-name</var></code></dt>
  9092. <dd><p>This undefines a register alias which was previously defined using the
  9093. <code>req</code> directive. For example:
  9094. </p>
  9095. <div class="example">
  9096. <pre class="example"> foo .req w0
  9097. .unreq foo
  9098. </pre></div>
  9099. <p>An error occurs if the name is undefined. Note - this pseudo op can
  9100. be used to delete builtin in register name aliases (eg &rsquo;w0&rsquo;). This
  9101. should only be done if it is really necessary.
  9102. </p>
  9103. <span id="index-_002evariant_005fpcs-directive_002c-AArch64"></span>
  9104. </dd>
  9105. <dt><code>.variant_pcs <var>symbol</var></code></dt>
  9106. <dd><p>This directive marks <var>symbol</var> referencing a function that may
  9107. follow a variant procedure call standard with different register
  9108. usage convention from the base procedure call standard.
  9109. </p>
  9110. <span id="index-_002exword-directive_002c-AArch64"></span>
  9111. </dd>
  9112. <dt><code>.xword <var>expressions</var></code></dt>
  9113. <dd><p>The <code>.xword</code> directive produces 64 bit values. This is the same
  9114. as the <code>.dword</code> directive.
  9115. </p>
  9116. <span id="index-_002ecfi_005fb_005fkey_005fframe-directive_002c-AArch64"></span>
  9117. </dd>
  9118. <dt><code><code>.cfi_b_key_frame</code></code></dt>
  9119. <dd><p>The <code>.cfi_b_key_frame</code> directive inserts a &rsquo;B&rsquo; character into the CIE
  9120. corresponding to the current frame&rsquo;s FDE, meaning that its return address has
  9121. been signed with the B-key. If two frames are signed with differing keys then
  9122. they will not share the same CIE. This information is intended to be used by
  9123. the stack unwinder in order to properly authenticate return addresses.
  9124. </p>
  9125. </dd>
  9126. </dl>
  9127. <hr>
  9128. <span id="AArch64-Opcodes"></span><div class="header">
  9129. <p>
  9130. Next: <a href="#AArch64-Mapping-Symbols" accesskey="n" rel="next">AArch64 Mapping Symbols</a>, Previous: <a href="#AArch64-Directives" accesskey="p" rel="prev">AArch64 Directives</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9131. </div>
  9132. <span id="Opcodes"></span><h4 class="subsection">9.1.6 Opcodes</h4>
  9133. <span id="index-AArch64-opcodes"></span>
  9134. <span id="index-opcodes-for-AArch64"></span>
  9135. <p>GAS implements all the standard AArch64 opcodes. It also
  9136. implements several pseudo opcodes, including several synthetic load
  9137. instructions.
  9138. </p>
  9139. <dl compact="compact">
  9140. <dd>
  9141. <span id="index-LDR-reg_002c_003d_003cexpr_003e-pseudo-op_002c-AArch64"></span>
  9142. </dd>
  9143. <dt><code>LDR =</code></dt>
  9144. <dd><div class="example">
  9145. <pre class="example"> ldr &lt;register&gt; , =&lt;expression&gt;
  9146. </pre></div>
  9147. <p>The constant expression will be placed into the nearest literal pool (if it not
  9148. already there) and a PC-relative LDR instruction will be generated.
  9149. </p>
  9150. </dd>
  9151. </dl>
  9152. <p>For more information on the AArch64 instruction set and assembly language
  9153. notation, see &lsquo;<samp>ARMv8 Instruction Set Overview</samp>&rsquo; available at
  9154. <a href="http://infocenter.arm.com">http://infocenter.arm.com</a>.
  9155. </p>
  9156. <hr>
  9157. <span id="AArch64-Mapping-Symbols"></span><div class="header">
  9158. <p>
  9159. Previous: <a href="#AArch64-Opcodes" accesskey="p" rel="prev">AArch64 Opcodes</a>, Up: <a href="#AArch64_002dDependent" accesskey="u" rel="up">AArch64-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9160. </div>
  9161. <span id="Mapping-Symbols"></span><h4 class="subsection">9.1.7 Mapping Symbols</h4>
  9162. <p>The AArch64 ELF specification requires that special symbols be inserted
  9163. into object files to mark certain features:
  9164. </p>
  9165. <dl compact="compact">
  9166. <dd>
  9167. <span id="index-_0024x"></span>
  9168. </dd>
  9169. <dt><code>$x</code></dt>
  9170. <dd><p>At the start of a region of code containing AArch64 instructions.
  9171. </p>
  9172. <span id="index-_0024d"></span>
  9173. </dd>
  9174. <dt><code>$d</code></dt>
  9175. <dd><p>At the start of a region of data.
  9176. </p>
  9177. </dd>
  9178. </dl>
  9179. <hr>
  9180. <span id="Alpha_002dDependent"></span><div class="header">
  9181. <p>
  9182. Next: <a href="#ARC_002dDependent" accesskey="n" rel="next">ARC-Dependent</a>, Previous: <a href="#AArch64_002dDependent" accesskey="p" rel="prev">AArch64-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9183. </div>
  9184. <span id="Alpha-Dependent-Features"></span><h3 class="section">9.2 Alpha Dependent Features</h3>
  9185. <span id="index-Alpha-support"></span>
  9186. <table class="menu" border="0" cellspacing="0">
  9187. <tr><td align="left" valign="top">&bull; <a href="#Alpha-Notes" accesskey="1">Alpha Notes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Notes
  9188. </td></tr>
  9189. <tr><td align="left" valign="top">&bull; <a href="#Alpha-Options" accesskey="2">Alpha Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  9190. </td></tr>
  9191. <tr><td align="left" valign="top">&bull; <a href="#Alpha-Syntax" accesskey="3">Alpha Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  9192. </td></tr>
  9193. <tr><td align="left" valign="top">&bull; <a href="#Alpha-Floating-Point" accesskey="4">Alpha Floating Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  9194. </td></tr>
  9195. <tr><td align="left" valign="top">&bull; <a href="#Alpha-Directives" accesskey="5">Alpha Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Alpha Machine Directives
  9196. </td></tr>
  9197. <tr><td align="left" valign="top">&bull; <a href="#Alpha-Opcodes" accesskey="6">Alpha Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  9198. </td></tr>
  9199. </table>
  9200. <hr>
  9201. <span id="Alpha-Notes"></span><div class="header">
  9202. <p>
  9203. Next: <a href="#Alpha-Options" accesskey="n" rel="next">Alpha Options</a>, Up: <a href="#Alpha_002dDependent" accesskey="u" rel="up">Alpha-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9204. </div>
  9205. <span id="Notes"></span><h4 class="subsection">9.2.1 Notes</h4>
  9206. <span id="index-Alpha-notes"></span>
  9207. <span id="index-notes-for-Alpha"></span>
  9208. <p>The documentation here is primarily for the ELF object format.
  9209. <code>as</code> also supports the ECOFF and EVAX formats, but
  9210. features specific to these formats are not yet documented.
  9211. </p>
  9212. <hr>
  9213. <span id="Alpha-Options"></span><div class="header">
  9214. <p>
  9215. Next: <a href="#Alpha-Syntax" accesskey="n" rel="next">Alpha Syntax</a>, Previous: <a href="#Alpha-Notes" accesskey="p" rel="prev">Alpha Notes</a>, Up: <a href="#Alpha_002dDependent" accesskey="u" rel="up">Alpha-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9216. </div>
  9217. <span id="Options-1"></span><h4 class="subsection">9.2.2 Options</h4>
  9218. <span id="index-Alpha-options"></span>
  9219. <span id="index-options-for-Alpha"></span>
  9220. <dl compact="compact">
  9221. <dd><span id="index-_002dmcpu-command_002dline-option_002c-Alpha"></span>
  9222. </dd>
  9223. <dt><code>-m<var>cpu</var></code></dt>
  9224. <dd><p>This option specifies the target processor. If an attempt is made to
  9225. assemble an instruction which will not execute on the target processor,
  9226. the assembler may either expand the instruction as a macro or issue an
  9227. error message. This option is equivalent to the <code>.arch</code> directive.
  9228. </p>
  9229. <p>The following processor names are recognized:
  9230. <code>21064</code>,
  9231. <code>21064a</code>,
  9232. <code>21066</code>,
  9233. <code>21068</code>,
  9234. <code>21164</code>,
  9235. <code>21164a</code>,
  9236. <code>21164pc</code>,
  9237. <code>21264</code>,
  9238. <code>21264a</code>,
  9239. <code>21264b</code>,
  9240. <code>ev4</code>,
  9241. <code>ev5</code>,
  9242. <code>lca45</code>,
  9243. <code>ev5</code>,
  9244. <code>ev56</code>,
  9245. <code>pca56</code>,
  9246. <code>ev6</code>,
  9247. <code>ev67</code>,
  9248. <code>ev68</code>.
  9249. The special name <code>all</code> may be used to allow the assembler to accept
  9250. instructions valid for any Alpha processor.
  9251. </p>
  9252. <p>In order to support existing practice in OSF/1 with respect to <code>.arch</code>,
  9253. and existing practice within <code>MILO</code> (the Linux ARC bootloader), the
  9254. numbered processor names (e.g. 21064) enable the processor-specific PALcode
  9255. instructions, while the &ldquo;electro-vlasic&rdquo; names (e.g. <code>ev4</code>) do not.
  9256. </p>
  9257. <span id="index-_002dmdebug-command_002dline-option_002c-Alpha"></span>
  9258. <span id="index-_002dno_002dmdebug-command_002dline-option_002c-Alpha"></span>
  9259. </dd>
  9260. <dt><code>-mdebug</code></dt>
  9261. <dt><code>-no-mdebug</code></dt>
  9262. <dd><p>Enables or disables the generation of <code>.mdebug</code> encapsulation for
  9263. stabs directives and procedure descriptors. The default is to automatically
  9264. enable <code>.mdebug</code> when the first stabs directive is seen.
  9265. </p>
  9266. <span id="index-_002drelax-command_002dline-option_002c-Alpha"></span>
  9267. </dd>
  9268. <dt><code>-relax</code></dt>
  9269. <dd><p>This option forces all relocations to be put into the object file, instead
  9270. of saving space and resolving some relocations at assembly time. Note that
  9271. this option does not propagate all symbol arithmetic into the object file,
  9272. because not all symbol arithmetic can be represented. However, the option
  9273. can still be useful in specific applications.
  9274. </p>
  9275. <span id="index-_002dreplace-command_002dline-option_002c-Alpha"></span>
  9276. <span id="index-_002dnoreplace-command_002dline-option_002c-Alpha"></span>
  9277. </dd>
  9278. <dt><code>-replace</code></dt>
  9279. <dt><code>-noreplace</code></dt>
  9280. <dd><p>Enables or disables the optimization of procedure calls, both at assemblage
  9281. and at link time. These options are only available for VMS targets and
  9282. <code>-replace</code> is the default. See section 1.4.1 of the OpenVMS Linker
  9283. Utility Manual.
  9284. </p>
  9285. <span id="index-_002dg-command_002dline-option_002c-Alpha"></span>
  9286. </dd>
  9287. <dt><code>-g</code></dt>
  9288. <dd><p>This option is used when the compiler generates debug information. When
  9289. <code>gcc</code> is using <code>mips-tfile</code> to generate debug
  9290. information for ECOFF, local labels must be passed through to the object
  9291. file. Otherwise this option has no effect.
  9292. </p>
  9293. <span id="index-_002dG-command_002dline-option_002c-Alpha"></span>
  9294. </dd>
  9295. <dt><code>-G<var>size</var></code></dt>
  9296. <dd><p>A local common symbol larger than <var>size</var> is placed in <code>.bss</code>,
  9297. while smaller symbols are placed in <code>.sbss</code>.
  9298. </p>
  9299. <span id="index-_002dF-command_002dline-option_002c-Alpha"></span>
  9300. <span id="index-_002d32addr-command_002dline-option_002c-Alpha"></span>
  9301. </dd>
  9302. <dt><code>-F</code></dt>
  9303. <dt><code>-32addr</code></dt>
  9304. <dd><p>These options are ignored for backward compatibility.
  9305. </p></dd>
  9306. </dl>
  9307. <span id="index-Alpha-Syntax"></span>
  9308. <hr>
  9309. <span id="Alpha-Syntax"></span><div class="header">
  9310. <p>
  9311. Next: <a href="#Alpha-Floating-Point" accesskey="n" rel="next">Alpha Floating Point</a>, Previous: <a href="#Alpha-Options" accesskey="p" rel="prev">Alpha Options</a>, Up: <a href="#Alpha_002dDependent" accesskey="u" rel="up">Alpha-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9312. </div>
  9313. <span id="Syntax-3"></span><h4 class="subsection">9.2.3 Syntax</h4>
  9314. <p>The assembler syntax closely follow the Alpha Reference Manual;
  9315. assembler directives and general syntax closely follow the OSF/1 and
  9316. OpenVMS syntax, with a few differences for ELF.
  9317. </p>
  9318. <table class="menu" border="0" cellspacing="0">
  9319. <tr><td align="left" valign="top">&bull; <a href="#Alpha_002dChars" accesskey="1">Alpha-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  9320. </td></tr>
  9321. <tr><td align="left" valign="top">&bull; <a href="#Alpha_002dRegs" accesskey="2">Alpha-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  9322. </td></tr>
  9323. <tr><td align="left" valign="top">&bull; <a href="#Alpha_002dRelocs" accesskey="3">Alpha-Relocs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relocations
  9324. </td></tr>
  9325. </table>
  9326. <hr>
  9327. <span id="Alpha_002dChars"></span><div class="header">
  9328. <p>
  9329. Next: <a href="#Alpha_002dRegs" accesskey="n" rel="next">Alpha-Regs</a>, Up: <a href="#Alpha-Syntax" accesskey="u" rel="up">Alpha Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9330. </div>
  9331. <span id="Special-Characters-1"></span><h4 class="subsubsection">9.2.3.1 Special Characters</h4>
  9332. <span id="index-line-comment-character_002c-Alpha"></span>
  9333. <span id="index-Alpha-line-comment-character"></span>
  9334. <p>&lsquo;<samp>#</samp>&rsquo; is the line comment character. Note that if &lsquo;<samp>#</samp>&rsquo; is the
  9335. first character on a line then it can also be a logical line number
  9336. directive (see <a href="#Comments">Comments</a>) or a preprocessor control
  9337. command (see <a href="#Preprocessing">Preprocessing</a>).
  9338. </p>
  9339. <span id="index-line-separator_002c-Alpha"></span>
  9340. <span id="index-statement-separator_002c-Alpha"></span>
  9341. <span id="index-Alpha-line-separator"></span>
  9342. <p>&lsquo;<samp>;</samp>&rsquo; can be used instead of a newline to separate statements.
  9343. </p>
  9344. <hr>
  9345. <span id="Alpha_002dRegs"></span><div class="header">
  9346. <p>
  9347. Next: <a href="#Alpha_002dRelocs" accesskey="n" rel="next">Alpha-Relocs</a>, Previous: <a href="#Alpha_002dChars" accesskey="p" rel="prev">Alpha-Chars</a>, Up: <a href="#Alpha-Syntax" accesskey="u" rel="up">Alpha Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9348. </div>
  9349. <span id="Register-Names-1"></span><h4 class="subsubsection">9.2.3.2 Register Names</h4>
  9350. <span id="index-Alpha-registers"></span>
  9351. <span id="index-register-names_002c-Alpha"></span>
  9352. <p>The 32 integer registers are referred to as &lsquo;<samp>$<var>n</var></samp>&rsquo; or
  9353. &lsquo;<samp>$r<var>n</var></samp>&rsquo;. In addition, registers 15, 28, 29, and 30 may
  9354. be referred to by the symbols &lsquo;<samp>$fp</samp>&rsquo;, &lsquo;<samp>$at</samp>&rsquo;, &lsquo;<samp>$gp</samp>&rsquo;,
  9355. and &lsquo;<samp>$sp</samp>&rsquo; respectively.
  9356. </p>
  9357. <p>The 32 floating-point registers are referred to as &lsquo;<samp>$f<var>n</var></samp>&rsquo;.
  9358. </p>
  9359. <hr>
  9360. <span id="Alpha_002dRelocs"></span><div class="header">
  9361. <p>
  9362. Previous: <a href="#Alpha_002dRegs" accesskey="p" rel="prev">Alpha-Regs</a>, Up: <a href="#Alpha-Syntax" accesskey="u" rel="up">Alpha Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9363. </div>
  9364. <span id="Relocations-1"></span><h4 class="subsubsection">9.2.3.3 Relocations</h4>
  9365. <span id="index-Alpha-relocations"></span>
  9366. <span id="index-relocations_002c-Alpha"></span>
  9367. <p>Some of these relocations are available for ECOFF, but mostly
  9368. only for ELF. They are modeled after the relocation format
  9369. introduced in Digital Unix 4.0, but there are additions.
  9370. </p>
  9371. <p>The format is &lsquo;<samp>!<var>tag</var></samp>&rsquo; or &lsquo;<samp>!<var>tag</var>!<var>number</var></samp>&rsquo;
  9372. where <var>tag</var> is the name of the relocation. In some cases
  9373. <var>number</var> is used to relate specific instructions.
  9374. </p>
  9375. <p>The relocation is placed at the end of the instruction like so:
  9376. </p>
  9377. <div class="example">
  9378. <pre class="example">ldah $0,a($29) !gprelhigh
  9379. lda $0,a($0) !gprellow
  9380. ldq $1,b($29) !literal!100
  9381. ldl $2,0($1) !lituse_base!100
  9382. </pre></div>
  9383. <dl compact="compact">
  9384. <dt><code>!literal</code></dt>
  9385. <dt><code>!literal!<var>N</var></code></dt>
  9386. <dd><p>Used with an <code>ldq</code> instruction to load the address of a symbol
  9387. from the GOT.
  9388. </p>
  9389. <p>A sequence number <var>N</var> is optional, and if present is used to pair
  9390. <code>lituse</code> relocations with this <code>literal</code> relocation. The
  9391. <code>lituse</code> relocations are used by the linker to optimize the code
  9392. based on the final location of the symbol.
  9393. </p>
  9394. <p>Note that these optimizations are dependent on the data flow of the
  9395. program. Therefore, if <em>any</em> <code>lituse</code> is paired with a
  9396. <code>literal</code> relocation, then <em>all</em> uses of the register set by
  9397. the <code>literal</code> instruction must also be marked with <code>lituse</code>
  9398. relocations. This is because the original <code>literal</code> instruction
  9399. may be deleted or transformed into another instruction.
  9400. </p>
  9401. <p>Also note that there may be a one-to-many relationship between
  9402. <code>literal</code> and <code>lituse</code>, but not a many-to-one. That is, if
  9403. there are two code paths that load up the same address and feed the
  9404. value to a single use, then the use may not use a <code>lituse</code>
  9405. relocation.
  9406. </p>
  9407. </dd>
  9408. <dt><code>!lituse_base!<var>N</var></code></dt>
  9409. <dd><p>Used with any memory format instruction (e.g. <code>ldl</code>) to indicate
  9410. that the literal is used for an address load. The offset field of the
  9411. instruction must be zero. During relaxation, the code may be altered
  9412. to use a gp-relative load.
  9413. </p>
  9414. </dd>
  9415. <dt><code>!lituse_jsr!<var>N</var></code></dt>
  9416. <dd><p>Used with a register branch format instruction (e.g. <code>jsr</code>) to
  9417. indicate that the literal is used for a call. During relaxation, the
  9418. code may be altered to use a direct branch (e.g. <code>bsr</code>).
  9419. </p>
  9420. </dd>
  9421. <dt><code>!lituse_jsrdirect!<var>N</var></code></dt>
  9422. <dd><p>Similar to <code>lituse_jsr</code>, but also that this call cannot be vectored
  9423. through a PLT entry. This is useful for functions with special calling
  9424. conventions which do not allow the normal call-clobbered registers to be
  9425. clobbered.
  9426. </p>
  9427. </dd>
  9428. <dt><code>!lituse_bytoff!<var>N</var></code></dt>
  9429. <dd><p>Used with a byte mask instruction (e.g. <code>extbl</code>) to indicate
  9430. that only the low 3 bits of the address are relevant. During relaxation,
  9431. the code may be altered to use an immediate instead of a register shift.
  9432. </p>
  9433. </dd>
  9434. <dt><code>!lituse_addr!<var>N</var></code></dt>
  9435. <dd><p>Used with any other instruction to indicate that the original address
  9436. is in fact used, and the original <code>ldq</code> instruction may not be
  9437. altered or deleted. This is useful in conjunction with <code>lituse_jsr</code>
  9438. to test whether a weak symbol is defined.
  9439. </p>
  9440. <div class="example">
  9441. <pre class="example">ldq $27,foo($29) !literal!1
  9442. beq $27,is_undef !lituse_addr!1
  9443. jsr $26,($27),foo !lituse_jsr!1
  9444. </pre></div>
  9445. </dd>
  9446. <dt><code>!lituse_tlsgd!<var>N</var></code></dt>
  9447. <dd><p>Used with a register branch format instruction to indicate that the
  9448. literal is the call to <code>__tls_get_addr</code> used to compute the
  9449. address of the thread-local storage variable whose descriptor was
  9450. loaded with <code>!tlsgd!<var>N</var></code>.
  9451. </p>
  9452. </dd>
  9453. <dt><code>!lituse_tlsldm!<var>N</var></code></dt>
  9454. <dd><p>Used with a register branch format instruction to indicate that the
  9455. literal is the call to <code>__tls_get_addr</code> used to compute the
  9456. address of the base of the thread-local storage block for the current
  9457. module. The descriptor for the module must have been loaded with
  9458. <code>!tlsldm!<var>N</var></code>.
  9459. </p>
  9460. </dd>
  9461. <dt><code>!gpdisp!<var>N</var></code></dt>
  9462. <dd><p>Used with <code>ldah</code> and <code>lda</code> to load the GP from the current
  9463. address, a-la the <code>ldgp</code> macro. The source register for the
  9464. <code>ldah</code> instruction must contain the address of the <code>ldah</code>
  9465. instruction. There must be exactly one <code>lda</code> instruction paired
  9466. with the <code>ldah</code> instruction, though it may appear anywhere in
  9467. the instruction stream. The immediate operands must be zero.
  9468. </p>
  9469. <div class="example">
  9470. <pre class="example">bsr $26,foo
  9471. ldah $29,0($26) !gpdisp!1
  9472. lda $29,0($29) !gpdisp!1
  9473. </pre></div>
  9474. </dd>
  9475. <dt><code>!gprelhigh</code></dt>
  9476. <dd><p>Used with an <code>ldah</code> instruction to add the high 16 bits of a
  9477. 32-bit displacement from the GP.
  9478. </p>
  9479. </dd>
  9480. <dt><code>!gprellow</code></dt>
  9481. <dd><p>Used with any memory format instruction to add the low 16 bits of a
  9482. 32-bit displacement from the GP.
  9483. </p>
  9484. </dd>
  9485. <dt><code>!gprel</code></dt>
  9486. <dd><p>Used with any memory format instruction to add a 16-bit displacement
  9487. from the GP.
  9488. </p>
  9489. </dd>
  9490. <dt><code>!samegp</code></dt>
  9491. <dd><p>Used with any branch format instruction to skip the GP load at the
  9492. target address. The referenced symbol must have the same GP as the
  9493. source object file, and it must be declared to either not use <code>$27</code>
  9494. or perform a standard GP load in the first two instructions via the
  9495. <code>.prologue</code> directive.
  9496. </p>
  9497. </dd>
  9498. <dt><code>!tlsgd</code></dt>
  9499. <dt><code>!tlsgd!<var>N</var></code></dt>
  9500. <dd><p>Used with an <code>lda</code> instruction to load the address of a TLS
  9501. descriptor for a symbol in the GOT.
  9502. </p>
  9503. <p>The sequence number <var>N</var> is optional, and if present it used to
  9504. pair the descriptor load with both the <code>literal</code> loading the
  9505. address of the <code>__tls_get_addr</code> function and the <code>lituse_tlsgd</code>
  9506. marking the call to that function.
  9507. </p>
  9508. <p>For proper relaxation, both the <code>tlsgd</code>, <code>literal</code> and
  9509. <code>lituse</code> relocations must be in the same extended basic block.
  9510. That is, the relocation with the lowest address must be executed
  9511. first at runtime.
  9512. </p>
  9513. </dd>
  9514. <dt><code>!tlsldm</code></dt>
  9515. <dt><code>!tlsldm!<var>N</var></code></dt>
  9516. <dd><p>Used with an <code>lda</code> instruction to load the address of a TLS
  9517. descriptor for the current module in the GOT.
  9518. </p>
  9519. <p>Similar in other respects to <code>tlsgd</code>.
  9520. </p>
  9521. </dd>
  9522. <dt><code>!gotdtprel</code></dt>
  9523. <dd><p>Used with an <code>ldq</code> instruction to load the offset of the TLS
  9524. symbol within its module&rsquo;s thread-local storage block. Also known
  9525. as the dynamic thread pointer offset or dtp-relative offset.
  9526. </p>
  9527. </dd>
  9528. <dt><code>!dtprelhi</code></dt>
  9529. <dt><code>!dtprello</code></dt>
  9530. <dt><code>!dtprel</code></dt>
  9531. <dd><p>Like <code>gprel</code> relocations except they compute dtp-relative offsets.
  9532. </p>
  9533. </dd>
  9534. <dt><code>!gottprel</code></dt>
  9535. <dd><p>Used with an <code>ldq</code> instruction to load the offset of the TLS
  9536. symbol from the thread pointer. Also known as the tp-relative offset.
  9537. </p>
  9538. </dd>
  9539. <dt><code>!tprelhi</code></dt>
  9540. <dt><code>!tprello</code></dt>
  9541. <dt><code>!tprel</code></dt>
  9542. <dd><p>Like <code>gprel</code> relocations except they compute tp-relative offsets.
  9543. </p></dd>
  9544. </dl>
  9545. <hr>
  9546. <span id="Alpha-Floating-Point"></span><div class="header">
  9547. <p>
  9548. Next: <a href="#Alpha-Directives" accesskey="n" rel="next">Alpha Directives</a>, Previous: <a href="#Alpha-Syntax" accesskey="p" rel="prev">Alpha Syntax</a>, Up: <a href="#Alpha_002dDependent" accesskey="u" rel="up">Alpha-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9549. </div>
  9550. <span id="Floating-Point-1"></span><h4 class="subsection">9.2.4 Floating Point</h4>
  9551. <span id="index-floating-point_002c-Alpha-_0028IEEE_0029"></span>
  9552. <span id="index-Alpha-floating-point-_0028IEEE_0029"></span>
  9553. <p>The Alpha family uses both <small>IEEE</small> and VAX floating-point numbers.
  9554. </p>
  9555. <hr>
  9556. <span id="Alpha-Directives"></span><div class="header">
  9557. <p>
  9558. Next: <a href="#Alpha-Opcodes" accesskey="n" rel="next">Alpha Opcodes</a>, Previous: <a href="#Alpha-Floating-Point" accesskey="p" rel="prev">Alpha Floating Point</a>, Up: <a href="#Alpha_002dDependent" accesskey="u" rel="up">Alpha-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9559. </div>
  9560. <span id="Alpha-Assembler-Directives"></span><h4 class="subsection">9.2.5 Alpha Assembler Directives</h4>
  9561. <p><code>as</code> for the Alpha supports many additional directives for
  9562. compatibility with the native assembler. This section describes them only
  9563. briefly.
  9564. </p>
  9565. <span id="index-Alpha_002donly-directives"></span>
  9566. <p>These are the additional directives in <code>as</code> for the Alpha:
  9567. </p>
  9568. <dl compact="compact">
  9569. <dt><code>.arch <var>cpu</var></code></dt>
  9570. <dd><p>Specifies the target processor. This is equivalent to the
  9571. <samp>-m<var>cpu</var></samp> command-line option. See <a href="#Alpha-Options">Options</a>,
  9572. for a list of values for <var>cpu</var>.
  9573. </p>
  9574. </dd>
  9575. <dt><code>.ent <var>function</var>[, <var>n</var>]</code></dt>
  9576. <dd><p>Mark the beginning of <var>function</var>. An optional number may follow for
  9577. compatibility with the OSF/1 assembler, but is ignored. When generating
  9578. <code>.mdebug</code> information, this will create a procedure descriptor for
  9579. the function. In ELF, it will mark the symbol as a function a-la the
  9580. generic <code>.type</code> directive.
  9581. </p>
  9582. </dd>
  9583. <dt><code>.end <var>function</var></code></dt>
  9584. <dd><p>Mark the end of <var>function</var>. In ELF, it will set the size of the symbol
  9585. a-la the generic <code>.size</code> directive.
  9586. </p>
  9587. </dd>
  9588. <dt><code>.mask <var>mask</var>, <var>offset</var></code></dt>
  9589. <dd><p>Indicate which of the integer registers are saved in the current
  9590. function&rsquo;s stack frame. <var>mask</var> is interpreted a bit mask in which
  9591. bit <var>n</var> set indicates that register <var>n</var> is saved. The registers
  9592. are saved in a block located <var>offset</var> bytes from the <em>canonical
  9593. frame address</em> (CFA) which is the value of the stack pointer on entry to
  9594. the function. The registers are saved sequentially, except that the
  9595. return address register (normally <code>$26</code>) is saved first.
  9596. </p>
  9597. <p>This and the other directives that describe the stack frame are
  9598. currently only used when generating <code>.mdebug</code> information. They
  9599. may in the future be used to generate DWARF2 <code>.debug_frame</code> unwind
  9600. information for hand written assembly.
  9601. </p>
  9602. </dd>
  9603. <dt><code>.fmask <var>mask</var>, <var>offset</var></code></dt>
  9604. <dd><p>Indicate which of the floating-point registers are saved in the current
  9605. stack frame. The <var>mask</var> and <var>offset</var> parameters are interpreted
  9606. as with <code>.mask</code>.
  9607. </p>
  9608. </dd>
  9609. <dt><code>.frame <var>framereg</var>, <var>frameoffset</var>, <var>retreg</var>[, <var>argoffset</var>]</code></dt>
  9610. <dd><p>Describes the shape of the stack frame. The frame pointer in use is
  9611. <var>framereg</var>; normally this is either <code>$fp</code> or <code>$sp</code>. The
  9612. frame pointer is <var>frameoffset</var> bytes below the CFA. The return
  9613. address is initially located in <var>retreg</var> until it is saved as
  9614. indicated in <code>.mask</code>. For compatibility with OSF/1 an optional
  9615. <var>argoffset</var> parameter is accepted and ignored. It is believed to
  9616. indicate the offset from the CFA to the saved argument registers.
  9617. </p>
  9618. </dd>
  9619. <dt><code>.prologue <var>n</var></code></dt>
  9620. <dd><p>Indicate that the stack frame is set up and all registers have been
  9621. spilled. The argument <var>n</var> indicates whether and how the function
  9622. uses the incoming <em>procedure vector</em> (the address of the called
  9623. function) in <code>$27</code>. 0 indicates that <code>$27</code> is not used; 1
  9624. indicates that the first two instructions of the function use <code>$27</code>
  9625. to perform a load of the GP register; 2 indicates that <code>$27</code> is
  9626. used in some non-standard way and so the linker cannot elide the load of
  9627. the procedure vector during relaxation.
  9628. </p>
  9629. </dd>
  9630. <dt><code>.usepv <var>function</var>, <var>which</var></code></dt>
  9631. <dd><p>Used to indicate the use of the <code>$27</code> register, similar to
  9632. <code>.prologue</code>, but without the other semantics of needing to
  9633. be inside an open <code>.ent</code>/<code>.end</code> block.
  9634. </p>
  9635. <p>The <var>which</var> argument should be either <code>no</code>, indicating that
  9636. <code>$27</code> is not used, or <code>std</code>, indicating that the first two
  9637. instructions of the function perform a GP load.
  9638. </p>
  9639. <p>One might use this directive instead of <code>.prologue</code> if you are
  9640. also using dwarf2 CFI directives.
  9641. </p>
  9642. </dd>
  9643. <dt><code>.gprel32 <var>expression</var></code></dt>
  9644. <dd><p>Computes the difference between the address in <var>expression</var> and the
  9645. GP for the current object file, and stores it in 4 bytes. In addition
  9646. to being smaller than a full 8 byte address, this also does not require
  9647. a dynamic relocation when used in a shared library.
  9648. </p>
  9649. </dd>
  9650. <dt><code>.t_floating <var>expression</var></code></dt>
  9651. <dd><p>Stores <var>expression</var> as an <small>IEEE</small> double precision value.
  9652. </p>
  9653. </dd>
  9654. <dt><code>.s_floating <var>expression</var></code></dt>
  9655. <dd><p>Stores <var>expression</var> as an <small>IEEE</small> single precision value.
  9656. </p>
  9657. </dd>
  9658. <dt><code>.f_floating <var>expression</var></code></dt>
  9659. <dd><p>Stores <var>expression</var> as a VAX F format value.
  9660. </p>
  9661. </dd>
  9662. <dt><code>.g_floating <var>expression</var></code></dt>
  9663. <dd><p>Stores <var>expression</var> as a VAX G format value.
  9664. </p>
  9665. </dd>
  9666. <dt><code>.d_floating <var>expression</var></code></dt>
  9667. <dd><p>Stores <var>expression</var> as a VAX D format value.
  9668. </p>
  9669. </dd>
  9670. <dt><code>.set <var>feature</var></code></dt>
  9671. <dd><p>Enables or disables various assembler features. Using the positive
  9672. name of the feature enables while using &lsquo;<samp>no<var>feature</var></samp>&rsquo; disables.
  9673. </p>
  9674. <dl compact="compact">
  9675. <dt><code>at</code></dt>
  9676. <dd><p>Indicates that macro expansions may clobber the <em>assembler
  9677. temporary</em> (<code>$at</code> or <code>$28</code>) register. Some macros may not be
  9678. expanded without this and will generate an error message if <code>noat</code>
  9679. is in effect. When <code>at</code> is in effect, a warning will be generated
  9680. if <code>$at</code> is used by the programmer.
  9681. </p>
  9682. </dd>
  9683. <dt><code>macro</code></dt>
  9684. <dd><p>Enables the expansion of macro instructions. Note that variants of real
  9685. instructions, such as <code>br label</code> vs <code>br $31,label</code> are
  9686. considered alternate forms and not macros.
  9687. </p>
  9688. </dd>
  9689. <dt><code>move</code></dt>
  9690. <dt><code>reorder</code></dt>
  9691. <dt><code>volatile</code></dt>
  9692. <dd><p>These control whether and how the assembler may re-order instructions.
  9693. Accepted for compatibility with the OSF/1 assembler, but <code>as</code>
  9694. does not do instruction scheduling, so these features are ignored.
  9695. </p></dd>
  9696. </dl>
  9697. </dd>
  9698. </dl>
  9699. <p>The following directives are recognized for compatibility with the OSF/1
  9700. assembler but are ignored.
  9701. </p>
  9702. <div class="example">
  9703. <pre class="example">.proc .aproc
  9704. .reguse .livereg
  9705. .option .aent
  9706. .ugen .eflag
  9707. .alias .noalias
  9708. </pre></div>
  9709. <hr>
  9710. <span id="Alpha-Opcodes"></span><div class="header">
  9711. <p>
  9712. Previous: <a href="#Alpha-Directives" accesskey="p" rel="prev">Alpha Directives</a>, Up: <a href="#Alpha_002dDependent" accesskey="u" rel="up">Alpha-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9713. </div>
  9714. <span id="Opcodes-1"></span><h4 class="subsection">9.2.6 Opcodes</h4>
  9715. <p>For detailed information on the Alpha machine instruction set, see the
  9716. <a href="ftp://ftp.digital.com/pub/Digital/info/semiconductor/literature/alphaahb.pdf">Alpha Architecture Handbook</a>.
  9717. </p>
  9718. <hr>
  9719. <span id="ARC_002dDependent"></span><div class="header">
  9720. <p>
  9721. Next: <a href="#ARM_002dDependent" accesskey="n" rel="next">ARM-Dependent</a>, Previous: <a href="#Alpha_002dDependent" accesskey="p" rel="prev">Alpha-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9722. </div>
  9723. <span id="ARC-Dependent-Features"></span><h3 class="section">9.3 ARC Dependent Features</h3>
  9724. <span id="index-ARC-support"></span>
  9725. <table class="menu" border="0" cellspacing="0">
  9726. <tr><td align="left" valign="top">&bull; <a href="#ARC-Options" accesskey="1">ARC Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  9727. </td></tr>
  9728. <tr><td align="left" valign="top">&bull; <a href="#ARC-Syntax" accesskey="2">ARC Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  9729. </td></tr>
  9730. <tr><td align="left" valign="top">&bull; <a href="#ARC-Directives" accesskey="3">ARC Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">ARC Machine Directives
  9731. </td></tr>
  9732. <tr><td align="left" valign="top">&bull; <a href="#ARC-Modifiers" accesskey="4">ARC Modifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">ARC Assembler Modifiers
  9733. </td></tr>
  9734. <tr><td align="left" valign="top">&bull; <a href="#ARC-Symbols" accesskey="5">ARC Symbols</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">ARC Pre-defined Symbols
  9735. </td></tr>
  9736. <tr><td align="left" valign="top">&bull; <a href="#ARC-Opcodes" accesskey="6">ARC Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  9737. </td></tr>
  9738. </table>
  9739. <hr>
  9740. <span id="ARC-Options"></span><div class="header">
  9741. <p>
  9742. Next: <a href="#ARC-Syntax" accesskey="n" rel="next">ARC Syntax</a>, Up: <a href="#ARC_002dDependent" accesskey="u" rel="up">ARC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9743. </div>
  9744. <span id="Options-2"></span><h4 class="subsection">9.3.1 Options</h4>
  9745. <span id="index-ARC-options"></span>
  9746. <span id="index-options-for-ARC"></span>
  9747. <p>The following options control the type of CPU for which code is
  9748. assembled, and generic constraints on the code generated:
  9749. </p>
  9750. <dl compact="compact">
  9751. <dt><code>-mcpu=<var>cpu</var></code></dt>
  9752. <dd><span id="index-_002dmcpu_003dcpu-command_002dline-option_002c-ARC"></span>
  9753. <p>Set architecture type and register usage for <var>cpu</var>. There are
  9754. also shortcut alias options available for backward compatibility and
  9755. convenience. Supported values for <var>cpu</var> are
  9756. </p>
  9757. <dl compact="compact">
  9758. <dd><span id="index-mA6-command_002dline-option_002c-ARC"></span>
  9759. <span id="index-marc600-command_002dline-option_002c-ARC"></span>
  9760. </dd>
  9761. <dt><code>arc600</code></dt>
  9762. <dd><p>Assemble for ARC 600. Aliases: <code>-mA6</code>, <code>-mARC600</code>.
  9763. </p>
  9764. </dd>
  9765. <dt><code>arc600_norm</code></dt>
  9766. <dd><p>Assemble for ARC 600 with norm instructions.
  9767. </p>
  9768. </dd>
  9769. <dt><code>arc600_mul64</code></dt>
  9770. <dd><p>Assemble for ARC 600 with mul64 instructions.
  9771. </p>
  9772. </dd>
  9773. <dt><code>arc600_mul32x16</code></dt>
  9774. <dd><p>Assemble for ARC 600 with mul32x16 instructions.
  9775. </p>
  9776. </dd>
  9777. <dt><code>arc601</code></dt>
  9778. <dd><span id="index-mARC601-command_002dline-option_002c-ARC"></span>
  9779. <p>Assemble for ARC 601. Alias: <code>-mARC601</code>.
  9780. </p>
  9781. </dd>
  9782. <dt><code>arc601_norm</code></dt>
  9783. <dd><p>Assemble for ARC 601 with norm instructions.
  9784. </p>
  9785. </dd>
  9786. <dt><code>arc601_mul64</code></dt>
  9787. <dd><p>Assemble for ARC 601 with mul64 instructions.
  9788. </p>
  9789. </dd>
  9790. <dt><code>arc601_mul32x16</code></dt>
  9791. <dd><p>Assemble for ARC 601 with mul32x16 instructions.
  9792. </p>
  9793. </dd>
  9794. <dt><code>arc700</code></dt>
  9795. <dd><span id="index-mA7-command_002dline-option_002c-ARC"></span>
  9796. <span id="index-mARC700-command_002dline-option_002c-ARC"></span>
  9797. <p>Assemble for ARC 700. Aliases: <code>-mA7</code>, <code>-mARC700</code>.
  9798. </p>
  9799. </dd>
  9800. <dt><code>arcem</code></dt>
  9801. <dd><span id="index-mEM-command_002dline-option_002c-ARC"></span>
  9802. <p>Assemble for ARC EM. Aliases: <code>-mEM</code>
  9803. </p>
  9804. </dd>
  9805. <dt><code>em</code></dt>
  9806. <dd><p>Assemble for ARC EM, identical as arcem variant.
  9807. </p>
  9808. </dd>
  9809. <dt><code>em4</code></dt>
  9810. <dd><p>Assemble for ARC EM with code-density instructions.
  9811. </p>
  9812. </dd>
  9813. <dt><code>em4_dmips</code></dt>
  9814. <dd><p>Assemble for ARC EM with code-density instructions.
  9815. </p>
  9816. </dd>
  9817. <dt><code>em4_fpus</code></dt>
  9818. <dd><p>Assemble for ARC EM with code-density instructions.
  9819. </p>
  9820. </dd>
  9821. <dt><code>em4_fpuda</code></dt>
  9822. <dd><p>Assemble for ARC EM with code-density, and double-precision assist
  9823. instructions.
  9824. </p>
  9825. </dd>
  9826. <dt><code>quarkse_em</code></dt>
  9827. <dd><p>Assemble for QuarkSE-EM cpu.
  9828. </p>
  9829. </dd>
  9830. <dt><code>archs</code></dt>
  9831. <dd><span id="index-mHS-command_002dline-option_002c-ARC"></span>
  9832. <p>Assemble for ARC HS. Aliases: <code>-mHS</code>, <code>-mav2hs</code>.
  9833. </p>
  9834. </dd>
  9835. <dt><code>hs</code></dt>
  9836. <dd><p>Assemble for ARC HS.
  9837. </p>
  9838. </dd>
  9839. <dt><code>hs34</code></dt>
  9840. <dd><p>Assemble for ARC HS34.
  9841. </p>
  9842. </dd>
  9843. <dt><code>hs38</code></dt>
  9844. <dd><p>Assemble for ARC HS38.
  9845. </p>
  9846. </dd>
  9847. <dt><code>hs38_linux</code></dt>
  9848. <dd><p>Assemble for ARC HS38 with floating point support on.
  9849. </p>
  9850. </dd>
  9851. <dt><code>nps400</code></dt>
  9852. <dd><span id="index-mnps400-command_002dline-option_002c-ARC"></span>
  9853. <p>Assemble for ARC 700 with NPS-400 extended instructions.
  9854. </p>
  9855. </dd>
  9856. </dl>
  9857. <p>Note: the <code>.cpu</code> directive (see <a href="#ARC-Directives">ARC Directives</a>) can
  9858. to be used to select a core variant from within assembly code.
  9859. </p>
  9860. <span id="index-_002dEB-command_002dline-option_002c-ARC"></span>
  9861. </dd>
  9862. <dt><code>-EB</code></dt>
  9863. <dd><p>This option specifies that the output generated by the assembler should
  9864. be marked as being encoded for a big-endian processor.
  9865. </p>
  9866. <span id="index-_002dEL-command_002dline-option_002c-ARC"></span>
  9867. </dd>
  9868. <dt><code>-EL</code></dt>
  9869. <dd><p>This option specifies that the output generated by the assembler should
  9870. be marked as being encoded for a little-endian processor - this is the
  9871. default.
  9872. </p>
  9873. <span id="index-_002dmcode_002ddensity-command_002dline-option_002c-ARC"></span>
  9874. </dd>
  9875. <dt><code>-mcode-density</code></dt>
  9876. <dd><p>This option turns on Code Density instructions. Only valid for ARC EM
  9877. processors.
  9878. </p>
  9879. <span id="index-_002dmrelax-command_002dline-option_002c-ARC"></span>
  9880. </dd>
  9881. <dt><code>-mrelax</code></dt>
  9882. <dd><p>Enable support for assembly-time relaxation. The assembler will
  9883. replace a longer version of an instruction with a shorter one,
  9884. whenever it is possible.
  9885. </p>
  9886. <span id="index-_002dmnps400-command_002dline-option_002c-ARC"></span>
  9887. </dd>
  9888. <dt><code>-mnps400</code></dt>
  9889. <dd><p>Enable support for NPS-400 extended instructions.
  9890. </p>
  9891. <span id="index-_002dmspfp-command_002dline-option_002c-ARC"></span>
  9892. </dd>
  9893. <dt><code>-mspfp</code></dt>
  9894. <dd><p>Enable support for single-precision floating point instructions.
  9895. </p>
  9896. <span id="index-_002dmdpfp-command_002dline-option_002c-ARC"></span>
  9897. </dd>
  9898. <dt><code>-mdpfp</code></dt>
  9899. <dd><p>Enable support for double-precision floating point instructions.
  9900. </p>
  9901. <span id="index-_002dmfpuda-command_002dline-option_002c-ARC"></span>
  9902. </dd>
  9903. <dt><code>-mfpuda</code></dt>
  9904. <dd><p>Enable support for double-precision assist floating point instructions.
  9905. Only valid for ARC EM processors.
  9906. </p>
  9907. </dd>
  9908. </dl>
  9909. <hr>
  9910. <span id="ARC-Syntax"></span><div class="header">
  9911. <p>
  9912. Next: <a href="#ARC-Directives" accesskey="n" rel="next">ARC Directives</a>, Previous: <a href="#ARC-Options" accesskey="p" rel="prev">ARC Options</a>, Up: <a href="#ARC_002dDependent" accesskey="u" rel="up">ARC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9913. </div>
  9914. <span id="Syntax-4"></span><h4 class="subsection">9.3.2 Syntax</h4>
  9915. <table class="menu" border="0" cellspacing="0">
  9916. <tr><td align="left" valign="top">&bull; <a href="#ARC_002dChars" accesskey="1">ARC-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  9917. </td></tr>
  9918. <tr><td align="left" valign="top">&bull; <a href="#ARC_002dRegs" accesskey="2">ARC-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  9919. </td></tr>
  9920. </table>
  9921. <hr>
  9922. <span id="ARC_002dChars"></span><div class="header">
  9923. <p>
  9924. Next: <a href="#ARC_002dRegs" accesskey="n" rel="next">ARC-Regs</a>, Up: <a href="#ARC-Syntax" accesskey="u" rel="up">ARC Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9925. </div>
  9926. <span id="Special-Characters-2"></span><h4 class="subsubsection">9.3.2.1 Special Characters</h4>
  9927. <dl compact="compact">
  9928. <dt><code>%</code></dt>
  9929. <dd><span id="index-register-name-prefix-character_002c-ARC"></span>
  9930. <span id="index-ARC-register-name-prefix-character"></span>
  9931. <p>A register name can optionally be prefixed by a &lsquo;<samp>%</samp>&rsquo; character. So
  9932. register <code>%r0</code> is equivalent to <code>r0</code> in the assembly code.
  9933. </p>
  9934. </dd>
  9935. <dt><code>#</code></dt>
  9936. <dd><span id="index-line-comment-character_002c-ARC"></span>
  9937. <span id="index-ARC-line-comment-character"></span>
  9938. <p>The presence of a &lsquo;<samp>#</samp>&rsquo; character within a line (but not at the
  9939. start of a line) indicates the start of a comment that extends to the
  9940. end of the current line.
  9941. </p>
  9942. <p><em>Note:</em> if a line starts with a &lsquo;<samp>#</samp>&rsquo; character then it can
  9943. also be a logical line number directive (see <a href="#Comments">Comments</a>) or a
  9944. preprocessor control command (see <a href="#Preprocessing">Preprocessing</a>).
  9945. </p>
  9946. </dd>
  9947. <dt><code>@</code></dt>
  9948. <dd><span id="index-symbol-prefix-character_002c-ARC"></span>
  9949. <span id="index-ARC-symbol-prefix-character"></span>
  9950. <p>Prefixing an operand with an &lsquo;<samp>@</samp>&rsquo; specifies that the operand is a
  9951. symbol and not a register. This is how the assembler disambiguates
  9952. the use of an ARC register name as a symbol. So the instruction
  9953. </p><div class="example">
  9954. <pre class="example">mov r0, @r0
  9955. </pre></div>
  9956. <p>moves the address of symbol <code>r0</code> into register <code>r0</code>.
  9957. </p>
  9958. </dd>
  9959. <dt><code>`</code></dt>
  9960. <dd><span id="index-line-separator_002c-ARC"></span>
  9961. <span id="index-statement-separator_002c-ARC"></span>
  9962. <span id="index-ARC-line-separator"></span>
  9963. <p>The &lsquo;<samp>`</samp>&rsquo; (backtick) character is used to separate statements on a
  9964. single line.
  9965. </p>
  9966. <span id="index-line"></span>
  9967. </dd>
  9968. <dt><code>-</code></dt>
  9969. <dd><span id="index-C-preprocessor-macro-separator_002c-ARC"></span>
  9970. <span id="index-ARC-C-preprocessor-macro-separator"></span>
  9971. <p>Used as a separator to obtain a sequence of commands from a C
  9972. preprocessor macro.
  9973. </p>
  9974. </dd>
  9975. </dl>
  9976. <hr>
  9977. <span id="ARC_002dRegs"></span><div class="header">
  9978. <p>
  9979. Previous: <a href="#ARC_002dChars" accesskey="p" rel="prev">ARC-Chars</a>, Up: <a href="#ARC-Syntax" accesskey="u" rel="up">ARC Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  9980. </div>
  9981. <span id="Register-Names-2"></span><h4 class="subsubsection">9.3.2.2 Register Names</h4>
  9982. <span id="index-ARC-register-names"></span>
  9983. <span id="index-register-names_002c-ARC"></span>
  9984. <p>The ARC assembler uses the following register names for its core
  9985. registers:
  9986. </p>
  9987. <dl compact="compact">
  9988. <dt><code>r0-r31</code></dt>
  9989. <dd><span id="index-core-general-registers_002c-ARC"></span>
  9990. <span id="index-ARC-core-general-registers"></span>
  9991. <p>The core general registers. Registers <code>r26</code> through <code>r31</code>
  9992. have special functions, and are usually referred to by those synonyms.
  9993. </p>
  9994. </dd>
  9995. <dt><code>gp</code></dt>
  9996. <dd><span id="index-global-pointer_002c-ARC"></span>
  9997. <span id="index-ARC-global-pointer"></span>
  9998. <p>The global pointer and a synonym for <code>r26</code>.
  9999. </p>
  10000. </dd>
  10001. <dt><code>fp</code></dt>
  10002. <dd><span id="index-frame-pointer_002c-ARC"></span>
  10003. <span id="index-ARC-frame-pointer"></span>
  10004. <p>The frame pointer and a synonym for <code>r27</code>.
  10005. </p>
  10006. </dd>
  10007. <dt><code>sp</code></dt>
  10008. <dd><span id="index-stack-pointer_002c-ARC"></span>
  10009. <span id="index-ARC-stack-pointer"></span>
  10010. <p>The stack pointer and a synonym for <code>r28</code>.
  10011. </p>
  10012. </dd>
  10013. <dt><code>ilink1</code></dt>
  10014. <dd><span id="index-level-1-interrupt-link-register_002c-ARC"></span>
  10015. <span id="index-ARC-level-1-interrupt-link-register"></span>
  10016. <p>For ARC 600 and ARC 700, the level 1 interrupt link register and a
  10017. synonym for <code>r29</code>. Not supported for ARCv2.
  10018. </p>
  10019. </dd>
  10020. <dt><code>ilink</code></dt>
  10021. <dd><span id="index-interrupt-link-register_002c-ARC"></span>
  10022. <span id="index-ARC-interrupt-link-register"></span>
  10023. <p>For ARCv2, the interrupt link register and a synonym for <code>r29</code>.
  10024. Not supported for ARC 600 and ARC 700.
  10025. </p>
  10026. </dd>
  10027. <dt><code>ilink2</code></dt>
  10028. <dd><span id="index-level-2-interrupt-link-register_002c-ARC"></span>
  10029. <span id="index-ARC-level-2-interrupt-link-register"></span>
  10030. <p>For ARC 600 and ARC 700, the level 2 interrupt link register and a
  10031. synonym for <code>r30</code>. Not supported for ARC v2.
  10032. </p>
  10033. </dd>
  10034. <dt><code>blink</code></dt>
  10035. <dd><span id="index-link-register_002c-ARC"></span>
  10036. <span id="index-ARC-link-register"></span>
  10037. <p>The link register and a synonym for <code>r31</code>.
  10038. </p>
  10039. </dd>
  10040. <dt><code>r32-r59</code></dt>
  10041. <dd><span id="index-extension-core-registers_002c-ARC"></span>
  10042. <span id="index-ARC-extension-core-registers"></span>
  10043. <p>The extension core registers.
  10044. </p>
  10045. </dd>
  10046. <dt><code>lp_count</code></dt>
  10047. <dd><span id="index-loop-counter_002c-ARC"></span>
  10048. <span id="index-ARC-loop-counter"></span>
  10049. <p>The loop count register.
  10050. </p>
  10051. </dd>
  10052. <dt><code>pcl</code></dt>
  10053. <dd><span id="index-word-aligned-program-counter_002c-ARC"></span>
  10054. <span id="index-ARC-word-aligned-program-counter"></span>
  10055. <p>The word aligned program counter.
  10056. </p>
  10057. </dd>
  10058. </dl>
  10059. <p>In addition the ARC processor has a large number of <em>auxiliary
  10060. registers</em>. The precise set depends on the extensions being
  10061. supported, but the following baseline set are always defined:
  10062. </p>
  10063. <dl compact="compact">
  10064. <dt><code>identity</code></dt>
  10065. <dd><span id="index-Processor-Identification-register_002c-ARC"></span>
  10066. <span id="index-ARC-Processor-Identification-register"></span>
  10067. <p>Processor Identification register. Auxiliary register address 0x4.
  10068. </p>
  10069. </dd>
  10070. <dt><code>pc</code></dt>
  10071. <dd><span id="index-Program-Counter_002c-ARC"></span>
  10072. <span id="index-ARC-Program-Counter"></span>
  10073. <p>Program Counter. Auxiliary register address 0x6.
  10074. </p>
  10075. </dd>
  10076. <dt><code>status32</code></dt>
  10077. <dd><span id="index-Status-register_002c-ARC"></span>
  10078. <span id="index-ARC-Status-register"></span>
  10079. <p>Status register. Auxiliary register address 0x0a.
  10080. </p>
  10081. </dd>
  10082. <dt><code>bta</code></dt>
  10083. <dd><span id="index-Branch-Target-Address_002c-ARC"></span>
  10084. <span id="index-ARC-Branch-Target-Address"></span>
  10085. <p>Branch Target Address. Auxiliary register address 0x412.
  10086. </p>
  10087. </dd>
  10088. <dt><code>ecr</code></dt>
  10089. <dd><span id="index-Exception-Cause-Register_002c-ARC"></span>
  10090. <span id="index-ARC-Exception-Cause-Register"></span>
  10091. <p>Exception Cause Register. Auxiliary register address 0x403.
  10092. </p>
  10093. </dd>
  10094. <dt><code>int_vector_base</code></dt>
  10095. <dd><span id="index-Interrupt-Vector-Base-address_002c-ARC"></span>
  10096. <span id="index-ARC-Interrupt-Vector-Base-address"></span>
  10097. <p>Interrupt Vector Base address. Auxiliary register address 0x25.
  10098. </p>
  10099. </dd>
  10100. <dt><code>status32_p0</code></dt>
  10101. <dd><span id="index-Stored-STATUS32-register-on-entry-to-level-P0-interrupts_002c-ARC"></span>
  10102. <span id="index-ARC-Stored-STATUS32-register-on-entry-to-level-P0-interrupts"></span>
  10103. <p>Stored STATUS32 register on entry to level P0 interrupts. Auxiliary
  10104. register address 0xb.
  10105. </p>
  10106. </dd>
  10107. <dt><code>aux_user_sp</code></dt>
  10108. <dd><span id="index-Saved-User-Stack-Pointer_002c-ARC"></span>
  10109. <span id="index-ARC-Saved-User-Stack-Pointer"></span>
  10110. <p>Saved User Stack Pointer. Auxiliary register address 0xd.
  10111. </p>
  10112. </dd>
  10113. <dt><code>eret</code></dt>
  10114. <dd><span id="index-Exception-Return-Address_002c-ARC"></span>
  10115. <span id="index-ARC-Exception-Return-Address"></span>
  10116. <p>Exception Return Address. Auxiliary register address 0x400.
  10117. </p>
  10118. </dd>
  10119. <dt><code>erbta</code></dt>
  10120. <dd><span id="index-BTA-saved-on-exception-entry_002c-ARC"></span>
  10121. <span id="index-ARC-BTA-saved-on-exception-entry"></span>
  10122. <p>BTA saved on exception entry. Auxiliary register address 0x401.
  10123. </p>
  10124. </dd>
  10125. <dt><code>erstatus</code></dt>
  10126. <dd><span id="index-STATUS32-saved-on-exception_002c-ARC"></span>
  10127. <span id="index-ARC-STATUS32-saved-on-exception"></span>
  10128. <p>STATUS32 saved on exception. Auxiliary register address 0x402.
  10129. </p>
  10130. </dd>
  10131. <dt><code>bcr_ver</code></dt>
  10132. <dd><span id="index-Build-Configuration-Registers-Version_002c-ARC"></span>
  10133. <span id="index-ARC-Build-Configuration-Registers-Version"></span>
  10134. <p>Build Configuration Registers Version. Auxiliary register address 0x60.
  10135. </p>
  10136. </dd>
  10137. <dt><code>bta_link_build</code></dt>
  10138. <dd><span id="index-Build-configuration-for_003a-BTA-Registers_002c-ARC"></span>
  10139. <span id="index-ARC-Build-configuration-for_003a-BTA-Registers"></span>
  10140. <p>Build configuration for: BTA Registers. Auxiliary register address 0x63.
  10141. </p>
  10142. </dd>
  10143. <dt><code>vecbase_ac_build</code></dt>
  10144. <dd><span id="index-Build-configuration-for_003a-Interrupts_002c-ARC"></span>
  10145. <span id="index-ARC-Build-configuration-for_003a-Interrupts"></span>
  10146. <p>Build configuration for: Interrupts. Auxiliary register address 0x68.
  10147. </p>
  10148. </dd>
  10149. <dt><code>rf_build</code></dt>
  10150. <dd><span id="index-Build-configuration-for_003a-Core-Registers_002c-ARC"></span>
  10151. <span id="index-ARC-Build-configuration-for_003a-Core-Registers"></span>
  10152. <p>Build configuration for: Core Registers. Auxiliary register address 0x6e.
  10153. </p>
  10154. </dd>
  10155. <dt><code>dccm_build</code></dt>
  10156. <dd><span id="index-DCCM-RAM-Configuration-Register_002c-ARC"></span>
  10157. <span id="index-ARC-DCCM-RAM-Configuration-Register"></span>
  10158. <p>DCCM RAM Configuration Register. Auxiliary register address 0xc1.
  10159. </p>
  10160. </dd>
  10161. </dl>
  10162. <p>Additional auxiliary register names are defined according to the
  10163. processor architecture version and extensions selected by the options.
  10164. </p>
  10165. <hr>
  10166. <span id="ARC-Directives"></span><div class="header">
  10167. <p>
  10168. Next: <a href="#ARC-Modifiers" accesskey="n" rel="next">ARC Modifiers</a>, Previous: <a href="#ARC-Syntax" accesskey="p" rel="prev">ARC Syntax</a>, Up: <a href="#ARC_002dDependent" accesskey="u" rel="up">ARC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  10169. </div>
  10170. <span id="ARC-Machine-Directives"></span><h4 class="subsection">9.3.3 ARC Machine Directives</h4>
  10171. <span id="index-machine-directives_002c-ARC"></span>
  10172. <span id="index-ARC-machine-directives"></span>
  10173. <p>The ARC version of <code>as</code> supports the following additional
  10174. machine directives:
  10175. </p>
  10176. <dl compact="compact">
  10177. <dd>
  10178. <span id="index-lcomm-directive-1"></span>
  10179. </dd>
  10180. <dt><code>.lcomm <var>symbol</var>, <var>length</var>[, <var>alignment</var>]</code></dt>
  10181. <dd><p>Reserve <var>length</var> (an absolute expression) bytes for a local common
  10182. denoted by <var>symbol</var>. The section and value of <var>symbol</var> are
  10183. those of the new local common. The addresses are allocated in the bss
  10184. section, so that at run-time the bytes start off zeroed. Since
  10185. <var>symbol</var> is not declared global, it is normally not visible to
  10186. <code>ld</code>. The optional third parameter, <var>alignment</var>,
  10187. specifies the desired alignment of the symbol in the bss section,
  10188. specified as a byte boundary (for example, an alignment of 16 means
  10189. that the least significant 4 bits of the address should be zero). The
  10190. alignment must be an absolute expression, and it must be a power of
  10191. two. If no alignment is specified, as will set the alignment to the
  10192. largest power of two less than or equal to the size of the symbol, up
  10193. to a maximum of 16.
  10194. </p>
  10195. <span id="index-lcommon-directive_002c-ARC"></span>
  10196. </dd>
  10197. <dt><code>.lcommon <var>symbol</var>, <var>length</var>[, <var>alignment</var>]</code></dt>
  10198. <dd><p>The same as <code>lcomm</code> directive.
  10199. </p>
  10200. <span id="index-cpu-directive_002c-ARC"></span>
  10201. </dd>
  10202. <dt><code>.cpu <var>cpu</var></code></dt>
  10203. <dd><p>The <code>.cpu</code> directive must be followed by the desired core
  10204. version. Permitted values for CPU are:
  10205. </p><dl compact="compact">
  10206. <dt><code>ARC600</code></dt>
  10207. <dd><p>Assemble for the ARC600 instruction set.
  10208. </p>
  10209. </dd>
  10210. <dt><code>arc600_norm</code></dt>
  10211. <dd><p>Assemble for ARC 600 with norm instructions.
  10212. </p>
  10213. </dd>
  10214. <dt><code>arc600_mul64</code></dt>
  10215. <dd><p>Assemble for ARC 600 with mul64 instructions.
  10216. </p>
  10217. </dd>
  10218. <dt><code>arc600_mul32x16</code></dt>
  10219. <dd><p>Assemble for ARC 600 with mul32x16 instructions.
  10220. </p>
  10221. </dd>
  10222. <dt><code>arc601</code></dt>
  10223. <dd><p>Assemble for ARC 601 instruction set.
  10224. </p>
  10225. </dd>
  10226. <dt><code>arc601_norm</code></dt>
  10227. <dd><p>Assemble for ARC 601 with norm instructions.
  10228. </p>
  10229. </dd>
  10230. <dt><code>arc601_mul64</code></dt>
  10231. <dd><p>Assemble for ARC 601 with mul64 instructions.
  10232. </p>
  10233. </dd>
  10234. <dt><code>arc601_mul32x16</code></dt>
  10235. <dd><p>Assemble for ARC 601 with mul32x16 instructions.
  10236. </p>
  10237. </dd>
  10238. <dt><code>ARC700</code></dt>
  10239. <dd><p>Assemble for the ARC700 instruction set.
  10240. </p>
  10241. </dd>
  10242. <dt><code>NPS400</code></dt>
  10243. <dd><p>Assemble for the NPS400 instruction set.
  10244. </p>
  10245. </dd>
  10246. <dt><code>EM</code></dt>
  10247. <dd><p>Assemble for the ARC EM instruction set.
  10248. </p>
  10249. </dd>
  10250. <dt><code>arcem</code></dt>
  10251. <dd><p>Assemble for ARC EM instruction set
  10252. </p>
  10253. </dd>
  10254. <dt><code>em4</code></dt>
  10255. <dd><p>Assemble for ARC EM with code-density instructions.
  10256. </p>
  10257. </dd>
  10258. <dt><code>em4_dmips</code></dt>
  10259. <dd><p>Assemble for ARC EM with code-density instructions.
  10260. </p>
  10261. </dd>
  10262. <dt><code>em4_fpus</code></dt>
  10263. <dd><p>Assemble for ARC EM with code-density instructions.
  10264. </p>
  10265. </dd>
  10266. <dt><code>em4_fpuda</code></dt>
  10267. <dd><p>Assemble for ARC EM with code-density, and double-precision assist
  10268. instructions.
  10269. </p>
  10270. </dd>
  10271. <dt><code>quarkse_em</code></dt>
  10272. <dd><p>Assemble for QuarkSE-EM instruction set.
  10273. </p>
  10274. </dd>
  10275. <dt><code>HS</code></dt>
  10276. <dd><p>Assemble for the ARC HS instruction set.
  10277. </p>
  10278. </dd>
  10279. <dt><code>archs</code></dt>
  10280. <dd><p>Assemble for ARC HS instruction set.
  10281. </p>
  10282. </dd>
  10283. <dt><code>hs</code></dt>
  10284. <dd><p>Assemble for ARC HS instruction set.
  10285. </p>
  10286. </dd>
  10287. <dt><code>hs34</code></dt>
  10288. <dd><p>Assemble for ARC HS34 instruction set.
  10289. </p>
  10290. </dd>
  10291. <dt><code>hs38</code></dt>
  10292. <dd><p>Assemble for ARC HS38 instruction set.
  10293. </p>
  10294. </dd>
  10295. <dt><code>hs38_linux</code></dt>
  10296. <dd><p>Assemble for ARC HS38 with floating point support on.
  10297. </p>
  10298. </dd>
  10299. </dl>
  10300. <p>Note: the <code>.cpu</code> directive overrides the command-line option
  10301. <code>-mcpu=<var>cpu</var></code>; a warning is emitted when the version is not
  10302. consistent between the two.
  10303. </p>
  10304. </dd>
  10305. <dt><code>.extAuxRegister <var>name</var>, <var>addr</var>, <var>mode</var></code></dt>
  10306. <dd><span id="index-extAuxRegister-directive_002c-ARC"></span>
  10307. <p>Auxiliary registers can be defined in the assembler source code by
  10308. using this directive. The first parameter, <var>name</var>, is the name of the
  10309. new auxiliary register. The second parameter, <var>addr</var>, is
  10310. address the of the auxiliary register. The third parameter,
  10311. <var>mode</var>, specifies whether the register is readable and/or writable
  10312. and is one of:
  10313. </p><dl compact="compact">
  10314. <dt><code>r</code></dt>
  10315. <dd><p>Read only;
  10316. </p>
  10317. </dd>
  10318. <dt><code>w</code></dt>
  10319. <dd><p>Write only;
  10320. </p>
  10321. </dd>
  10322. <dt><code>r|w</code></dt>
  10323. <dd><p>Read and write.
  10324. </p>
  10325. </dd>
  10326. </dl>
  10327. <p>For example:
  10328. </p><div class="example">
  10329. <pre class="example"> .extAuxRegister mulhi, 0x12, w
  10330. </pre></div>
  10331. <p>specifies a write only extension auxiliary register, <var>mulhi</var> at
  10332. address 0x12.
  10333. </p>
  10334. </dd>
  10335. <dt><code>.extCondCode <var>suffix</var>, <var>val</var></code></dt>
  10336. <dd><span id="index-extCondCode-directive_002c-ARC"></span>
  10337. <p>ARC supports extensible condition codes. This directive defines a new
  10338. condition code, to be known by the suffix, <var>suffix</var> and will
  10339. depend on the value, <var>val</var> in the condition code.
  10340. </p>
  10341. <p>For example:
  10342. </p><div class="example">
  10343. <pre class="example"> .extCondCode is_busy,0x14
  10344. add.is_busy r1,r2,r3
  10345. </pre></div>
  10346. <p>will only execute the <code>add</code> instruction if the condition code
  10347. value is 0x14.
  10348. </p>
  10349. </dd>
  10350. <dt><code>.extCoreRegister <var>name</var>, <var>regnum</var>, <var>mode</var>, <var>shortcut</var></code></dt>
  10351. <dd><span id="index-extCoreRegister-directive_002c-ARC"></span>
  10352. <p>Specifies an extension core register named <var>name</var> as a synonym for
  10353. the register numbered <var>regnum</var>. The register number must be
  10354. between 32 and 59. The third argument, <var>mode</var>, indicates whether
  10355. the register is readable and/or writable and is one of:
  10356. </p><dl compact="compact">
  10357. <dt><code>r</code></dt>
  10358. <dd><p>Read only;
  10359. </p>
  10360. </dd>
  10361. <dt><code>w</code></dt>
  10362. <dd><p>Write only;
  10363. </p>
  10364. </dd>
  10365. <dt><code>r|w</code></dt>
  10366. <dd><p>Read and write.
  10367. </p>
  10368. </dd>
  10369. </dl>
  10370. <p>The final parameter, <var>shortcut</var> indicates whether the register has
  10371. a short cut in the pipeline. The valid values are:
  10372. </p><dl compact="compact">
  10373. <dt><code>can_shortcut</code></dt>
  10374. <dd><p>The register has a short cut in the pipeline;
  10375. </p>
  10376. </dd>
  10377. <dt><code>cannot_shortcut</code></dt>
  10378. <dd><p>The register does not have a short cut in the pipeline.
  10379. </p></dd>
  10380. </dl>
  10381. <p>For example:
  10382. </p><div class="example">
  10383. <pre class="example"> .extCoreRegister mlo, 57, r , can_shortcut
  10384. </pre></div>
  10385. <p>defines a read only extension core register, <code>mlo</code>, which is
  10386. register 57, and can short cut the pipeline.
  10387. </p>
  10388. </dd>
  10389. <dt><code>.extInstruction <var>name</var>, <var>opcode</var>, <var>subopcode</var>, <var>suffixclass</var>, <var>syntaxclass</var></code></dt>
  10390. <dd><span id="index-extInstruction-directive_002c-ARC"></span>
  10391. <p>ARC allows the user to specify extension instructions. These
  10392. extension instructions are not macros; the assembler creates encodings
  10393. for use of these instructions according to the specification by the
  10394. user.
  10395. </p>
  10396. <p>The first argument, <var>name</var>, gives the name of the instruction.
  10397. </p>
  10398. <p>The second argument, <var>opcode</var>, is the opcode to be used (bits 31:27
  10399. in the encoding).
  10400. </p>
  10401. <p>The third argument, <var>subopcode</var>, is the sub-opcode to be used, but
  10402. the correct value also depends on the fifth argument,
  10403. <var>syntaxclass</var>
  10404. </p>
  10405. <p>The fourth argument, <var>suffixclass</var>, determines the kinds of
  10406. suffixes to be allowed. Valid values are:
  10407. </p><dl compact="compact">
  10408. <dt><code>SUFFIX_NONE</code></dt>
  10409. <dd><p>No suffixes are permitted;
  10410. </p>
  10411. </dd>
  10412. <dt><code>SUFFIX_COND</code></dt>
  10413. <dd><p>Conditional suffixes are permitted;
  10414. </p>
  10415. </dd>
  10416. <dt><code>SUFFIX_FLAG</code></dt>
  10417. <dd><p>Flag setting suffixes are permitted.
  10418. </p>
  10419. </dd>
  10420. <dt><code>SUFFIX_COND|SUFFIX_FLAG</code></dt>
  10421. <dd><p>Both conditional and flag setting suffices are permitted.
  10422. </p>
  10423. </dd>
  10424. </dl>
  10425. <p>The fifth and final argument, <var>syntaxclass</var>, determines the syntax
  10426. class for the instruction. It can have the following values:
  10427. </p><dl compact="compact">
  10428. <dt><code>SYNTAX_2OP</code></dt>
  10429. <dd><p>Two Operand Instruction;
  10430. </p>
  10431. </dd>
  10432. <dt><code>SYNTAX_3OP</code></dt>
  10433. <dd><p>Three Operand Instruction.
  10434. </p>
  10435. </dd>
  10436. <dt><code>SYNTAX_1OP</code></dt>
  10437. <dd><p>One Operand Instruction.
  10438. </p>
  10439. </dd>
  10440. <dt><code>SYNTAX_NOP</code></dt>
  10441. <dd><p>No Operand Instruction.
  10442. </p></dd>
  10443. </dl>
  10444. <p>The syntax class may be followed by &lsquo;<samp>|</samp>&rsquo; and one of the following
  10445. modifiers.
  10446. </p><dl compact="compact">
  10447. <dt><code>OP1_MUST_BE_IMM</code></dt>
  10448. <dd><p>Modifies syntax class <code>SYNTAX_3OP</code>, specifying that the first
  10449. operand of a three-operand instruction must be an immediate (i.e., the
  10450. result is discarded). This is usually used to set the flags using
  10451. specific instructions and not retain results.
  10452. </p>
  10453. </dd>
  10454. <dt><code>OP1_IMM_IMPLIED</code></dt>
  10455. <dd><p>Modifies syntax class <code>SYNTAX_20P</code>, specifying that there is an
  10456. implied immediate destination operand which does not appear in the
  10457. syntax.
  10458. </p>
  10459. <p>For example, if the source code contains an instruction like:
  10460. </p><div class="example">
  10461. <pre class="example">inst r1,r2
  10462. </pre></div>
  10463. <p>the first argument is an implied immediate (that is, the result is
  10464. discarded). This is the same as though the source code were: inst
  10465. 0,r1,r2.
  10466. </p>
  10467. </dd>
  10468. </dl>
  10469. <p>For example, defining a 64-bit multiplier with immediate operands:
  10470. </p><div class="example">
  10471. <pre class="example"> .extInstruction mp64, 0x07, 0x2d, SUFFIX_COND|SUFFIX_FLAG,
  10472. SYNTAX_3OP|OP1_MUST_BE_IMM
  10473. </pre></div>
  10474. <p>which specifies an extension instruction named <code>mp64</code> with 3
  10475. operands. It sets the flags and can be used with a condition code,
  10476. for which the first operand is an immediate, i.e. equivalent to
  10477. discarding the result of the operation.
  10478. </p>
  10479. <p>A two operands instruction variant would be:
  10480. </p><div class="example">
  10481. <pre class="example"> .extInstruction mul64, 0x07, 0x2d, SUFFIX_COND,
  10482. SYNTAX_2OP|OP1_IMM_IMPLIED
  10483. </pre></div>
  10484. <p>which describes a two operand instruction with an implicit first
  10485. immediate operand. The result of this operation would be discarded.
  10486. </p>
  10487. <span id="index-_002earc_005fattribute-directive_002c-ARC"></span>
  10488. </dd>
  10489. <dt><code>.arc_attribute <var>tag</var>, <var>value</var></code></dt>
  10490. <dd><p>Set the ARC object attribute <var>tag</var> to <var>value</var>.
  10491. </p>
  10492. <p>The <var>tag</var> is either an attribute number, or one of the following:
  10493. <code>Tag_ARC_PCS_config</code>, <code>Tag_ARC_CPU_base</code>,
  10494. <code>Tag_ARC_CPU_variation</code>, <code>Tag_ARC_CPU_name</code>,
  10495. <code>Tag_ARC_ABI_rf16</code>, <code>Tag_ARC_ABI_osver</code>, <code>Tag_ARC_ABI_sda</code>,
  10496. <code>Tag_ARC_ABI_pic</code>, <code>Tag_ARC_ABI_tls</code>, <code>Tag_ARC_ABI_enumsize</code>,
  10497. <code>Tag_ARC_ABI_exceptions</code>, <code>Tag_ARC_ABI_double_size</code>,
  10498. <code>Tag_ARC_ISA_config</code>, <code>Tag_ARC_ISA_apex</code>,
  10499. <code>Tag_ARC_ISA_mpy_option</code>
  10500. </p>
  10501. <p>The <var>value</var> is either a <code>number</code>, <code>&quot;string&quot;</code>, or
  10502. <code>number, &quot;string&quot;</code> depending on the tag.
  10503. </p>
  10504. </dd>
  10505. </dl>
  10506. <hr>
  10507. <span id="ARC-Modifiers"></span><div class="header">
  10508. <p>
  10509. Next: <a href="#ARC-Symbols" accesskey="n" rel="next">ARC Symbols</a>, Previous: <a href="#ARC-Directives" accesskey="p" rel="prev">ARC Directives</a>, Up: <a href="#ARC_002dDependent" accesskey="u" rel="up">ARC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  10510. </div>
  10511. <span id="ARC-Assembler-Modifiers"></span><h4 class="subsection">9.3.4 ARC Assembler Modifiers</h4>
  10512. <p>The following additional assembler modifiers have been added for
  10513. position-independent code. These modifiers are available only with
  10514. the ARC 700 and above processors and generate relocation entries,
  10515. which are interpreted by the linker as follows:
  10516. </p>
  10517. <dl compact="compact">
  10518. <dt><code>@pcl(<var>symbol</var>)</code></dt>
  10519. <dd><span id="index-_0040pcl_0028symbol_0029_002c-ARC-modifier"></span>
  10520. <p>Relative distance of <var>symbol</var>&rsquo;s from the current program counter
  10521. location.
  10522. </p>
  10523. </dd>
  10524. <dt><code>@gotpc(<var>symbol</var>)</code></dt>
  10525. <dd><span id="index-_0040gotpc_0028symbol_0029_002c-ARC-modifier"></span>
  10526. <p>Relative distance of <var>symbol</var>&rsquo;s Global Offset Table entry from the
  10527. current program counter location.
  10528. </p>
  10529. </dd>
  10530. <dt><code>@gotoff(<var>symbol</var>)</code></dt>
  10531. <dd><span id="index-_0040gotoff_0028symbol_0029_002c-ARC-modifier"></span>
  10532. <p>Distance of <var>symbol</var> from the base of the Global Offset Table.
  10533. </p>
  10534. </dd>
  10535. <dt><code>@plt(<var>symbol</var>)</code></dt>
  10536. <dd><span id="index-_0040plt_0028symbol_0029_002c-ARC-modifier"></span>
  10537. <p>Distance of <var>symbol</var>&rsquo;s Procedure Linkage Table entry from the
  10538. current program counter. This is valid only with branch and link
  10539. instructions and PC-relative calls.
  10540. </p>
  10541. </dd>
  10542. <dt><code>@sda(<var>symbol</var>)</code></dt>
  10543. <dd><span id="index-_0040sda_0028symbol_0029_002c-ARC-modifier"></span>
  10544. <p>Relative distance of <var>symbol</var> from the base of the Small Data
  10545. Pointer.
  10546. </p>
  10547. </dd>
  10548. </dl>
  10549. <hr>
  10550. <span id="ARC-Symbols"></span><div class="header">
  10551. <p>
  10552. Next: <a href="#ARC-Opcodes" accesskey="n" rel="next">ARC Opcodes</a>, Previous: <a href="#ARC-Modifiers" accesskey="p" rel="prev">ARC Modifiers</a>, Up: <a href="#ARC_002dDependent" accesskey="u" rel="up">ARC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  10553. </div>
  10554. <span id="ARC-Pre_002ddefined-Symbols"></span><h4 class="subsection">9.3.5 ARC Pre-defined Symbols</h4>
  10555. <p>The following assembler symbols will prove useful when developing
  10556. position-independent code. These symbols are available only with the
  10557. ARC 700 and above processors.
  10558. </p>
  10559. <dl compact="compact">
  10560. <dt><code>__GLOBAL_OFFSET_TABLE__</code></dt>
  10561. <dd><span id="index-_005f_005fGLOBAL_005fOFFSET_005fTABLE_005f_005f_002c-ARC-pre_002ddefined-symbol"></span>
  10562. <p>Symbol referring to the base of the Global Offset Table.
  10563. </p>
  10564. </dd>
  10565. <dt><code>__DYNAMIC__</code></dt>
  10566. <dd><span id="index-_005f_005fDYNAMIC_005f_005f_002c-ARC-pre_002ddefined-symbol"></span>
  10567. <p>An alias for the Global Offset Table
  10568. <code>Base__GLOBAL_OFFSET_TABLE__</code>. It can be used only with
  10569. <code>@gotpc</code> modifiers.
  10570. </p>
  10571. </dd>
  10572. </dl>
  10573. <hr>
  10574. <span id="ARC-Opcodes"></span><div class="header">
  10575. <p>
  10576. Previous: <a href="#ARC-Symbols" accesskey="p" rel="prev">ARC Symbols</a>, Up: <a href="#ARC_002dDependent" accesskey="u" rel="up">ARC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  10577. </div>
  10578. <span id="Opcodes-2"></span><h4 class="subsection">9.3.6 Opcodes</h4>
  10579. <span id="index-ARC-opcodes"></span>
  10580. <span id="index-opcodes-for-ARC"></span>
  10581. <p>For information on the ARC instruction set, see <cite>ARC Programmers
  10582. Reference Manual</cite>, available where you download the processor IP library.
  10583. </p>
  10584. <hr>
  10585. <span id="ARM_002dDependent"></span><div class="header">
  10586. <p>
  10587. Next: <a href="#AVR_002dDependent" accesskey="n" rel="next">AVR-Dependent</a>, Previous: <a href="#ARC_002dDependent" accesskey="p" rel="prev">ARC-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  10588. </div>
  10589. <span id="ARM-Dependent-Features"></span><h3 class="section">9.4 ARM Dependent Features</h3>
  10590. <span id="index-ARM-support"></span>
  10591. <span id="index-Thumb-support"></span>
  10592. <table class="menu" border="0" cellspacing="0">
  10593. <tr><td align="left" valign="top">&bull; <a href="#ARM-Options" accesskey="1">ARM Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  10594. </td></tr>
  10595. <tr><td align="left" valign="top">&bull; <a href="#ARM-Syntax" accesskey="2">ARM Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  10596. </td></tr>
  10597. <tr><td align="left" valign="top">&bull; <a href="#ARM-Floating-Point" accesskey="3">ARM Floating Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  10598. </td></tr>
  10599. <tr><td align="left" valign="top">&bull; <a href="#ARM-Directives" accesskey="4">ARM Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">ARM Machine Directives
  10600. </td></tr>
  10601. <tr><td align="left" valign="top">&bull; <a href="#ARM-Opcodes" accesskey="5">ARM Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  10602. </td></tr>
  10603. <tr><td align="left" valign="top">&bull; <a href="#ARM-Mapping-Symbols" accesskey="6">ARM Mapping Symbols</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Mapping Symbols
  10604. </td></tr>
  10605. <tr><td align="left" valign="top">&bull; <a href="#ARM-Unwinding-Tutorial" accesskey="7">ARM Unwinding Tutorial</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Unwinding
  10606. </td></tr>
  10607. </table>
  10608. <hr>
  10609. <span id="ARM-Options"></span><div class="header">
  10610. <p>
  10611. Next: <a href="#ARM-Syntax" accesskey="n" rel="next">ARM Syntax</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  10612. </div>
  10613. <span id="Options-3"></span><h4 class="subsection">9.4.1 Options</h4>
  10614. <span id="index-ARM-options-_0028none_0029"></span>
  10615. <span id="index-options-for-ARM-_0028none_0029"></span>
  10616. <dl compact="compact">
  10617. <dd>
  10618. <span id="index-_002dmcpu_003d-command_002dline-option_002c-ARM"></span>
  10619. </dd>
  10620. <dt><code>-mcpu=<var>processor</var>[+<var>extension</var>&hellip;]</code></dt>
  10621. <dd><p>This option specifies the target processor. The assembler will issue an
  10622. error message if an attempt is made to assemble an instruction which
  10623. will not execute on the target processor. The following processor names are
  10624. recognized:
  10625. <code>arm1</code>,
  10626. <code>arm2</code>,
  10627. <code>arm250</code>,
  10628. <code>arm3</code>,
  10629. <code>arm6</code>,
  10630. <code>arm60</code>,
  10631. <code>arm600</code>,
  10632. <code>arm610</code>,
  10633. <code>arm620</code>,
  10634. <code>arm7</code>,
  10635. <code>arm7m</code>,
  10636. <code>arm7d</code>,
  10637. <code>arm7dm</code>,
  10638. <code>arm7di</code>,
  10639. <code>arm7dmi</code>,
  10640. <code>arm70</code>,
  10641. <code>arm700</code>,
  10642. <code>arm700i</code>,
  10643. <code>arm710</code>,
  10644. <code>arm710t</code>,
  10645. <code>arm720</code>,
  10646. <code>arm720t</code>,
  10647. <code>arm740t</code>,
  10648. <code>arm710c</code>,
  10649. <code>arm7100</code>,
  10650. <code>arm7500</code>,
  10651. <code>arm7500fe</code>,
  10652. <code>arm7t</code>,
  10653. <code>arm7tdmi</code>,
  10654. <code>arm7tdmi-s</code>,
  10655. <code>arm8</code>,
  10656. <code>arm810</code>,
  10657. <code>strongarm</code>,
  10658. <code>strongarm1</code>,
  10659. <code>strongarm110</code>,
  10660. <code>strongarm1100</code>,
  10661. <code>strongarm1110</code>,
  10662. <code>arm9</code>,
  10663. <code>arm920</code>,
  10664. <code>arm920t</code>,
  10665. <code>arm922t</code>,
  10666. <code>arm940t</code>,
  10667. <code>arm9tdmi</code>,
  10668. <code>fa526</code> (Faraday FA526 processor),
  10669. <code>fa626</code> (Faraday FA626 processor),
  10670. <code>arm9e</code>,
  10671. <code>arm926e</code>,
  10672. <code>arm926ej-s</code>,
  10673. <code>arm946e-r0</code>,
  10674. <code>arm946e</code>,
  10675. <code>arm946e-s</code>,
  10676. <code>arm966e-r0</code>,
  10677. <code>arm966e</code>,
  10678. <code>arm966e-s</code>,
  10679. <code>arm968e-s</code>,
  10680. <code>arm10t</code>,
  10681. <code>arm10tdmi</code>,
  10682. <code>arm10e</code>,
  10683. <code>arm1020</code>,
  10684. <code>arm1020t</code>,
  10685. <code>arm1020e</code>,
  10686. <code>arm1022e</code>,
  10687. <code>arm1026ej-s</code>,
  10688. <code>fa606te</code> (Faraday FA606TE processor),
  10689. <code>fa616te</code> (Faraday FA616TE processor),
  10690. <code>fa626te</code> (Faraday FA626TE processor),
  10691. <code>fmp626</code> (Faraday FMP626 processor),
  10692. <code>fa726te</code> (Faraday FA726TE processor),
  10693. <code>arm1136j-s</code>,
  10694. <code>arm1136jf-s</code>,
  10695. <code>arm1156t2-s</code>,
  10696. <code>arm1156t2f-s</code>,
  10697. <code>arm1176jz-s</code>,
  10698. <code>arm1176jzf-s</code>,
  10699. <code>mpcore</code>,
  10700. <code>mpcorenovfp</code>,
  10701. <code>cortex-a5</code>,
  10702. <code>cortex-a7</code>,
  10703. <code>cortex-a8</code>,
  10704. <code>cortex-a9</code>,
  10705. <code>cortex-a15</code>,
  10706. <code>cortex-a17</code>,
  10707. <code>cortex-a32</code>,
  10708. <code>cortex-a35</code>,
  10709. <code>cortex-a53</code>,
  10710. <code>cortex-a55</code>,
  10711. <code>cortex-a57</code>,
  10712. <code>cortex-a72</code>,
  10713. <code>cortex-a73</code>,
  10714. <code>cortex-a75</code>,
  10715. <code>cortex-a76</code>,
  10716. <code>cortex-a76ae</code>,
  10717. <code>cortex-a77</code>,
  10718. <code>cortex-a78</code>,
  10719. <code>cortex-a78ae</code>,
  10720. <code>cortex-a78c</code>,
  10721. <code>cortex-a710</code>,
  10722. <code>ares</code>,
  10723. <code>cortex-r4</code>,
  10724. <code>cortex-r4f</code>,
  10725. <code>cortex-r5</code>,
  10726. <code>cortex-r7</code>,
  10727. <code>cortex-r8</code>,
  10728. <code>cortex-r52</code>,
  10729. <code>cortex-r52plus</code>,
  10730. <code>cortex-m35p</code>,
  10731. <code>cortex-m33</code>,
  10732. <code>cortex-m23</code>,
  10733. <code>cortex-m7</code>,
  10734. <code>cortex-m4</code>,
  10735. <code>cortex-m3</code>,
  10736. <code>cortex-m1</code>,
  10737. <code>cortex-m0</code>,
  10738. <code>cortex-m0plus</code>,
  10739. <code>cortex-x1</code>,
  10740. <code>cortex-x1c</code>,
  10741. <code>exynos-m1</code>,
  10742. <code>marvell-pj4</code>,
  10743. <code>marvell-whitney</code>,
  10744. <code>neoverse-n1</code>,
  10745. <code>neoverse-n2</code>,
  10746. <code>neoverse-v1</code>,
  10747. <code>xgene1</code>,
  10748. <code>xgene2</code>,
  10749. <code>ep9312</code> (ARM920 with Cirrus Maverick coprocessor),
  10750. <code>i80200</code> (Intel XScale processor)
  10751. <code>iwmmxt</code> (Intel XScale processor with Wireless MMX technology coprocessor)
  10752. and
  10753. <code>xscale</code>.
  10754. The special name <code>all</code> may be used to allow the
  10755. assembler to accept instructions valid for any ARM processor.
  10756. </p>
  10757. <p>In addition to the basic instruction set, the assembler can be told to
  10758. accept various extension mnemonics that extend the processor using the
  10759. co-processor instruction space. For example, <code>-mcpu=arm920+maverick</code>
  10760. is equivalent to specifying <code>-mcpu=ep9312</code>.
  10761. </p>
  10762. <p>Multiple extensions may be specified, separated by a <code>+</code>. The
  10763. extensions should be specified in ascending alphabetical order.
  10764. </p>
  10765. <p>Some extensions may be restricted to particular architectures; this is
  10766. documented in the list of extensions below.
  10767. </p>
  10768. <p>Extension mnemonics may also be removed from those the assembler accepts.
  10769. This is done be prepending <code>no</code> to the option that adds the extension.
  10770. Extensions that are removed should be listed after all extensions which have
  10771. been added, again in ascending alphabetical order. For example,
  10772. <code>-mcpu=ep9312+nomaverick</code> is equivalent to specifying <code>-mcpu=arm920</code>.
  10773. </p>
  10774. <p>The following extensions are currently supported:
  10775. <code>bf16</code> (BFloat16 extensions for v8.6-A architecture),
  10776. <code>i8mm</code> (Int8 Matrix Multiply extensions for v8.6-A architecture),
  10777. <code>crc</code>
  10778. <code>crypto</code> (Cryptography Extensions for v8-A architecture, implies <code>fp+simd</code>),
  10779. <code>dotprod</code> (Dot Product Extensions for v8.2-A architecture, implies <code>fp+simd</code>),
  10780. <code>fp</code> (Floating Point Extensions for v8-A architecture),
  10781. <code>fp16</code> (FP16 Extensions for v8.2-A architecture, implies <code>fp</code>),
  10782. <code>fp16fml</code> (FP16 Floating Point Multiplication Variant Extensions for v8.2-A architecture, implies <code>fp16</code>),
  10783. <code>idiv</code> (Integer Divide Extensions for v7-A and v7-R architectures),
  10784. <code>iwmmxt</code>,
  10785. <code>iwmmxt2</code>,
  10786. <code>xscale</code>,
  10787. <code>maverick</code>,
  10788. <code>mp</code> (Multiprocessing Extensions for v7-A and v7-R
  10789. architectures),
  10790. <code>os</code> (Operating System for v6M architecture),
  10791. <code>predres</code> (Execution and Data Prediction Restriction Instruction for
  10792. v8-A architectures, added by default from v8.5-A),
  10793. <code>sb</code> (Speculation Barrier Instruction for v8-A architectures, added by
  10794. default from v8.5-A),
  10795. <code>sec</code> (Security Extensions for v6K and v7-A architectures),
  10796. <code>simd</code> (Advanced SIMD Extensions for v8-A architecture, implies <code>fp</code>),
  10797. <code>virt</code> (Virtualization Extensions for v7-A architecture, implies
  10798. <code>idiv</code>),
  10799. <code>pan</code> (Privileged Access Never Extensions for v8-A architecture),
  10800. <code>ras</code> (Reliability, Availability and Serviceability extensions
  10801. for v8-A architecture),
  10802. <code>rdma</code> (ARMv8.1 Advanced SIMD extensions for v8-A architecture, implies
  10803. <code>simd</code>)
  10804. and
  10805. <code>xscale</code>.
  10806. </p>
  10807. <span id="index-_002dmarch_003d-command_002dline-option_002c-ARM"></span>
  10808. </dd>
  10809. <dt><code>-march=<var>architecture</var>[+<var>extension</var>&hellip;]</code></dt>
  10810. <dd><p>This option specifies the target architecture. The assembler will issue
  10811. an error message if an attempt is made to assemble an instruction which
  10812. will not execute on the target architecture. The following architecture
  10813. names are recognized:
  10814. <code>armv1</code>,
  10815. <code>armv2</code>,
  10816. <code>armv2a</code>,
  10817. <code>armv2s</code>,
  10818. <code>armv3</code>,
  10819. <code>armv3m</code>,
  10820. <code>armv4</code>,
  10821. <code>armv4xm</code>,
  10822. <code>armv4t</code>,
  10823. <code>armv4txm</code>,
  10824. <code>armv5</code>,
  10825. <code>armv5t</code>,
  10826. <code>armv5txm</code>,
  10827. <code>armv5te</code>,
  10828. <code>armv5texp</code>,
  10829. <code>armv6</code>,
  10830. <code>armv6j</code>,
  10831. <code>armv6k</code>,
  10832. <code>armv6z</code>,
  10833. <code>armv6kz</code>,
  10834. <code>armv6-m</code>,
  10835. <code>armv6s-m</code>,
  10836. <code>armv7</code>,
  10837. <code>armv7-a</code>,
  10838. <code>armv7ve</code>,
  10839. <code>armv7-r</code>,
  10840. <code>armv7-m</code>,
  10841. <code>armv7e-m</code>,
  10842. <code>armv8-a</code>,
  10843. <code>armv8.1-a</code>,
  10844. <code>armv8.2-a</code>,
  10845. <code>armv8.3-a</code>,
  10846. <code>armv8-r</code>,
  10847. <code>armv8.4-a</code>,
  10848. <code>armv8.5-a</code>,
  10849. <code>armv8-m.base</code>,
  10850. <code>armv8-m.main</code>,
  10851. <code>armv8.1-m.main</code>,
  10852. <code>armv8.6-a</code>,
  10853. <code>armv8.7-a</code>,
  10854. <code>armv8.8-a</code>,
  10855. <code>armv8.9-a</code>,
  10856. <code>armv9-a</code>,
  10857. <code>armv9.1-a</code>,
  10858. <code>armv9.2-a</code>,
  10859. <code>armv9.3-a</code>,
  10860. <code>armv9.4-a</code>,
  10861. <code>iwmmxt</code>,
  10862. <code>iwmmxt2</code>
  10863. and
  10864. <code>xscale</code>.
  10865. If both <code>-mcpu</code> and
  10866. <code>-march</code> are specified, the assembler will use
  10867. the setting for <code>-mcpu</code>.
  10868. </p>
  10869. <p>The architecture option can be extended with a set extension options. These
  10870. extensions are context sensitive, i.e. the same extension may mean different
  10871. things when used with different architectures. When used together with a
  10872. <code>-mfpu</code> option, the union of both feature enablement is taken.
  10873. See their availability and meaning below:
  10874. </p>
  10875. <p>For <code>armv5te</code>, <code>armv5texp</code>, <code>armv5tej</code>, <code>armv6</code>, <code>armv6j</code>, <code>armv6k</code>, <code>armv6z</code>, <code>armv6kz</code>, <code>armv6zk</code>, <code>armv6t2</code>, <code>armv6kt2</code> and <code>armv6zt2</code>:
  10876. </p>
  10877. <ul class="no-bullet">
  10878. <li><!-- /@w --> <code>+fp</code>: Enables VFPv2 instructions.
  10879. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU instrunctions.
  10880. </li></ul>
  10881. <p>For <code>armv7</code>:
  10882. </p>
  10883. <ul class="no-bullet">
  10884. <li><!-- /@w --> <code>+fp</code>: Enables VFPv3 instructions with 16 double-word registers.
  10885. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU instructions.
  10886. </li></ul>
  10887. <p>For <code>armv7-a</code>:
  10888. </p>
  10889. <ul class="no-bullet">
  10890. <li><!-- /@w --> <code>+fp</code>: Enables VFPv3 instructions with 16 double-word registers.
  10891. </li><li><!-- /@w --> <code>+vfpv3-d16</code>: Alias for <code>+fp</code>.
  10892. </li><li><!-- /@w --> <code>+vfpv3</code>: Enables VFPv3 instructions with 32 double-word registers.
  10893. </li><li><!-- /@w --> <code>+vfpv3-d16-fp16</code>: Enables VFPv3 with half precision floating-point
  10894. conversion instructions and 16 double-word registers.
  10895. </li><li><!-- /@w --> <code>+vfpv3-fp16</code>: Enables VFPv3 with half precision floating-point conversion
  10896. instructions and 32 double-word registers.
  10897. </li><li><!-- /@w --> <code>+vfpv4-d16</code>: Enables VFPv4 instructions with 16 double-word registers.
  10898. </li><li><!-- /@w --> <code>+vfpv4</code>: Enables VFPv4 instructions with 32 double-word registers.
  10899. </li><li><!-- /@w --> <code>+simd</code>: Enables VFPv3 and NEONv1 instructions with 32 double-word
  10900. registers.
  10901. </li><li><!-- /@w --> <code>+neon</code>: Alias for <code>+simd</code>.
  10902. </li><li><!-- /@w --> <code>+neon-vfpv3</code>: Alias for <code>+simd</code>.
  10903. </li><li><!-- /@w --> <code>+neon-fp16</code>: Enables VFPv3, half precision floating-point conversion and
  10904. NEONv1 instructions with 32 double-word registers.
  10905. </li><li><!-- /@w --> <code>+neon-vfpv4</code>: Enables VFPv4 and NEONv1 with Fused-MAC instructions and 32
  10906. double-word registers.
  10907. </li><li><!-- /@w --> <code>+mp</code>: Enables Multiprocessing Extensions.
  10908. </li><li><!-- /@w --> <code>+sec</code>: Enables Security Extensions.
  10909. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU and NEON instructions.
  10910. </li><li><!-- /@w --> <code>+nosimd</code>: Disables all NEON instructions.
  10911. </li></ul>
  10912. <p>For <code>armv7ve</code>:
  10913. </p>
  10914. <ul class="no-bullet">
  10915. <li><!-- /@w --> <code>+fp</code>: Enables VFPv4 instructions with 16 double-word registers.
  10916. </li><li><!-- /@w --> <code>+vfpv4-d16</code>: Alias for <code>+fp</code>.
  10917. </li><li><!-- /@w --> <code>+vfpv3-d16</code>: Enables VFPv3 instructions with 16 double-word registers.
  10918. </li><li><!-- /@w --> <code>+vfpv3</code>: Enables VFPv3 instructions with 32 double-word registers.
  10919. </li><li><!-- /@w --> <code>+vfpv3-d16-fp16</code>: Enables VFPv3 with half precision floating-point
  10920. conversion instructions and 16 double-word registers.
  10921. </li><li><!-- /@w --> <code>+vfpv3-fp16</code>: Enables VFPv3 with half precision floating-point conversion
  10922. instructions and 32 double-word registers.
  10923. </li><li><!-- /@w --> <code>+vfpv4</code>: Enables VFPv4 instructions with 32 double-word registers.
  10924. </li><li><!-- /@w --> <code>+simd</code>: Enables VFPv4 and NEONv1 with Fused-MAC instructions and 32
  10925. double-word registers.
  10926. </li><li><!-- /@w --> <code>+neon-vfpv4</code>: Alias for <code>+simd</code>.
  10927. </li><li><!-- /@w --> <code>+neon</code>: Enables VFPv3 and NEONv1 instructions with 32 double-word
  10928. registers.
  10929. </li><li><!-- /@w --> <code>+neon-vfpv3</code>: Alias for <code>+neon</code>.
  10930. </li><li><!-- /@w --> <code>+neon-fp16</code>: Enables VFPv3, half precision floating-point conversion and
  10931. NEONv1 instructions with 32 double-word registers.
  10932. double-word registers.
  10933. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU and NEON instructions.
  10934. </li><li><!-- /@w --> <code>+nosimd</code>: Disables all NEON instructions.
  10935. </li></ul>
  10936. <p>For <code>armv7-r</code>:
  10937. </p>
  10938. <ul class="no-bullet">
  10939. <li><!-- /@w --> <code>+fp.sp</code>: Enables single-precision only VFPv3 instructions with 16
  10940. double-word registers.
  10941. </li><li><!-- /@w --> <code>+vfpv3xd</code>: Alias for <code>+fp.sp</code>.
  10942. </li><li><!-- /@w --> <code>+fp</code>: Enables VFPv3 instructions with 16 double-word registers.
  10943. </li><li><!-- /@w --> <code>+vfpv3-d16</code>: Alias for <code>+fp</code>.
  10944. </li><li><!-- /@w --> <code>+vfpv3xd-fp16</code>: Enables single-precision only VFPv3 and half
  10945. floating-point conversion instructions with 16 double-word registers.
  10946. </li><li><!-- /@w --> <code>+vfpv3-d16-fp16</code>: Enables VFPv3 and half precision floating-point
  10947. conversion instructions with 16 double-word registers.
  10948. </li><li><!-- /@w --> <code>+idiv</code>: Enables integer division instructions in ARM mode.
  10949. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU instructions.
  10950. </li></ul>
  10951. <p>For <code>armv7e-m</code>:
  10952. </p>
  10953. <ul class="no-bullet">
  10954. <li><!-- /@w --> <code>+fp</code>: Enables single-precision only VFPv4 instructions with 16
  10955. double-word registers.
  10956. </li><li><!-- /@w --> <code>+vfpvf4-sp-d16</code>: Alias for <code>+fp</code>.
  10957. </li><li><!-- /@w --> <code>+fpv5</code>: Enables single-precision only VFPv5 instructions with 16
  10958. double-word registers.
  10959. </li><li><!-- /@w --> <code>+fp.dp</code>: Enables VFPv5 instructions with 16 double-word registers.
  10960. </li><li><!-- /@w --> <code>+fpv5-d16&quot;</code>: Alias for <code>+fp.dp</code>.
  10961. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU instructions.
  10962. </li></ul>
  10963. <p>For <code>armv8-m.main</code>:
  10964. </p>
  10965. <ul class="no-bullet">
  10966. <li><!-- /@w --> <code>+dsp</code>: Enables DSP Extension.
  10967. </li><li><!-- /@w --> <code>+fp</code>: Enables single-precision only VFPv5 instructions with 16
  10968. double-word registers.
  10969. </li><li><!-- /@w --> <code>+fp.dp</code>: Enables VFPv5 instructions with 16 double-word registers.
  10970. </li><li><!-- /@w --> <code>+cdecp0</code> (CDE extensions for v8-m architecture with coprocessor 0),
  10971. </li><li><!-- /@w --> <code>+cdecp1</code> (CDE extensions for v8-m architecture with coprocessor 1),
  10972. </li><li><!-- /@w --> <code>+cdecp2</code> (CDE extensions for v8-m architecture with coprocessor 2),
  10973. </li><li><!-- /@w --> <code>+cdecp3</code> (CDE extensions for v8-m architecture with coprocessor 3),
  10974. </li><li><!-- /@w --> <code>+cdecp4</code> (CDE extensions for v8-m architecture with coprocessor 4),
  10975. </li><li><!-- /@w --> <code>+cdecp5</code> (CDE extensions for v8-m architecture with coprocessor 5),
  10976. </li><li><!-- /@w --> <code>+cdecp6</code> (CDE extensions for v8-m architecture with coprocessor 6),
  10977. </li><li><!-- /@w --> <code>+cdecp7</code> (CDE extensions for v8-m architecture with coprocessor 7),
  10978. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU instructions.
  10979. </li><li><!-- /@w --> <code>+nodsp</code>: Disables DSP Extension.
  10980. </li></ul>
  10981. <p>For <code>armv8.1-m.main</code>:
  10982. </p>
  10983. <ul class="no-bullet">
  10984. <li><!-- /@w --> <code>+dsp</code>: Enables DSP Extension.
  10985. </li><li><!-- /@w --> <code>+fp</code>: Enables single and half precision scalar Floating Point Extensions
  10986. for Armv8.1-M Mainline with 16 double-word registers.
  10987. </li><li><!-- /@w --> <code>+fp.dp</code>: Enables double precision scalar Floating Point Extensions for
  10988. Armv8.1-M Mainline, implies <code>+fp</code>.
  10989. </li><li><!-- /@w --> <code>+mve</code>: Enables integer only M-profile Vector Extension for
  10990. Armv8.1-M Mainline, implies <code>+dsp</code>.
  10991. </li><li><!-- /@w --> <code>+mve.fp</code>: Enables Floating Point M-profile Vector Extension for
  10992. Armv8.1-M Mainline, implies <code>+mve</code> and <code>+fp</code>.
  10993. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU instructions.
  10994. </li><li><!-- /@w --> <code>+nodsp</code>: Disables DSP Extension.
  10995. </li><li><!-- /@w --> <code>+nomve</code>: Disables all M-profile Vector Extensions.
  10996. </li></ul>
  10997. <p>For <code>armv8-a</code>:
  10998. </p>
  10999. <ul class="no-bullet">
  11000. <li><!-- /@w --> <code>+crc</code>: Enables CRC32 Extension.
  11001. </li><li><!-- /@w --> <code>+simd</code>: Enables VFP and NEON for Armv8-A.
  11002. </li><li><!-- /@w --> <code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies <code>+simd</code>.
  11003. </li><li><!-- /@w --> <code>+sb</code>: Enables Speculation Barrier Instruction for Armv8-A.
  11004. </li><li><!-- /@w --> <code>+predres</code>: Enables Execution and Data Prediction Restriction Instruction
  11005. for Armv8-A.
  11006. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU, NEON and Cryptography Extensions.
  11007. </li><li><!-- /@w --> <code>+nocrypto</code>: Disables Cryptography Extensions.
  11008. </li></ul>
  11009. <p>For <code>armv8.1-a</code>:
  11010. </p>
  11011. <ul class="no-bullet">
  11012. <li><!-- /@w --> <code>+simd</code>: Enables VFP and NEON for Armv8.1-A.
  11013. </li><li><!-- /@w --> <code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies <code>+simd</code>.
  11014. </li><li><!-- /@w --> <code>+sb</code>: Enables Speculation Barrier Instruction for Armv8-A.
  11015. </li><li><!-- /@w --> <code>+predres</code>: Enables Execution and Data Prediction Restriction Instruction
  11016. for Armv8-A.
  11017. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU, NEON and Cryptography Extensions.
  11018. </li><li><!-- /@w --> <code>+nocrypto</code>: Disables Cryptography Extensions.
  11019. </li></ul>
  11020. <p>For <code>armv8.2-a</code> and <code>armv8.3-a</code>:
  11021. </p>
  11022. <ul class="no-bullet">
  11023. <li><!-- /@w --> <code>+simd</code>: Enables VFP and NEON for Armv8.1-A.
  11024. </li><li><!-- /@w --> <code>+fp16</code>: Enables FP16 Extension for Armv8.2-A, implies <code>+simd</code>.
  11025. </li><li><!-- /@w --> <code>+fp16fml</code>: Enables FP16 Floating Point Multiplication Variant Extensions
  11026. for Armv8.2-A, implies <code>+fp16</code>.
  11027. </li><li><!-- /@w --> <code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies <code>+simd</code>.
  11028. </li><li><!-- /@w --> <code>+dotprod</code>: Enables Dot Product Extensions for Armv8.2-A, implies <code>+simd</code>.
  11029. </li><li><!-- /@w --> <code>+sb</code>: Enables Speculation Barrier Instruction for Armv8-A.
  11030. </li><li><!-- /@w --> <code>+predres</code>: Enables Execution and Data Prediction Restriction Instruction
  11031. for Armv8-A.
  11032. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU, NEON, Cryptography and Dot Product Extensions.
  11033. </li><li><!-- /@w --> <code>+nocrypto</code>: Disables Cryptography Extensions.
  11034. </li></ul>
  11035. <p>For <code>armv8.4-a</code>:
  11036. </p>
  11037. <ul class="no-bullet">
  11038. <li><!-- /@w --> <code>+simd</code>: Enables VFP and NEON for Armv8.1-A and Dot Product Extensions for
  11039. Armv8.2-A.
  11040. </li><li><!-- /@w --> <code>+fp16</code>: Enables FP16 Floating Point and Floating Point Multiplication
  11041. Variant Extensions for Armv8.2-A, implies <code>+simd</code>.
  11042. </li><li><!-- /@w --> <code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies <code>+simd</code>.
  11043. </li><li><!-- /@w --> <code>+sb</code>: Enables Speculation Barrier Instruction for Armv8-A.
  11044. </li><li><!-- /@w --> <code>+predres</code>: Enables Execution and Data Prediction Restriction Instruction
  11045. for Armv8-A.
  11046. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU, NEON, Cryptography and Dot Product Extensions.
  11047. </li><li><!-- /@w --> <code>+nocryptp</code>: Disables Cryptography Extensions.
  11048. </li></ul>
  11049. <p>For <code>armv8.5-a</code>:
  11050. </p>
  11051. <ul class="no-bullet">
  11052. <li><!-- /@w --> <code>+simd</code>: Enables VFP and NEON for Armv8.1-A and Dot Product Extensions for
  11053. Armv8.2-A.
  11054. </li><li><!-- /@w --> <code>+fp16</code>: Enables FP16 Floating Point and Floating Point Multiplication
  11055. Variant Extensions for Armv8.2-A, implies <code>+simd</code>.
  11056. </li><li><!-- /@w --> <code>+crypto</code>: Enables Cryptography Extensions for Armv8-A, implies <code>+simd</code>.
  11057. </li><li><!-- /@w --> <code>+nofp</code>: Disables all FPU, NEON, Cryptography and Dot Product Extensions.
  11058. </li><li><!-- /@w --> <code>+nocryptp</code>: Disables Cryptography Extensions.
  11059. </li></ul>
  11060. <span id="index-_002dmfpu_003d-command_002dline-option_002c-ARM"></span>
  11061. </dd>
  11062. <dt><code>-mfpu=<var>floating-point-format</var></code></dt>
  11063. <dd>
  11064. <p>This option specifies the floating point format to assemble for. The
  11065. assembler will issue an error message if an attempt is made to assemble
  11066. an instruction which will not execute on the target floating point unit.
  11067. The following format options are recognized:
  11068. <code>softfpa</code>,
  11069. <code>fpe</code>,
  11070. <code>fpe2</code>,
  11071. <code>fpe3</code>,
  11072. <code>fpa</code>,
  11073. <code>fpa10</code>,
  11074. <code>fpa11</code>,
  11075. <code>arm7500fe</code>,
  11076. <code>softvfp</code>,
  11077. <code>softvfp+vfp</code>,
  11078. <code>vfp</code>,
  11079. <code>vfp10</code>,
  11080. <code>vfp10-r0</code>,
  11081. <code>vfp9</code>,
  11082. <code>vfpxd</code>,
  11083. <code>vfpv2</code>,
  11084. <code>vfpv3</code>,
  11085. <code>vfpv3-fp16</code>,
  11086. <code>vfpv3-d16</code>,
  11087. <code>vfpv3-d16-fp16</code>,
  11088. <code>vfpv3xd</code>,
  11089. <code>vfpv3xd-d16</code>,
  11090. <code>vfpv4</code>,
  11091. <code>vfpv4-d16</code>,
  11092. <code>fpv4-sp-d16</code>,
  11093. <code>fpv5-sp-d16</code>,
  11094. <code>fpv5-d16</code>,
  11095. <code>fp-armv8</code>,
  11096. <code>arm1020t</code>,
  11097. <code>arm1020e</code>,
  11098. <code>arm1136jf-s</code>,
  11099. <code>maverick</code>,
  11100. <code>neon</code>,
  11101. <code>neon-vfpv3</code>,
  11102. <code>neon-fp16</code>,
  11103. <code>neon-vfpv4</code>,
  11104. <code>neon-fp-armv8</code>,
  11105. <code>crypto-neon-fp-armv8</code>,
  11106. <code>neon-fp-armv8.1</code>
  11107. and
  11108. <code>crypto-neon-fp-armv8.1</code>.
  11109. </p>
  11110. <p>In addition to determining which instructions are assembled, this option
  11111. also affects the way in which the <code>.double</code> assembler directive behaves
  11112. when assembling little-endian code.
  11113. </p>
  11114. <p>The default is dependent on the processor selected. For Architecture 5 or
  11115. later, the default is to assemble for VFP instructions; for earlier
  11116. architectures the default is to assemble for FPA instructions.
  11117. </p>
  11118. <span id="index-_002dmfp16_002dformat_003d-command_002dline-option"></span>
  11119. </dd>
  11120. <dt><code>-mfp16-format=<var>format</var></code></dt>
  11121. <dd><p>This option specifies the half-precision floating point format to use
  11122. when assembling floating point numbers emitted by the <code>.float16</code>
  11123. directive.
  11124. The following format options are recognized:
  11125. <code>ieee</code>,
  11126. <code>alternative</code>.
  11127. If <code>ieee</code> is specified then the IEEE 754-2008 half-precision floating
  11128. point format is used, if <code>alternative</code> is specified then the Arm
  11129. alternative half-precision format is used. If this option is set on the
  11130. command line then the format is fixed and cannot be changed with
  11131. the <code>float16_format</code> directive. If this value is not set then
  11132. the IEEE 754-2008 format is used until the format is explicitly set with
  11133. the <code>float16_format</code> directive.
  11134. </p>
  11135. <span id="index-_002dmthumb-command_002dline-option_002c-ARM"></span>
  11136. </dd>
  11137. <dt><code>-mthumb</code></dt>
  11138. <dd><p>This option specifies that the assembler should start assembling Thumb
  11139. instructions; that is, it should behave as though the file starts with a
  11140. <code>.code 16</code> directive.
  11141. </p>
  11142. <span id="index-_002dmthumb_002dinterwork-command_002dline-option_002c-ARM"></span>
  11143. </dd>
  11144. <dt><code>-mthumb-interwork</code></dt>
  11145. <dd><p>This option specifies that the output generated by the assembler should
  11146. be marked as supporting interworking. It also affects the behaviour
  11147. of the <code>ADR</code> and <code>ADRL</code> pseudo opcodes.
  11148. </p>
  11149. <span id="index-_002dmimplicit_002dit-command_002dline-option_002c-ARM"></span>
  11150. </dd>
  11151. <dt><code>-mimplicit-it=never</code></dt>
  11152. <dt><code>-mimplicit-it=always</code></dt>
  11153. <dt><code>-mimplicit-it=arm</code></dt>
  11154. <dt><code>-mimplicit-it=thumb</code></dt>
  11155. <dd><p>The <code>-mimplicit-it</code> option controls the behavior of the assembler when
  11156. conditional instructions are not enclosed in IT blocks.
  11157. There are four possible behaviors.
  11158. If <code>never</code> is specified, such constructs cause a warning in ARM
  11159. code and an error in Thumb-2 code.
  11160. If <code>always</code> is specified, such constructs are accepted in both
  11161. ARM and Thumb-2 code, where the IT instruction is added implicitly.
  11162. If <code>arm</code> is specified, such constructs are accepted in ARM code
  11163. and cause an error in Thumb-2 code.
  11164. If <code>thumb</code> is specified, such constructs cause a warning in ARM
  11165. code and are accepted in Thumb-2 code. If you omit this option, the
  11166. behavior is equivalent to <code>-mimplicit-it=arm</code>.
  11167. </p>
  11168. <span id="index-_002dmapcs_002d26-command_002dline-option_002c-ARM"></span>
  11169. <span id="index-_002dmapcs_002d32-command_002dline-option_002c-ARM"></span>
  11170. </dd>
  11171. <dt><code>-mapcs-26</code></dt>
  11172. <dt><code>-mapcs-32</code></dt>
  11173. <dd><p>These options specify that the output generated by the assembler should
  11174. be marked as supporting the indicated version of the Arm Procedure.
  11175. Calling Standard.
  11176. </p>
  11177. <span id="index-_002dmatpcs-command_002dline-option_002c-ARM"></span>
  11178. </dd>
  11179. <dt><code>-matpcs</code></dt>
  11180. <dd><p>This option specifies that the output generated by the assembler should
  11181. be marked as supporting the Arm/Thumb Procedure Calling Standard. If
  11182. enabled this option will cause the assembler to create an empty
  11183. debugging section in the object file called .arm.atpcs. Debuggers can
  11184. use this to determine the ABI being used by.
  11185. </p>
  11186. <span id="index-_002dmapcs_002dfloat-command_002dline-option_002c-ARM"></span>
  11187. </dd>
  11188. <dt><code>-mapcs-float</code></dt>
  11189. <dd><p>This indicates the floating point variant of the APCS should be
  11190. used. In this variant floating point arguments are passed in FP
  11191. registers rather than integer registers.
  11192. </p>
  11193. <span id="index-_002dmapcs_002dreentrant-command_002dline-option_002c-ARM"></span>
  11194. </dd>
  11195. <dt><code>-mapcs-reentrant</code></dt>
  11196. <dd><p>This indicates that the reentrant variant of the APCS should be used.
  11197. This variant supports position independent code.
  11198. </p>
  11199. <span id="index-_002dmfloat_002dabi_003d-command_002dline-option_002c-ARM"></span>
  11200. </dd>
  11201. <dt><code>-mfloat-abi=<var>abi</var></code></dt>
  11202. <dd><p>This option specifies that the output generated by the assembler should be
  11203. marked as using specified floating point ABI.
  11204. The following values are recognized:
  11205. <code>soft</code>,
  11206. <code>softfp</code>
  11207. and
  11208. <code>hard</code>.
  11209. </p>
  11210. <span id="index-_002deabi_003d-command_002dline-option_002c-ARM"></span>
  11211. </dd>
  11212. <dt><code>-meabi=<var>ver</var></code></dt>
  11213. <dd><p>This option specifies which EABI version the produced object files should
  11214. conform to.
  11215. The following values are recognized:
  11216. <code>gnu</code>,
  11217. <code>4</code>
  11218. and
  11219. <code>5</code>.
  11220. </p>
  11221. <span id="index-_002dEB-command_002dline-option_002c-ARM"></span>
  11222. </dd>
  11223. <dt><code>-EB</code></dt>
  11224. <dd><p>This option specifies that the output generated by the assembler should
  11225. be marked as being encoded for a big-endian processor.
  11226. </p>
  11227. <p>Note: If a program is being built for a system with big-endian data
  11228. and little-endian instructions then it should be assembled with the
  11229. <samp>-EB</samp> option, (all of it, code and data) and then linked with
  11230. the <samp>--be8</samp> option. This will reverse the endianness of the
  11231. instructions back to little-endian, but leave the data as big-endian.
  11232. </p>
  11233. <span id="index-_002dEL-command_002dline-option_002c-ARM"></span>
  11234. </dd>
  11235. <dt><code>-EL</code></dt>
  11236. <dd><p>This option specifies that the output generated by the assembler should
  11237. be marked as being encoded for a little-endian processor.
  11238. </p>
  11239. <span id="index-_002dk-command_002dline-option_002c-ARM"></span>
  11240. <span id="index-PIC-code-generation-for-ARM"></span>
  11241. </dd>
  11242. <dt><code>-k</code></dt>
  11243. <dd><p>This option specifies that the output of the assembler should be marked
  11244. as position-independent code (PIC).
  11245. </p>
  11246. <span id="index-_002d_002dfix_002dv4bx-command_002dline-option_002c-ARM"></span>
  11247. </dd>
  11248. <dt><code>--fix-v4bx</code></dt>
  11249. <dd><p>Allow <code>BX</code> instructions in ARMv4 code. This is intended for use with
  11250. the linker option of the same name.
  11251. </p>
  11252. <span id="index-_002dmwarn_002ddeprecated-command_002dline-option_002c-ARM"></span>
  11253. </dd>
  11254. <dt><code>-mwarn-deprecated</code></dt>
  11255. <dt><code>-mno-warn-deprecated</code></dt>
  11256. <dd><p>Enable or disable warnings about using deprecated options or
  11257. features. The default is to warn.
  11258. </p>
  11259. <span id="index-_002dmccs-command_002dline-option_002c-ARM"></span>
  11260. </dd>
  11261. <dt><code>-mccs</code></dt>
  11262. <dd><p>Turns on CodeComposer Studio assembly syntax compatibility mode.
  11263. </p>
  11264. <span id="index-_002dmwarn_002dsyms-command_002dline-option_002c-ARM"></span>
  11265. </dd>
  11266. <dt><code>-mwarn-syms</code></dt>
  11267. <dt><code>-mno-warn-syms</code></dt>
  11268. <dd><p>Enable or disable warnings about symbols that match the names of ARM
  11269. instructions. The default is to warn.
  11270. </p>
  11271. </dd>
  11272. </dl>
  11273. <hr>
  11274. <span id="ARM-Syntax"></span><div class="header">
  11275. <p>
  11276. Next: <a href="#ARM-Floating-Point" accesskey="n" rel="next">ARM Floating Point</a>, Previous: <a href="#ARM-Options" accesskey="p" rel="prev">ARM Options</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  11277. </div>
  11278. <span id="Syntax-5"></span><h4 class="subsection">9.4.2 Syntax</h4>
  11279. <table class="menu" border="0" cellspacing="0">
  11280. <tr><td align="left" valign="top">&bull; <a href="#ARM_002dInstruction_002dSet" accesskey="1">ARM-Instruction-Set</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Instruction Set
  11281. </td></tr>
  11282. <tr><td align="left" valign="top">&bull; <a href="#ARM_002dChars" accesskey="2">ARM-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  11283. </td></tr>
  11284. <tr><td align="left" valign="top">&bull; <a href="#ARM_002dRegs" accesskey="3">ARM-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  11285. </td></tr>
  11286. <tr><td align="left" valign="top">&bull; <a href="#ARM_002dRelocations" accesskey="4">ARM-Relocations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relocations
  11287. </td></tr>
  11288. <tr><td align="left" valign="top">&bull; <a href="#ARM_002dNeon_002dAlignment" accesskey="5">ARM-Neon-Alignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">NEON Alignment Specifiers
  11289. </td></tr>
  11290. </table>
  11291. <hr>
  11292. <span id="ARM_002dInstruction_002dSet"></span><div class="header">
  11293. <p>
  11294. Next: <a href="#ARM_002dChars" accesskey="n" rel="next">ARM-Chars</a>, Up: <a href="#ARM-Syntax" accesskey="u" rel="up">ARM Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  11295. </div>
  11296. <span id="Instruction-Set-Syntax"></span><h4 class="subsubsection">9.4.2.1 Instruction Set Syntax</h4>
  11297. <p>Two slightly different syntaxes are support for ARM and THUMB
  11298. instructions. The default, <code>divided</code>, uses the old style where
  11299. ARM and THUMB instructions had their own, separate syntaxes. The new,
  11300. <code>unified</code> syntax, which can be selected via the <code>.syntax</code>
  11301. directive, and has the following main features:
  11302. </p>
  11303. <ul>
  11304. <li> Immediate operands do not require a <code>#</code> prefix.
  11305. </li><li> The <code>IT</code> instruction may appear, and if it does it is validated
  11306. against subsequent conditional affixes. In ARM mode it does not
  11307. generate machine code, in THUMB mode it does.
  11308. </li><li> For ARM instructions the conditional affixes always appear at the end
  11309. of the instruction. For THUMB instructions conditional affixes can be
  11310. used, but only inside the scope of an <code>IT</code> instruction.
  11311. </li><li> All of the instructions new to the V6T2 architecture (and later) are
  11312. available. (Only a few such instructions can be written in the
  11313. <code>divided</code> syntax).
  11314. </li><li> The <code>.N</code> and <code>.W</code> suffixes are recognized and honored.
  11315. </li><li> All instructions set the flags if and only if they have an <code>s</code>
  11316. affix.
  11317. </li></ul>
  11318. <hr>
  11319. <span id="ARM_002dChars"></span><div class="header">
  11320. <p>
  11321. Next: <a href="#ARM_002dRegs" accesskey="n" rel="next">ARM-Regs</a>, Previous: <a href="#ARM_002dInstruction_002dSet" accesskey="p" rel="prev">ARM-Instruction-Set</a>, Up: <a href="#ARM-Syntax" accesskey="u" rel="up">ARM Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  11322. </div>
  11323. <span id="Special-Characters-3"></span><h4 class="subsubsection">9.4.2.2 Special Characters</h4>
  11324. <span id="index-line-comment-character_002c-ARM"></span>
  11325. <span id="index-ARM-line-comment-character"></span>
  11326. <p>The presence of a &lsquo;<samp>@</samp>&rsquo; anywhere on a line indicates the start of
  11327. a comment that extends to the end of that line.
  11328. </p>
  11329. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  11330. line is treated as a comment, but in this case the line could also be
  11331. a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  11332. control command (see <a href="#Preprocessing">Preprocessing</a>).
  11333. </p>
  11334. <span id="index-line-separator_002c-ARM"></span>
  11335. <span id="index-statement-separator_002c-ARM"></span>
  11336. <span id="index-ARM-line-separator"></span>
  11337. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used instead of a newline to separate
  11338. statements.
  11339. </p>
  11340. <span id="index-immediate-character_002c-ARM"></span>
  11341. <span id="index-ARM-immediate-character"></span>
  11342. <p>Either &lsquo;<samp>#</samp>&rsquo; or &lsquo;<samp>$</samp>&rsquo; can be used to indicate immediate operands.
  11343. </p>
  11344. <span id="index-identifiers_002c-ARM"></span>
  11345. <span id="index-ARM-identifiers"></span>
  11346. <p>*TODO* Explain about /data modifier on symbols.
  11347. </p>
  11348. <hr>
  11349. <span id="ARM_002dRegs"></span><div class="header">
  11350. <p>
  11351. Next: <a href="#ARM_002dRelocations" accesskey="n" rel="next">ARM-Relocations</a>, Previous: <a href="#ARM_002dChars" accesskey="p" rel="prev">ARM-Chars</a>, Up: <a href="#ARM-Syntax" accesskey="u" rel="up">ARM Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  11352. </div>
  11353. <span id="Register-Names-3"></span><h4 class="subsubsection">9.4.2.3 Register Names</h4>
  11354. <span id="index-ARM-register-names"></span>
  11355. <span id="index-register-names_002c-ARM"></span>
  11356. <p>*TODO* Explain about ARM register naming, and the predefined names.
  11357. </p>
  11358. <hr>
  11359. <span id="ARM_002dRelocations"></span><div class="header">
  11360. <p>
  11361. Next: <a href="#ARM_002dNeon_002dAlignment" accesskey="n" rel="next">ARM-Neon-Alignment</a>, Previous: <a href="#ARM_002dRegs" accesskey="p" rel="prev">ARM-Regs</a>, Up: <a href="#ARM-Syntax" accesskey="u" rel="up">ARM Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  11362. </div>
  11363. <span id="ARM-relocation-generation"></span><h4 class="subsubsection">9.4.2.4 ARM relocation generation</h4>
  11364. <span id="index-data-relocations_002c-ARM"></span>
  11365. <span id="index-ARM-data-relocations"></span>
  11366. <p>Specific data relocations can be generated by putting the relocation name
  11367. in parentheses after the symbol name. For example:
  11368. </p>
  11369. <div class="example">
  11370. <pre class="example"> .word foo(TARGET1)
  11371. </pre></div>
  11372. <p>This will generate an &lsquo;<samp>R_ARM_TARGET1</samp>&rsquo; relocation against the symbol
  11373. <var>foo</var>.
  11374. The following relocations are supported:
  11375. <code>GOT</code>,
  11376. <code>GOTOFF</code>,
  11377. <code>TARGET1</code>,
  11378. <code>TARGET2</code>,
  11379. <code>SBREL</code>,
  11380. <code>TLSGD</code>,
  11381. <code>TLSLDM</code>,
  11382. <code>TLSLDO</code>,
  11383. <code>TLSDESC</code>,
  11384. <code>TLSCALL</code>,
  11385. <code>GOTTPOFF</code>,
  11386. <code>GOT_PREL</code>
  11387. and
  11388. <code>TPOFF</code>.
  11389. </p>
  11390. <p>For compatibility with older toolchains the assembler also accepts
  11391. <code>(PLT)</code> after branch targets. On legacy targets this will
  11392. generate the deprecated &lsquo;<samp>R_ARM_PLT32</samp>&rsquo; relocation. On EABI
  11393. targets it will encode either the &lsquo;<samp>R_ARM_CALL</samp>&rsquo; or
  11394. &lsquo;<samp>R_ARM_JUMP24</samp>&rsquo; relocation, as appropriate.
  11395. </p>
  11396. <span id="index-MOVW-and-MOVT-relocations_002c-ARM"></span>
  11397. <p>Relocations for &lsquo;<samp>MOVW</samp>&rsquo; and &lsquo;<samp>MOVT</samp>&rsquo; instructions can be generated
  11398. by prefixing the value with &lsquo;<samp>#:lower16:</samp>&rsquo; and &lsquo;<samp>#:upper16</samp>&rsquo;
  11399. respectively. For example to load the 32-bit address of foo into r0:
  11400. </p>
  11401. <div class="example">
  11402. <pre class="example"> MOVW r0, #:lower16:foo
  11403. MOVT r0, #:upper16:foo
  11404. </pre></div>
  11405. <p>Relocations &lsquo;<samp>R_ARM_THM_ALU_ABS_G0_NC</samp>&rsquo;, &lsquo;<samp>R_ARM_THM_ALU_ABS_G1_NC</samp>&rsquo;,
  11406. &lsquo;<samp>R_ARM_THM_ALU_ABS_G2_NC</samp>&rsquo; and &lsquo;<samp>R_ARM_THM_ALU_ABS_G3_NC</samp>&rsquo; can be
  11407. generated by prefixing the value with &lsquo;<samp>#:lower0_7:#</samp>&rsquo;,
  11408. &lsquo;<samp>#:lower8_15:#</samp>&rsquo;, &lsquo;<samp>#:upper0_7:#</samp>&rsquo; and &lsquo;<samp>#:upper8_15:#</samp>&rsquo;
  11409. respectively. For example to load the 32-bit address of foo into r0:
  11410. </p>
  11411. <div class="example">
  11412. <pre class="example"> MOVS r0, #:upper8_15:#foo
  11413. LSLS r0, r0, #8
  11414. ADDS r0, #:upper0_7:#foo
  11415. LSLS r0, r0, #8
  11416. ADDS r0, #:lower8_15:#foo
  11417. LSLS r0, r0, #8
  11418. ADDS r0, #:lower0_7:#foo
  11419. </pre></div>
  11420. <hr>
  11421. <span id="ARM_002dNeon_002dAlignment"></span><div class="header">
  11422. <p>
  11423. Previous: <a href="#ARM_002dRelocations" accesskey="p" rel="prev">ARM-Relocations</a>, Up: <a href="#ARM-Syntax" accesskey="u" rel="up">ARM Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  11424. </div>
  11425. <span id="NEON-Alignment-Specifiers"></span><h4 class="subsubsection">9.4.2.5 NEON Alignment Specifiers</h4>
  11426. <span id="index-alignment-for-NEON-instructions"></span>
  11427. <p>Some NEON load/store instructions allow an optional address
  11428. alignment qualifier.
  11429. The ARM documentation specifies that this is indicated by
  11430. &lsquo;<samp>@ <var>align</var></samp>&rsquo;. However GAS already interprets
  11431. the &lsquo;<samp>@</samp>&rsquo; character as a &quot;line comment&quot; start,
  11432. so &lsquo;<samp>: <var>align</var></samp>&rsquo; is used instead. For example:
  11433. </p>
  11434. <div class="example">
  11435. <pre class="example"> vld1.8 {q0}, [r0, :128]
  11436. </pre></div>
  11437. <hr>
  11438. <span id="ARM-Floating-Point"></span><div class="header">
  11439. <p>
  11440. Next: <a href="#ARM-Directives" accesskey="n" rel="next">ARM Directives</a>, Previous: <a href="#ARM-Syntax" accesskey="p" rel="prev">ARM Syntax</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  11441. </div>
  11442. <span id="Floating-Point-2"></span><h4 class="subsection">9.4.3 Floating Point</h4>
  11443. <span id="index-floating-point_002c-ARM-_0028IEEE_0029"></span>
  11444. <span id="index-ARM-floating-point-_0028IEEE_0029"></span>
  11445. <p>The ARM family uses <small>IEEE</small> floating-point numbers.
  11446. </p>
  11447. <hr>
  11448. <span id="ARM-Directives"></span><div class="header">
  11449. <p>
  11450. Next: <a href="#ARM-Opcodes" accesskey="n" rel="next">ARM Opcodes</a>, Previous: <a href="#ARM-Floating-Point" accesskey="p" rel="prev">ARM Floating Point</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  11451. </div>
  11452. <span id="ARM-Machine-Directives"></span><h4 class="subsection">9.4.4 ARM Machine Directives</h4>
  11453. <span id="index-machine-directives_002c-ARM"></span>
  11454. <span id="index-ARM-machine-directives"></span>
  11455. <dl compact="compact">
  11456. <dd>
  11457. <span id="index-_002ealign-directive_002c-ARM"></span>
  11458. </dd>
  11459. <dt><code>.align <var>expression</var> [, <var>expression</var>]</code></dt>
  11460. <dd><p>This is the generic <var>.align</var> directive. For the ARM however if the
  11461. first argument is zero (ie no alignment is needed) the assembler will
  11462. behave as if the argument had been 2 (ie pad to the next four byte
  11463. boundary). This is for compatibility with ARM&rsquo;s own assembler.
  11464. </p>
  11465. <span id="index-_002earch-directive_002c-ARM"></span>
  11466. </dd>
  11467. <dt><code>.arch <var>name</var></code></dt>
  11468. <dd><p>Select the target architecture. Valid values for <var>name</var> are the same as
  11469. for the <samp>-march</samp> command-line option without the instruction set
  11470. extension.
  11471. </p>
  11472. <p>Specifying <code>.arch</code> clears any previously selected architecture
  11473. extensions.
  11474. </p>
  11475. <span id="index-_002earch_005fextension-directive_002c-ARM"></span>
  11476. </dd>
  11477. <dt><code>.arch_extension <var>name</var></code></dt>
  11478. <dd><p>Add or remove an architecture extension to the target architecture. Valid
  11479. values for <var>name</var> are the same as those accepted as architectural
  11480. extensions by the <samp>-mcpu</samp> and <samp>-march</samp> command-line options.
  11481. </p>
  11482. <p><code>.arch_extension</code> may be used multiple times to add or remove extensions
  11483. incrementally to the architecture being compiled for.
  11484. </p>
  11485. <span id="index-_002earm-directive_002c-ARM"></span>
  11486. </dd>
  11487. <dt><code>.arm</code></dt>
  11488. <dd><p>This performs the same action as <var>.code 32</var>.
  11489. </p>
  11490. <span id="index-_002ecantunwind-directive_002c-ARM"></span>
  11491. </dd>
  11492. <dt><code>.cantunwind</code></dt>
  11493. <dd><p>Prevents unwinding through the current function. No personality routine
  11494. or exception table data is required or permitted.
  11495. </p>
  11496. <span id="index-_002ecode-directive_002c-ARM"></span>
  11497. </dd>
  11498. <dt><code>.code <code>[16|32]</code></code></dt>
  11499. <dd><p>This directive selects the instruction set being generated. The value 16
  11500. selects Thumb, with the value 32 selecting ARM.
  11501. </p>
  11502. <span id="index-_002ecpu-directive_002c-ARM"></span>
  11503. </dd>
  11504. <dt><code>.cpu <var>name</var></code></dt>
  11505. <dd><p>Select the target processor. Valid values for <var>name</var> are the same as
  11506. for the <samp>-mcpu</samp> command-line option without the instruction set
  11507. extension.
  11508. </p>
  11509. <p>Specifying <code>.cpu</code> clears any previously selected architecture
  11510. extensions.
  11511. </p>
  11512. <span id="index-_002edn-and-_002eqn-directives_002c-ARM"></span>
  11513. </dd>
  11514. <dt><code><var>name</var> .dn <var>register name</var> [<var>.type</var>] [[<var>index</var>]]</code></dt>
  11515. <dt><code><var>name</var> .qn <var>register name</var> [<var>.type</var>] [[<var>index</var>]]</code></dt>
  11516. <dd>
  11517. <p>The <code>dn</code> and <code>qn</code> directives are used to create typed
  11518. and/or indexed register aliases for use in Advanced SIMD Extension
  11519. (Neon) instructions. The former should be used to create aliases
  11520. of double-precision registers, and the latter to create aliases of
  11521. quad-precision registers.
  11522. </p>
  11523. <p>If these directives are used to create typed aliases, those aliases can
  11524. be used in Neon instructions instead of writing types after the mnemonic
  11525. or after each operand. For example:
  11526. </p>
  11527. <div class="example">
  11528. <pre class="example"> x .dn d2.f32
  11529. y .dn d3.f32
  11530. z .dn d4.f32[1]
  11531. vmul x,y,z
  11532. </pre></div>
  11533. <p>This is equivalent to writing the following:
  11534. </p>
  11535. <div class="example">
  11536. <pre class="example"> vmul.f32 d2,d3,d4[1]
  11537. </pre></div>
  11538. <p>Aliases created using <code>dn</code> or <code>qn</code> can be destroyed using
  11539. <code>unreq</code>.
  11540. </p>
  11541. <span id="index-_002eeabi_005fattribute-directive_002c-ARM"></span>
  11542. </dd>
  11543. <dt><code>.eabi_attribute <var>tag</var>, <var>value</var></code></dt>
  11544. <dd><p>Set the EABI object attribute <var>tag</var> to <var>value</var>.
  11545. </p>
  11546. <p>The <var>tag</var> is either an attribute number, or one of the following:
  11547. <code>Tag_CPU_raw_name</code>, <code>Tag_CPU_name</code>, <code>Tag_CPU_arch</code>,
  11548. <code>Tag_CPU_arch_profile</code>, <code>Tag_ARM_ISA_use</code>,
  11549. <code>Tag_THUMB_ISA_use</code>, <code>Tag_FP_arch</code>, <code>Tag_WMMX_arch</code>,
  11550. <code>Tag_Advanced_SIMD_arch</code>, <code>Tag_MVE_arch</code>, <code>Tag_PCS_config</code>,
  11551. <code>Tag_ABI_PCS_R9_use</code>, <code>Tag_ABI_PCS_RW_data</code>,
  11552. <code>Tag_ABI_PCS_RO_data</code>, <code>Tag_ABI_PCS_GOT_use</code>,
  11553. <code>Tag_ABI_PCS_wchar_t</code>, <code>Tag_ABI_FP_rounding</code>,
  11554. <code>Tag_ABI_FP_denormal</code>, <code>Tag_ABI_FP_exceptions</code>,
  11555. <code>Tag_ABI_FP_user_exceptions</code>, <code>Tag_ABI_FP_number_model</code>,
  11556. <code>Tag_ABI_align_needed</code>, <code>Tag_ABI_align_preserved</code>,
  11557. <code>Tag_ABI_enum_size</code>, <code>Tag_ABI_HardFP_use</code>,
  11558. <code>Tag_ABI_VFP_args</code>, <code>Tag_ABI_WMMX_args</code>,
  11559. <code>Tag_ABI_optimization_goals</code>, <code>Tag_ABI_FP_optimization_goals</code>,
  11560. <code>Tag_compatibility</code>, <code>Tag_CPU_unaligned_access</code>,
  11561. <code>Tag_FP_HP_extension</code>, <code>Tag_ABI_FP_16bit_format</code>,
  11562. <code>Tag_MPextension_use</code>, <code>Tag_DIV_use</code>,
  11563. <code>Tag_nodefaults</code>, <code>Tag_also_compatible_with</code>,
  11564. <code>Tag_conformance</code>, <code>Tag_T2EE_use</code>,
  11565. <code>Tag_Virtualization_use</code>
  11566. </p>
  11567. <p>The <var>value</var> is either a <code>number</code>, <code>&quot;string&quot;</code>, or
  11568. <code>number, &quot;string&quot;</code> depending on the tag.
  11569. </p>
  11570. <p>Note - the following legacy values are also accepted by <var>tag</var>:
  11571. <code>Tag_VFP_arch</code>, <code>Tag_ABI_align8_needed</code>,
  11572. <code>Tag_ABI_align8_preserved</code>, <code>Tag_VFP_HP_extension</code>,
  11573. </p>
  11574. <span id="index-_002eeven-directive_002c-ARM"></span>
  11575. </dd>
  11576. <dt><code>.even</code></dt>
  11577. <dd><p>This directive aligns to an even-numbered address.
  11578. </p>
  11579. <span id="index-_002eextend-directive_002c-ARM"></span>
  11580. <span id="index-_002eldouble-directive_002c-ARM"></span>
  11581. </dd>
  11582. <dt><code>.extend <var>expression</var> [, <var>expression</var>]*</code></dt>
  11583. <dt><code>.ldouble <var>expression</var> [, <var>expression</var>]*</code></dt>
  11584. <dd><p>These directives write 12byte long double floating-point values to the
  11585. output section. These are not compatible with current ARM processors
  11586. or ABIs.
  11587. </p>
  11588. <span id="index-_002efloat16-directive_002c-ARM"></span>
  11589. </dd>
  11590. <dt><code>.float16 <var>value [,...,value_n]</var></code></dt>
  11591. <dd><p>Place the half precision floating point representation of one or more
  11592. floating-point values into the current section. The exact format of the
  11593. encoding is specified by <code>.float16_format</code>. If the format has not
  11594. been explicitly set yet (either via the <code>.float16_format</code> directive or
  11595. the command line option) then the IEEE 754-2008 format is used.
  11596. </p>
  11597. <span id="index-_002efloat16_005fformat-directive_002c-ARM"></span>
  11598. </dd>
  11599. <dt><code>.float16_format <var>format</var></code></dt>
  11600. <dd><p>Set the format to use when encoding float16 values emitted by
  11601. the <code>.float16</code> directive.
  11602. Once the format has been set it cannot be changed.
  11603. <code>format</code> should be one of the following: <code>ieee</code> (encode in
  11604. the IEEE 754-2008 half precision format) or <code>alternative</code> (encode in
  11605. the Arm alternative half precision format).
  11606. </p>
  11607. <span id="arm_005ffnend"></span><span id="index-_002efnend-directive_002c-ARM"></span>
  11608. </dd>
  11609. <dt><code>.fnend</code></dt>
  11610. <dd><p>Marks the end of a function with an unwind table entry. The unwind index
  11611. table entry is created when this directive is processed.
  11612. </p>
  11613. <p>If no personality routine has been specified then standard personality
  11614. routine 0 or 1 will be used, depending on the number of unwind opcodes
  11615. required.
  11616. </p>
  11617. <span id="arm_005ffnstart"></span><span id="index-_002efnstart-directive_002c-ARM"></span>
  11618. </dd>
  11619. <dt><code>.fnstart</code></dt>
  11620. <dd><p>Marks the start of a function with an unwind table entry.
  11621. </p>
  11622. <span id="index-_002eforce_005fthumb-directive_002c-ARM"></span>
  11623. </dd>
  11624. <dt><code>.force_thumb</code></dt>
  11625. <dd><p>This directive forces the selection of Thumb instructions, even if the
  11626. target processor does not support those instructions
  11627. </p>
  11628. <span id="index-_002efpu-directive_002c-ARM"></span>
  11629. </dd>
  11630. <dt><code>.fpu <var>name</var></code></dt>
  11631. <dd><p>Select the floating-point unit to assemble for. Valid values for <var>name</var>
  11632. are the same as for the <samp>-mfpu</samp> command-line option.
  11633. </p>
  11634. <span id="index-_002ehandlerdata-directive_002c-ARM"></span>
  11635. </dd>
  11636. <dt><code>.handlerdata</code></dt>
  11637. <dd><p>Marks the end of the current function, and the start of the exception table
  11638. entry for that function. Anything between this directive and the
  11639. <code>.fnend</code> directive will be added to the exception table entry.
  11640. </p>
  11641. <p>Must be preceded by a <code>.personality</code> or <code>.personalityindex</code>
  11642. directive.
  11643. </p>
  11644. <span id="index-_002einst-directive_002c-ARM"></span>
  11645. </dd>
  11646. <dt><code>.inst <var>opcode</var> [ , &hellip; ]</code></dt>
  11647. <dt><code>.inst.n <var>opcode</var> [ , &hellip; ]</code></dt>
  11648. <dt><code>.inst.w <var>opcode</var> [ , &hellip; ]</code></dt>
  11649. <dd><p>Generates the instruction corresponding to the numerical value <var>opcode</var>.
  11650. <code>.inst.n</code> and <code>.inst.w</code> allow the Thumb instruction size to be
  11651. specified explicitly, overriding the normal encoding rules.
  11652. </p>
  11653. </dd>
  11654. <dt><code>.ldouble <var>expression</var> [, <var>expression</var>]*</code></dt>
  11655. <dd><p>See <code>.extend</code>.
  11656. </p>
  11657. <span id="index-_002eltorg-directive_002c-ARM"></span>
  11658. </dd>
  11659. <dt><code>.ltorg</code></dt>
  11660. <dd><p>This directive causes the current contents of the literal pool to be
  11661. dumped into the current section (which is assumed to be the .text
  11662. section) at the current location (aligned to a word boundary).
  11663. <code>GAS</code> maintains a separate literal pool for each section and each
  11664. sub-section. The <code>.ltorg</code> directive will only affect the literal
  11665. pool of the current section and sub-section. At the end of assembly
  11666. all remaining, un-empty literal pools will automatically be dumped.
  11667. </p>
  11668. <p>Note - older versions of <code>GAS</code> would dump the current literal
  11669. pool any time a section change occurred. This is no longer done, since
  11670. it prevents accurate control of the placement of literal pools.
  11671. </p>
  11672. <span id="index-_002emovsp-directive_002c-ARM"></span>
  11673. </dd>
  11674. <dt><code>.movsp <var>reg</var> [, #<var>offset</var>]</code></dt>
  11675. <dd><p>Tell the unwinder that <var>reg</var> contains an offset from the current
  11676. stack pointer. If <var>offset</var> is not specified then it is assumed to be
  11677. zero.
  11678. </p>
  11679. <span id="index-_002eobject_005farch-directive_002c-ARM"></span>
  11680. </dd>
  11681. <dt><code>.object_arch <var>name</var></code></dt>
  11682. <dd><p>Override the architecture recorded in the EABI object attribute section.
  11683. Valid values for <var>name</var> are the same as for the <code>.arch</code> directive.
  11684. Typically this is useful when code uses runtime detection of CPU features.
  11685. </p>
  11686. <span id="index-_002epacked-directive_002c-ARM"></span>
  11687. </dd>
  11688. <dt><code>.packed <var>expression</var> [, <var>expression</var>]*</code></dt>
  11689. <dd><p>This directive writes 12-byte packed floating-point values to the
  11690. output section. These are not compatible with current ARM processors
  11691. or ABIs.
  11692. </p>
  11693. <span id="arm_005fpacspval"></span><span id="index-_002epacspval-directive_002c-ARM"></span>
  11694. </dd>
  11695. <dt><code>.pacspval</code></dt>
  11696. <dd><p>Generate unwinder annotations to use effective vsp as modifier in PAC
  11697. validation.
  11698. </p>
  11699. <span id="arm_005fpad"></span><span id="index-_002epad-directive_002c-ARM"></span>
  11700. </dd>
  11701. <dt><code>.pad #<var>count</var></code></dt>
  11702. <dd><p>Generate unwinder annotations for a stack adjustment of <var>count</var> bytes.
  11703. A positive value indicates the function prologue allocated stack space by
  11704. decrementing the stack pointer.
  11705. </p>
  11706. <span id="index-_002epersonality-directive_002c-ARM"></span>
  11707. </dd>
  11708. <dt><code>.personality <var>name</var></code></dt>
  11709. <dd><p>Sets the personality routine for the current function to <var>name</var>.
  11710. </p>
  11711. <span id="index-_002epersonalityindex-directive_002c-ARM"></span>
  11712. </dd>
  11713. <dt><code>.personalityindex <var>index</var></code></dt>
  11714. <dd><p>Sets the personality routine for the current function to the EABI standard
  11715. routine number <var>index</var>
  11716. </p>
  11717. <span id="index-_002epool-directive_002c-ARM"></span>
  11718. </dd>
  11719. <dt><code>.pool</code></dt>
  11720. <dd><p>This is a synonym for .ltorg.
  11721. </p>
  11722. <span id="index-_002ereq-directive_002c-ARM"></span>
  11723. </dd>
  11724. <dt><code><var>name</var> .req <var>register name</var></code></dt>
  11725. <dd><p>This creates an alias for <var>register name</var> called <var>name</var>. For
  11726. example:
  11727. </p>
  11728. <div class="example">
  11729. <pre class="example"> foo .req r0
  11730. </pre></div>
  11731. <span id="arm_005fsave"></span><span id="index-_002esave-directive_002c-ARM"></span>
  11732. </dd>
  11733. <dt><code>.save <var>reglist</var></code></dt>
  11734. <dd><p>Generate unwinder annotations to restore the registers in <var>reglist</var>.
  11735. The format of <var>reglist</var> is the same as the corresponding store-multiple
  11736. instruction.
  11737. </p>
  11738. <div class="example">
  11739. <pre class="example"><em>core registers</em>
  11740. </pre><pre class="example"> .save {r4, r5, r6, lr}
  11741. stmfd sp!, {r4, r5, r6, lr}
  11742. </pre><pre class="example"><em>FPA registers</em>
  11743. </pre><pre class="example"> .save f4, 2
  11744. sfmfd f4, 2, [sp]!
  11745. </pre><pre class="example"><em>VFP registers</em>
  11746. </pre><pre class="example"> .save {d8, d9, d10}
  11747. fstmdx sp!, {d8, d9, d10}
  11748. </pre><pre class="example"><em>iWMMXt registers</em>
  11749. </pre><pre class="example"> .save {wr10, wr11}
  11750. wstrd wr11, [sp, #-8]!
  11751. wstrd wr10, [sp, #-8]!
  11752. or
  11753. .save wr11
  11754. wstrd wr11, [sp, #-8]!
  11755. .save wr10
  11756. wstrd wr10, [sp, #-8]!
  11757. </pre></div>
  11758. <span id="arm_005fsetfp"></span><span id="index-_002esetfp-directive_002c-ARM"></span>
  11759. </dd>
  11760. <dt><code>.setfp <var>fpreg</var>, <var>spreg</var> [, #<var>offset</var>]</code></dt>
  11761. <dd><p>Make all unwinder annotations relative to a frame pointer. Without this
  11762. the unwinder will use offsets from the stack pointer.
  11763. </p>
  11764. <p>The syntax of this directive is the same as the <code>add</code> or <code>mov</code>
  11765. instruction used to set the frame pointer. <var>spreg</var> must be either
  11766. <code>sp</code> or mentioned in a previous <code>.movsp</code> directive.
  11767. </p>
  11768. <div class="example">
  11769. <pre class="example">.movsp ip
  11770. mov ip, sp
  11771. &hellip;
  11772. .setfp fp, ip, #4
  11773. add fp, ip, #4
  11774. </pre></div>
  11775. <span id="index-_002esecrel32-directive_002c-ARM"></span>
  11776. </dd>
  11777. <dt><code>.secrel32 <var>expression</var> [, <var>expression</var>]*</code></dt>
  11778. <dd><p>This directive emits relocations that evaluate to the section-relative
  11779. offset of each expression&rsquo;s symbol. This directive is only supported
  11780. for PE targets.
  11781. </p>
  11782. <span id="index-_002esyntax-directive_002c-ARM"></span>
  11783. </dd>
  11784. <dt><code>.syntax [<code>unified</code> | <code>divided</code>]</code></dt>
  11785. <dd><p>This directive sets the Instruction Set Syntax as described in the
  11786. <a href="#ARM_002dInstruction_002dSet">ARM-Instruction-Set</a> section.
  11787. </p>
  11788. <span id="index-_002ethumb-directive_002c-ARM"></span>
  11789. </dd>
  11790. <dt><code>.thumb</code></dt>
  11791. <dd><p>This performs the same action as <var>.code 16</var>.
  11792. </p>
  11793. <span id="index-_002ethumb_005ffunc-directive_002c-ARM"></span>
  11794. </dd>
  11795. <dt><code>.thumb_func</code></dt>
  11796. <dd><p>This directive specifies that the following symbol is the name of a
  11797. Thumb encoded function. This information is necessary in order to allow
  11798. the assembler and linker to generate correct code for interworking
  11799. between Arm and Thumb instructions and should be used even if
  11800. interworking is not going to be performed. The presence of this
  11801. directive also implies <code>.thumb</code>
  11802. </p>
  11803. <p>This directive is not necessary when generating EABI objects. On these
  11804. targets the encoding is implicit when generating Thumb code.
  11805. </p>
  11806. <span id="index-_002ethumb_005fset-directive_002c-ARM"></span>
  11807. </dd>
  11808. <dt><code>.thumb_set</code></dt>
  11809. <dd><p>This performs the equivalent of a <code>.set</code> directive in that it
  11810. creates a symbol which is an alias for another symbol (possibly not yet
  11811. defined). This directive also has the added property in that it marks
  11812. the aliased symbol as being a thumb function entry point, in the same
  11813. way that the <code>.thumb_func</code> directive does.
  11814. </p>
  11815. <span id="index-_002etlsdescseq-directive_002c-ARM"></span>
  11816. </dd>
  11817. <dt><code>.tlsdescseq <var>tls-variable</var></code></dt>
  11818. <dd><p>This directive is used to annotate parts of an inlined TLS descriptor
  11819. trampoline. Normally the trampoline is provided by the linker, and
  11820. this directive is not needed.
  11821. </p>
  11822. <span id="index-_002eunreq-directive_002c-ARM"></span>
  11823. </dd>
  11824. <dt><code>.unreq <var>alias-name</var></code></dt>
  11825. <dd><p>This undefines a register alias which was previously defined using the
  11826. <code>req</code>, <code>dn</code> or <code>qn</code> directives. For example:
  11827. </p>
  11828. <div class="example">
  11829. <pre class="example"> foo .req r0
  11830. .unreq foo
  11831. </pre></div>
  11832. <p>An error occurs if the name is undefined. Note - this pseudo op can
  11833. be used to delete builtin in register name aliases (eg &rsquo;r0&rsquo;). This
  11834. should only be done if it is really necessary.
  11835. </p>
  11836. <span id="index-_002eunwind_005fraw-directive_002c-ARM"></span>
  11837. </dd>
  11838. <dt><code>.unwind_raw <var>offset</var>, <var>byte1</var>, &hellip;</code></dt>
  11839. <dd><p>Insert one of more arbitrary unwind opcode bytes, which are known to adjust
  11840. the stack pointer by <var>offset</var> bytes.
  11841. </p>
  11842. <p>For example <code>.unwind_raw 4, 0xb1, 0x01</code> is equivalent to
  11843. <code>.save {r0}</code>
  11844. </p>
  11845. <span id="index-_002evsave-directive_002c-ARM"></span>
  11846. </dd>
  11847. <dt><code>.vsave <var>vfp-reglist</var></code></dt>
  11848. <dd><p>Generate unwinder annotations to restore the VFP registers in <var>vfp-reglist</var>
  11849. using FLDMD. Also works for VFPv3 registers
  11850. that are to be restored using VLDM.
  11851. The format of <var>vfp-reglist</var> is the same as the corresponding store-multiple
  11852. instruction.
  11853. </p>
  11854. <div class="example">
  11855. <pre class="example"><em>VFP registers</em>
  11856. </pre><pre class="example"> .vsave {d8, d9, d10}
  11857. fstmdd sp!, {d8, d9, d10}
  11858. </pre><pre class="example"><em>VFPv3 registers</em>
  11859. </pre><pre class="example"> .vsave {d15, d16, d17}
  11860. vstm sp!, {d15, d16, d17}
  11861. </pre></div>
  11862. <p>Since FLDMX and FSTMX are now deprecated, this directive should be
  11863. used in favour of <code>.save</code> for saving VFP registers for ARMv6 and above.
  11864. </p>
  11865. </dd>
  11866. </dl>
  11867. <hr>
  11868. <span id="ARM-Opcodes"></span><div class="header">
  11869. <p>
  11870. Next: <a href="#ARM-Mapping-Symbols" accesskey="n" rel="next">ARM Mapping Symbols</a>, Previous: <a href="#ARM-Directives" accesskey="p" rel="prev">ARM Directives</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  11871. </div>
  11872. <span id="Opcodes-3"></span><h4 class="subsection">9.4.5 Opcodes</h4>
  11873. <span id="index-ARM-opcodes"></span>
  11874. <span id="index-opcodes-for-ARM"></span>
  11875. <p><code>as</code> implements all the standard ARM opcodes. It also
  11876. implements several pseudo opcodes, including several synthetic load
  11877. instructions.
  11878. </p>
  11879. <dl compact="compact">
  11880. <dd>
  11881. <span id="index-NOP-pseudo-op_002c-ARM"></span>
  11882. </dd>
  11883. <dt><code>NOP</code></dt>
  11884. <dd><div class="example">
  11885. <pre class="example"> nop
  11886. </pre></div>
  11887. <p>This pseudo op will always evaluate to a legal ARM instruction that does
  11888. nothing. Currently it will evaluate to MOV r0, r0.
  11889. </p>
  11890. <span id="index-LDR-reg_002c_003d_003clabel_003e-pseudo-op_002c-ARM"></span>
  11891. </dd>
  11892. <dt><code>LDR</code></dt>
  11893. <dd><div class="example">
  11894. <pre class="example"> ldr &lt;register&gt; , = &lt;expression&gt;
  11895. </pre></div>
  11896. <p>If expression evaluates to a numeric constant then a MOV or MVN
  11897. instruction will be used in place of the LDR instruction, if the
  11898. constant can be generated by either of these instructions. Otherwise
  11899. the constant will be placed into the nearest literal pool (if it not
  11900. already there) and a PC relative LDR instruction will be generated.
  11901. </p>
  11902. <span id="index-ADR-reg_002c_003clabel_003e-pseudo-op_002c-ARM"></span>
  11903. </dd>
  11904. <dt><code>ADR</code></dt>
  11905. <dd><div class="example">
  11906. <pre class="example"> adr &lt;register&gt; &lt;label&gt;
  11907. </pre></div>
  11908. <p>This instruction will load the address of <var>label</var> into the indicated
  11909. register. The instruction will evaluate to a PC relative ADD or SUB
  11910. instruction depending upon where the label is located. If the label is
  11911. out of range, or if it is not defined in the same file (and section) as
  11912. the ADR instruction, then an error will be generated. This instruction
  11913. will not make use of the literal pool.
  11914. </p>
  11915. <p>If <var>label</var> is a thumb function symbol, and thumb interworking has
  11916. been enabled via the <samp>-mthumb-interwork</samp> option then the bottom
  11917. bit of the value stored into <var>register</var> will be set. This allows
  11918. the following sequence to work as expected:
  11919. </p>
  11920. <div class="example">
  11921. <pre class="example"> adr r0, thumb_function
  11922. blx r0
  11923. </pre></div>
  11924. <span id="index-ADRL-reg_002c_003clabel_003e-pseudo-op_002c-ARM"></span>
  11925. </dd>
  11926. <dt><code>ADRL</code></dt>
  11927. <dd><div class="example">
  11928. <pre class="example"> adrl &lt;register&gt; &lt;label&gt;
  11929. </pre></div>
  11930. <p>This instruction will load the address of <var>label</var> into the indicated
  11931. register. The instruction will evaluate to one or two PC relative ADD
  11932. or SUB instructions depending upon where the label is located. If a
  11933. second instruction is not needed a NOP instruction will be generated in
  11934. its place, so that this instruction is always 8 bytes long.
  11935. </p>
  11936. <p>If the label is out of range, or if it is not defined in the same file
  11937. (and section) as the ADRL instruction, then an error will be generated.
  11938. This instruction will not make use of the literal pool.
  11939. </p>
  11940. <p>If <var>label</var> is a thumb function symbol, and thumb interworking has
  11941. been enabled via the <samp>-mthumb-interwork</samp> option then the bottom
  11942. bit of the value stored into <var>register</var> will be set.
  11943. </p>
  11944. </dd>
  11945. </dl>
  11946. <p>For information on the ARM or Thumb instruction sets, see <cite>ARM
  11947. Software Development Toolkit Reference Manual</cite>, Advanced RISC Machines
  11948. Ltd.
  11949. </p>
  11950. <hr>
  11951. <span id="ARM-Mapping-Symbols"></span><div class="header">
  11952. <p>
  11953. Next: <a href="#ARM-Unwinding-Tutorial" accesskey="n" rel="next">ARM Unwinding Tutorial</a>, Previous: <a href="#ARM-Opcodes" accesskey="p" rel="prev">ARM Opcodes</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  11954. </div>
  11955. <span id="Mapping-Symbols-1"></span><h4 class="subsection">9.4.6 Mapping Symbols</h4>
  11956. <p>The ARM ELF specification requires that special symbols be inserted
  11957. into object files to mark certain features:
  11958. </p>
  11959. <dl compact="compact">
  11960. <dd>
  11961. <span id="index-_0024a"></span>
  11962. </dd>
  11963. <dt><code>$a</code></dt>
  11964. <dd><p>At the start of a region of code containing ARM instructions.
  11965. </p>
  11966. <span id="index-_0024t"></span>
  11967. </dd>
  11968. <dt><code>$t</code></dt>
  11969. <dd><p>At the start of a region of code containing THUMB instructions.
  11970. </p>
  11971. <span id="index-_0024d-1"></span>
  11972. </dd>
  11973. <dt><code>$d</code></dt>
  11974. <dd><p>At the start of a region of data.
  11975. </p>
  11976. </dd>
  11977. </dl>
  11978. <p>The assembler will automatically insert these symbols for you - there
  11979. is no need to code them yourself. Support for tagging symbols ($b,
  11980. $f, $p and $m) which is also mentioned in the current ARM ELF
  11981. specification is not implemented. This is because they have been
  11982. dropped from the new EABI and so tools cannot rely upon their
  11983. presence.
  11984. </p>
  11985. <hr>
  11986. <span id="ARM-Unwinding-Tutorial"></span><div class="header">
  11987. <p>
  11988. Previous: <a href="#ARM-Mapping-Symbols" accesskey="p" rel="prev">ARM Mapping Symbols</a>, Up: <a href="#ARM_002dDependent" accesskey="u" rel="up">ARM-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  11989. </div>
  11990. <span id="Unwinding"></span><h4 class="subsection">9.4.7 Unwinding</h4>
  11991. <p>The ABI for the ARM Architecture specifies a standard format for
  11992. exception unwind information. This information is used when an
  11993. exception is thrown to determine where control should be transferred.
  11994. In particular, the unwind information is used to determine which
  11995. function called the function that threw the exception, and which
  11996. function called that one, and so forth. This information is also used
  11997. to restore the values of callee-saved registers in the function
  11998. catching the exception.
  11999. </p>
  12000. <p>If you are writing functions in assembly code, and those functions
  12001. call other functions that throw exceptions, you must use assembly
  12002. pseudo ops to ensure that appropriate exception unwind information is
  12003. generated. Otherwise, if one of the functions called by your assembly
  12004. code throws an exception, the run-time library will be unable to
  12005. unwind the stack through your assembly code and your program will not
  12006. behave correctly.
  12007. </p>
  12008. <p>To illustrate the use of these pseudo ops, we will examine the code
  12009. that G++ generates for the following C++ input:
  12010. </p>
  12011. <pre class="verbatim">void callee (int *);
  12012. int
  12013. caller ()
  12014. {
  12015. int i;
  12016. callee (&amp;i);
  12017. return i;
  12018. }
  12019. </pre>
  12020. <p>This example does not show how to throw or catch an exception from
  12021. assembly code. That is a much more complex operation and should
  12022. always be done in a high-level language, such as C++, that directly
  12023. supports exceptions.
  12024. </p>
  12025. <p>The code generated by one particular version of G++ when compiling the
  12026. example above is:
  12027. </p>
  12028. <pre class="verbatim">_Z6callerv:
  12029. .fnstart
  12030. .LFB2:
  12031. @ Function supports interworking.
  12032. @ args = 0, pretend = 0, frame = 8
  12033. @ frame_needed = 1, uses_anonymous_args = 0
  12034. stmfd sp!, {fp, lr}
  12035. .save {fp, lr}
  12036. .LCFI0:
  12037. .setfp fp, sp, #4
  12038. add fp, sp, #4
  12039. .LCFI1:
  12040. .pad #8
  12041. sub sp, sp, #8
  12042. .LCFI2:
  12043. sub r3, fp, #8
  12044. mov r0, r3
  12045. bl _Z6calleePi
  12046. ldr r3, [fp, #-8]
  12047. mov r0, r3
  12048. sub sp, fp, #4
  12049. ldmfd sp!, {fp, lr}
  12050. bx lr
  12051. .LFE2:
  12052. .fnend
  12053. </pre>
  12054. <p>Of course, the sequence of instructions varies based on the options
  12055. you pass to GCC and on the version of GCC in use. The exact
  12056. instructions are not important since we are focusing on the pseudo ops
  12057. that are used to generate unwind information.
  12058. </p>
  12059. <p>An important assumption made by the unwinder is that the stack frame
  12060. does not change during the body of the function. In particular, since
  12061. we assume that the assembly code does not itself throw an exception,
  12062. the only point where an exception can be thrown is from a call, such
  12063. as the <code>bl</code> instruction above. At each call site, the same saved
  12064. registers (including <code>lr</code>, which indicates the return address)
  12065. must be located in the same locations relative to the frame pointer.
  12066. </p>
  12067. <p>The <code>.fnstart</code> (see <a href="#arm_005ffnstart">.fnstart pseudo op</a>) pseudo
  12068. op appears immediately before the first instruction of the function
  12069. while the <code>.fnend</code> (see <a href="#arm_005ffnend">.fnend pseudo op</a>) pseudo
  12070. op appears immediately after the last instruction of the function.
  12071. These pseudo ops specify the range of the function.
  12072. </p>
  12073. <p>Only the order of the other pseudos ops (e.g., <code>.setfp</code> or
  12074. <code>.pad</code>) matters; their exact locations are irrelevant. In the
  12075. example above, the compiler emits the pseudo ops with particular
  12076. instructions. That makes it easier to understand the code, but it is
  12077. not required for correctness. It would work just as well to emit all
  12078. of the pseudo ops other than <code>.fnend</code> in the same order, but
  12079. immediately after <code>.fnstart</code>.
  12080. </p>
  12081. <p>The <code>.save</code> (see <a href="#arm_005fsave">.save pseudo op</a>) pseudo op
  12082. indicates registers that have been saved to the stack so that they can
  12083. be restored before the function returns. The argument to the
  12084. <code>.save</code> pseudo op is a list of registers to save. If a register
  12085. is &ldquo;callee-saved&rdquo; (as specified by the ABI) and is modified by the
  12086. function you are writing, then your code must save the value before it
  12087. is modified and restore the original value before the function
  12088. returns. If an exception is thrown, the run-time library restores the
  12089. values of these registers from their locations on the stack before
  12090. returning control to the exception handler. (Of course, if an
  12091. exception is not thrown, the function that contains the <code>.save</code>
  12092. pseudo op restores these registers in the function epilogue, as is
  12093. done with the <code>ldmfd</code> instruction above.)
  12094. </p>
  12095. <p>You do not have to save callee-saved registers at the very beginning
  12096. of the function and you do not need to use the <code>.save</code> pseudo op
  12097. immediately following the point at which the registers are saved.
  12098. However, if you modify a callee-saved register, you must save it on
  12099. the stack before modifying it and before calling any functions which
  12100. might throw an exception. And, you must use the <code>.save</code> pseudo
  12101. op to indicate that you have done so.
  12102. </p>
  12103. <p>The <code>.pad</code> (see <a href="#arm_005fpad">.pad</a>) pseudo op indicates a
  12104. modification of the stack pointer that does not save any registers.
  12105. The argument is the number of bytes (in decimal) that are subtracted
  12106. from the stack pointer. (On ARM CPUs, the stack grows downwards, so
  12107. subtracting from the stack pointer increases the size of the stack.)
  12108. </p>
  12109. <p>The <code>.setfp</code> (see <a href="#arm_005fsetfp">.setfp pseudo op</a>) pseudo op
  12110. indicates the register that contains the frame pointer. The first
  12111. argument is the register that is set, which is typically <code>fp</code>.
  12112. The second argument indicates the register from which the frame
  12113. pointer takes its value. The third argument, if present, is the value
  12114. (in decimal) added to the register specified by the second argument to
  12115. compute the value of the frame pointer. You should not modify the
  12116. frame pointer in the body of the function.
  12117. </p>
  12118. <p>If you do not use a frame pointer, then you should not use the
  12119. <code>.setfp</code> pseudo op. If you do not use a frame pointer, then you
  12120. should avoid modifying the stack pointer outside of the function
  12121. prologue. Otherwise, the run-time library will be unable to find
  12122. saved registers when it is unwinding the stack.
  12123. </p>
  12124. <p>The pseudo ops described above are sufficient for writing assembly
  12125. code that calls functions which may throw exceptions. If you need to
  12126. know more about the object-file format used to represent unwind
  12127. information, you may consult the <cite>Exception Handling ABI for the
  12128. ARM Architecture</cite> available from <a href="http://infocenter.arm.com">http://infocenter.arm.com</a>.
  12129. </p>
  12130. <hr>
  12131. <span id="AVR_002dDependent"></span><div class="header">
  12132. <p>
  12133. Next: <a href="#Blackfin_002dDependent" accesskey="n" rel="next">Blackfin-Dependent</a>, Previous: <a href="#ARM_002dDependent" accesskey="p" rel="prev">ARM-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12134. </div>
  12135. <span id="AVR-Dependent-Features"></span><h3 class="section">9.5 AVR Dependent Features</h3>
  12136. <span id="index-AVR-support"></span>
  12137. <table class="menu" border="0" cellspacing="0">
  12138. <tr><td align="left" valign="top">&bull; <a href="#AVR-Options" accesskey="1">AVR Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  12139. </td></tr>
  12140. <tr><td align="left" valign="top">&bull; <a href="#AVR-Syntax" accesskey="2">AVR Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  12141. </td></tr>
  12142. <tr><td align="left" valign="top">&bull; <a href="#AVR-Opcodes" accesskey="3">AVR Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  12143. </td></tr>
  12144. <tr><td align="left" valign="top">&bull; <a href="#AVR-Pseudo-Instructions" accesskey="4">AVR Pseudo Instructions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Pseudo Instructions
  12145. </td></tr>
  12146. </table>
  12147. <hr>
  12148. <span id="AVR-Options"></span><div class="header">
  12149. <p>
  12150. Next: <a href="#AVR-Syntax" accesskey="n" rel="next">AVR Syntax</a>, Up: <a href="#AVR_002dDependent" accesskey="u" rel="up">AVR-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12151. </div>
  12152. <span id="Options-4"></span><h4 class="subsection">9.5.1 Options</h4>
  12153. <span id="index-AVR-options-_0028none_0029"></span>
  12154. <span id="index-options-for-AVR-_0028none_0029"></span>
  12155. <dl compact="compact">
  12156. <dd>
  12157. <span id="index-_002dmmcu_003d-command_002dline-option_002c-AVR"></span>
  12158. </dd>
  12159. <dt><code>-mmcu=<var>mcu</var></code></dt>
  12160. <dd><p>Specify ATMEL AVR instruction set or MCU type.
  12161. </p>
  12162. <p>Instruction set avr1 is for the minimal AVR core, not supported by the C
  12163. compiler, only for assembler programs (MCU types: at90s1200,
  12164. attiny11, attiny12, attiny15, attiny28).
  12165. </p>
  12166. <p>Instruction set avr2 (default) is for the classic AVR core with up to
  12167. 8K program memory space (MCU types: at90s2313, at90s2323, at90s2333, at90s2343,
  12168. attiny22, attiny26, at90s4414, at90s4433, at90s4434, at90s8515, at90c8534,
  12169. at90s8535).
  12170. </p>
  12171. <p>Instruction set avr25 is for the classic AVR core with up to 8K program memory
  12172. space plus the MOVW instruction (MCU types: attiny13, attiny13a, attiny2313,
  12173. attiny2313a, attiny24, attiny24a, attiny4313, attiny44, attiny44a, attiny84,
  12174. attiny84a, attiny25, attiny45, attiny85, attiny261, attiny261a, attiny461,
  12175. attiny461a, attiny861, attiny861a, attiny87, attiny43u, attiny48, attiny88,
  12176. attiny828, at86rf401, ata6289, ata5272).
  12177. </p>
  12178. <p>Instruction set avr3 is for the classic AVR core with up to 128K program
  12179. memory space (MCU types: at43usb355, at76c711).
  12180. </p>
  12181. <p>Instruction set avr31 is for the classic AVR core with exactly 128K program
  12182. memory space (MCU types: atmega103, at43usb320).
  12183. </p>
  12184. <p>Instruction set avr35 is for classic AVR core plus MOVW, CALL, and JMP
  12185. instructions (MCU types: attiny167, attiny1634, at90usb82, at90usb162,
  12186. atmega8u2, atmega16u2, atmega32u2, ata5505).
  12187. </p>
  12188. <p>Instruction set avr4 is for the enhanced AVR core with up to 8K program
  12189. memory space (MCU types: atmega48, atmega48a, atmega48pa, atmega48p, atmega8,
  12190. atmega8a, atmega88, atmega88a, atmega88p, atmega88pa, atmega8515, atmega8535,
  12191. atmega8hva, at90pwm1, at90pwm2, at90pwm2b, at90pwm3, at90pwm3b, at90pwm81,
  12192. ata6285, ata6286).
  12193. </p>
  12194. <p>Instruction set avr5 is for the enhanced AVR core with up to 128K program
  12195. memory space (MCU types: at90pwm161, atmega16, atmega16a, atmega161, atmega162,
  12196. atmega163, atmega164a, atmega164p, atmega164pa, atmega165, atmega165a,
  12197. atmega165p, atmega165pa, atmega168, atmega168a, atmega168p, atmega168pa,
  12198. atmega169, atmega169a, atmega169p, atmega169pa, atmega32, atmega323, atmega324a,
  12199. atmega324p, atmega324pa, atmega325, atmega325a, atmega32, atmega32a, atmega323,
  12200. atmega324a, atmega324p, atmega324pa, atmega325, atmega325a, atmega325p,
  12201. atmega325p, atmega325pa, atmega3250, atmega3250a, atmega3250p, atmega3250pa,
  12202. atmega328, atmega328p, atmega329, atmega329a, atmega329p, atmega329pa,
  12203. atmega3290a, atmega3290p, atmega3290pa, atmega406, atmega64, atmega64a,
  12204. atmega64rfr2, atmega644rfr2, atmega640, atmega644, atmega644a, atmega644p,
  12205. atmega644pa, atmega645, atmega645a, atmega645p, atmega6450, atmega6450a,
  12206. atmega6450p, atmega649, atmega649a, atmega649p, atmega6490, atmega6490a,
  12207. atmega6490p, atmega16hva, atmega16hva2, atmega16hvb, atmega16hvbrevb,
  12208. atmega32hvb, atmega32hvbrevb, atmega64hve, at90can32, at90can64, at90pwm161,
  12209. at90pwm216, at90pwm316, atmega32c1, atmega64c1, atmega16m1, atmega32m1,
  12210. atmega64m1, atmega16u4, atmega32u4, atmega32u6, at90usb646, at90usb647, at94k,
  12211. at90scr100, ata5790, ata5795).
  12212. </p>
  12213. <p>Instruction set avr51 is for the enhanced AVR core with exactly 128K
  12214. program memory space (MCU types: atmega128, atmega128a, atmega1280,
  12215. atmega1281, atmega1284, atmega1284p, atmega128rfa1, atmega128rfr2,
  12216. atmega1284rfr2, at90can128, at90usb1286, at90usb1287, m3000).
  12217. </p>
  12218. <p>Instruction set avr6 is for the enhanced AVR core with a 3-byte PC
  12219. (MCU types: atmega2560, atmega2561, atmega256rfr2, atmega2564rfr2).
  12220. </p>
  12221. <p>Instruction set avrxmega2 is for the XMEGA AVR core with 8K to 64K
  12222. program memory space and less than 64K data space (MCU types:
  12223. atxmega16a4, atxmega16a4u, atxmega16c4, atxmega16d4, atxmega16x1,
  12224. atxmega32a4, atxmega32a4u, atxmega32c4, atxmega32d4, atxmega16e5,
  12225. atxmega8e5, atxmega32e5, atxmega32x1).
  12226. </p>
  12227. <p>Instruction set avrxmega3 is for the XMEGA AVR core with up to 64K
  12228. of combined program memory and RAM, and with program memory
  12229. visible in the RAM address space (MCU types:
  12230. attiny212, attiny214, attiny412, attiny414, attiny416, attiny417,
  12231. attiny814, attiny816, attiny817, attiny1614, attiny1616, attiny1617,
  12232. attiny3214, attiny3216, attiny3217).
  12233. </p>
  12234. <p>Instruction set avrxmega4 is for the XMEGA AVR core with up to 64K
  12235. program memory space and less than 64K data space (MCU types:
  12236. atxmega64a3, atxmega64a3u, atxmega64a4u, atxmega64b1, atxmega64b3,
  12237. atxmega64c3, atxmega64d3, atxmega64d4).
  12238. </p>
  12239. <p>Instruction set avrxmega5 is for the XMEGA AVR core with up to 64K
  12240. program memory space and greater than 64K data space (MCU types:
  12241. atxmega64a1, atxmega64a1u).
  12242. </p>
  12243. <p>Instruction set avrxmega6 is for the XMEGA AVR core with larger than
  12244. 64K program memory space and less than 64K data space (MCU types:
  12245. atxmega128a3, atxmega128a3u, atxmega128c3, atxmega128d3, atxmega128d4,
  12246. atxmega192a3, atxmega192a3u, atxmega128b1, atxmega128b3, atxmega192c3,
  12247. atxmega192d3, atxmega256a3, atxmega256a3u, atxmega256a3b,
  12248. atxmega256a3bu, atxmega256c3, atxmega256d3, atxmega384c3,
  12249. atxmega256d3).
  12250. </p>
  12251. <p>Instruction set avrxmega7 is for the XMEGA AVR core with larger than
  12252. 64K program memory space and greater than 64K data space (MCU types:
  12253. atxmega128a1, atxmega128a1u, atxmega128a4u).
  12254. </p>
  12255. <p>Instruction set avrtiny is for the ATtiny4/5/9/10/20/40
  12256. microcontrollers.
  12257. </p>
  12258. <span id="index-_002dmall_002dopcodes-command_002dline-option_002c-AVR"></span>
  12259. </dd>
  12260. <dt><code>-mall-opcodes</code></dt>
  12261. <dd><p>Accept all AVR opcodes, even if not supported by <code>-mmcu</code>.
  12262. </p>
  12263. <span id="index-_002dmno_002dskip_002dbug-command_002dline-option_002c-AVR"></span>
  12264. </dd>
  12265. <dt><code>-mno-skip-bug</code></dt>
  12266. <dd><p>This option disable warnings for skipping two-word instructions.
  12267. </p>
  12268. <span id="index-_002dmno_002dwrap-command_002dline-option_002c-AVR"></span>
  12269. </dd>
  12270. <dt><code>-mno-wrap</code></dt>
  12271. <dd><p>This option reject <code>rjmp/rcall</code> instructions with 8K wrap-around.
  12272. </p>
  12273. <span id="index-_002dmrmw-command_002dline-option_002c-AVR"></span>
  12274. </dd>
  12275. <dt><code>-mrmw</code></dt>
  12276. <dd><p>Accept Read-Modify-Write (<code>XCH,LAC,LAS,LAT</code>) instructions.
  12277. </p>
  12278. <span id="index-_002dmlink_002drelax-command_002dline-option_002c-AVR"></span>
  12279. </dd>
  12280. <dt><code>-mlink-relax</code></dt>
  12281. <dd><p>Enable support for link-time relaxation. This is now on by default
  12282. and this flag no longer has any effect.
  12283. </p>
  12284. <span id="index-_002dmno_002dlink_002drelax-command_002dline-option_002c-AVR"></span>
  12285. </dd>
  12286. <dt><code>-mno-link-relax</code></dt>
  12287. <dd><p>Disable support for link-time relaxation. The assembler will resolve
  12288. relocations when it can, and may be able to better compress some debug
  12289. information.
  12290. </p>
  12291. <span id="index-_002dmgcc_002disr-command_002dline-option_002c-AVR"></span>
  12292. </dd>
  12293. <dt><code>-mgcc-isr</code></dt>
  12294. <dd><p>Enable the <code>__gcc_isr</code> pseudo instruction.
  12295. </p>
  12296. <span id="index-_002dmno_002ddollar_002dline_002dseparator-command-line-option_002c-AVR"></span>
  12297. </dd>
  12298. <dt><code>-mno-dollar-line-separator</code></dt>
  12299. <dd><p>Do not treat the <code>$</code> character as a line separator character.
  12300. This is for languages where <code>$</code> is valid character inside symbol
  12301. names.
  12302. </p>
  12303. </dd>
  12304. </dl>
  12305. <hr>
  12306. <span id="AVR-Syntax"></span><div class="header">
  12307. <p>
  12308. Next: <a href="#AVR-Opcodes" accesskey="n" rel="next">AVR Opcodes</a>, Previous: <a href="#AVR-Options" accesskey="p" rel="prev">AVR Options</a>, Up: <a href="#AVR_002dDependent" accesskey="u" rel="up">AVR-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12309. </div>
  12310. <span id="Syntax-6"></span><h4 class="subsection">9.5.2 Syntax</h4>
  12311. <table class="menu" border="0" cellspacing="0">
  12312. <tr><td align="left" valign="top">&bull; <a href="#AVR_002dChars" accesskey="1">AVR-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  12313. </td></tr>
  12314. <tr><td align="left" valign="top">&bull; <a href="#AVR_002dRegs" accesskey="2">AVR-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  12315. </td></tr>
  12316. <tr><td align="left" valign="top">&bull; <a href="#AVR_002dModifiers" accesskey="3">AVR-Modifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relocatable Expression Modifiers
  12317. </td></tr>
  12318. </table>
  12319. <hr>
  12320. <span id="AVR_002dChars"></span><div class="header">
  12321. <p>
  12322. Next: <a href="#AVR_002dRegs" accesskey="n" rel="next">AVR-Regs</a>, Up: <a href="#AVR-Syntax" accesskey="u" rel="up">AVR Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12323. </div>
  12324. <span id="Special-Characters-4"></span><h4 class="subsubsection">9.5.2.1 Special Characters</h4>
  12325. <span id="index-line-comment-character_002c-AVR"></span>
  12326. <span id="index-AVR-line-comment-character"></span>
  12327. <p>The presence of a &lsquo;<samp>;</samp>&rsquo; anywhere on a line indicates the start of a
  12328. comment that extends to the end of that line.
  12329. </p>
  12330. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line, the whole line
  12331. is treated as a comment, but in this case the line can also be a
  12332. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  12333. control command (see <a href="#Preprocessing">Preprocessing</a>).
  12334. </p>
  12335. <span id="index-line-separator_002c-AVR"></span>
  12336. <span id="index-statement-separator_002c-AVR"></span>
  12337. <span id="index-AVR-line-separator"></span>
  12338. <p>The &lsquo;<samp>$</samp>&rsquo; character can be used instead of a newline to separate
  12339. statements. Note: the <samp>-mno-dollar-line-separator</samp> option
  12340. disables this behaviour.
  12341. </p>
  12342. <hr>
  12343. <span id="AVR_002dRegs"></span><div class="header">
  12344. <p>
  12345. Next: <a href="#AVR_002dModifiers" accesskey="n" rel="next">AVR-Modifiers</a>, Previous: <a href="#AVR_002dChars" accesskey="p" rel="prev">AVR-Chars</a>, Up: <a href="#AVR-Syntax" accesskey="u" rel="up">AVR Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12346. </div>
  12347. <span id="Register-Names-4"></span><h4 class="subsubsection">9.5.2.2 Register Names</h4>
  12348. <span id="index-AVR-register-names"></span>
  12349. <span id="index-register-names_002c-AVR"></span>
  12350. <p>The AVR has 32 x 8-bit general purpose working registers &lsquo;<samp>r0</samp>&rsquo;,
  12351. &lsquo;<samp>r1</samp>&rsquo;, ... &lsquo;<samp>r31</samp>&rsquo;.
  12352. Six of the 32 registers can be used as three 16-bit indirect address
  12353. register pointers for Data Space addressing. One of the these address
  12354. pointers can also be used as an address pointer for look up tables in
  12355. Flash program memory. These added function registers are the 16-bit
  12356. &lsquo;<samp>X</samp>&rsquo;, &lsquo;<samp>Y</samp>&rsquo; and &lsquo;<samp>Z</samp>&rsquo; - registers.
  12357. </p>
  12358. <div class="example">
  12359. <pre class="example">X = <span class="roman">r26:r27</span>
  12360. Y = <span class="roman">r28:r29</span>
  12361. Z = <span class="roman">r30:r31</span>
  12362. </pre></div>
  12363. <hr>
  12364. <span id="AVR_002dModifiers"></span><div class="header">
  12365. <p>
  12366. Previous: <a href="#AVR_002dRegs" accesskey="p" rel="prev">AVR-Regs</a>, Up: <a href="#AVR-Syntax" accesskey="u" rel="up">AVR Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12367. </div>
  12368. <span id="Relocatable-Expression-Modifiers"></span><h4 class="subsubsection">9.5.2.3 Relocatable Expression Modifiers</h4>
  12369. <span id="index-AVR-modifiers"></span>
  12370. <span id="index-syntax_002c-AVR"></span>
  12371. <p>The assembler supports several modifiers when using relocatable addresses
  12372. in AVR instruction operands. The general syntax is the following:
  12373. </p>
  12374. <div class="example">
  12375. <pre class="example">modifier(relocatable-expression)
  12376. </pre></div>
  12377. <dl compact="compact">
  12378. <dd><span id="index-symbol-modifiers"></span>
  12379. </dd>
  12380. <dt><code>lo8</code></dt>
  12381. <dd>
  12382. <p>This modifier allows you to use bits 0 through 7 of
  12383. an address expression as an 8 bit relocatable expression.
  12384. </p>
  12385. </dd>
  12386. <dt><code>hi8</code></dt>
  12387. <dd>
  12388. <p>This modifier allows you to use bits 7 through 15 of an address expression
  12389. as an 8 bit relocatable expression. This is useful with, for example, the
  12390. AVR &lsquo;<samp>ldi</samp>&rsquo; instruction and &lsquo;<samp>lo8</samp>&rsquo; modifier.
  12391. </p>
  12392. <p>For example
  12393. </p>
  12394. <div class="example">
  12395. <pre class="example">ldi r26, lo8(sym+10)
  12396. ldi r27, hi8(sym+10)
  12397. </pre></div>
  12398. </dd>
  12399. <dt><code>hh8</code></dt>
  12400. <dd>
  12401. <p>This modifier allows you to use bits 16 through 23 of
  12402. an address expression as an 8 bit relocatable expression.
  12403. Also, can be useful for loading 32 bit constants.
  12404. </p>
  12405. </dd>
  12406. <dt><code>hlo8</code></dt>
  12407. <dd>
  12408. <p>Synonym of &lsquo;<samp>hh8</samp>&rsquo;.
  12409. </p>
  12410. </dd>
  12411. <dt><code>hhi8</code></dt>
  12412. <dd>
  12413. <p>This modifier allows you to use bits 24 through 31 of
  12414. an expression as an 8 bit expression. This is useful with, for example, the
  12415. AVR &lsquo;<samp>ldi</samp>&rsquo; instruction and &lsquo;<samp>lo8</samp>&rsquo;, &lsquo;<samp>hi8</samp>&rsquo;, &lsquo;<samp>hlo8</samp>&rsquo;,
  12416. &lsquo;<samp>hhi8</samp>&rsquo;, modifier.
  12417. </p>
  12418. <p>For example
  12419. </p>
  12420. <div class="example">
  12421. <pre class="example">ldi r26, lo8(285774925)
  12422. ldi r27, hi8(285774925)
  12423. ldi r28, hlo8(285774925)
  12424. ldi r29, hhi8(285774925)
  12425. ; r29,r28,r27,r26 = 285774925
  12426. </pre></div>
  12427. </dd>
  12428. <dt><code>pm_lo8</code></dt>
  12429. <dd>
  12430. <p>This modifier allows you to use bits 0 through 7 of
  12431. an address expression as an 8 bit relocatable expression.
  12432. This modifier is useful for addressing data or code from
  12433. Flash/Program memory by two-byte words. The use of &lsquo;<samp>pm_lo8</samp>&rsquo;
  12434. is similar to &lsquo;<samp>lo8</samp>&rsquo;.
  12435. </p>
  12436. </dd>
  12437. <dt><code>pm_hi8</code></dt>
  12438. <dd>
  12439. <p>This modifier allows you to use bits 8 through 15 of
  12440. an address expression as an 8 bit relocatable expression.
  12441. This modifier is useful for addressing data or code from
  12442. Flash/Program memory by two-byte words.
  12443. </p>
  12444. <p>For example, when setting the AVR &lsquo;<samp>Z</samp>&rsquo; register with the &lsquo;<samp>ldi</samp>&rsquo;
  12445. instruction for subsequent use by the &lsquo;<samp>ijmp</samp>&rsquo; instruction:
  12446. </p>
  12447. <div class="example">
  12448. <pre class="example">ldi r30, pm_lo8(sym)
  12449. ldi r31, pm_hi8(sym)
  12450. ijmp
  12451. </pre></div>
  12452. </dd>
  12453. <dt><code>pm_hh8</code></dt>
  12454. <dd>
  12455. <p>This modifier allows you to use bits 15 through 23 of
  12456. an address expression as an 8 bit relocatable expression.
  12457. This modifier is useful for addressing data or code from
  12458. Flash/Program memory by two-byte words.
  12459. </p>
  12460. </dd>
  12461. </dl>
  12462. <hr>
  12463. <span id="AVR-Opcodes"></span><div class="header">
  12464. <p>
  12465. Next: <a href="#AVR-Pseudo-Instructions" accesskey="n" rel="next">AVR Pseudo Instructions</a>, Previous: <a href="#AVR-Syntax" accesskey="p" rel="prev">AVR Syntax</a>, Up: <a href="#AVR_002dDependent" accesskey="u" rel="up">AVR-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12466. </div>
  12467. <span id="Opcodes-4"></span><h4 class="subsection">9.5.3 Opcodes</h4>
  12468. <span id="index-AVR-opcode-summary"></span>
  12469. <span id="index-opcode-summary_002c-AVR"></span>
  12470. <span id="index-mnemonics_002c-AVR"></span>
  12471. <span id="index-instruction-summary_002c-AVR"></span>
  12472. <p>For detailed information on the AVR machine instruction set, see
  12473. <a href="www.atmel.com/products/AVR">www.atmel.com/products/AVR</a>.
  12474. </p>
  12475. <p><code>as</code> implements all the standard AVR opcodes.
  12476. The following table summarizes the AVR opcodes, and their arguments.
  12477. </p>
  12478. <div class="example">
  12479. <pre class="example"><i>Legend:</i>
  12480. r <span class="roman">any register</span>
  12481. d <span class="roman">&lsquo;ldi&rsquo; register (r16-r31)</span>
  12482. v <span class="roman">&lsquo;movw&rsquo; even register (r0, r2, ..., r28, r30)</span>
  12483. a <span class="roman">&lsquo;fmul&rsquo; register (r16-r23)</span>
  12484. w <span class="roman">&lsquo;adiw&rsquo; register (r24,r26,r28,r30)</span>
  12485. e <span class="roman">pointer registers (X,Y,Z)</span>
  12486. b <span class="roman">base pointer register and displacement ([YZ]+disp)</span>
  12487. z <span class="roman">Z pointer register (for [e]lpm Rd,Z[+])</span>
  12488. M <span class="roman">immediate value from 0 to 255</span>
  12489. n <span class="roman">immediate value from 0 to 255 ( n = ~M ). Relocation impossible</span>
  12490. s <span class="roman">immediate value from 0 to 7</span>
  12491. P <span class="roman">Port address value from 0 to 63. (in, out)</span>
  12492. p <span class="roman">Port address value from 0 to 31. (cbi, sbi, sbic, sbis)</span>
  12493. K <span class="roman">immediate value from 0 to 63 (used in &lsquo;adiw&rsquo;, &lsquo;sbiw&rsquo;)</span>
  12494. i <span class="roman">immediate value</span>
  12495. l <span class="roman">signed pc relative offset from -64 to 63</span>
  12496. L <span class="roman">signed pc relative offset from -2048 to 2047</span>
  12497. h <span class="roman">absolute code address (call, jmp)</span>
  12498. S <span class="roman">immediate value from 0 to 7 (S = s &lt;&lt; 4)</span>
  12499. ? <span class="roman">use this opcode entry if no parameters, else use next opcode entry</span>
  12500. 1001010010001000 clc
  12501. 1001010011011000 clh
  12502. 1001010011111000 cli
  12503. 1001010010101000 cln
  12504. 1001010011001000 cls
  12505. 1001010011101000 clt
  12506. 1001010010111000 clv
  12507. 1001010010011000 clz
  12508. 1001010000001000 sec
  12509. 1001010001011000 seh
  12510. 1001010001111000 sei
  12511. 1001010000101000 sen
  12512. 1001010001001000 ses
  12513. 1001010001101000 set
  12514. 1001010000111000 sev
  12515. 1001010000011000 sez
  12516. 100101001SSS1000 bclr S
  12517. 100101000SSS1000 bset S
  12518. 1001010100001001 icall
  12519. 1001010000001001 ijmp
  12520. 1001010111001000 lpm ?
  12521. 1001000ddddd010+ lpm r,z
  12522. 1001010111011000 elpm ?
  12523. 1001000ddddd011+ elpm r,z
  12524. 0000000000000000 nop
  12525. 1001010100001000 ret
  12526. 1001010100011000 reti
  12527. 1001010110001000 sleep
  12528. 1001010110011000 break
  12529. 1001010110101000 wdr
  12530. 1001010111101000 spm
  12531. 000111rdddddrrrr adc r,r
  12532. 000011rdddddrrrr add r,r
  12533. 001000rdddddrrrr and r,r
  12534. 000101rdddddrrrr cp r,r
  12535. 000001rdddddrrrr cpc r,r
  12536. 000100rdddddrrrr cpse r,r
  12537. 001001rdddddrrrr eor r,r
  12538. 001011rdddddrrrr mov r,r
  12539. 100111rdddddrrrr mul r,r
  12540. 001010rdddddrrrr or r,r
  12541. 000010rdddddrrrr sbc r,r
  12542. 000110rdddddrrrr sub r,r
  12543. 001001rdddddrrrr clr r
  12544. 000011rdddddrrrr lsl r
  12545. 000111rdddddrrrr rol r
  12546. 001000rdddddrrrr tst r
  12547. 0111KKKKddddKKKK andi d,M
  12548. 0111KKKKddddKKKK cbr d,n
  12549. 1110KKKKddddKKKK ldi d,M
  12550. 11101111dddd1111 ser d
  12551. 0110KKKKddddKKKK ori d,M
  12552. 0110KKKKddddKKKK sbr d,M
  12553. 0011KKKKddddKKKK cpi d,M
  12554. 0100KKKKddddKKKK sbci d,M
  12555. 0101KKKKddddKKKK subi d,M
  12556. 1111110rrrrr0sss sbrc r,s
  12557. 1111111rrrrr0sss sbrs r,s
  12558. 1111100ddddd0sss bld r,s
  12559. 1111101ddddd0sss bst r,s
  12560. 10110PPdddddPPPP in r,P
  12561. 10111PPrrrrrPPPP out P,r
  12562. 10010110KKddKKKK adiw w,K
  12563. 10010111KKddKKKK sbiw w,K
  12564. 10011000pppppsss cbi p,s
  12565. 10011010pppppsss sbi p,s
  12566. 10011001pppppsss sbic p,s
  12567. 10011011pppppsss sbis p,s
  12568. 111101lllllll000 brcc l
  12569. 111100lllllll000 brcs l
  12570. 111100lllllll001 breq l
  12571. 111101lllllll100 brge l
  12572. 111101lllllll101 brhc l
  12573. 111100lllllll101 brhs l
  12574. 111101lllllll111 brid l
  12575. 111100lllllll111 brie l
  12576. 111100lllllll000 brlo l
  12577. 111100lllllll100 brlt l
  12578. 111100lllllll010 brmi l
  12579. 111101lllllll001 brne l
  12580. 111101lllllll010 brpl l
  12581. 111101lllllll000 brsh l
  12582. 111101lllllll110 brtc l
  12583. 111100lllllll110 brts l
  12584. 111101lllllll011 brvc l
  12585. 111100lllllll011 brvs l
  12586. 111101lllllllsss brbc s,l
  12587. 111100lllllllsss brbs s,l
  12588. 1101LLLLLLLLLLLL rcall L
  12589. 1100LLLLLLLLLLLL rjmp L
  12590. 1001010hhhhh111h call h
  12591. 1001010hhhhh110h jmp h
  12592. 1001010rrrrr0101 asr r
  12593. 1001010rrrrr0000 com r
  12594. 1001010rrrrr1010 dec r
  12595. 1001010rrrrr0011 inc r
  12596. 1001010rrrrr0110 lsr r
  12597. 1001010rrrrr0001 neg r
  12598. 1001000rrrrr1111 pop r
  12599. 1001001rrrrr1111 push r
  12600. 1001010rrrrr0111 ror r
  12601. 1001010rrrrr0010 swap r
  12602. 00000001ddddrrrr movw v,v
  12603. 00000010ddddrrrr muls d,d
  12604. 000000110ddd0rrr mulsu a,a
  12605. 000000110ddd1rrr fmul a,a
  12606. 000000111ddd0rrr fmuls a,a
  12607. 000000111ddd1rrr fmulsu a,a
  12608. 1001001ddddd0000 sts i,r
  12609. 1001000ddddd0000 lds r,i
  12610. 10o0oo0dddddbooo ldd r,b
  12611. 100!000dddddee-+ ld r,e
  12612. 10o0oo1rrrrrbooo std b,r
  12613. 100!001rrrrree-+ st e,r
  12614. 1001010100011001 eicall
  12615. 1001010000011001 eijmp
  12616. </pre></div>
  12617. <hr>
  12618. <span id="AVR-Pseudo-Instructions"></span><div class="header">
  12619. <p>
  12620. Previous: <a href="#AVR-Opcodes" accesskey="p" rel="prev">AVR Opcodes</a>, Up: <a href="#AVR_002dDependent" accesskey="u" rel="up">AVR-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12621. </div>
  12622. <span id="Pseudo-Instructions"></span><h4 class="subsection">9.5.4 Pseudo Instructions</h4>
  12623. <p>The only available pseudo-instruction <code>__gcc_isr</code> can be activated by
  12624. option <samp>-mgcc-isr</samp>.
  12625. </p>
  12626. <dl compact="compact">
  12627. <dt><code>__gcc_isr 1</code></dt>
  12628. <dd><p>Emit code chunk to be used in avr-gcc ISR prologue.
  12629. It will expand to at most six 1-word instructions, all optional:
  12630. push of <code>tmp_reg</code>, push of <code>SREG</code>,
  12631. push and clear of <code>zero_reg</code>, push of <var>Reg</var>.
  12632. </p>
  12633. </dd>
  12634. <dt><code>__gcc_isr 2</code></dt>
  12635. <dd><p>Emit code chunk to be used in an avr-gcc ISR epilogue.
  12636. It will expand to at most five 1-word instructions, all optional:
  12637. pop of <var>Reg</var>, pop of <code>zero_reg</code>,
  12638. pop of <code>SREG</code>, pop of <code>tmp_reg</code>.
  12639. </p>
  12640. </dd>
  12641. <dt><code>__gcc_isr 0, <var>Reg</var></code></dt>
  12642. <dd><p>Finish avr-gcc ISR function. Scan code since the last prologue
  12643. for usage of: <code>SREG</code>, <code>tmp_reg</code>, <code>zero_reg</code>.
  12644. Prologue chunk and epilogue chunks will be replaced by appropriate code
  12645. to save / restore <code>SREG</code>, <code>tmp_reg</code>, <code>zero_reg</code> and <var>Reg</var>.
  12646. </p>
  12647. </dd>
  12648. </dl>
  12649. <p>Example input:
  12650. </p>
  12651. <div class="example">
  12652. <pre class="example">__vector1:
  12653. __gcc_isr 1
  12654. lds r24, var
  12655. inc r24
  12656. sts var, r24
  12657. __gcc_isr 2
  12658. reti
  12659. __gcc_isr 0, r24
  12660. </pre></div>
  12661. <p>Example output:
  12662. </p>
  12663. <div class="example">
  12664. <pre class="example">00000000 &lt;__vector1&gt;:
  12665. 0: 8f 93 push r24
  12666. 2: 8f b7 in r24, 0x3f
  12667. 4: 8f 93 push r24
  12668. 6: 80 91 60 00 lds r24, 0x0060 ; 0x800060 &lt;var&gt;
  12669. a: 83 95 inc r24
  12670. c: 80 93 60 00 sts 0x0060, r24 ; 0x800060 &lt;var&gt;
  12671. 10: 8f 91 pop r24
  12672. 12: 8f bf out 0x3f, r24
  12673. 14: 8f 91 pop r24
  12674. 16: 18 95 reti
  12675. </pre></div>
  12676. <hr>
  12677. <span id="Blackfin_002dDependent"></span><div class="header">
  12678. <p>
  12679. Next: <a href="#BPF_002dDependent" accesskey="n" rel="next">BPF-Dependent</a>, Previous: <a href="#AVR_002dDependent" accesskey="p" rel="prev">AVR-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12680. </div>
  12681. <span id="Blackfin-Dependent-Features"></span><h3 class="section">9.6 Blackfin Dependent Features</h3>
  12682. <span id="index-Blackfin-support"></span>
  12683. <table class="menu" border="0" cellspacing="0">
  12684. <tr><td align="left" valign="top">&bull; <a href="#Blackfin-Options" accesskey="1">Blackfin Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Blackfin Options
  12685. </td></tr>
  12686. <tr><td align="left" valign="top">&bull; <a href="#Blackfin-Syntax" accesskey="2">Blackfin Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Blackfin Syntax
  12687. </td></tr>
  12688. <tr><td align="left" valign="top">&bull; <a href="#Blackfin-Directives" accesskey="3">Blackfin Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Blackfin Directives
  12689. </td></tr>
  12690. </table>
  12691. <hr>
  12692. <span id="Blackfin-Options"></span><div class="header">
  12693. <p>
  12694. Next: <a href="#Blackfin-Syntax" accesskey="n" rel="next">Blackfin Syntax</a>, Up: <a href="#Blackfin_002dDependent" accesskey="u" rel="up">Blackfin-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12695. </div>
  12696. <span id="Options-5"></span><h4 class="subsection">9.6.1 Options</h4>
  12697. <span id="index-Blackfin-options-_0028none_0029"></span>
  12698. <span id="index-options-for-Blackfin-_0028none_0029"></span>
  12699. <dl compact="compact">
  12700. <dd>
  12701. <span id="index-_002dmcpu_003d-command_002dline-option_002c-Blackfin"></span>
  12702. </dd>
  12703. <dt><code>-mcpu=<var>processor</var><span class="roman">[</span>-<var>sirevision</var><span class="roman">]</span></code></dt>
  12704. <dd><p>This option specifies the target processor. The optional <var>sirevision</var>
  12705. is not used in assembler. It&rsquo;s here such that GCC can easily pass down its
  12706. <code>-mcpu=</code> option. The assembler will issue an
  12707. error message if an attempt is made to assemble an instruction which
  12708. will not execute on the target processor. The following processor names are
  12709. recognized:
  12710. <code>bf504</code>,
  12711. <code>bf506</code>,
  12712. <code>bf512</code>,
  12713. <code>bf514</code>,
  12714. <code>bf516</code>,
  12715. <code>bf518</code>,
  12716. <code>bf522</code>,
  12717. <code>bf523</code>,
  12718. <code>bf524</code>,
  12719. <code>bf525</code>,
  12720. <code>bf526</code>,
  12721. <code>bf527</code>,
  12722. <code>bf531</code>,
  12723. <code>bf532</code>,
  12724. <code>bf533</code>,
  12725. <code>bf534</code>,
  12726. <code>bf535</code> (not implemented yet),
  12727. <code>bf536</code>,
  12728. <code>bf537</code>,
  12729. <code>bf538</code>,
  12730. <code>bf539</code>,
  12731. <code>bf542</code>,
  12732. <code>bf542m</code>,
  12733. <code>bf544</code>,
  12734. <code>bf544m</code>,
  12735. <code>bf547</code>,
  12736. <code>bf547m</code>,
  12737. <code>bf548</code>,
  12738. <code>bf548m</code>,
  12739. <code>bf549</code>,
  12740. <code>bf549m</code>,
  12741. <code>bf561</code>,
  12742. and
  12743. <code>bf592</code>.
  12744. </p>
  12745. <span id="index-_002dmfdpic-command_002dline-option_002c-Blackfin"></span>
  12746. </dd>
  12747. <dt><code>-mfdpic</code></dt>
  12748. <dd><p>Assemble for the FDPIC ABI.
  12749. </p>
  12750. <span id="index-_002dmno_002dfdpic-command_002dline-option_002c-Blackfin"></span>
  12751. <span id="index-_002dmnopic-command_002dline-option_002c-Blackfin"></span>
  12752. </dd>
  12753. <dt><code>-mno-fdpic</code></dt>
  12754. <dt><code>-mnopic</code></dt>
  12755. <dd><p>Disable -mfdpic.
  12756. </p></dd>
  12757. </dl>
  12758. <hr>
  12759. <span id="Blackfin-Syntax"></span><div class="header">
  12760. <p>
  12761. Next: <a href="#Blackfin-Directives" accesskey="n" rel="next">Blackfin Directives</a>, Previous: <a href="#Blackfin-Options" accesskey="p" rel="prev">Blackfin Options</a>, Up: <a href="#Blackfin_002dDependent" accesskey="u" rel="up">Blackfin-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12762. </div>
  12763. <span id="Syntax-7"></span><h4 class="subsection">9.6.2 Syntax</h4>
  12764. <span id="index-Blackfin-syntax"></span>
  12765. <span id="index-syntax_002c-Blackfin"></span>
  12766. <dl compact="compact">
  12767. <dt><code>Special Characters</code></dt>
  12768. <dd><p>Assembler input is free format and may appear anywhere on the line.
  12769. One instruction may extend across multiple lines or more than one
  12770. instruction may appear on the same line. White space (space, tab,
  12771. comments or newline) may appear anywhere between tokens. A token must
  12772. not have embedded spaces. Tokens include numbers, register names,
  12773. keywords, user identifiers, and also some multicharacter special
  12774. symbols like &quot;+=&quot;, &quot;/*&quot; or &quot;||&quot;.
  12775. </p>
  12776. <p>Comments are introduced by the &lsquo;<samp>#</samp>&rsquo; character and extend to the
  12777. end of the current line. If the &lsquo;<samp>#</samp>&rsquo; appears as the first
  12778. character of a line, the whole line is treated as a comment, but in
  12779. this case the line can also be a logical line number directive
  12780. (see <a href="#Comments">Comments</a>) or a preprocessor control command
  12781. (see <a href="#Preprocessing">Preprocessing</a>).
  12782. </p>
  12783. </dd>
  12784. <dt><code>Instruction Delimiting</code></dt>
  12785. <dd><p>A semicolon must terminate every instruction. Sometimes a complete
  12786. instruction will consist of more than one operation. There are two
  12787. cases where this occurs. The first is when two general operations
  12788. are combined. Normally a comma separates the different parts, as in
  12789. </p>
  12790. <div class="example">
  12791. <pre class="example">a0= r3.h * r2.l, a1 = r3.l * r2.h ;
  12792. </pre></div>
  12793. <p>The second case occurs when a general instruction is combined with one
  12794. or two memory references for joint issue. The latter portions are
  12795. set off by a &quot;||&quot; token.
  12796. </p>
  12797. <div class="example">
  12798. <pre class="example">a0 = r3.h * r2.l || r1 = [p3++] || r4 = [i2++];
  12799. </pre></div>
  12800. <p>Multiple instructions can occur on the same line. Each must be
  12801. terminated by a semicolon character.
  12802. </p>
  12803. </dd>
  12804. <dt><code>Register Names</code></dt>
  12805. <dd>
  12806. <p>The assembler treats register names and instruction keywords in a case
  12807. insensitive manner. User identifiers are case sensitive. Thus, R3.l,
  12808. R3.L, r3.l and r3.L are all equivalent input to the assembler.
  12809. </p>
  12810. <p>Register names are reserved and may not be used as program identifiers.
  12811. </p>
  12812. <p>Some operations (such as &quot;Move Register&quot;) require a register pair.
  12813. Register pairs are always data registers and are denoted using a colon,
  12814. eg., R3:2. The larger number must be written firsts. Note that the
  12815. hardware only supports odd-even pairs, eg., R7:6, R5:4, R3:2, and R1:0.
  12816. </p>
  12817. <p>Some instructions (such as &ndash;SP (Push Multiple)) require a group of
  12818. adjacent registers. Adjacent registers are denoted in the syntax by
  12819. the range enclosed in parentheses and separated by a colon, eg., (R7:3).
  12820. Again, the larger number appears first.
  12821. </p>
  12822. <p>Portions of a particular register may be individually specified. This
  12823. is written with a dot (&quot;.&quot;) following the register name and then a
  12824. letter denoting the desired portion. For 32-bit registers, &quot;.H&quot;
  12825. denotes the most significant (&quot;High&quot;) portion. &quot;.L&quot; denotes the
  12826. least-significant portion. The subdivisions of the 40-bit registers
  12827. are described later.
  12828. </p>
  12829. </dd>
  12830. <dt><code>Accumulators</code></dt>
  12831. <dd><p>The set of 40-bit registers A1 and A0 that normally contain data that
  12832. is being manipulated. Each accumulator can be accessed in four ways.
  12833. </p>
  12834. <dl compact="compact">
  12835. <dt><code>one 40-bit register</code></dt>
  12836. <dd><p>The register will be referred to as A1 or A0.
  12837. </p></dd>
  12838. <dt><code>one 32-bit register</code></dt>
  12839. <dd><p>The registers are designated as A1.W or A0.W.
  12840. </p></dd>
  12841. <dt><code>two 16-bit registers</code></dt>
  12842. <dd><p>The registers are designated as A1.H, A1.L, A0.H or A0.L.
  12843. </p></dd>
  12844. <dt><code>one 8-bit register</code></dt>
  12845. <dd><p>The registers are designated as A1.X or A0.X for the bits that
  12846. extend beyond bit 31.
  12847. </p></dd>
  12848. </dl>
  12849. </dd>
  12850. <dt><code>Data Registers</code></dt>
  12851. <dd><p>The set of 32-bit registers (R0, R1, R2, R3, R4, R5, R6 and R7) that
  12852. normally contain data for manipulation. These are abbreviated as
  12853. D-register or Dreg. Data registers can be accessed as 32-bit registers
  12854. or as two independent 16-bit registers. The least significant 16 bits
  12855. of each register is called the &quot;low&quot; half and is designated with &quot;.L&quot;
  12856. following the register name. The most significant 16 bits are called
  12857. the &quot;high&quot; half and is designated with &quot;.H&quot; following the name.
  12858. </p>
  12859. <div class="example">
  12860. <pre class="example"> R7.L, r2.h, r4.L, R0.H
  12861. </pre></div>
  12862. </dd>
  12863. <dt><code>Pointer Registers</code></dt>
  12864. <dd><p>The set of 32-bit registers (P0, P1, P2, P3, P4, P5, SP and FP) that
  12865. normally contain byte addresses of data structures. These are
  12866. abbreviated as P-register or Preg.
  12867. </p>
  12868. <div class="example">
  12869. <pre class="example">p2, p5, fp, sp
  12870. </pre></div>
  12871. </dd>
  12872. <dt><code>Stack Pointer SP</code></dt>
  12873. <dd><p>The stack pointer contains the 32-bit address of the last occupied
  12874. byte location in the stack. The stack grows by decrementing the
  12875. stack pointer.
  12876. </p>
  12877. </dd>
  12878. <dt><code>Frame Pointer FP</code></dt>
  12879. <dd><p>The frame pointer contains the 32-bit address of the previous frame
  12880. pointer in the stack. It is located at the top of a frame.
  12881. </p>
  12882. </dd>
  12883. <dt><code>Loop Top</code></dt>
  12884. <dd><p>LT0 and LT1. These registers contain the 32-bit address of the top of
  12885. a zero overhead loop.
  12886. </p>
  12887. </dd>
  12888. <dt><code>Loop Count</code></dt>
  12889. <dd><p>LC0 and LC1. These registers contain the 32-bit counter of the zero
  12890. overhead loop executions.
  12891. </p>
  12892. </dd>
  12893. <dt><code>Loop Bottom</code></dt>
  12894. <dd><p>LB0 and LB1. These registers contain the 32-bit address of the bottom
  12895. of a zero overhead loop.
  12896. </p>
  12897. </dd>
  12898. <dt><code>Index Registers</code></dt>
  12899. <dd><p>The set of 32-bit registers (I0, I1, I2, I3) that normally contain byte
  12900. addresses of data structures. Abbreviated I-register or Ireg.
  12901. </p>
  12902. </dd>
  12903. <dt><code>Modify Registers</code></dt>
  12904. <dd><p>The set of 32-bit registers (M0, M1, M2, M3) that normally contain
  12905. offset values that are added and subtracted to one of the index
  12906. registers. Abbreviated as Mreg.
  12907. </p>
  12908. </dd>
  12909. <dt><code>Length Registers</code></dt>
  12910. <dd><p>The set of 32-bit registers (L0, L1, L2, L3) that normally contain the
  12911. length in bytes of the circular buffer. Abbreviated as Lreg. Clear
  12912. the Lreg to disable circular addressing for the corresponding Ireg.
  12913. </p>
  12914. </dd>
  12915. <dt><code>Base Registers</code></dt>
  12916. <dd><p>The set of 32-bit registers (B0, B1, B2, B3) that normally contain the
  12917. base address in bytes of the circular buffer. Abbreviated as Breg.
  12918. </p>
  12919. </dd>
  12920. <dt><code>Floating Point</code></dt>
  12921. <dd><p>The Blackfin family has no hardware floating point but the .float
  12922. directive generates ieee floating point numbers for use with software
  12923. floating point libraries.
  12924. </p>
  12925. </dd>
  12926. <dt><code>Blackfin Opcodes</code></dt>
  12927. <dd><p>For detailed information on the Blackfin machine instruction set, see
  12928. the Blackfin Processor Instruction Set Reference.
  12929. </p>
  12930. </dd>
  12931. </dl>
  12932. <hr>
  12933. <span id="Blackfin-Directives"></span><div class="header">
  12934. <p>
  12935. Previous: <a href="#Blackfin-Syntax" accesskey="p" rel="prev">Blackfin Syntax</a>, Up: <a href="#Blackfin_002dDependent" accesskey="u" rel="up">Blackfin-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12936. </div>
  12937. <span id="Directives"></span><h4 class="subsection">9.6.3 Directives</h4>
  12938. <span id="index-Blackfin-directives"></span>
  12939. <span id="index-directives_002c-Blackfin"></span>
  12940. <p>The following directives are provided for compatibility with the VDSP assembler.
  12941. </p>
  12942. <dl compact="compact">
  12943. <dt><code>.byte2</code></dt>
  12944. <dd><p>Initializes a two byte data object.
  12945. </p>
  12946. <p>This maps to the <code>.short</code> directive.
  12947. </p></dd>
  12948. <dt><code>.byte4</code></dt>
  12949. <dd><p>Initializes a four byte data object.
  12950. </p>
  12951. <p>This maps to the <code>.int</code> directive.
  12952. </p></dd>
  12953. <dt><code>.db</code></dt>
  12954. <dd><p>Initializes a single byte data object.
  12955. </p>
  12956. <p>This directive is a synonym for <code>.byte</code>.
  12957. </p></dd>
  12958. <dt><code>.dw</code></dt>
  12959. <dd><p>Initializes a two byte data object.
  12960. </p>
  12961. <p>This directive is a synonym for <code>.byte2</code>.
  12962. </p></dd>
  12963. <dt><code>.dd</code></dt>
  12964. <dd><p>Initializes a four byte data object.
  12965. </p>
  12966. <p>This directive is a synonym for <code>.byte4</code>.
  12967. </p></dd>
  12968. <dt><code>.var</code></dt>
  12969. <dd><p>Define and initialize a 32 bit data object.
  12970. </p></dd>
  12971. </dl>
  12972. <hr>
  12973. <span id="BPF_002dDependent"></span><div class="header">
  12974. <p>
  12975. Next: <a href="#CR16_002dDependent" accesskey="n" rel="next">CR16-Dependent</a>, Previous: <a href="#Blackfin_002dDependent" accesskey="p" rel="prev">Blackfin-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12976. </div>
  12977. <span id="BPF-Dependent-Features"></span><h3 class="section">9.7 BPF Dependent Features</h3>
  12978. <span id="index-BPF-support"></span>
  12979. <table class="menu" border="0" cellspacing="0">
  12980. <tr><td align="left" valign="top">&bull; <a href="#BPF-Options" accesskey="1">BPF Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">BPF specific command-line options.
  12981. </td></tr>
  12982. <tr><td align="left" valign="top">&bull; <a href="#BPF-Special-Characters" accesskey="2">BPF Special Characters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Comments and statements.
  12983. </td></tr>
  12984. <tr><td align="left" valign="top">&bull; <a href="#BPF-Registers" accesskey="3">BPF Registers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register names.
  12985. </td></tr>
  12986. <tr><td align="left" valign="top">&bull; <a href="#BPF-Directives" accesskey="4">BPF Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Machine directives.
  12987. </td></tr>
  12988. <tr><td align="left" valign="top">&bull; <a href="#BPF-Instructions" accesskey="5">BPF Instructions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Machine instructions.
  12989. </td></tr>
  12990. </table>
  12991. <hr>
  12992. <span id="BPF-Options"></span><div class="header">
  12993. <p>
  12994. Next: <a href="#BPF-Special-Characters" accesskey="n" rel="next">BPF Special Characters</a>, Up: <a href="#BPF_002dDependent" accesskey="u" rel="up">BPF-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  12995. </div>
  12996. <span id="BPF-Options-1"></span><h4 class="subsection">9.7.1 BPF Options</h4>
  12997. <span id="index-BPF-options-_0028none_0029"></span>
  12998. <span id="index-options-for-BPF-_0028none_0029"></span>
  12999. <dl compact="compact">
  13000. <dd>
  13001. <span id="index-_002dEB-command_002dline-option_002c-BPF"></span>
  13002. </dd>
  13003. <dt><code>-EB</code></dt>
  13004. <dd><p>This option specifies that the assembler should emit big-endian eBPF.
  13005. </p>
  13006. <span id="index-_002dEL-command_002dline-option_002c-BPF"></span>
  13007. </dd>
  13008. <dt><code>-EL</code></dt>
  13009. <dd><p>This option specifies that the assembler should emit little-endian
  13010. eBPF.
  13011. </p>
  13012. <span id="index-_002dmdialect-command_002dline-options_002c-BPF"></span>
  13013. </dd>
  13014. <dt><code>-mdialect=<var>dialect</var></code></dt>
  13015. <dd><p>This option specifies the assembly language dialect to recognize while
  13016. assembling. The assembler supports <samp>normal</samp> and
  13017. <samp>pseudoc</samp>.
  13018. </p>
  13019. <span id="index-_002dmisa_002dspec-command_002dline-options_002c-BPF"></span>
  13020. </dd>
  13021. <dt><code>-misa-spec=<var>spec</var></code></dt>
  13022. <dd><p>This option specifies the version of the BPF instruction set to use
  13023. when assembling. The BPF ISA versions supported are <samp>v1</samp> <samp>v2</samp>, <samp>v3</samp> and <samp>v4</samp>.
  13024. </p>
  13025. <p>The value <samp>xbpf</samp> can be specified to recognize extra
  13026. instructions that are used by GCC for testing purposes. But beware
  13027. this is not valid BPF.
  13028. </p>
  13029. <span id="index-_002dmno_002drelax-command_002dline-options_002c-BPF"></span>
  13030. </dd>
  13031. <dt><code>-mno-relax</code></dt>
  13032. <dd><p>This option tells the assembler to not relax instructions.
  13033. </p></dd>
  13034. </dl>
  13035. <p>Note that if no endianness option is specified in the command line,
  13036. the host endianness is used.
  13037. </p>
  13038. <hr>
  13039. <span id="BPF-Special-Characters"></span><div class="header">
  13040. <p>
  13041. Next: <a href="#BPF-Registers" accesskey="n" rel="next">BPF Registers</a>, Previous: <a href="#BPF-Options" accesskey="p" rel="prev">BPF Options</a>, Up: <a href="#BPF_002dDependent" accesskey="u" rel="up">BPF-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  13042. </div>
  13043. <span id="BPF-Special-Characters-1"></span><h4 class="subsection">9.7.2 BPF Special Characters</h4>
  13044. <span id="index-line-comment-character_002c-BPF"></span>
  13045. <span id="index-BPF-line-comment-character"></span>
  13046. <p>The presence of a &lsquo;<samp>#</samp>&rsquo; or &lsquo;<samp>//</samp>&rsquo; anywhere on a line indicates
  13047. the start of a comment that extends to the end of the line.
  13048. </p>
  13049. <span id="index-block-comments_002c-BPF"></span>
  13050. <span id="index-BPF-block-comments"></span>
  13051. <p>The presence of the &lsquo;<samp>/*</samp>&rsquo; sequence indicates the beginning of a
  13052. block (multi-line) comment, whose contents span until the next
  13053. &lsquo;<samp>*/</samp>&rsquo; sequence. It is not possible to nest block comments.
  13054. </p>
  13055. <span id="index-statement-separator_002c-BPF"></span>
  13056. <p>Statements and assembly directives are separated by newlines and
  13057. &lsquo;<samp>;</samp>&rsquo; characters.
  13058. </p>
  13059. <hr>
  13060. <span id="BPF-Registers"></span><div class="header">
  13061. <p>
  13062. Next: <a href="#BPF-Directives" accesskey="n" rel="next">BPF Directives</a>, Previous: <a href="#BPF-Special-Characters" accesskey="p" rel="prev">BPF Special Characters</a>, Up: <a href="#BPF_002dDependent" accesskey="u" rel="up">BPF-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  13063. </div>
  13064. <span id="BPF-Registers-1"></span><h4 class="subsection">9.7.3 BPF Registers</h4>
  13065. <span id="index-BPF-register-names"></span>
  13066. <span id="index-register-names_002c-BPF"></span>
  13067. <p>The eBPF processor provides ten general-purpose 64-bit registers,
  13068. which are read-write, and a read-only frame pointer register:
  13069. </p>
  13070. <p>In normal syntax:
  13071. </p>
  13072. <dl compact="compact">
  13073. <dt>&lsquo;<samp>%r0 .. %r9</samp>&rsquo;</dt>
  13074. <dd><p>General-purpose registers.
  13075. </p></dd>
  13076. <dt>&lsquo;<samp>%r10</samp>&rsquo;</dt>
  13077. <dt>&lsquo;<samp>%fp</samp>&rsquo;</dt>
  13078. <dd><p>Read-only frame pointer register.
  13079. </p></dd>
  13080. </dl>
  13081. <p>All BPF registers are 64-bit long. However, in the Pseudo-C syntax
  13082. registers can be referred using different names, which actually
  13083. reflect the kind of instruction they appear on:
  13084. </p>
  13085. <p>In pseudoc syntax:
  13086. </p>
  13087. <dl compact="compact">
  13088. <dt>&lsquo;<samp>r0..r9</samp>&rsquo;</dt>
  13089. <dd><p>General-purpose register in an instruction that operates on its value
  13090. as if it was a 64-bit value.
  13091. </p></dd>
  13092. <dt>&lsquo;<samp>w0..w9</samp>&rsquo;</dt>
  13093. <dd><p>General-purpose register in an instruction that operates on its value
  13094. as if it was a 32-bit value.
  13095. </p></dd>
  13096. <dt>&lsquo;<samp>r10</samp>&rsquo;</dt>
  13097. <dd><p>Read-only frame pointer register.
  13098. </p></dd>
  13099. </dl>
  13100. <p>Note that in the Pseudo-C syntax register names are not preceded by
  13101. <code>%</code> characters. A consequence of that is that in contexts like
  13102. instruction operands, where both register names and expressions
  13103. involving symbols are expected, there is no way to disambiguate
  13104. between them. In order to keep things simple, this assembler does not
  13105. allow to refer to symbols whose names collide with register names in
  13106. instruction operands.
  13107. </p>
  13108. <hr>
  13109. <span id="BPF-Directives"></span><div class="header">
  13110. <p>
  13111. Next: <a href="#BPF-Instructions" accesskey="n" rel="next">BPF Instructions</a>, Previous: <a href="#BPF-Registers" accesskey="p" rel="prev">BPF Registers</a>, Up: <a href="#BPF_002dDependent" accesskey="u" rel="up">BPF-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  13112. </div>
  13113. <span id="BPF-Directives-1"></span><h4 class="subsection">9.7.4 BPF Directives</h4>
  13114. <span id="index-machine-directives_002c-BPF"></span>
  13115. <p>The BPF version of <code>as</code> supports the following additional
  13116. machine directives:
  13117. </p>
  13118. <dl compact="compact">
  13119. <dd><span id="index-half-directive_002c-BPF"></span>
  13120. </dd>
  13121. <dt><code>.word</code></dt>
  13122. <dd><p>The <code>.half</code> directive produces a 16 bit value.
  13123. </p>
  13124. <span id="index-word-directive_002c-BPF"></span>
  13125. </dd>
  13126. <dt><code>.word</code></dt>
  13127. <dd><p>The <code>.word</code> directive produces a 32 bit value.
  13128. </p>
  13129. <span id="index-dword-directive_002c-BPF"></span>
  13130. </dd>
  13131. <dt><code>.dword</code></dt>
  13132. <dd><p>The <code>.dword</code> directive produces a 64 bit value.
  13133. </p></dd>
  13134. </dl>
  13135. <hr>
  13136. <span id="BPF-Instructions"></span><div class="header">
  13137. <p>
  13138. Previous: <a href="#BPF-Directives" accesskey="p" rel="prev">BPF Directives</a>, Up: <a href="#BPF_002dDependent" accesskey="u" rel="up">BPF-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  13139. </div>
  13140. <span id="BPF-Instructions-1"></span><h4 class="subsection">9.7.5 BPF Instructions</h4>
  13141. <span id="index-BPF-opcodes"></span>
  13142. <span id="index-opcodes-for-BPF"></span>
  13143. <p>In the instruction descriptions below the following field descriptors
  13144. are used:
  13145. </p>
  13146. <dl compact="compact">
  13147. <dt><code>rd</code></dt>
  13148. <dd><p>Destination general-purpose register whose role is to be the
  13149. destination of an operation.
  13150. </p></dd>
  13151. <dt><code>rs</code></dt>
  13152. <dd><p>Source general-purpose register whose role is to be the source of an
  13153. operation.
  13154. </p></dd>
  13155. <dt><code>disp16</code></dt>
  13156. <dd><p>16-bit signed PC-relative offset, measured in number of 64-bit words,
  13157. minus one.
  13158. </p></dd>
  13159. <dt><code>disp32</code></dt>
  13160. <dd><p>32-bit signed PC-relative offset, measured in number of 64-bit words,
  13161. minus one.
  13162. </p></dd>
  13163. <dt><code>offset16</code></dt>
  13164. <dd><p>Signed 16-bit immediate representing an offset in bytes.
  13165. </p></dd>
  13166. <dt><code>disp16</code></dt>
  13167. <dd><p>Signed 16-bit immediate representing a displacement to a target,
  13168. measured in number of 64-bit words <em>minus one</em>.
  13169. </p></dd>
  13170. <dt><code>disp32</code></dt>
  13171. <dd><p>Signed 32-bit immediate representing a displacement to a target,
  13172. measured in number of 64-bit words <em>minus one</em>.
  13173. </p></dd>
  13174. <dt><code>imm32</code></dt>
  13175. <dd><p>Signed 32-bit immediate.
  13176. </p></dd>
  13177. <dt><code>imm64</code></dt>
  13178. <dd><p>Signed 64-bit immediate.
  13179. </p></dd>
  13180. </dl>
  13181. <p>Note that the assembler allows to express the value for an immediate
  13182. using any numerical literal whose two&rsquo;s complement encoding fits in
  13183. the immediate field. For example, <code>-2</code>, <code>0xfffffffe</code> and
  13184. <code>4294967294</code> all denote the same encoded 32-bit immediate, whose
  13185. value may be then interpreted by different instructions as either as a
  13186. negative or a positive number.
  13187. </p>
  13188. <span id="Arithmetic-instructions"></span><h4 class="subsubsection">9.7.5.1 Arithmetic instructions</h4>
  13189. <p>The destination register in these instructions act like an
  13190. accumulator.
  13191. </p>
  13192. <p>Note that in pseudoc syntax these instructions should use <code>r</code>
  13193. registers.
  13194. </p>
  13195. <dl compact="compact">
  13196. <dt><code>add rd, rs</code></dt>
  13197. <dt><code>add rd, imm32</code></dt>
  13198. <dt><code>rd += rs</code></dt>
  13199. <dt><code>rd += imm32</code></dt>
  13200. <dd><p>64-bit arithmetic addition.
  13201. </p>
  13202. </dd>
  13203. <dt><code>sub rd, rs</code></dt>
  13204. <dt><code>sub rd, rs</code></dt>
  13205. <dt><code>rd -= rs</code></dt>
  13206. <dt><code>rd -= imm32</code></dt>
  13207. <dd><p>64-bit arithmetic subtraction.
  13208. </p>
  13209. </dd>
  13210. <dt><code>mul rd, rs</code></dt>
  13211. <dt><code>mul rd, imm32</code></dt>
  13212. <dt><code>rd *= rs</code></dt>
  13213. <dt><code>rd *= imm32</code></dt>
  13214. <dd><p>64-bit arithmetic multiplication.
  13215. </p>
  13216. </dd>
  13217. <dt><code>div rd, rs</code></dt>
  13218. <dt><code>div rd, imm32</code></dt>
  13219. <dt><code>rd /= rs</code></dt>
  13220. <dt><code>rd /= imm32</code></dt>
  13221. <dd><p>64-bit arithmetic integer division.
  13222. </p>
  13223. </dd>
  13224. <dt><code>mod rd, rs</code></dt>
  13225. <dt><code>mod rd, imm32</code></dt>
  13226. <dt><code>rd %= rs</code></dt>
  13227. <dt><code>rd %= imm32</code></dt>
  13228. <dd><p>64-bit integer remainder.
  13229. </p>
  13230. </dd>
  13231. <dt><code>and rd, rs</code></dt>
  13232. <dt><code>and rd, imm32</code></dt>
  13233. <dt><code>rd &amp;= rs</code></dt>
  13234. <dt><code>rd &amp;= imm32</code></dt>
  13235. <dd><p>64-bit bit-wise &ldquo;and&rdquo; operation.
  13236. </p>
  13237. </dd>
  13238. <dt><code>or rd, rs</code></dt>
  13239. <dt><code>or rd, imm32</code></dt>
  13240. <dt><code>rd |= rs</code></dt>
  13241. <dt><code>rd |= imm32</code></dt>
  13242. <dd><p>64-bit bit-wise &ldquo;or&rdquo; operation.
  13243. </p>
  13244. </dd>
  13245. <dt><code>xor rd, imm32</code></dt>
  13246. <dt><code>xor rd, rs</code></dt>
  13247. <dt><code>rd ^= rs</code></dt>
  13248. <dt><code>rd ^= imm32</code></dt>
  13249. <dd><p>64-bit bit-wise exclusive-or operation.
  13250. </p>
  13251. </dd>
  13252. <dt><code>lsh rd, rs</code></dt>
  13253. <dt><code>ldh rd, imm32</code></dt>
  13254. <dt><code>rd &lt;&lt;= rs</code></dt>
  13255. <dt><code>rd &lt;&lt;= imm32</code></dt>
  13256. <dd><p>64-bit left shift, by <code>rs</code> or <code>imm32</code> bits.
  13257. </p>
  13258. </dd>
  13259. <dt><code>rsh %d, %s</code></dt>
  13260. <dt><code>rsh rd, imm32</code></dt>
  13261. <dt><code>rd &gt;&gt;= rs</code></dt>
  13262. <dt><code>rd &gt;&gt;= imm32</code></dt>
  13263. <dd><p>64-bit right logical shift, by <code>rs</code> or <code>imm32</code> bits.
  13264. </p>
  13265. </dd>
  13266. <dt><code>arsh rd, rs</code></dt>
  13267. <dt><code>arsh rd, imm32</code></dt>
  13268. <dt><code>rd s&gt;&gt;= rs</code></dt>
  13269. <dt><code>rd s&gt;&gt;= imm32</code></dt>
  13270. <dd><p>64-bit right arithmetic shift, by <code>rs</code> or <code>imm32</code> bits.
  13271. </p>
  13272. </dd>
  13273. <dt><code>neg rd</code></dt>
  13274. <dt><code>rd = - rd</code></dt>
  13275. <dd><p>64-bit arithmetic negation.
  13276. </p>
  13277. </dd>
  13278. <dt><code>mov rd, rs</code></dt>
  13279. <dt><code>mov rd, imm32</code></dt>
  13280. <dt><code>rd = rs</code></dt>
  13281. <dt><code>rd = imm32</code></dt>
  13282. <dd><p>Move the 64-bit value of <code>rs</code> in <code>rd</code>, or load <code>imm32</code>
  13283. in <code>rd</code>.
  13284. </p>
  13285. </dd>
  13286. <dt><code>movs rd, rs, 8</code></dt>
  13287. <dt><code>rd = (s8) rs</code></dt>
  13288. <dd><p>Move the sign-extended 8-bit value in <code>rs</code> to <code>rd</code>.
  13289. </p>
  13290. </dd>
  13291. <dt><code>movs rd, rs, 16</code></dt>
  13292. <dt><code>rd = (s16) rs</code></dt>
  13293. <dd><p>Move the sign-extended 16-bit value in <code>rs</code> to <code>rd</code>.
  13294. </p>
  13295. </dd>
  13296. <dt><code>movs rd, rs, 32</code></dt>
  13297. <dt><code>rd = (s32) rs</code></dt>
  13298. <dd><p>Move the sign-extended 32-bit value in <code>rs</code> to <code>rd</code>.
  13299. </p></dd>
  13300. </dl>
  13301. <span id="g_t32_002dbit-arithmetic-instructions"></span><h4 class="subsubsection">9.7.5.2 32-bit arithmetic instructions</h4>
  13302. <p>The destination register in these instructions act as an accumulator.
  13303. </p>
  13304. <p>Note that in pseudoc syntax these instructions should use <code>w</code>
  13305. registers. It is not allowed to mix <code>w</code> and <code>r</code> registers
  13306. in the same instruction.
  13307. </p>
  13308. <dl compact="compact">
  13309. <dt><code>add32 rd, rs</code></dt>
  13310. <dt><code>add32 rd, imm32</code></dt>
  13311. <dt><code>rd += rs</code></dt>
  13312. <dt><code>rd += imm32</code></dt>
  13313. <dd><p>32-bit arithmetic addition.
  13314. </p>
  13315. </dd>
  13316. <dt><code>sub32 rd, rs</code></dt>
  13317. <dt><code>sub32 rd, imm32</code></dt>
  13318. <dt><code>rd -= rs</code></dt>
  13319. <dt><code>rd += imm32</code></dt>
  13320. <dd><p>32-bit arithmetic subtraction.
  13321. </p>
  13322. </dd>
  13323. <dt><code>mul32 rd, rs</code></dt>
  13324. <dt><code>mul32 rd, imm32</code></dt>
  13325. <dt><code>rd *= rs</code></dt>
  13326. <dt><code>rd *= imm32</code></dt>
  13327. <dd><p>32-bit arithmetic multiplication.
  13328. </p>
  13329. </dd>
  13330. <dt><code>div32 rd, rs</code></dt>
  13331. <dt><code>div32 rd, imm32</code></dt>
  13332. <dt><code>rd /= rs</code></dt>
  13333. <dt><code>rd /= imm32</code></dt>
  13334. <dd><p>32-bit arithmetic integer division.
  13335. </p>
  13336. </dd>
  13337. <dt><code>mod32 rd, rs</code></dt>
  13338. <dt><code>mod32 rd, imm32</code></dt>
  13339. <dt><code>rd %= rs</code></dt>
  13340. <dt><code>rd %= imm32</code></dt>
  13341. <dd><p>32-bit integer remainder.
  13342. </p>
  13343. </dd>
  13344. <dt><code>and32 rd, rs</code></dt>
  13345. <dt><code>and32 rd, imm32</code></dt>
  13346. <dt><code>rd &amp;= rs</code></dt>
  13347. <dt><code>rd &amp;= imm32</code></dt>
  13348. <dd><p>32-bit bit-wise &ldquo;and&rdquo; operation.
  13349. </p>
  13350. </dd>
  13351. <dt><code>or32 rd, rs</code></dt>
  13352. <dt><code>or32 rd, imm32</code></dt>
  13353. <dt><code>rd |= rs</code></dt>
  13354. <dt><code>rd |= imm32</code></dt>
  13355. <dd><p>32-bit bit-wise &ldquo;or&rdquo; operation.
  13356. </p>
  13357. </dd>
  13358. <dt><code>xor32 rd, rs</code></dt>
  13359. <dt><code>xor32 rd, imm32</code></dt>
  13360. <dt><code>rd ^= rs</code></dt>
  13361. <dt><code>rd ^= imm32</code></dt>
  13362. <dd><p>32-bit bit-wise exclusive-or operation.
  13363. </p>
  13364. </dd>
  13365. <dt><code>lsh32 rd, rs</code></dt>
  13366. <dt><code>lsh32 rd, imm32</code></dt>
  13367. <dt><code>rd &lt;&lt;= rs</code></dt>
  13368. <dt><code>rd &lt;&lt;= imm32</code></dt>
  13369. <dd><p>32-bit left shift, by <code>rs</code> or <code>imm32</code> bits.
  13370. </p>
  13371. </dd>
  13372. <dt><code>rsh32 rd, rs</code></dt>
  13373. <dt><code>rsh32 rd, imm32</code></dt>
  13374. <dt><code>rd &gt;&gt;= rs</code></dt>
  13375. <dt><code>rd &gt;&gt;= imm32</code></dt>
  13376. <dd><p>32-bit right logical shift, by <code>rs</code> or <code>imm32</code> bits.
  13377. </p>
  13378. </dd>
  13379. <dt><code>arsh32 rd, rs</code></dt>
  13380. <dt><code>arsh32 rd, imm32</code></dt>
  13381. <dt><code>rd s&gt;&gt;= rs</code></dt>
  13382. <dt><code>rd s&gt;&gt;= imm32</code></dt>
  13383. <dd><p>32-bit right arithmetic shift, by <code>rs</code> or <code>imm32</code> bits.
  13384. </p>
  13385. </dd>
  13386. <dt><code>neg32 rd</code></dt>
  13387. <dt><code>rd = - rd</code></dt>
  13388. <dd><p>32-bit arithmetic negation.
  13389. </p>
  13390. </dd>
  13391. <dt><code>mov32 rd, rs</code></dt>
  13392. <dt><code>mov32 rd, imm32</code></dt>
  13393. <dt><code>rd = rs</code></dt>
  13394. <dt><code>rd = imm32</code></dt>
  13395. <dd><p>Move the 32-bit value of <code>rs</code> in <code>rd</code>, or load <code>imm32</code>
  13396. in <code>rd</code>.
  13397. </p>
  13398. </dd>
  13399. <dt><code>mov32s rd, rs, 8</code></dt>
  13400. <dt><code>rd = (s8) rs</code></dt>
  13401. <dd><p>Move the sign-extended 8-bit value in <code>rs</code> to <code>rd</code>.
  13402. </p>
  13403. </dd>
  13404. <dt><code>mov32s rd, rs, 16</code></dt>
  13405. <dt><code>rd = (s16) rs</code></dt>
  13406. <dd><p>Move the sign-extended 16-bit value in <code>rs</code> to <code>rd</code>.
  13407. </p>
  13408. </dd>
  13409. <dt><code>mov32s rd, rs, 32</code></dt>
  13410. <dt><code>rd = (s32) rs</code></dt>
  13411. <dd><p>Move the sign-extended 32-bit value in <code>rs</code> to <code>rd</code>.
  13412. </p></dd>
  13413. </dl>
  13414. <span id="Endianness-conversion-instructions"></span><h4 class="subsubsection">9.7.5.3 Endianness conversion instructions</h4>
  13415. <dl compact="compact">
  13416. <dt><code>endle rd, 16</code></dt>
  13417. <dt><code>endle rd, 32</code></dt>
  13418. <dt><code>endle rd, 64</code></dt>
  13419. <dt><code>rd = le16 rd</code></dt>
  13420. <dt><code>rd = le32 rd</code></dt>
  13421. <dt><code>rd = le64 rd</code></dt>
  13422. <dd><p>Convert the 16-bit, 32-bit or 64-bit value in <code>rd</code> to
  13423. little-endian and store it back in <code>rd</code>.
  13424. </p></dd>
  13425. <dt><code>endbe %d, 16</code></dt>
  13426. <dt><code>endbe %d, 32</code></dt>
  13427. <dt><code>endbe %d, 64</code></dt>
  13428. <dt><code>rd = be16 rd</code></dt>
  13429. <dt><code>rd = be32 rd</code></dt>
  13430. <dt><code>rd = be64 rd</code></dt>
  13431. <dd><p>Convert the 16-bit, 32-bit or 64-bit value in <code>rd</code> to big-endian
  13432. and store it back in <code>rd</code>.
  13433. </p></dd>
  13434. </dl>
  13435. <span id="Byte-swap-instructions"></span><h4 class="subsubsection">9.7.5.4 Byte swap instructions</h4>
  13436. <dl compact="compact">
  13437. <dt><code>bswap rd, 16</code></dt>
  13438. <dt><code>rd = bswap16 rd</code></dt>
  13439. <dd><p>Swap the least-significant 16-bit word in <code>rd</code> with the
  13440. most-significant 16-bit word.
  13441. </p>
  13442. </dd>
  13443. <dt><code>bswap rd, 32</code></dt>
  13444. <dt><code>rd = bswap32 rd</code></dt>
  13445. <dd><p>Swap the least-significant 32-bit word in <code>rd</code> with the
  13446. most-significant 32-bit word.
  13447. </p>
  13448. </dd>
  13449. <dt><code>bswap rd, 64</code></dt>
  13450. <dt><code>rd = bswap64 rd</code></dt>
  13451. <dd><p>Swap the least-significant 64-bit word in <code>rd</code> with the
  13452. most-significant 64-bit word.
  13453. </p></dd>
  13454. </dl>
  13455. <span id="g_t64_002dbit-load-and-pseudo-maps"></span><h4 class="subsubsection">9.7.5.5 64-bit load and pseudo maps</h4>
  13456. <dl compact="compact">
  13457. <dt><code>lddw rd, imm64</code></dt>
  13458. <dt><code>rd = imm64 ll</code></dt>
  13459. <dd><p>Load the given signed 64-bit immediate to the destination register
  13460. <code>rd</code>.
  13461. </p></dd>
  13462. </dl>
  13463. <span id="Load-instructions-for-socket-filters"></span><h4 class="subsubsection">9.7.5.6 Load instructions for socket filters</h4>
  13464. <p>The following instructions are intended to be used in socket filters,
  13465. and are therefore not general-purpose: they make assumptions on the
  13466. contents of several registers. See the file
  13467. <samp>Documentation/networking/filter.txt</samp> in the Linux kernel source
  13468. tree for more information.
  13469. </p>
  13470. <p>Absolute loads:
  13471. </p>
  13472. <dl compact="compact">
  13473. <dt><code>ldabsdw imm32</code></dt>
  13474. <dt><code>r0 = *(u64 *) skb[imm32]</code></dt>
  13475. <dd><p>Absolute 64-bit load.
  13476. </p>
  13477. </dd>
  13478. <dt><code>ldabsw imm32</code></dt>
  13479. <dt><code>r0 = *(u32 *) skb[imm32]</code></dt>
  13480. <dd><p>Absolute 32-bit load.
  13481. </p>
  13482. </dd>
  13483. <dt><code>ldabsh imm32</code></dt>
  13484. <dt><code>r0 = *(u16 *) skb[imm32]</code></dt>
  13485. <dd><p>Absolute 16-bit load.
  13486. </p>
  13487. </dd>
  13488. <dt><code>ldabsb imm32</code></dt>
  13489. <dt><code>r0 = *(u8 *) skb[imm32]</code></dt>
  13490. <dd><p>Absolute 8-bit load.
  13491. </p></dd>
  13492. </dl>
  13493. <p>Indirect loads:
  13494. </p>
  13495. <dl compact="compact">
  13496. <dt><code>ldinddw rs, imm32</code></dt>
  13497. <dt><code>r0 = *(u64 *) skb[rs + imm32]</code></dt>
  13498. <dd><p>Indirect 64-bit load.
  13499. </p>
  13500. </dd>
  13501. <dt><code>ldindw rs, imm32</code></dt>
  13502. <dt><code>r0 = *(u32 *) skb[rs + imm32]</code></dt>
  13503. <dd><p>Indirect 32-bit load.
  13504. </p>
  13505. </dd>
  13506. <dt><code>ldindh rs, imm32</code></dt>
  13507. <dt><code>r0 = *(u16 *) skb[rs + imm32]</code></dt>
  13508. <dd><p>Indirect 16-bit load.
  13509. </p>
  13510. </dd>
  13511. <dt><code>ldindb %s, imm32</code></dt>
  13512. <dt><code>r0 = *(u8 *) skb[rs + imm32]</code></dt>
  13513. <dd><p>Indirect 8-bit load.
  13514. </p></dd>
  13515. </dl>
  13516. <span id="Generic-load_002fstore-instructions"></span><h4 class="subsubsection">9.7.5.7 Generic load/store instructions</h4>
  13517. <p>General-purpose load and store instructions are provided for several
  13518. word sizes.
  13519. </p>
  13520. <p>Load to register instructions:
  13521. </p>
  13522. <dl compact="compact">
  13523. <dt><code>ldxdw rd, [rs + offset16]</code></dt>
  13524. <dt><code>rd = *(u64 *) (rs + offset16)</code></dt>
  13525. <dd><p>Generic 64-bit load.
  13526. </p>
  13527. </dd>
  13528. <dt><code>ldxw rd, [rs + offset16]</code></dt>
  13529. <dt><code>rd = *(u32 *) (rs + offset16)</code></dt>
  13530. <dd><p>Generic 32-bit load.
  13531. </p>
  13532. </dd>
  13533. <dt><code>ldxh rd, [rs + offset16]</code></dt>
  13534. <dt><code>rd = *(u16 *) (rs + offset16)</code></dt>
  13535. <dd><p>Generic 16-bit load.
  13536. </p>
  13537. </dd>
  13538. <dt><code>ldxb rd, [rs + offset16]</code></dt>
  13539. <dt><code>rd = *(u8 *) (rs + offset16)</code></dt>
  13540. <dd><p>Generic 8-bit load.
  13541. </p></dd>
  13542. </dl>
  13543. <p>Signed load to register instructions:
  13544. </p>
  13545. <dl compact="compact">
  13546. <dt><code>ldxsdw rd, [rs + offset16]</code></dt>
  13547. <dt><code>rd = *(s64 *) (rs + offset16)</code></dt>
  13548. <dd><p>Generic 64-bit signed load.
  13549. </p>
  13550. </dd>
  13551. <dt><code>ldxsw rd, [rs + offset16]</code></dt>
  13552. <dt><code>rd = *(s32 *) (rs + offset16)</code></dt>
  13553. <dd><p>Generic 32-bit signed load.
  13554. </p>
  13555. </dd>
  13556. <dt><code>ldxsh rd, [rs + offset16]</code></dt>
  13557. <dt><code>rd = *(s16 *) (rs + offset16)</code></dt>
  13558. <dd><p>Generic 16-bit signed load.
  13559. </p>
  13560. </dd>
  13561. <dt><code>ldxsb rd, [rs + offset16]</code></dt>
  13562. <dt><code>rd = *(s8 *) (rs + offset16)</code></dt>
  13563. <dd><p>Generic 8-bit signed load.
  13564. </p></dd>
  13565. </dl>
  13566. <p>Store from register instructions:
  13567. </p>
  13568. <dl compact="compact">
  13569. <dt><code>stxdw [rd + offset16], %s</code></dt>
  13570. <dt><code>*(u64 *) (rd + offset16)</code></dt>
  13571. <dd><p>Generic 64-bit store.
  13572. </p>
  13573. </dd>
  13574. <dt><code>stxw [rd + offset16], %s</code></dt>
  13575. <dt><code>*(u32 *) (rd + offset16)</code></dt>
  13576. <dd><p>Generic 32-bit store.
  13577. </p>
  13578. </dd>
  13579. <dt><code>stxh [rd + offset16], %s</code></dt>
  13580. <dt><code>*(u16 *) (rd + offset16)</code></dt>
  13581. <dd><p>Generic 16-bit store.
  13582. </p>
  13583. </dd>
  13584. <dt><code>stxb [rd + offset16], %s</code></dt>
  13585. <dt><code>*(u8 *) (rd + offset16)</code></dt>
  13586. <dd><p>Generic 8-bit store.
  13587. </p></dd>
  13588. </dl>
  13589. <p>Store from immediates instructions:
  13590. </p>
  13591. <dl compact="compact">
  13592. <dt><code>stdw [rd + offset16], imm32</code></dt>
  13593. <dt><code>*(u64 *) (rd + offset16) = imm32</code></dt>
  13594. <dd><p>Store immediate as 64-bit.
  13595. </p>
  13596. </dd>
  13597. <dt><code>stw [rd + offset16], imm32</code></dt>
  13598. <dt><code>*(u32 *) (rd + offset16) = imm32</code></dt>
  13599. <dd><p>Store immediate as 32-bit.
  13600. </p>
  13601. </dd>
  13602. <dt><code>sth [rd + offset16], imm32</code></dt>
  13603. <dt><code>*(u16 *) (rd + offset16) = imm32</code></dt>
  13604. <dd><p>Store immediate as 16-bit.
  13605. </p>
  13606. </dd>
  13607. <dt><code>stb [rd + offset16], imm32</code></dt>
  13608. <dt><code>*(u8 *) (rd + offset16) = imm32</code></dt>
  13609. <dd><p>Store immediate as 8-bit.
  13610. </p></dd>
  13611. </dl>
  13612. <span id="Jump-instructions"></span><h4 class="subsubsection">9.7.5.8 Jump instructions</h4>
  13613. <p>eBPF provides the following compare-and-jump instructions, which
  13614. compare the values of the two given registers, or the values of a
  13615. register and an immediate, and perform a branch in case the comparison
  13616. holds true.
  13617. </p>
  13618. <dl compact="compact">
  13619. <dt><code>ja disp16</code></dt>
  13620. <dt><code>goto disp16</code></dt>
  13621. <dd><p>Jump-always.
  13622. </p>
  13623. </dd>
  13624. <dt><code>jal disp32</code></dt>
  13625. <dt><code>gotol disp32</code></dt>
  13626. <dd><p>Jump-always, long range.
  13627. </p>
  13628. </dd>
  13629. <dt><code>jeq rd, rs, disp16</code></dt>
  13630. <dt><code>jeq rd, imm32, disp16</code></dt>
  13631. <dt><code>if rd == rs goto disp16</code></dt>
  13632. <dt><code>if rd == imm32 goto disp16</code></dt>
  13633. <dd><p>Jump if equal, unsigned.
  13634. </p>
  13635. </dd>
  13636. <dt><code>jgt rd, rs, disp16</code></dt>
  13637. <dt><code>jgt rd, imm32, disp16</code></dt>
  13638. <dt><code>if rd &gt; rs goto disp16</code></dt>
  13639. <dt><code>if rd &gt; imm32 goto disp16</code></dt>
  13640. <dd><p>Jump if greater, unsigned.
  13641. </p>
  13642. </dd>
  13643. <dt><code>jge rd, rs, disp16</code></dt>
  13644. <dt><code>jge rd, imm32, disp16</code></dt>
  13645. <dt><code>if rd &gt;= rs goto disp16</code></dt>
  13646. <dt><code>if rd &gt;= imm32 goto disp16</code></dt>
  13647. <dd><p>Jump if greater or equal.
  13648. </p>
  13649. </dd>
  13650. <dt><code>jlt rd, rs, disp16</code></dt>
  13651. <dt><code>jlt rd, imm32, disp16</code></dt>
  13652. <dt><code>if rd &lt; rs goto disp16</code></dt>
  13653. <dt><code>if rd &lt; imm32 goto disp16</code></dt>
  13654. <dd><p>Jump if lesser.
  13655. </p>
  13656. </dd>
  13657. <dt><code>jle rd , rs, disp16</code></dt>
  13658. <dt><code>jle rd, imm32, disp16</code></dt>
  13659. <dt><code>if rd &lt;= rs goto disp16</code></dt>
  13660. <dt><code>if rd &lt;= imm32 goto disp16</code></dt>
  13661. <dd><p>Jump if lesser or equal.
  13662. </p>
  13663. </dd>
  13664. <dt><code>jset rd, rs, disp16</code></dt>
  13665. <dt><code>jset rd, imm32, disp16</code></dt>
  13666. <dt><code>if rd &amp; rs goto disp16</code></dt>
  13667. <dt><code>if rd &amp; imm32 goto disp16</code></dt>
  13668. <dd><p>Jump if signed equal.
  13669. </p>
  13670. </dd>
  13671. <dt><code>jne rd, rs, disp16</code></dt>
  13672. <dt><code>jne rd, imm32, disp16</code></dt>
  13673. <dt><code>if rd != rs goto disp16</code></dt>
  13674. <dt><code>if rd != imm32 goto disp16</code></dt>
  13675. <dd><p>Jump if not equal.
  13676. </p>
  13677. </dd>
  13678. <dt><code>jsgt rd, rs, disp16</code></dt>
  13679. <dt><code>jsgt rd, imm32, disp16</code></dt>
  13680. <dt><code>if rd s&gt; rs goto disp16</code></dt>
  13681. <dt><code>if rd s&gt; imm32 goto disp16</code></dt>
  13682. <dd><p>Jump if signed greater.
  13683. </p>
  13684. </dd>
  13685. <dt><code>jsge rd, rs, disp16</code></dt>
  13686. <dt><code>jsge rd, imm32, disp16</code></dt>
  13687. <dt><code>if rd s&gt;= rd goto disp16</code></dt>
  13688. <dt><code>if rd s&gt;= imm32 goto disp16</code></dt>
  13689. <dd><p>Jump if signed greater or equal.
  13690. </p>
  13691. </dd>
  13692. <dt><code>jslt rd, rs, disp16</code></dt>
  13693. <dt><code>jslt rd, imm32, disp16</code></dt>
  13694. <dt><code>if rd s&lt; rs goto disp16</code></dt>
  13695. <dt><code>if rd s&lt; imm32 goto disp16</code></dt>
  13696. <dd><p>Jump if signed lesser.
  13697. </p>
  13698. </dd>
  13699. <dt><code>jsle rd, rs, disp16</code></dt>
  13700. <dt><code>jsle rd, imm32, disp16</code></dt>
  13701. <dt><code>if rd s&lt;= rs goto disp16</code></dt>
  13702. <dt><code>if rd s&lt;= imm32 goto disp16</code></dt>
  13703. <dd><p>Jump if signed lesser or equal.
  13704. </p></dd>
  13705. </dl>
  13706. <p>A call instruction is provided in order to perform calls to other eBPF
  13707. functions, or to external kernel helpers:
  13708. </p>
  13709. <dl compact="compact">
  13710. <dt><code>call disp32</code></dt>
  13711. <dt><code>call imm32</code></dt>
  13712. <dd><p>Jump and link to the offset <em>disp32</em>, or to the kernel helper
  13713. function identified by <em>imm32</em>.
  13714. </p></dd>
  13715. </dl>
  13716. <p>Finally:
  13717. </p>
  13718. <dl compact="compact">
  13719. <dt><code>exit</code></dt>
  13720. <dd><p>Terminate the eBPF program.
  13721. </p></dd>
  13722. </dl>
  13723. <span id="g_t32_002dbit-jump-instructions"></span><h4 class="subsubsection">9.7.5.9 32-bit jump instructions</h4>
  13724. <p>eBPF provides the following compare-and-jump instructions, which
  13725. compare the 32-bit values of the two given registers, or the values of
  13726. a register and an immediate, and perform a branch in case the
  13727. comparison holds true.
  13728. </p>
  13729. <p>These instructions are only available in BPF v3 or later.
  13730. </p>
  13731. <dl compact="compact">
  13732. <dt><code>jeq32 rd, rs, disp16</code></dt>
  13733. <dt><code>jeq32 rd, imm32, disp16</code></dt>
  13734. <dt><code>if rd == rs goto disp16</code></dt>
  13735. <dt><code>if rd == imm32 goto disp16</code></dt>
  13736. <dd><p>Jump if equal, unsigned.
  13737. </p>
  13738. </dd>
  13739. <dt><code>jgt32 rd, rs, disp16</code></dt>
  13740. <dt><code>jgt32 rd, imm32, disp16</code></dt>
  13741. <dt><code>if rd &gt; rs goto disp16</code></dt>
  13742. <dt><code>if rd &gt; imm32 goto disp16</code></dt>
  13743. <dd><p>Jump if greater, unsigned.
  13744. </p>
  13745. </dd>
  13746. <dt><code>jge32 rd, rs, disp16</code></dt>
  13747. <dt><code>jge32 rd, imm32, disp16</code></dt>
  13748. <dt><code>if rd &gt;= rs goto disp16</code></dt>
  13749. <dt><code>if rd &gt;= imm32 goto disp16</code></dt>
  13750. <dd><p>Jump if greater or equal.
  13751. </p>
  13752. </dd>
  13753. <dt><code>jlt32 rd, rs, disp16</code></dt>
  13754. <dt><code>jlt32 rd, imm32, disp16</code></dt>
  13755. <dt><code>if rd &lt; rs goto disp16</code></dt>
  13756. <dt><code>if rd &lt; imm32 goto disp16</code></dt>
  13757. <dd><p>Jump if lesser.
  13758. </p>
  13759. </dd>
  13760. <dt><code>jle32 rd , rs, disp16</code></dt>
  13761. <dt><code>jle32 rd, imm32, disp16</code></dt>
  13762. <dt><code>if rd &lt;= rs goto disp16</code></dt>
  13763. <dt><code>if rd &lt;= imm32 goto disp16</code></dt>
  13764. <dd><p>Jump if lesser or equal.
  13765. </p>
  13766. </dd>
  13767. <dt><code>jset32 rd, rs, disp16</code></dt>
  13768. <dt><code>jset32 rd, imm32, disp16</code></dt>
  13769. <dt><code>if rd &amp; rs goto disp16</code></dt>
  13770. <dt><code>if rd &amp; imm32 goto disp16</code></dt>
  13771. <dd><p>Jump if signed equal.
  13772. </p>
  13773. </dd>
  13774. <dt><code>jne32 rd, rs, disp16</code></dt>
  13775. <dt><code>jne32 rd, imm32, disp16</code></dt>
  13776. <dt><code>if rd != rs goto disp16</code></dt>
  13777. <dt><code>if rd != imm32 goto disp16</code></dt>
  13778. <dd><p>Jump if not equal.
  13779. </p>
  13780. </dd>
  13781. <dt><code>jsgt32 rd, rs, disp16</code></dt>
  13782. <dt><code>jsgt32 rd, imm32, disp16</code></dt>
  13783. <dt><code>if rd s&gt; rs goto disp16</code></dt>
  13784. <dt><code>if rd s&gt; imm32 goto disp16</code></dt>
  13785. <dd><p>Jump if signed greater.
  13786. </p>
  13787. </dd>
  13788. <dt><code>jsge32 rd, rs, disp16</code></dt>
  13789. <dt><code>jsge32 rd, imm32, disp16</code></dt>
  13790. <dt><code>if rd s&gt;= rd goto disp16</code></dt>
  13791. <dt><code>if rd s&gt;= imm32 goto disp16</code></dt>
  13792. <dd><p>Jump if signed greater or equal.
  13793. </p>
  13794. </dd>
  13795. <dt><code>jslt32 rd, rs, disp16</code></dt>
  13796. <dt><code>jslt32 rd, imm32, disp16</code></dt>
  13797. <dt><code>if rd s&lt; rs goto disp16</code></dt>
  13798. <dt><code>if rd s&lt; imm32 goto disp16</code></dt>
  13799. <dd><p>Jump if signed lesser.
  13800. </p>
  13801. </dd>
  13802. <dt><code>jsle32 rd, rs, disp16</code></dt>
  13803. <dt><code>jsle32 rd, imm32, disp16</code></dt>
  13804. <dt><code>if rd s&lt;= rs goto disp16</code></dt>
  13805. <dt><code>if rd s&lt;= imm32 goto disp16</code></dt>
  13806. <dd><p>Jump if signed lesser or equal.
  13807. </p></dd>
  13808. </dl>
  13809. <span id="Atomic-instructions"></span><h4 class="subsubsection">9.7.5.10 Atomic instructions</h4>
  13810. <p>Atomic exchange instructions are provided in two flavors: one for
  13811. compare-and-swap, one for unconditional exchange.
  13812. </p>
  13813. <dl compact="compact">
  13814. <dt><code>acmp [rd + offset16], rs</code></dt>
  13815. <dt><code>r0 = cmpxchg_64 (rd + offset16, r0, rs)</code></dt>
  13816. <dd><p>Atomic compare-and-swap. Compares value in <code>r0</code> to value
  13817. addressed by <code>rd + offset16</code>. On match, the value addressed by
  13818. <code>rd + offset16</code> is replaced with the value in <code>rs</code>.
  13819. Regardless, the value that was at <code>rd + offset16</code> is
  13820. zero-extended and loaded into <code>r0</code>.
  13821. </p>
  13822. </dd>
  13823. <dt><code>axchg [rd + offset16], rs</code></dt>
  13824. <dt><code>rs = xchg_64 (rd + offset16, rs)</code></dt>
  13825. <dd><p>Atomic exchange. Atomically exchanges the value in <code>rs</code> with
  13826. the value addressed by <code>rd + offset16</code>.
  13827. </p></dd>
  13828. </dl>
  13829. <p>The following instructions provide atomic arithmetic operations.
  13830. </p>
  13831. <dl compact="compact">
  13832. <dt><code>aadd [rd + offset16], rs</code></dt>
  13833. <dt><code>lock *(u64 *)(rd + offset16) = rs</code></dt>
  13834. <dd><p>Atomic add instruction.
  13835. </p>
  13836. </dd>
  13837. <dt><code>aor [rd + offset16], rs</code></dt>
  13838. <dt><code>lock *(u64 *) (rd + offset16) |= rs</code></dt>
  13839. <dd><p>Atomic or instruction.
  13840. </p>
  13841. </dd>
  13842. <dt><code>aand [rd + offset16], rs</code></dt>
  13843. <dt><code>lock *(u64 *) (rd + offset16) &amp;= rs</code></dt>
  13844. <dd><p>Atomic and instruction.
  13845. </p>
  13846. </dd>
  13847. <dt><code>axor [rd + offset16], rs</code></dt>
  13848. <dt><code>lock *(u64 *) (rd + offset16) ^= rs</code></dt>
  13849. <dd><p>Atomic xor instruction.
  13850. </p></dd>
  13851. </dl>
  13852. <p>The following variants perform fetching before the atomic operation.
  13853. </p>
  13854. <dl compact="compact">
  13855. <dt><code>afadd [rd + offset16], rs</code></dt>
  13856. <dt><code>rs = atomic_fetch_add ((u64 *)(rd + offset16), rs)</code></dt>
  13857. <dd><p>Atomic fetch-and-add instruction.
  13858. </p>
  13859. </dd>
  13860. <dt><code>afor [rd + offset16], rs</code></dt>
  13861. <dt><code>rs = atomic_fetch_or ((u64 *)(rd + offset16), rs)</code></dt>
  13862. <dd><p>Atomic fetch-and-or instruction.
  13863. </p>
  13864. </dd>
  13865. <dt><code>afand [rd + offset16], rs</code></dt>
  13866. <dt><code>rs = atomic_fetch_and ((u64 *)(rd + offset16), rs)</code></dt>
  13867. <dd><p>Atomic fetch-and-and instruction.
  13868. </p>
  13869. </dd>
  13870. <dt><code>afxor [rd + offset16], rs</code></dt>
  13871. <dt><code>rs = atomic_fetch_xor ((u64 *)(rd + offset16), rs)</code></dt>
  13872. <dd><p>Atomic fetch-and-or instruction.
  13873. </p></dd>
  13874. </dl>
  13875. <p>The above instructions were introduced in the V3 of the BPF
  13876. instruction set. The following instruction is supported for backwards
  13877. compatibility:
  13878. </p>
  13879. <dl compact="compact">
  13880. <dt><code>xadddw [rd + offset16], rs</code></dt>
  13881. <dd><p>Alias to <code>aadd</code>.
  13882. </p></dd>
  13883. </dl>
  13884. <span id="g_t32_002dbit-atomic-instructions"></span><h4 class="subsubsection">9.7.5.11 32-bit atomic instructions</h4>
  13885. <p>32-bit atomic exchange instructions are provided in two flavors: one
  13886. for compare-and-swap, one for unconditional exchange.
  13887. </p>
  13888. <dl compact="compact">
  13889. <dt><code>acmp32 [rd + offset16], rs</code></dt>
  13890. <dt><code>w0 = cmpxchg32_32 (rd + offset16, w0, ws)</code></dt>
  13891. <dd><p>Atomic compare-and-swap. Compares value in <code>w0</code> to value
  13892. addressed by <code>rd + offset16</code>. On match, the value addressed by
  13893. <code>rd + offset16</code> is replaced with the value in <code>ws</code>.
  13894. Regardless, the value that was at <code>rd + offset16</code> is
  13895. zero-extended and loaded into <code>w0</code>.
  13896. </p>
  13897. </dd>
  13898. <dt><code>axchg [rd + offset16], rs</code></dt>
  13899. <dt><code>ws = xchg32_32 (rd + offset16, ws)</code></dt>
  13900. <dd><p>Atomic exchange. Atomically exchanges the value in <code>ws</code> with
  13901. the value addressed by <code>rd + offset16</code>.
  13902. </p></dd>
  13903. </dl>
  13904. <p>The following instructions provide 32-bit atomic arithmetic operations.
  13905. </p>
  13906. <dl compact="compact">
  13907. <dt><code>aadd32 [rd + offset16], rs</code></dt>
  13908. <dt><code>lock *(u32 *)(rd + offset16) = rs</code></dt>
  13909. <dd><p>Atomic add instruction.
  13910. </p>
  13911. </dd>
  13912. <dt><code>aor32 [rd + offset16], rs</code></dt>
  13913. <dt><code>lock *(u32 *) (rd + offset16) |= rs</code></dt>
  13914. <dd><p>Atomic or instruction.
  13915. </p>
  13916. </dd>
  13917. <dt><code>aand32 [rd + offset16], rs</code></dt>
  13918. <dt><code>lock *(u32 *) (rd + offset16) &amp;= rs</code></dt>
  13919. <dd><p>Atomic and instruction.
  13920. </p>
  13921. </dd>
  13922. <dt><code>axor32 [rd + offset16], rs</code></dt>
  13923. <dt><code>lock *(u32 *) (rd + offset16) ^= rs</code></dt>
  13924. <dd><p>Atomic xor instruction
  13925. </p></dd>
  13926. </dl>
  13927. <p>The following variants perform fetching before the atomic operation.
  13928. </p>
  13929. <dl compact="compact">
  13930. <dt><code>afadd32 [dr + offset16], rs</code></dt>
  13931. <dt><code>ws = atomic_fetch_add ((u32 *)(rd + offset16), ws)</code></dt>
  13932. <dd><p>Atomic fetch-and-add instruction.
  13933. </p>
  13934. </dd>
  13935. <dt><code>afor32 [dr + offset16], rs</code></dt>
  13936. <dt><code>ws = atomic_fetch_or ((u32 *)(rd + offset16), ws)</code></dt>
  13937. <dd><p>Atomic fetch-and-or instruction.
  13938. </p>
  13939. </dd>
  13940. <dt><code>afand32 [dr + offset16], rs</code></dt>
  13941. <dt><code>ws = atomic_fetch_and ((u32 *)(rd + offset16), ws)</code></dt>
  13942. <dd><p>Atomic fetch-and-and instruction.
  13943. </p>
  13944. </dd>
  13945. <dt><code>afxor32 [dr + offset16], rs</code></dt>
  13946. <dt><code>ws = atomic_fetch_xor ((u32 *)(rd + offset16), ws)</code></dt>
  13947. <dd><p>Atomic fetch-and-or instruction
  13948. </p></dd>
  13949. </dl>
  13950. <p>The above instructions were introduced in the V3 of the BPF
  13951. instruction set. The following instruction is supported for backwards
  13952. compatibility:
  13953. </p>
  13954. <dl compact="compact">
  13955. <dt><code>xaddw [rd + offset16], rs</code></dt>
  13956. <dd><p>Alias to <code>aadd32</code>.
  13957. </p></dd>
  13958. </dl>
  13959. <hr>
  13960. <span id="CR16_002dDependent"></span><div class="header">
  13961. <p>
  13962. Next: <a href="#CRIS_002dDependent" accesskey="n" rel="next">CRIS-Dependent</a>, Previous: <a href="#BPF_002dDependent" accesskey="p" rel="prev">BPF-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  13963. </div>
  13964. <span id="CR16-Dependent-Features"></span><h3 class="section">9.8 CR16 Dependent Features</h3>
  13965. <span id="index-CR16-support"></span>
  13966. <table class="menu" border="0" cellspacing="0">
  13967. <tr><td align="left" valign="top">&bull; <a href="#CR16-Operand-Qualifiers" accesskey="1">CR16 Operand Qualifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">CR16 Machine Operand Qualifiers
  13968. </td></tr>
  13969. <tr><td align="left" valign="top">&bull; <a href="#CR16-Syntax" accesskey="2">CR16 Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax for the CR16
  13970. </td></tr>
  13971. </table>
  13972. <hr>
  13973. <span id="CR16-Operand-Qualifiers"></span><div class="header">
  13974. <p>
  13975. Next: <a href="#CR16-Syntax" accesskey="n" rel="next">CR16 Syntax</a>, Up: <a href="#CR16_002dDependent" accesskey="u" rel="up">CR16-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  13976. </div>
  13977. <span id="CR16-Operand-Qualifiers-1"></span><h4 class="subsection">9.8.1 CR16 Operand Qualifiers</h4>
  13978. <span id="index-CR16-Operand-Qualifiers"></span>
  13979. <p>The National Semiconductor CR16 target of <code>as</code> has a few machine dependent operand qualifiers.
  13980. </p>
  13981. <p>Operand expression type qualifier is an optional field in the instruction operand, to determines the type of the expression field of an operand. The <code>@</code> is required. CR16 architecture uses one of the following expression qualifiers:
  13982. </p>
  13983. <dl compact="compact">
  13984. <dt><code>s</code></dt>
  13985. <dd><p>- <code>Specifies expression operand type as small</code>
  13986. </p></dd>
  13987. <dt><code>m</code></dt>
  13988. <dd><p>- <code>Specifies expression operand type as medium</code>
  13989. </p></dd>
  13990. <dt><code>l</code></dt>
  13991. <dd><p>- <code>Specifies expression operand type as large</code>
  13992. </p></dd>
  13993. <dt><code>c</code></dt>
  13994. <dd><p>- <code>Specifies the CR16 Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time.</code>
  13995. </p></dd>
  13996. <dt><code>got/GOT</code></dt>
  13997. <dd><p>- <code>Specifies the CR16 Assembler generates a relocation entry for the operand, offset from Global Offset Table. The linker uses this relocation entry to update the operand address at link time</code>
  13998. </p></dd>
  13999. <dt><code>cgot/cGOT</code></dt>
  14000. <dd><p>- <code>Specifies the CompactRISC Assembler generates a relocation entry for the operand, where pc has implied bit, the expression is adjusted accordingly. The linker uses the relocation entry to update the operand address at link time.</code>
  14001. </p></dd>
  14002. </dl>
  14003. <p>CR16 target operand qualifiers and its size (in bits):
  14004. </p>
  14005. <dl compact="compact">
  14006. <dt>&lsquo;<samp>Immediate Operand: s</samp>&rsquo;</dt>
  14007. <dd><p>4 bits.
  14008. </p>
  14009. </dd>
  14010. <dt>&lsquo;<samp>Immediate Operand: m</samp>&rsquo;</dt>
  14011. <dd><p>16 bits, for movb and movw instructions.
  14012. </p>
  14013. </dd>
  14014. <dt>&lsquo;<samp>Immediate Operand: m</samp>&rsquo;</dt>
  14015. <dd><p>20 bits, movd instructions.
  14016. </p>
  14017. </dd>
  14018. <dt>&lsquo;<samp>Immediate Operand: l</samp>&rsquo;</dt>
  14019. <dd><p>32 bits.
  14020. </p>
  14021. </dd>
  14022. <dt>&lsquo;<samp>Absolute Operand: s</samp>&rsquo;</dt>
  14023. <dd><p>Illegal specifier for this operand.
  14024. </p>
  14025. </dd>
  14026. <dt>&lsquo;<samp>Absolute Operand: m</samp>&rsquo;</dt>
  14027. <dd><p>20 bits, movd instructions.
  14028. </p>
  14029. </dd>
  14030. <dt>&lsquo;<samp>Displacement Operand: s</samp>&rsquo;</dt>
  14031. <dd><p>8 bits.
  14032. </p>
  14033. </dd>
  14034. <dt>&lsquo;<samp>Displacement Operand: m</samp>&rsquo;</dt>
  14035. <dd><p>16 bits.
  14036. </p>
  14037. </dd>
  14038. <dt>&lsquo;<samp>Displacement Operand: l</samp>&rsquo;</dt>
  14039. <dd><p>24 bits.
  14040. </p>
  14041. </dd>
  14042. </dl>
  14043. <p>For example:
  14044. </p><div class="example">
  14045. <pre class="example">1 <code>movw $_myfun@c,r1</code>
  14046. This loads the address of _myfun, shifted right by 1, into r1.
  14047. 2 <code>movd $_myfun@c,(r2,r1)</code>
  14048. This loads the address of _myfun, shifted right by 1, into register-pair r2-r1.
  14049. 3 <code>_myfun_ptr:</code>
  14050. <code>.long _myfun@c</code>
  14051. <code>loadd _myfun_ptr, (r1,r0)</code>
  14052. <code>jal (r1,r0)</code>
  14053. This .long directive, the address of _myfunc, shifted right by 1 at link time.
  14054. 4 <code>loadd _data1@GOT(r12), (r1,r0)</code>
  14055. This loads the address of _data1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r2-r1.
  14056. 5 <code>loadd _myfunc@cGOT(r12), (r1,r0)</code>
  14057. This loads the address of _myfun, shifted right by 1, into global offset table (ie GOT) and its offset value from GOT loads into register-pair r1-r0.
  14058. </pre></div>
  14059. <hr>
  14060. <span id="CR16-Syntax"></span><div class="header">
  14061. <p>
  14062. Previous: <a href="#CR16-Operand-Qualifiers" accesskey="p" rel="prev">CR16 Operand Qualifiers</a>, Up: <a href="#CR16_002dDependent" accesskey="u" rel="up">CR16-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14063. </div>
  14064. <span id="CR16-Syntax-1"></span><h4 class="subsection">9.8.2 CR16 Syntax</h4>
  14065. <table class="menu" border="0" cellspacing="0">
  14066. <tr><td align="left" valign="top">&bull; <a href="#CR16_002dChars" accesskey="1">CR16-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  14067. </td></tr>
  14068. </table>
  14069. <hr>
  14070. <span id="CR16_002dChars"></span><div class="header">
  14071. <p>
  14072. Up: <a href="#CR16-Syntax" accesskey="u" rel="up">CR16 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14073. </div>
  14074. <span id="Special-Characters-5"></span><h4 class="subsubsection">9.8.2.1 Special Characters</h4>
  14075. <span id="index-line-comment-character_002c-CR16"></span>
  14076. <span id="index-CR16-line-comment-character"></span>
  14077. <p>The presence of a &lsquo;<samp>#</samp>&rsquo; on a line indicates the start of a comment
  14078. that extends to the end of the current line. If the &lsquo;<samp>#</samp>&rsquo; appears
  14079. as the first character of a line, the whole line is treated as a
  14080. comment, but in this case the line can also be a logical line number
  14081. directive (see <a href="#Comments">Comments</a>) or a preprocessor control command
  14082. (see <a href="#Preprocessing">Preprocessing</a>).
  14083. </p>
  14084. <span id="index-line-separator_002c-CR16"></span>
  14085. <span id="index-statement-separator_002c-CR16"></span>
  14086. <span id="index-CR16-line-separator"></span>
  14087. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used to separate statements on the same
  14088. line.
  14089. </p>
  14090. <hr>
  14091. <span id="CRIS_002dDependent"></span><div class="header">
  14092. <p>
  14093. Next: <a href="#C_002dSKY_002dDependent" accesskey="n" rel="next">C-SKY-Dependent</a>, Previous: <a href="#CR16_002dDependent" accesskey="p" rel="prev">CR16-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14094. </div>
  14095. <span id="CRIS-Dependent-Features"></span><h3 class="section">9.9 CRIS Dependent Features</h3>
  14096. <span id="index-CRIS-support"></span>
  14097. <table class="menu" border="0" cellspacing="0">
  14098. <tr><td align="left" valign="top">&bull; <a href="#CRIS_002dOpts" accesskey="1">CRIS-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command-line Options
  14099. </td></tr>
  14100. <tr><td align="left" valign="top">&bull; <a href="#CRIS_002dExpand" accesskey="2">CRIS-Expand</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Instruction expansion
  14101. </td></tr>
  14102. <tr><td align="left" valign="top">&bull; <a href="#CRIS_002dSymbols" accesskey="3">CRIS-Symbols</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbols
  14103. </td></tr>
  14104. <tr><td align="left" valign="top">&bull; <a href="#CRIS_002dSyntax" accesskey="4">CRIS-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  14105. </td></tr>
  14106. </table>
  14107. <hr>
  14108. <span id="CRIS_002dOpts"></span><div class="header">
  14109. <p>
  14110. Next: <a href="#CRIS_002dExpand" accesskey="n" rel="next">CRIS-Expand</a>, Up: <a href="#CRIS_002dDependent" accesskey="u" rel="up">CRIS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14111. </div>
  14112. <span id="Command_002dline-Options"></span><h4 class="subsection">9.9.1 Command-line Options</h4>
  14113. <span id="index-options_002c-CRIS"></span>
  14114. <span id="index-CRIS-options"></span>
  14115. <p>The CRIS version of <code>as</code> has these
  14116. machine-dependent command-line options.
  14117. </p>
  14118. <span id="index-_002d_002demulation_003dcriself-command_002dline-option_002c-CRIS"></span>
  14119. <span id="index-_002d_002demulation_003dcrisaout-command_002dline-option_002c-CRIS"></span>
  14120. <span id="index-CRIS-_002d_002demulation_003dcriself-command_002dline-option"></span>
  14121. <span id="index-CRIS-_002d_002demulation_003dcrisaout-command_002dline-option"></span>
  14122. <p>The format of the generated object files can be either ELF or
  14123. a.out, specified by the command-line options
  14124. <samp>--emulation=crisaout</samp> and <samp>--emulation=criself</samp>.
  14125. The default is ELF (criself), unless <code>as</code> has been
  14126. configured specifically for a.out by using the configuration
  14127. name <code>cris-axis-aout</code>.
  14128. </p>
  14129. <span id="index-_002d_002dunderscore-command_002dline-option_002c-CRIS"></span>
  14130. <span id="index-_002d_002dno_002dunderscore-command_002dline-option_002c-CRIS"></span>
  14131. <span id="index-CRIS-_002d_002dunderscore-command_002dline-option"></span>
  14132. <span id="index-CRIS-_002d_002dno_002dunderscore-command_002dline-option"></span>
  14133. <p>There are two different link-incompatible ELF object file
  14134. variants for CRIS, for use in environments where symbols are
  14135. expected to be prefixed by a leading &lsquo;<samp>_</samp>&rsquo; character and for
  14136. environments without such a symbol prefix. The variant used for
  14137. GNU/Linux port has no symbol prefix. Which variant to produce
  14138. is specified by either of the options <samp>--underscore</samp> and
  14139. <samp>--no-underscore</samp>. The default is <samp>--underscore</samp>.
  14140. Since symbols in CRIS a.out objects are expected to have a
  14141. &lsquo;<samp>_</samp>&rsquo; prefix, specifying <samp>--no-underscore</samp> when
  14142. generating a.out objects is an error. Besides the object format
  14143. difference, the effect of this option is to parse register names
  14144. differently (see <a href="#crisnous">crisnous</a>). The <samp>--no-underscore</samp>
  14145. option makes a &lsquo;<samp>$</samp>&rsquo; register prefix mandatory.
  14146. </p>
  14147. <span id="index-_002d_002dpic-command_002dline-option_002c-CRIS"></span>
  14148. <span id="index-CRIS-_002d_002dpic-command_002dline-option"></span>
  14149. <span id="index-Position_002dindependent-code_002c-CRIS"></span>
  14150. <span id="index-CRIS-position_002dindependent-code"></span>
  14151. <p>The option <samp>--pic</samp> must be passed to <code>as</code> in
  14152. order to recognize the symbol syntax used for ELF (SVR4 PIC)
  14153. position-independent-code (see <a href="#crispic">crispic</a>). This will also
  14154. affect expansion of instructions. The expansion with
  14155. <samp>--pic</samp> will use PC-relative rather than (slightly
  14156. faster) absolute addresses in those expansions. This option is only
  14157. valid when generating ELF format object files.
  14158. </p>
  14159. <span id="index-_002d_002dmarch_003darchitecture-command_002dline-option_002c-CRIS"></span>
  14160. <span id="index-CRIS-_002d_002dmarch_003darchitecture-command_002dline-option"></span>
  14161. <span id="index-Architecture-variant-option_002c-CRIS"></span>
  14162. <span id="index-CRIS-architecture-variant-option"></span>
  14163. <p>The option <samp>--march=<var>architecture</var></samp>
  14164. <span id="march_002doption"></span>specifies the recognized instruction set
  14165. and recognized register names. It also controls the
  14166. architecture type of the object file. Valid values for
  14167. <var>architecture</var> are:
  14168. </p><dl compact="compact">
  14169. <dt><code>v0_v10</code></dt>
  14170. <dd><p>All instructions and register names for any architecture variant
  14171. in the set v0&hellip;v10 are recognized. This is the
  14172. default if the target is configured as cris-*.
  14173. </p>
  14174. </dd>
  14175. <dt><code>v10</code></dt>
  14176. <dd><p>Only instructions and register names for CRIS v10 (as found in
  14177. ETRAX 100 LX) are recognized. This is the default if the target
  14178. is configured as crisv10-*.
  14179. </p>
  14180. </dd>
  14181. <dt><code>v32</code></dt>
  14182. <dd><p>Only instructions and register names for CRIS v32 (code name
  14183. Guinness) are recognized. This is the default if the target is
  14184. configured as crisv32-*. This value implies
  14185. <samp>--no-mul-bug-abort</samp>. (A subsequent
  14186. <samp>--mul-bug-abort</samp> will turn it back on.)
  14187. </p>
  14188. </dd>
  14189. <dt><code>common_v10_v32</code></dt>
  14190. <dd><p>Only instructions with register names and addressing modes with
  14191. opcodes common to the v10 and v32 are recognized.
  14192. </p></dd>
  14193. </dl>
  14194. <span id="index-_002dN-command_002dline-option_002c-CRIS"></span>
  14195. <span id="index-CRIS-_002dN-command_002dline-option"></span>
  14196. <p>When <samp>-N</samp> is specified, <code>as</code> will emit a
  14197. warning when a 16-bit branch instruction is expanded into a
  14198. 32-bit multiple-instruction construct (see <a href="#CRIS_002dExpand">CRIS-Expand</a>).
  14199. </p>
  14200. <span id="index-_002d_002dno_002dmul_002dbug_002dabort-command_002dline-option_002c-CRIS"></span>
  14201. <span id="index-_002d_002dmul_002dbug_002dabort-command_002dline-option_002c-CRIS"></span>
  14202. <span id="index-CRIS-_002d_002dno_002dmul_002dbug_002dabort-command_002dline-option"></span>
  14203. <span id="index-CRIS-_002d_002dmul_002dbug_002dabort-command_002dline-option"></span>
  14204. <p>Some versions of the CRIS v10, for example in the Etrax 100 LX,
  14205. contain a bug that causes destabilizing memory accesses when a
  14206. multiply instruction is executed with certain values in the
  14207. first operand just before a cache-miss. When the
  14208. <samp>--mul-bug-abort</samp> command-line option is active (the
  14209. default value), <code>as</code> will refuse to assemble a file
  14210. containing a multiply instruction at a dangerous offset, one
  14211. that could be the last on a cache-line, or is in a section with
  14212. insufficient alignment. This placement checking does not catch
  14213. any case where the multiply instruction is dangerously placed
  14214. because it is located in a delay-slot. The
  14215. <samp>--mul-bug-abort</samp> command-line option turns off the
  14216. checking.
  14217. </p>
  14218. <hr>
  14219. <span id="CRIS_002dExpand"></span><div class="header">
  14220. <p>
  14221. Next: <a href="#CRIS_002dSymbols" accesskey="n" rel="next">CRIS-Symbols</a>, Previous: <a href="#CRIS_002dOpts" accesskey="p" rel="prev">CRIS-Opts</a>, Up: <a href="#CRIS_002dDependent" accesskey="u" rel="up">CRIS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14222. </div>
  14223. <span id="Instruction-expansion"></span><h4 class="subsection">9.9.2 Instruction expansion</h4>
  14224. <span id="index-instruction-expansion_002c-CRIS"></span>
  14225. <span id="index-CRIS-instruction-expansion"></span>
  14226. <p><code>as</code> will silently choose an instruction that fits
  14227. the operand size for &lsquo;<samp>[register+constant]</samp>&rsquo; operands. For
  14228. example, the offset <code>127</code> in <code>move.d [r3+127],r4</code> fits
  14229. in an instruction using a signed-byte offset. Similarly,
  14230. <code>move.d [r2+32767],r1</code> will generate an instruction using a
  14231. 16-bit offset. For symbolic expressions and constants that do
  14232. not fit in 16 bits including the sign bit, a 32-bit offset is
  14233. generated.
  14234. </p>
  14235. <p>For branches, <code>as</code> will expand from a 16-bit branch
  14236. instruction into a sequence of instructions that can reach a
  14237. full 32-bit address. Since this does not correspond to a single
  14238. instruction, such expansions can optionally be warned about.
  14239. See <a href="#CRIS_002dOpts">CRIS-Opts</a>.
  14240. </p>
  14241. <p>If the operand is found to fit the range, a <code>lapc</code> mnemonic
  14242. will translate to a <code>lapcq</code> instruction. Use <code>lapc.d</code>
  14243. to force the 32-bit <code>lapc</code> instruction.
  14244. </p>
  14245. <p>Similarly, the <code>addo</code> mnemonic will translate to the
  14246. shortest fitting instruction of <code>addoq</code>, <code>addo.w</code> and
  14247. <code>addo.d</code>, when used with a operand that is a constant known
  14248. at assembly time.
  14249. </p>
  14250. <hr>
  14251. <span id="CRIS_002dSymbols"></span><div class="header">
  14252. <p>
  14253. Next: <a href="#CRIS_002dSyntax" accesskey="n" rel="next">CRIS-Syntax</a>, Previous: <a href="#CRIS_002dExpand" accesskey="p" rel="prev">CRIS-Expand</a>, Up: <a href="#CRIS_002dDependent" accesskey="u" rel="up">CRIS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14254. </div>
  14255. <span id="Symbols-3"></span><h4 class="subsection">9.9.3 Symbols</h4>
  14256. <span id="index-Symbols_002c-built_002din_002c-CRIS"></span>
  14257. <span id="index-Symbols_002c-CRIS_002c-built_002din"></span>
  14258. <span id="index-CRIS-built_002din-symbols"></span>
  14259. <span id="index-Built_002din-symbols_002c-CRIS"></span>
  14260. <p>Some symbols are defined by the assembler. They&rsquo;re intended to
  14261. be used in conditional assembly, for example:
  14262. </p><div class="example">
  14263. <pre class="example"> .if ..asm.arch.cris.v32
  14264. <var>code for CRIS v32</var>
  14265. .elseif ..asm.arch.cris.common_v10_v32
  14266. <var>code common to CRIS v32 and CRIS v10</var>
  14267. .elseif ..asm.arch.cris.v10 | ..asm.arch.cris.any_v0_v10
  14268. <var>code for v10</var>
  14269. .else
  14270. .error &quot;Code needs to be added here.&quot;
  14271. .endif
  14272. </pre></div>
  14273. <p>These symbols are defined in the assembler, reflecting
  14274. command-line options, either when specified or the default.
  14275. They are always defined, to 0 or 1.
  14276. </p><dl compact="compact">
  14277. <dt><code>..asm.arch.cris.any_v0_v10</code></dt>
  14278. <dd><p>This symbol is non-zero when <samp>--march=v0_v10</samp> is specified
  14279. or the default.
  14280. </p>
  14281. </dd>
  14282. <dt><code>..asm.arch.cris.common_v10_v32</code></dt>
  14283. <dd><p>Set according to the option <samp>--march=common_v10_v32</samp>.
  14284. </p>
  14285. </dd>
  14286. <dt><code>..asm.arch.cris.v10</code></dt>
  14287. <dd><p>Reflects the option <samp>--march=v10</samp>.
  14288. </p>
  14289. </dd>
  14290. <dt><code>..asm.arch.cris.v32</code></dt>
  14291. <dd><p>Corresponds to <samp>--march=v10</samp>.
  14292. </p></dd>
  14293. </dl>
  14294. <p>Speaking of symbols, when a symbol is used in code, it can have
  14295. a suffix modifying its value for use in position-independent
  14296. code. See <a href="#CRIS_002dPic">CRIS-Pic</a>.
  14297. </p>
  14298. <hr>
  14299. <span id="CRIS_002dSyntax"></span><div class="header">
  14300. <p>
  14301. Previous: <a href="#CRIS_002dSymbols" accesskey="p" rel="prev">CRIS-Symbols</a>, Up: <a href="#CRIS_002dDependent" accesskey="u" rel="up">CRIS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14302. </div>
  14303. <span id="Syntax-8"></span><h4 class="subsection">9.9.4 Syntax</h4>
  14304. <p>There are different aspects of the CRIS assembly syntax.
  14305. </p>
  14306. <table class="menu" border="0" cellspacing="0">
  14307. <tr><td align="left" valign="top">&bull; <a href="#CRIS_002dChars" accesskey="1">CRIS-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  14308. </td></tr>
  14309. <tr><td align="left" valign="top">&bull; <a href="#CRIS_002dPic" accesskey="2">CRIS-Pic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Position-Independent Code Symbols
  14310. </td></tr>
  14311. <tr><td align="left" valign="top">&bull; <a href="#CRIS_002dRegs" accesskey="3">CRIS-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  14312. </td></tr>
  14313. <tr><td align="left" valign="top">&bull; <a href="#CRIS_002dPseudos" accesskey="4">CRIS-Pseudos</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Directives
  14314. </td></tr>
  14315. </table>
  14316. <hr>
  14317. <span id="CRIS_002dChars"></span><div class="header">
  14318. <p>
  14319. Next: <a href="#CRIS_002dPic" accesskey="n" rel="next">CRIS-Pic</a>, Up: <a href="#CRIS_002dSyntax" accesskey="u" rel="up">CRIS-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14320. </div>
  14321. <span id="Special-Characters-6"></span><h4 class="subsubsection">9.9.4.1 Special Characters</h4>
  14322. <span id="index-line-comment-characters_002c-CRIS"></span>
  14323. <span id="index-CRIS-line-comment-characters"></span>
  14324. <p>The character &lsquo;<samp>#</samp>&rsquo; is a line comment character. It starts a
  14325. comment if and only if it is placed at the beginning of a line.
  14326. </p>
  14327. <p>A &lsquo;<samp>;</samp>&rsquo; character starts a comment anywhere on the line,
  14328. causing all characters up to the end of the line to be ignored.
  14329. </p>
  14330. <p>A &lsquo;<samp>@</samp>&rsquo; character is handled as a line separator equivalent
  14331. to a logical new-line character (except in a comment), so
  14332. separate instructions can be specified on a single line.
  14333. </p>
  14334. <hr>
  14335. <span id="CRIS_002dPic"></span><div class="header">
  14336. <p>
  14337. Next: <a href="#CRIS_002dRegs" accesskey="n" rel="next">CRIS-Regs</a>, Previous: <a href="#CRIS_002dChars" accesskey="p" rel="prev">CRIS-Chars</a>, Up: <a href="#CRIS_002dSyntax" accesskey="u" rel="up">CRIS-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14338. </div>
  14339. <span id="Symbols-in-position_002dindependent-code"></span><h4 class="subsubsection">9.9.4.2 Symbols in position-independent code</h4>
  14340. <span id="index-Symbols-in-position_002dindependent-code_002c-CRIS"></span>
  14341. <span id="index-CRIS-symbols-in-position_002dindependent-code"></span>
  14342. <span id="index-Position_002dindependent-code_002c-symbols-in_002c-CRIS"></span>
  14343. <p>When generating <span id="crispic"></span>position-independent code (SVR4
  14344. PIC) for use in cris-axis-linux-gnu or crisv32-axis-linux-gnu
  14345. shared libraries, symbol
  14346. suffixes are used to specify what kind of run-time symbol lookup
  14347. will be used, expressed in the object as different
  14348. <em>relocation types</em>. Usually, all absolute symbol values
  14349. must be located in a table, the <em>global offset table</em>,
  14350. leaving the code position-independent; independent of values of
  14351. global symbols and independent of the address of the code. The
  14352. suffix modifies the value of the symbol, into for example an
  14353. index into the global offset table where the real symbol value
  14354. is entered, or a PC-relative value, or a value relative to the
  14355. start of the global offset table. All symbol suffixes start
  14356. with the character &lsquo;<samp>:</samp>&rsquo; (omitted in the list below). Every
  14357. symbol use in code or a read-only section must therefore have a
  14358. PIC suffix to enable a useful shared library to be created.
  14359. Usually, these constructs must not be used with an additive
  14360. constant offset as is usually allowed, i.e. no 4 as in
  14361. <code>symbol + 4</code> is allowed. This restriction is checked at
  14362. link-time, not at assembly-time.
  14363. </p>
  14364. <dl compact="compact">
  14365. <dt><code>GOT</code></dt>
  14366. <dd>
  14367. <p>Attaching this suffix to a symbol in an instruction causes the
  14368. symbol to be entered into the global offset table. The value is
  14369. a 32-bit index for that symbol into the global offset table.
  14370. The name of the corresponding relocation is
  14371. &lsquo;<samp>R_CRIS_32_GOT</samp>&rsquo;. Example: <code>move.d
  14372. [$r0+extsym:GOT],$r9</code>
  14373. </p>
  14374. </dd>
  14375. <dt><code>GOT16</code></dt>
  14376. <dd>
  14377. <p>Same as for &lsquo;<samp>GOT</samp>&rsquo;, but the value is a 16-bit index into the
  14378. global offset table. The corresponding relocation is
  14379. &lsquo;<samp>R_CRIS_16_GOT</samp>&rsquo;. Example: <code>move.d
  14380. [$r0+asymbol:GOT16],$r10</code>
  14381. </p>
  14382. </dd>
  14383. <dt><code>PLT</code></dt>
  14384. <dd>
  14385. <p>This suffix is used for function symbols. It causes a
  14386. <em>procedure linkage table</em>, an array of code stubs, to be
  14387. created at the time the shared object is created or linked
  14388. against, together with a global offset table entry. The value
  14389. is a pc-relative offset to the corresponding stub code in the
  14390. procedure linkage table. This arrangement causes the run-time
  14391. symbol resolver to be called to look up and set the value of the
  14392. symbol the first time the function is called (at latest;
  14393. depending environment variables). It is only safe to leave the
  14394. symbol unresolved this way if all references are function calls.
  14395. The name of the relocation is &lsquo;<samp>R_CRIS_32_PLT_PCREL</samp>&rsquo;.
  14396. Example: <code>add.d fnname:PLT,$pc</code>
  14397. </p>
  14398. </dd>
  14399. <dt><code>PLTG</code></dt>
  14400. <dd>
  14401. <p>Like PLT, but the value is relative to the beginning of the
  14402. global offset table. The relocation is
  14403. &lsquo;<samp>R_CRIS_32_PLT_GOTREL</samp>&rsquo;. Example: <code>move.d
  14404. fnname:PLTG,$r3</code>
  14405. </p>
  14406. </dd>
  14407. <dt><code>GOTPLT</code></dt>
  14408. <dd>
  14409. <p>Similar to &lsquo;<samp>PLT</samp>&rsquo;, but the value of the symbol is a 32-bit
  14410. index into the global offset table. This is somewhat of a mix
  14411. between the effect of the &lsquo;<samp>GOT</samp>&rsquo; and the &lsquo;<samp>PLT</samp>&rsquo; suffix;
  14412. the difference to &lsquo;<samp>GOT</samp>&rsquo; is that there will be a procedure
  14413. linkage table entry created, and that the symbol is assumed to
  14414. be a function entry and will be resolved by the run-time
  14415. resolver as with &lsquo;<samp>PLT</samp>&rsquo;. The relocation is
  14416. &lsquo;<samp>R_CRIS_32_GOTPLT</samp>&rsquo;. Example: <code>jsr
  14417. [$r0+fnname:GOTPLT]</code>
  14418. </p>
  14419. </dd>
  14420. <dt><code>GOTPLT16</code></dt>
  14421. <dd>
  14422. <p>A variant of &lsquo;<samp>GOTPLT</samp>&rsquo; giving a 16-bit value. Its
  14423. relocation name is &lsquo;<samp>R_CRIS_16_GOTPLT</samp>&rsquo;. Example: <code>jsr
  14424. [$r0+fnname:GOTPLT16]</code>
  14425. </p>
  14426. </dd>
  14427. <dt><code>GOTOFF</code></dt>
  14428. <dd>
  14429. <p>This suffix must only be attached to a local symbol, but may be
  14430. used in an expression adding an offset. The value is the
  14431. address of the symbol relative to the start of the global offset
  14432. table. The relocation name is &lsquo;<samp>R_CRIS_32_GOTREL</samp>&rsquo;.
  14433. Example: <code>move.d [$r0+localsym:GOTOFF],r3</code>
  14434. </p></dd>
  14435. </dl>
  14436. <hr>
  14437. <span id="CRIS_002dRegs"></span><div class="header">
  14438. <p>
  14439. Next: <a href="#CRIS_002dPseudos" accesskey="n" rel="next">CRIS-Pseudos</a>, Previous: <a href="#CRIS_002dPic" accesskey="p" rel="prev">CRIS-Pic</a>, Up: <a href="#CRIS_002dSyntax" accesskey="u" rel="up">CRIS-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14440. </div>
  14441. <span id="Register-names"></span><h4 class="subsubsection">9.9.4.3 Register names</h4>
  14442. <span id="index-register-names_002c-CRIS"></span>
  14443. <span id="index-CRIS-register-names"></span>
  14444. <p>A &lsquo;<samp>$</samp>&rsquo; character may always prefix a general or special
  14445. register name in an instruction operand but is mandatory when
  14446. the option <samp>--no-underscore</samp> is specified or when the
  14447. <code>.syntax register_prefix</code> directive is in effect
  14448. (see <a href="#crisnous">crisnous</a>). Register names are case-insensitive.
  14449. </p>
  14450. <hr>
  14451. <span id="CRIS_002dPseudos"></span><div class="header">
  14452. <p>
  14453. Previous: <a href="#CRIS_002dRegs" accesskey="p" rel="prev">CRIS-Regs</a>, Up: <a href="#CRIS_002dSyntax" accesskey="u" rel="up">CRIS-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14454. </div>
  14455. <span id="Assembler-Directives-1"></span><h4 class="subsubsection">9.9.4.4 Assembler Directives</h4>
  14456. <span id="index-assembler-directives_002c-CRIS"></span>
  14457. <span id="index-pseudo_002dops_002c-CRIS"></span>
  14458. <span id="index-CRIS-assembler-directives"></span>
  14459. <span id="index-CRIS-pseudo_002dops"></span>
  14460. <p>There are a few CRIS-specific pseudo-directives in addition to
  14461. the generic ones. See <a href="#Pseudo-Ops">Pseudo Ops</a>. Constants emitted by
  14462. pseudo-directives are in little-endian order for CRIS. There is
  14463. no support for floating-point-specific directives for CRIS.
  14464. </p>
  14465. <dl compact="compact">
  14466. <dt><code>.dword EXPRESSIONS</code></dt>
  14467. <dd><span id="index-assembler-directive-_002edword_002c-CRIS"></span>
  14468. <span id="index-pseudo_002dop-_002edword_002c-CRIS"></span>
  14469. <span id="index-CRIS-assembler-directive-_002edword"></span>
  14470. <span id="index-CRIS-pseudo_002dop-_002edword"></span>
  14471. <p>The <code>.dword</code> directive is a synonym for <code>.int</code>,
  14472. expecting zero or more EXPRESSIONS, separated by commas. For
  14473. each expression, a 32-bit little-endian constant is emitted.
  14474. </p>
  14475. </dd>
  14476. <dt><code>.syntax ARGUMENT</code></dt>
  14477. <dd><span id="index-assembler-directive-_002esyntax_002c-CRIS"></span>
  14478. <span id="index-pseudo_002dop-_002esyntax_002c-CRIS"></span>
  14479. <span id="index-CRIS-assembler-directive-_002esyntax"></span>
  14480. <span id="index-CRIS-pseudo_002dop-_002esyntax"></span>
  14481. <p>The <code>.syntax</code> directive takes as <var>ARGUMENT</var> one of the
  14482. following case-sensitive choices.
  14483. </p>
  14484. <dl compact="compact">
  14485. <dt><code>no_register_prefix</code></dt>
  14486. <dd>
  14487. <p>The <code>.syntax no_register_prefix</code> <span id="crisnous"></span>directive
  14488. makes a &lsquo;<samp>$</samp>&rsquo; character prefix on all registers optional. It
  14489. overrides a previous setting, including the corresponding effect
  14490. of the option <samp>--no-underscore</samp>. If this directive is
  14491. used when ordinary symbols do not have a &lsquo;<samp>_</samp>&rsquo; character
  14492. prefix, care must be taken to avoid ambiguities whether an
  14493. operand is a register or a symbol; using symbols with names the
  14494. same as general or special registers then invoke undefined
  14495. behavior.
  14496. </p>
  14497. </dd>
  14498. <dt><code>register_prefix</code></dt>
  14499. <dd>
  14500. <p>This directive makes a &lsquo;<samp>$</samp>&rsquo; character prefix on all
  14501. registers mandatory. It overrides a previous setting, including
  14502. the corresponding effect of the option <samp>--underscore</samp>.
  14503. </p>
  14504. </dd>
  14505. <dt><code>leading_underscore</code></dt>
  14506. <dd>
  14507. <p>This is an assertion directive, emitting an error if the
  14508. <samp>--no-underscore</samp> option is in effect.
  14509. </p>
  14510. </dd>
  14511. <dt><code>no_leading_underscore</code></dt>
  14512. <dd>
  14513. <p>This is the opposite of the <code>.syntax leading_underscore</code>
  14514. directive and emits an error if the option <samp>--underscore</samp>
  14515. is in effect.
  14516. </p></dd>
  14517. </dl>
  14518. </dd>
  14519. <dt><code>.arch ARGUMENT</code></dt>
  14520. <dd><span id="index-assembler-directive-_002earch_002c-CRIS"></span>
  14521. <span id="index-pseudo_002dop-_002earch_002c-CRIS"></span>
  14522. <span id="index-CRIS-assembler-directive-_002earch"></span>
  14523. <span id="index-CRIS-pseudo_002dop-_002earch"></span>
  14524. <p>This is an assertion directive, giving an error if the specified
  14525. <var>ARGUMENT</var> is not the same as the specified or default value
  14526. for the <samp>--march=<var>architecture</var></samp> option
  14527. (see <a href="#march_002doption">march-option</a>).
  14528. </p>
  14529. </dd>
  14530. </dl>
  14531. <hr>
  14532. <span id="C_002dSKY_002dDependent"></span><div class="header">
  14533. <p>
  14534. Next: <a href="#D10V_002dDependent" accesskey="n" rel="next">D10V-Dependent</a>, Previous: <a href="#CRIS_002dDependent" accesskey="p" rel="prev">CRIS-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14535. </div>
  14536. <span id="C_002dSKY-Dependent-Features"></span><h3 class="section">9.10 C-SKY Dependent Features</h3>
  14537. <span id="index-C_002dSKY-support"></span>
  14538. <table class="menu" border="0" cellspacing="0">
  14539. <tr><td align="left" valign="top">&bull; <a href="#C_002dSKY-Options" accesskey="1">C-SKY Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  14540. </td></tr>
  14541. <tr><td align="left" valign="top">&bull; <a href="#C_002dSKY-Syntax" accesskey="2">C-SKY Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  14542. </td></tr>
  14543. </table>
  14544. <hr>
  14545. <span id="C_002dSKY-Options"></span><div class="header">
  14546. <p>
  14547. Next: <a href="#C_002dSKY-Syntax" accesskey="n" rel="next">C-SKY Syntax</a>, Up: <a href="#C_002dSKY_002dDependent" accesskey="u" rel="up">C-SKY-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14548. </div>
  14549. <span id="Options-6"></span><h4 class="subsection">9.10.1 Options</h4>
  14550. <span id="index-C_002dSKY-options"></span>
  14551. <span id="index-options-for-C_002dSKY"></span>
  14552. <dl compact="compact">
  14553. <dd>
  14554. <span id="index-march-command_002dline-option_002c-C_002dSKY"></span>
  14555. </dd>
  14556. <dt><code>-march=<var>archname</var></code></dt>
  14557. <dd><p>Assemble for architecture <var>archname</var>. The <samp>--help</samp> option
  14558. lists valid values for <var>archname</var>.
  14559. </p>
  14560. <span id="index-mcpu-command_002dline-option_002c-C_002dSKY"></span>
  14561. </dd>
  14562. <dt><code>-mcpu=<var>cpuname</var></code></dt>
  14563. <dd><p>Assemble for architecture <var>cpuname</var>. The <samp>--help</samp> option
  14564. lists valid values for <var>cpuname</var>.
  14565. </p>
  14566. <span id="index-EL-command_002dline-option_002c-C_002dSKY"></span>
  14567. <span id="index-mlittle_002dendian-command_002dline-option_002c-C_002dSKY"></span>
  14568. </dd>
  14569. <dt><code>-EL</code></dt>
  14570. <dt><code>-mlittle-endian</code></dt>
  14571. <dd><p>Generate little-endian output.
  14572. </p>
  14573. <span id="index-EB-command_002dline-option_002c-C_002dSKY"></span>
  14574. <span id="index-mbig_002dendian-command_002dline-option_002c-C_002dSKY"></span>
  14575. </dd>
  14576. <dt><code>-EB</code></dt>
  14577. <dt><code>-mbig-endian</code></dt>
  14578. <dd><p>Generate big-endian output.
  14579. </p>
  14580. <span id="index-fpic-command_002dline-option_002c-C_002dSKY"></span>
  14581. <span id="index-pic-command_002dline-option_002c-C_002dSKY"></span>
  14582. </dd>
  14583. <dt><code>-fpic</code></dt>
  14584. <dt><code>-pic</code></dt>
  14585. <dd><p>Generate position-independent code.
  14586. </p>
  14587. <span id="index-mljump-command_002dline-option_002c-C_002dSKY"></span>
  14588. <span id="index-mno_002dljump-command_002dline-option_002c-C_002dSKY"></span>
  14589. </dd>
  14590. <dt><code>-mljump</code></dt>
  14591. <dt><code>-mno-ljump</code></dt>
  14592. <dd><p>Enable/disable transformation of the short branch instructions
  14593. <code>jbf</code>, <code>jbt</code>, and <code>jbr</code> to <code>jmpi</code>.
  14594. This option is for V2 processors only.
  14595. It is ignored on CK801 and CK802 targets, which do not support the <code>jmpi</code>
  14596. instruction, and is enabled by default for other processors.
  14597. </p>
  14598. <span id="index-mbranch_002dstub-command_002dline-option_002c-C_002dSKY"></span>
  14599. <span id="index-mno_002dbranch_002dstub-command_002dline-option_002c-C_002dSKY"></span>
  14600. </dd>
  14601. <dt><code>-mbranch-stub</code></dt>
  14602. <dt><code>-mno-branch-stub</code></dt>
  14603. <dd><p>Pass through <code>R_CKCORE_PCREL_IMM26BY2</code> relocations for <code>bsr</code>
  14604. instructions to the linker.
  14605. </p>
  14606. <p>This option is only available for bare-metal C-SKY V2 ELF targets,
  14607. where it is enabled by default. It cannot be used in code that will be
  14608. dynamically linked against shared libraries.
  14609. </p>
  14610. <span id="index-force2bsr-command_002dline-option_002c-C_002dSKY"></span>
  14611. <span id="index-mforce2bsr-command_002dline-option_002c-C_002dSKY"></span>
  14612. <span id="index-no_002dforce2bsr-command_002dline-option_002c-C_002dSKY"></span>
  14613. <span id="index-mno_002dforce2bsr-command_002dline-option_002c-C_002dSKY"></span>
  14614. </dd>
  14615. <dt><code>-force2bsr</code></dt>
  14616. <dt><code>-mforce2bsr</code></dt>
  14617. <dt><code>-no-force2bsr</code></dt>
  14618. <dt><code>-mno-force2bsr</code></dt>
  14619. <dd><p>Enable/disable transformation of <code>jbsr</code> instructions to <code>bsr</code>.
  14620. This option is always enabled (and <samp>-mno-force2bsr</samp> is ignored)
  14621. for CK801/CK802 targets. It is also always enabled when
  14622. <samp>-mbranch-stub</samp> is in effect.
  14623. </p>
  14624. <span id="index-jsri2bsr-command_002dline-option_002c-C_002dSKY"></span>
  14625. <span id="index-mjsri2bsr-command_002dline-option_002c-C_002dSKY"></span>
  14626. <span id="index-no_002djsri2bsr-command_002dline-option_002c-C_002dSKY"></span>
  14627. <span id="index-mno_002djsri2bsr-command_002dline-option_002c-C_002dSKY"></span>
  14628. </dd>
  14629. <dt><code>-jsri2bsr</code></dt>
  14630. <dt><code>-mjsri2bsr</code></dt>
  14631. <dt><code>-no-jsri2bsr</code></dt>
  14632. <dt><code>-mno-jsri2bsr</code></dt>
  14633. <dd><p>Enable/disable transformation of <code>jsri</code> instructions to <code>bsr</code>.
  14634. This option is enabled by default.
  14635. </p>
  14636. <span id="index-mnolrw-command_002dline-option_002c-C_002dSKY"></span>
  14637. <span id="index-mno_002dlrw-command_002dline-option_002c-C_002dSKY"></span>
  14638. </dd>
  14639. <dt><code>-mnolrw</code></dt>
  14640. <dt><code>-mno-lrw</code></dt>
  14641. <dd><p>Enable/disable transformation of <code>lrw</code> instructions into a
  14642. <code>movih</code>/<code>ori</code> pair.
  14643. </p>
  14644. <span id="index-melrw-command_002dline-option_002c-C_002dSKY"></span>
  14645. <span id="index-mno_002delrw-command_002dline-option_002c-C_002dSKY"></span>
  14646. </dd>
  14647. <dt><code>-melrw</code></dt>
  14648. <dt><code>-mno-elrw</code></dt>
  14649. <dd><p>Enable/disable extended <code>lrw</code> instructions.
  14650. This option is enabled by default for CK800-series processors.
  14651. </p>
  14652. <span id="index-mlaf-command_002dline-option_002c-C_002dSKY"></span>
  14653. <span id="index-mliterals_002dafter_002dfunc-command_002dline-option_002c-C_002dSKY"></span>
  14654. <span id="index-mno_002dlaf-command_002dline-option_002c-C_002dSKY"></span>
  14655. <span id="index-mno_002dliterals_002dafter_002dfunc-command_002dline-option_002c-C_002dSKY"></span>
  14656. </dd>
  14657. <dt><code>-mlaf</code></dt>
  14658. <dt><code>-mliterals-after-func</code></dt>
  14659. <dt><code>-mno-laf</code></dt>
  14660. <dt><code>-mno-literals-after-func</code></dt>
  14661. <dd><p>Enable/disable placement of literal pools after each function.
  14662. </p>
  14663. <span id="index-mlabr-command_002dline-option_002c-C_002dSKY"></span>
  14664. <span id="index-mliterals_002dafter_002dbr-command_002dline-option_002c-C_002dSKY"></span>
  14665. <span id="index-mno_002dlabr-command_002dline-option_002c-C_002dSKY"></span>
  14666. <span id="index-mnoliterals_002dafter_002dbr-command_002dline-option_002c-C_002dSKY"></span>
  14667. </dd>
  14668. <dt><code>-mlabr</code></dt>
  14669. <dt><code>-mliterals-after-br</code></dt>
  14670. <dt><code>-mno-labr</code></dt>
  14671. <dt><code>-mnoliterals-after-br</code></dt>
  14672. <dd><p>Enable/disable placement of literal pools after unconditional branches.
  14673. This option is enabled by default.
  14674. </p>
  14675. <span id="index-mistack-command_002dline-option_002c-C_002dSKY"></span>
  14676. <span id="index-mno_002distack-command_002dline-option_002c-C_002dSKY"></span>
  14677. </dd>
  14678. <dt><code>-mistack</code></dt>
  14679. <dt><code>-mno-istack</code></dt>
  14680. <dd><p>Enable/disable interrupt stack instructions. This option is enabled by
  14681. default on CK801, CK802, and CK802 processors.
  14682. </p>
  14683. </dd>
  14684. </dl>
  14685. <p>The following options explicitly enable certain optional instructions.
  14686. These features are also enabled implicitly by using <code>-mcpu=</code> to specify
  14687. a processor that supports it.
  14688. </p>
  14689. <dl compact="compact">
  14690. <dd><span id="index-mhard_002dfloat-command_002dline-option_002c-C_002dSKY"></span>
  14691. </dd>
  14692. <dt><code>-mhard-float</code></dt>
  14693. <dd><p>Enable hard float instructions.
  14694. </p>
  14695. <span id="index-mmp-command_002dline-option_002c-C_002dSKY"></span>
  14696. </dd>
  14697. <dt><code>-mmp</code></dt>
  14698. <dd><p>Enable multiprocessor instructions.
  14699. </p>
  14700. <span id="index-mcp-command_002dline-option_002c-C_002dSKY"></span>
  14701. </dd>
  14702. <dt><code>-mcp</code></dt>
  14703. <dd><p>Enable coprocessor instructions.
  14704. </p>
  14705. <span id="index-mcache-command_002dline-option_002c-C_002dSKY"></span>
  14706. </dd>
  14707. <dt><code>-mcache</code></dt>
  14708. <dd><p>Enable cache prefetch instruction.
  14709. </p>
  14710. <span id="index-msecurity-command_002dline-option_002c-C_002dSKY"></span>
  14711. </dd>
  14712. <dt><code>-msecurity</code></dt>
  14713. <dd><p>Enable C-SKY security instructions.
  14714. </p>
  14715. <span id="index-mtrust-command_002dline-option_002c-C_002dSKY"></span>
  14716. </dd>
  14717. <dt><code>-mtrust</code></dt>
  14718. <dd><p>Enable C-SKY trust instructions.
  14719. </p>
  14720. <span id="index-mdsp-command_002dline-option_002c-C_002dSKY"></span>
  14721. </dd>
  14722. <dt><code>-mdsp</code></dt>
  14723. <dd><p>Enable DSP instructions.
  14724. </p>
  14725. <span id="index-medsp-command_002dline-option_002c-C_002dSKY"></span>
  14726. </dd>
  14727. <dt><code>-medsp</code></dt>
  14728. <dd><p>Enable enhanced DSP instructions.
  14729. </p>
  14730. <span id="index-mvdsp-command_002dline-option_002c-C_002dSKY"></span>
  14731. </dd>
  14732. <dt><code>-mvdsp</code></dt>
  14733. <dd><p>Enable vector DSP instructions.
  14734. </p>
  14735. </dd>
  14736. </dl>
  14737. <hr>
  14738. <span id="C_002dSKY-Syntax"></span><div class="header">
  14739. <p>
  14740. Previous: <a href="#C_002dSKY-Options" accesskey="p" rel="prev">C-SKY Options</a>, Up: <a href="#C_002dSKY_002dDependent" accesskey="u" rel="up">C-SKY-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14741. </div>
  14742. <span id="Syntax-9"></span><h4 class="subsection">9.10.2 Syntax</h4>
  14743. <p><code>as</code> implements the standard C-SKY assembler syntax
  14744. documented in the
  14745. <cite>C-SKY V2 CPU Applications Binary Interface Standards Manual</cite>.
  14746. </p>
  14747. <hr>
  14748. <span id="D10V_002dDependent"></span><div class="header">
  14749. <p>
  14750. Next: <a href="#D30V_002dDependent" accesskey="n" rel="next">D30V-Dependent</a>, Previous: <a href="#C_002dSKY_002dDependent" accesskey="p" rel="prev">C-SKY-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14751. </div>
  14752. <span id="D10V-Dependent-Features"></span><h3 class="section">9.11 D10V Dependent Features</h3>
  14753. <span id="index-D10V-support"></span>
  14754. <table class="menu" border="0" cellspacing="0">
  14755. <tr><td align="left" valign="top">&bull; <a href="#D10V_002dOpts" accesskey="1">D10V-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">D10V Options
  14756. </td></tr>
  14757. <tr><td align="left" valign="top">&bull; <a href="#D10V_002dSyntax" accesskey="2">D10V-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  14758. </td></tr>
  14759. <tr><td align="left" valign="top">&bull; <a href="#D10V_002dFloat" accesskey="3">D10V-Float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  14760. </td></tr>
  14761. <tr><td align="left" valign="top">&bull; <a href="#D10V_002dOpcodes" accesskey="4">D10V-Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  14762. </td></tr>
  14763. </table>
  14764. <hr>
  14765. <span id="D10V_002dOpts"></span><div class="header">
  14766. <p>
  14767. Next: <a href="#D10V_002dSyntax" accesskey="n" rel="next">D10V-Syntax</a>, Up: <a href="#D10V_002dDependent" accesskey="u" rel="up">D10V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14768. </div>
  14769. <span id="D10V-Options"></span><h4 class="subsection">9.11.1 D10V Options</h4>
  14770. <span id="index-options_002c-D10V"></span>
  14771. <span id="index-D10V-options"></span>
  14772. <p>The Mitsubishi D10V version of <code>as</code> has a few machine
  14773. dependent options.
  14774. </p>
  14775. <dl compact="compact">
  14776. <dt>&lsquo;<samp>-O</samp>&rsquo;</dt>
  14777. <dd><p>The D10V can often execute two sub-instructions in parallel. When this option
  14778. is used, <code>as</code> will attempt to optimize its output by detecting when
  14779. instructions can be executed in parallel.
  14780. </p></dd>
  14781. <dt>&lsquo;<samp>--nowarnswap</samp>&rsquo;</dt>
  14782. <dd><p>To optimize execution performance, <code>as</code> will sometimes swap the
  14783. order of instructions. Normally this generates a warning. When this option
  14784. is used, no warning will be generated when instructions are swapped.
  14785. </p></dd>
  14786. <dt>&lsquo;<samp>--gstabs-packing</samp>&rsquo;</dt>
  14787. <dt>&lsquo;<samp>--no-gstabs-packing</samp>&rsquo;</dt>
  14788. <dd><p><code>as</code> packs adjacent short instructions into a single packed
  14789. instruction. &lsquo;<samp>--no-gstabs-packing</samp>&rsquo; turns instruction packing off if
  14790. &lsquo;<samp>--gstabs</samp>&rsquo; is specified as well; &lsquo;<samp>--gstabs-packing</samp>&rsquo; (the
  14791. default) turns instruction packing on even when &lsquo;<samp>--gstabs</samp>&rsquo; is
  14792. specified.
  14793. </p></dd>
  14794. </dl>
  14795. <hr>
  14796. <span id="D10V_002dSyntax"></span><div class="header">
  14797. <p>
  14798. Next: <a href="#D10V_002dFloat" accesskey="n" rel="next">D10V-Float</a>, Previous: <a href="#D10V_002dOpts" accesskey="p" rel="prev">D10V-Opts</a>, Up: <a href="#D10V_002dDependent" accesskey="u" rel="up">D10V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14799. </div>
  14800. <span id="Syntax-10"></span><h4 class="subsection">9.11.2 Syntax</h4>
  14801. <span id="index-D10V-syntax"></span>
  14802. <span id="index-syntax_002c-D10V"></span>
  14803. <p>The D10V syntax is based on the syntax in Mitsubishi&rsquo;s D10V architecture manual.
  14804. The differences are detailed below.
  14805. </p>
  14806. <table class="menu" border="0" cellspacing="0">
  14807. <tr><td align="left" valign="top">&bull; <a href="#D10V_002dSize" accesskey="1">D10V-Size</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Size Modifiers
  14808. </td></tr>
  14809. <tr><td align="left" valign="top">&bull; <a href="#D10V_002dSubs" accesskey="2">D10V-Subs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Sub-Instructions
  14810. </td></tr>
  14811. <tr><td align="left" valign="top">&bull; <a href="#D10V_002dChars" accesskey="3">D10V-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  14812. </td></tr>
  14813. <tr><td align="left" valign="top">&bull; <a href="#D10V_002dRegs" accesskey="4">D10V-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  14814. </td></tr>
  14815. <tr><td align="left" valign="top">&bull; <a href="#D10V_002dAddressing" accesskey="5">D10V-Addressing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Addressing Modes
  14816. </td></tr>
  14817. <tr><td align="left" valign="top">&bull; <a href="#D10V_002dWord" accesskey="6">D10V-Word</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">@WORD Modifier
  14818. </td></tr>
  14819. </table>
  14820. <hr>
  14821. <span id="D10V_002dSize"></span><div class="header">
  14822. <p>
  14823. Next: <a href="#D10V_002dSubs" accesskey="n" rel="next">D10V-Subs</a>, Up: <a href="#D10V_002dSyntax" accesskey="u" rel="up">D10V-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14824. </div>
  14825. <span id="Size-Modifiers"></span><h4 class="subsubsection">9.11.2.1 Size Modifiers</h4>
  14826. <span id="index-D10V-size-modifiers"></span>
  14827. <span id="index-size-modifiers_002c-D10V"></span>
  14828. <p>The D10V version of <code>as</code> uses the instruction names in the D10V
  14829. Architecture Manual. However, the names in the manual are sometimes ambiguous.
  14830. There are instruction names that can assemble to a short or long form opcode.
  14831. How does the assembler pick the correct form? <code>as</code> will always pick the
  14832. smallest form if it can. When dealing with a symbol that is not defined yet when a
  14833. line is being assembled, it will always use the long form. If you need to force the
  14834. assembler to use either the short or long form of the instruction, you can append
  14835. either &lsquo;<samp>.s</samp>&rsquo; (short) or &lsquo;<samp>.l</samp>&rsquo; (long) to it. For example, if you are writing
  14836. an assembly program and you want to do a branch to a symbol that is defined later
  14837. in your program, you can write &lsquo;<samp>bra.s foo</samp>&rsquo;.
  14838. Objdump and GDB will always append &lsquo;<samp>.s</samp>&rsquo; or &lsquo;<samp>.l</samp>&rsquo; to instructions which
  14839. have both short and long forms.
  14840. </p>
  14841. <hr>
  14842. <span id="D10V_002dSubs"></span><div class="header">
  14843. <p>
  14844. Next: <a href="#D10V_002dChars" accesskey="n" rel="next">D10V-Chars</a>, Previous: <a href="#D10V_002dSize" accesskey="p" rel="prev">D10V-Size</a>, Up: <a href="#D10V_002dSyntax" accesskey="u" rel="up">D10V-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14845. </div>
  14846. <span id="Sub_002dInstructions"></span><h4 class="subsubsection">9.11.2.2 Sub-Instructions</h4>
  14847. <span id="index-D10V-sub_002dinstructions"></span>
  14848. <span id="index-sub_002dinstructions_002c-D10V"></span>
  14849. <p>The D10V assembler takes as input a series of instructions, either one-per-line,
  14850. or in the special two-per-line format described in the next section. Some of these
  14851. instructions will be short-form or sub-instructions. These sub-instructions can be packed
  14852. into a single instruction. The assembler will do this automatically. It will also detect
  14853. when it should not pack instructions. For example, when a label is defined, the next
  14854. instruction will never be packaged with the previous one. Whenever a branch and link
  14855. instruction is called, it will not be packaged with the next instruction so the return
  14856. address will be valid. Nops are automatically inserted when necessary.
  14857. </p>
  14858. <p>If you do not want the assembler automatically making these decisions, you can control
  14859. the packaging and execution type (parallel or sequential) with the special execution
  14860. symbols described in the next section.
  14861. </p>
  14862. <hr>
  14863. <span id="D10V_002dChars"></span><div class="header">
  14864. <p>
  14865. Next: <a href="#D10V_002dRegs" accesskey="n" rel="next">D10V-Regs</a>, Previous: <a href="#D10V_002dSubs" accesskey="p" rel="prev">D10V-Subs</a>, Up: <a href="#D10V_002dSyntax" accesskey="u" rel="up">D10V-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14866. </div>
  14867. <span id="Special-Characters-7"></span><h4 class="subsubsection">9.11.2.3 Special Characters</h4>
  14868. <span id="index-line-comment-character_002c-D10V"></span>
  14869. <span id="index-D10V-line-comment-character"></span>
  14870. <p>A semicolon (&lsquo;<samp>;</samp>&rsquo;) can be used anywhere on a line to start a
  14871. comment that extends to the end of the line.
  14872. </p>
  14873. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line, the whole line
  14874. is treated as a comment, but in this case the line could also be a
  14875. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  14876. control command (see <a href="#Preprocessing">Preprocessing</a>).
  14877. </p>
  14878. <span id="index-sub_002dinstruction-ordering_002c-D10V"></span>
  14879. <span id="index-D10V-sub_002dinstruction-ordering"></span>
  14880. <p>Sub-instructions may be executed in order, in reverse-order, or in parallel.
  14881. Instructions listed in the standard one-per-line format will be executed sequentially.
  14882. To specify the executing order, use the following symbols:
  14883. </p><dl compact="compact">
  14884. <dt>&lsquo;<samp>-&gt;</samp>&rsquo;</dt>
  14885. <dd><p>Sequential with instruction on the left first.
  14886. </p></dd>
  14887. <dt>&lsquo;<samp>&lt;-</samp>&rsquo;</dt>
  14888. <dd><p>Sequential with instruction on the right first.
  14889. </p></dd>
  14890. <dt>&lsquo;<samp>||</samp>&rsquo;</dt>
  14891. <dd><p>Parallel
  14892. </p></dd>
  14893. </dl>
  14894. <p>The D10V syntax allows either one instruction per line, one instruction per line with
  14895. the execution symbol, or two instructions per line. For example
  14896. </p><dl compact="compact">
  14897. <dt><code>abs a1 -&gt; abs r0</code></dt>
  14898. <dd><p>Execute these sequentially. The instruction on the right is in the right
  14899. container and is executed second.
  14900. </p></dd>
  14901. <dt><code>abs r0 &lt;- abs a1</code></dt>
  14902. <dd><p>Execute these reverse-sequentially. The instruction on the right is in the right
  14903. container, and is executed first.
  14904. </p></dd>
  14905. <dt><code>ld2w r2,@r8+ || mac a0,r0,r7</code></dt>
  14906. <dd><p>Execute these in parallel.
  14907. </p></dd>
  14908. <dt><code>ld2w r2,@r8+ ||</code></dt>
  14909. <dt><code>mac a0,r0,r7</code></dt>
  14910. <dd><p>Two-line format. Execute these in parallel.
  14911. </p></dd>
  14912. <dt><code>ld2w r2,@r8+</code></dt>
  14913. <dt><code>mac a0,r0,r7</code></dt>
  14914. <dd><p>Two-line format. Execute these sequentially. Assembler will
  14915. put them in the proper containers.
  14916. </p></dd>
  14917. <dt><code>ld2w r2,@r8+ -&gt;</code></dt>
  14918. <dt><code>mac a0,r0,r7</code></dt>
  14919. <dd><p>Two-line format. Execute these sequentially. Same as above but
  14920. second instruction will always go into right container.
  14921. </p></dd>
  14922. </dl>
  14923. <span id="index-symbol-names_002c-_0024-in"></span>
  14924. <span id="index-_0024-in-symbol-names"></span>
  14925. <p>Since &lsquo;<samp>$</samp>&rsquo; has no special meaning, you may use it in symbol names.
  14926. </p>
  14927. <hr>
  14928. <span id="D10V_002dRegs"></span><div class="header">
  14929. <p>
  14930. Next: <a href="#D10V_002dAddressing" accesskey="n" rel="next">D10V-Addressing</a>, Previous: <a href="#D10V_002dChars" accesskey="p" rel="prev">D10V-Chars</a>, Up: <a href="#D10V_002dSyntax" accesskey="u" rel="up">D10V-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14931. </div>
  14932. <span id="Register-Names-5"></span><h4 class="subsubsection">9.11.2.4 Register Names</h4>
  14933. <span id="index-D10V-registers"></span>
  14934. <span id="index-registers_002c-D10V"></span>
  14935. <p>You can use the predefined symbols &lsquo;<samp>r0</samp>&rsquo; through &lsquo;<samp>r15</samp>&rsquo; to refer to the D10V
  14936. registers. You can also use &lsquo;<samp>sp</samp>&rsquo; as an alias for &lsquo;<samp>r15</samp>&rsquo;. The accumulators
  14937. are &lsquo;<samp>a0</samp>&rsquo; and &lsquo;<samp>a1</samp>&rsquo;. There are special register-pair names that may
  14938. optionally be used in opcodes that require even-numbered registers. Register names are
  14939. not case sensitive.
  14940. </p>
  14941. <p>Register Pairs
  14942. </p><dl compact="compact">
  14943. <dt><code>r0-r1</code></dt>
  14944. <dt><code>r2-r3</code></dt>
  14945. <dt><code>r4-r5</code></dt>
  14946. <dt><code>r6-r7</code></dt>
  14947. <dt><code>r8-r9</code></dt>
  14948. <dt><code>r10-r11</code></dt>
  14949. <dt><code>r12-r13</code></dt>
  14950. <dt><code>r14-r15</code></dt>
  14951. </dl>
  14952. <p>The D10V also has predefined symbols for these control registers and status bits:
  14953. </p><dl compact="compact">
  14954. <dt><code>psw</code></dt>
  14955. <dd><p>Processor Status Word
  14956. </p></dd>
  14957. <dt><code>bpsw</code></dt>
  14958. <dd><p>Backup Processor Status Word
  14959. </p></dd>
  14960. <dt><code>pc</code></dt>
  14961. <dd><p>Program Counter
  14962. </p></dd>
  14963. <dt><code>bpc</code></dt>
  14964. <dd><p>Backup Program Counter
  14965. </p></dd>
  14966. <dt><code>rpt_c</code></dt>
  14967. <dd><p>Repeat Count
  14968. </p></dd>
  14969. <dt><code>rpt_s</code></dt>
  14970. <dd><p>Repeat Start address
  14971. </p></dd>
  14972. <dt><code>rpt_e</code></dt>
  14973. <dd><p>Repeat End address
  14974. </p></dd>
  14975. <dt><code>mod_s</code></dt>
  14976. <dd><p>Modulo Start address
  14977. </p></dd>
  14978. <dt><code>mod_e</code></dt>
  14979. <dd><p>Modulo End address
  14980. </p></dd>
  14981. <dt><code>iba</code></dt>
  14982. <dd><p>Instruction Break Address
  14983. </p></dd>
  14984. <dt><code>f0</code></dt>
  14985. <dd><p>Flag 0
  14986. </p></dd>
  14987. <dt><code>f1</code></dt>
  14988. <dd><p>Flag 1
  14989. </p></dd>
  14990. <dt><code>c</code></dt>
  14991. <dd><p>Carry flag
  14992. </p></dd>
  14993. </dl>
  14994. <hr>
  14995. <span id="D10V_002dAddressing"></span><div class="header">
  14996. <p>
  14997. Next: <a href="#D10V_002dWord" accesskey="n" rel="next">D10V-Word</a>, Previous: <a href="#D10V_002dRegs" accesskey="p" rel="prev">D10V-Regs</a>, Up: <a href="#D10V_002dSyntax" accesskey="u" rel="up">D10V-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  14998. </div>
  14999. <span id="Addressing-Modes"></span><h4 class="subsubsection">9.11.2.5 Addressing Modes</h4>
  15000. <span id="index-addressing-modes_002c-D10V"></span>
  15001. <span id="index-D10V-addressing-modes"></span>
  15002. <p><code>as</code> understands the following addressing modes for the D10V.
  15003. <code>R<var>n</var></code> in the following refers to any of the numbered
  15004. registers, but <em>not</em> the control registers.
  15005. </p><dl compact="compact">
  15006. <dt><code>R<var>n</var></code></dt>
  15007. <dd><p>Register direct
  15008. </p></dd>
  15009. <dt><code>@R<var>n</var></code></dt>
  15010. <dd><p>Register indirect
  15011. </p></dd>
  15012. <dt><code>@R<var>n</var>+</code></dt>
  15013. <dd><p>Register indirect with post-increment
  15014. </p></dd>
  15015. <dt><code>@R<var>n</var>-</code></dt>
  15016. <dd><p>Register indirect with post-decrement
  15017. </p></dd>
  15018. <dt><code>@-SP</code></dt>
  15019. <dd><p>Register indirect with pre-decrement
  15020. </p></dd>
  15021. <dt><code>@(<var>disp</var>, R<var>n</var>)</code></dt>
  15022. <dd><p>Register indirect with displacement
  15023. </p></dd>
  15024. <dt><code><var>addr</var></code></dt>
  15025. <dd><p>PC relative address (for branch or rep).
  15026. </p></dd>
  15027. <dt><code>#<var>imm</var></code></dt>
  15028. <dd><p>Immediate data (the &lsquo;<samp>#</samp>&rsquo; is optional and ignored)
  15029. </p></dd>
  15030. </dl>
  15031. <hr>
  15032. <span id="D10V_002dWord"></span><div class="header">
  15033. <p>
  15034. Previous: <a href="#D10V_002dAddressing" accesskey="p" rel="prev">D10V-Addressing</a>, Up: <a href="#D10V_002dSyntax" accesskey="u" rel="up">D10V-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15035. </div>
  15036. <span id="g_t_0040WORD-Modifier"></span><h4 class="subsubsection">9.11.2.6 @WORD Modifier</h4>
  15037. <span id="index-D10V-_0040word-modifier"></span>
  15038. <span id="index-_0040word-modifier_002c-D10V"></span>
  15039. <p>Any symbol followed by <code>@word</code> will be replaced by the symbol&rsquo;s value
  15040. shifted right by 2. This is used in situations such as loading a register
  15041. with the address of a function (or any other code fragment). For example, if
  15042. you want to load a register with the location of the function <code>main</code> then
  15043. jump to that function, you could do it as follows:
  15044. </p><div class="example">
  15045. <pre class="example">ldi r2, main@word
  15046. jmp r2
  15047. </pre></div>
  15048. <hr>
  15049. <span id="D10V_002dFloat"></span><div class="header">
  15050. <p>
  15051. Next: <a href="#D10V_002dOpcodes" accesskey="n" rel="next">D10V-Opcodes</a>, Previous: <a href="#D10V_002dSyntax" accesskey="p" rel="prev">D10V-Syntax</a>, Up: <a href="#D10V_002dDependent" accesskey="u" rel="up">D10V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15052. </div>
  15053. <span id="Floating-Point-3"></span><h4 class="subsection">9.11.3 Floating Point</h4>
  15054. <span id="index-floating-point_002c-D10V"></span>
  15055. <span id="index-D10V-floating-point"></span>
  15056. <p>The D10V has no hardware floating point, but the <code>.float</code> and <code>.double</code>
  15057. directives generates <small>IEEE</small> floating-point numbers for compatibility
  15058. with other development tools.
  15059. </p>
  15060. <hr>
  15061. <span id="D10V_002dOpcodes"></span><div class="header">
  15062. <p>
  15063. Previous: <a href="#D10V_002dFloat" accesskey="p" rel="prev">D10V-Float</a>, Up: <a href="#D10V_002dDependent" accesskey="u" rel="up">D10V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15064. </div>
  15065. <span id="Opcodes-5"></span><h4 class="subsection">9.11.4 Opcodes</h4>
  15066. <span id="index-D10V-opcode-summary"></span>
  15067. <span id="index-opcode-summary_002c-D10V"></span>
  15068. <span id="index-mnemonics_002c-D10V"></span>
  15069. <span id="index-instruction-summary_002c-D10V"></span>
  15070. <p>For detailed information on the D10V machine instruction set, see
  15071. <cite>D10V Architecture: A VLIW Microprocessor for Multimedia Applications</cite>
  15072. (Mitsubishi Electric Corp.).
  15073. <code>as</code> implements all the standard D10V opcodes. The only changes are those
  15074. described in the section on size modifiers
  15075. </p>
  15076. <hr>
  15077. <span id="D30V_002dDependent"></span><div class="header">
  15078. <p>
  15079. Next: <a href="#Epiphany_002dDependent" accesskey="n" rel="next">Epiphany-Dependent</a>, Previous: <a href="#D10V_002dDependent" accesskey="p" rel="prev">D10V-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15080. </div>
  15081. <span id="D30V-Dependent-Features"></span><h3 class="section">9.12 D30V Dependent Features</h3>
  15082. <span id="index-D30V-support"></span>
  15083. <table class="menu" border="0" cellspacing="0">
  15084. <tr><td align="left" valign="top">&bull; <a href="#D30V_002dOpts" accesskey="1">D30V-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">D30V Options
  15085. </td></tr>
  15086. <tr><td align="left" valign="top">&bull; <a href="#D30V_002dSyntax" accesskey="2">D30V-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  15087. </td></tr>
  15088. <tr><td align="left" valign="top">&bull; <a href="#D30V_002dFloat" accesskey="3">D30V-Float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  15089. </td></tr>
  15090. <tr><td align="left" valign="top">&bull; <a href="#D30V_002dOpcodes" accesskey="4">D30V-Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  15091. </td></tr>
  15092. </table>
  15093. <hr>
  15094. <span id="D30V_002dOpts"></span><div class="header">
  15095. <p>
  15096. Next: <a href="#D30V_002dSyntax" accesskey="n" rel="next">D30V-Syntax</a>, Up: <a href="#D30V_002dDependent" accesskey="u" rel="up">D30V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15097. </div>
  15098. <span id="D30V-Options"></span><h4 class="subsection">9.12.1 D30V Options</h4>
  15099. <span id="index-options_002c-D30V"></span>
  15100. <span id="index-D30V-options"></span>
  15101. <p>The Mitsubishi D30V version of <code>as</code> has a few machine
  15102. dependent options.
  15103. </p>
  15104. <dl compact="compact">
  15105. <dt>&lsquo;<samp>-O</samp>&rsquo;</dt>
  15106. <dd><p>The D30V can often execute two sub-instructions in parallel. When this option
  15107. is used, <code>as</code> will attempt to optimize its output by detecting when
  15108. instructions can be executed in parallel.
  15109. </p>
  15110. </dd>
  15111. <dt>&lsquo;<samp>-n</samp>&rsquo;</dt>
  15112. <dd><p>When this option is used, <code>as</code> will issue a warning every
  15113. time it adds a nop instruction.
  15114. </p>
  15115. </dd>
  15116. <dt>&lsquo;<samp>-N</samp>&rsquo;</dt>
  15117. <dd><p>When this option is used, <code>as</code> will issue a warning if it
  15118. needs to insert a nop after a 32-bit multiply before a load or 16-bit
  15119. multiply instruction.
  15120. </p></dd>
  15121. </dl>
  15122. <hr>
  15123. <span id="D30V_002dSyntax"></span><div class="header">
  15124. <p>
  15125. Next: <a href="#D30V_002dFloat" accesskey="n" rel="next">D30V-Float</a>, Previous: <a href="#D30V_002dOpts" accesskey="p" rel="prev">D30V-Opts</a>, Up: <a href="#D30V_002dDependent" accesskey="u" rel="up">D30V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15126. </div>
  15127. <span id="Syntax-11"></span><h4 class="subsection">9.12.2 Syntax</h4>
  15128. <span id="index-D30V-syntax"></span>
  15129. <span id="index-syntax_002c-D30V"></span>
  15130. <p>The D30V syntax is based on the syntax in Mitsubishi&rsquo;s D30V architecture manual.
  15131. The differences are detailed below.
  15132. </p>
  15133. <table class="menu" border="0" cellspacing="0">
  15134. <tr><td align="left" valign="top">&bull; <a href="#D30V_002dSize" accesskey="1">D30V-Size</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Size Modifiers
  15135. </td></tr>
  15136. <tr><td align="left" valign="top">&bull; <a href="#D30V_002dSubs" accesskey="2">D30V-Subs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Sub-Instructions
  15137. </td></tr>
  15138. <tr><td align="left" valign="top">&bull; <a href="#D30V_002dChars" accesskey="3">D30V-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  15139. </td></tr>
  15140. <tr><td align="left" valign="top">&bull; <a href="#D30V_002dGuarded" accesskey="4">D30V-Guarded</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Guarded Execution
  15141. </td></tr>
  15142. <tr><td align="left" valign="top">&bull; <a href="#D30V_002dRegs" accesskey="5">D30V-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  15143. </td></tr>
  15144. <tr><td align="left" valign="top">&bull; <a href="#D30V_002dAddressing" accesskey="6">D30V-Addressing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Addressing Modes
  15145. </td></tr>
  15146. </table>
  15147. <hr>
  15148. <span id="D30V_002dSize"></span><div class="header">
  15149. <p>
  15150. Next: <a href="#D30V_002dSubs" accesskey="n" rel="next">D30V-Subs</a>, Up: <a href="#D30V_002dSyntax" accesskey="u" rel="up">D30V-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15151. </div>
  15152. <span id="Size-Modifiers-1"></span><h4 class="subsubsection">9.12.2.1 Size Modifiers</h4>
  15153. <span id="index-D30V-size-modifiers"></span>
  15154. <span id="index-size-modifiers_002c-D30V"></span>
  15155. <p>The D30V version of <code>as</code> uses the instruction names in the D30V
  15156. Architecture Manual. However, the names in the manual are sometimes ambiguous.
  15157. There are instruction names that can assemble to a short or long form opcode.
  15158. How does the assembler pick the correct form? <code>as</code> will always pick the
  15159. smallest form if it can. When dealing with a symbol that is not defined yet when a
  15160. line is being assembled, it will always use the long form. If you need to force the
  15161. assembler to use either the short or long form of the instruction, you can append
  15162. either &lsquo;<samp>.s</samp>&rsquo; (short) or &lsquo;<samp>.l</samp>&rsquo; (long) to it. For example, if you are writing
  15163. an assembly program and you want to do a branch to a symbol that is defined later
  15164. in your program, you can write &lsquo;<samp>bra.s foo</samp>&rsquo;.
  15165. Objdump and GDB will always append &lsquo;<samp>.s</samp>&rsquo; or &lsquo;<samp>.l</samp>&rsquo; to instructions which
  15166. have both short and long forms.
  15167. </p>
  15168. <hr>
  15169. <span id="D30V_002dSubs"></span><div class="header">
  15170. <p>
  15171. Next: <a href="#D30V_002dChars" accesskey="n" rel="next">D30V-Chars</a>, Previous: <a href="#D30V_002dSize" accesskey="p" rel="prev">D30V-Size</a>, Up: <a href="#D30V_002dSyntax" accesskey="u" rel="up">D30V-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15172. </div>
  15173. <span id="Sub_002dInstructions-1"></span><h4 class="subsubsection">9.12.2.2 Sub-Instructions</h4>
  15174. <span id="index-D30V-sub_002dinstructions"></span>
  15175. <span id="index-sub_002dinstructions_002c-D30V"></span>
  15176. <p>The D30V assembler takes as input a series of instructions, either one-per-line,
  15177. or in the special two-per-line format described in the next section. Some of these
  15178. instructions will be short-form or sub-instructions. These sub-instructions can be packed
  15179. into a single instruction. The assembler will do this automatically. It will also detect
  15180. when it should not pack instructions. For example, when a label is defined, the next
  15181. instruction will never be packaged with the previous one. Whenever a branch and link
  15182. instruction is called, it will not be packaged with the next instruction so the return
  15183. address will be valid. Nops are automatically inserted when necessary.
  15184. </p>
  15185. <p>If you do not want the assembler automatically making these decisions, you can control
  15186. the packaging and execution type (parallel or sequential) with the special execution
  15187. symbols described in the next section.
  15188. </p>
  15189. <hr>
  15190. <span id="D30V_002dChars"></span><div class="header">
  15191. <p>
  15192. Next: <a href="#D30V_002dGuarded" accesskey="n" rel="next">D30V-Guarded</a>, Previous: <a href="#D30V_002dSubs" accesskey="p" rel="prev">D30V-Subs</a>, Up: <a href="#D30V_002dSyntax" accesskey="u" rel="up">D30V-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15193. </div>
  15194. <span id="Special-Characters-8"></span><h4 class="subsubsection">9.12.2.3 Special Characters</h4>
  15195. <span id="index-line-comment-character_002c-D30V"></span>
  15196. <span id="index-D30V-line-comment-character"></span>
  15197. <p>A semicolon (&lsquo;<samp>;</samp>&rsquo;) can be used anywhere on a line to start a
  15198. comment that extends to the end of the line.
  15199. </p>
  15200. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line, the whole line
  15201. is treated as a comment, but in this case the line could also be a
  15202. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  15203. control command (see <a href="#Preprocessing">Preprocessing</a>).
  15204. </p>
  15205. <span id="index-sub_002dinstruction-ordering_002c-D30V"></span>
  15206. <span id="index-D30V-sub_002dinstruction-ordering"></span>
  15207. <p>Sub-instructions may be executed in order, in reverse-order, or in parallel.
  15208. Instructions listed in the standard one-per-line format will be executed
  15209. sequentially unless you use the &lsquo;<samp>-O</samp>&rsquo; option.
  15210. </p>
  15211. <p>To specify the executing order, use the following symbols:
  15212. </p><dl compact="compact">
  15213. <dt>&lsquo;<samp>-&gt;</samp>&rsquo;</dt>
  15214. <dd><p>Sequential with instruction on the left first.
  15215. </p>
  15216. </dd>
  15217. <dt>&lsquo;<samp>&lt;-</samp>&rsquo;</dt>
  15218. <dd><p>Sequential with instruction on the right first.
  15219. </p>
  15220. </dd>
  15221. <dt>&lsquo;<samp>||</samp>&rsquo;</dt>
  15222. <dd><p>Parallel
  15223. </p></dd>
  15224. </dl>
  15225. <p>The D30V syntax allows either one instruction per line, one instruction per line with
  15226. the execution symbol, or two instructions per line. For example
  15227. </p><dl compact="compact">
  15228. <dt><code>abs r2,r3 -&gt; abs r4,r5</code></dt>
  15229. <dd><p>Execute these sequentially. The instruction on the right is in the right
  15230. container and is executed second.
  15231. </p>
  15232. </dd>
  15233. <dt><code>abs r2,r3 &lt;- abs r4,r5</code></dt>
  15234. <dd><p>Execute these reverse-sequentially. The instruction on the right is in the right
  15235. container, and is executed first.
  15236. </p>
  15237. </dd>
  15238. <dt><code>abs r2,r3 || abs r4,r5</code></dt>
  15239. <dd><p>Execute these in parallel.
  15240. </p>
  15241. </dd>
  15242. <dt><code>ldw r2,@(r3,r4) ||</code></dt>
  15243. <dt><code>mulx r6,r8,r9</code></dt>
  15244. <dd><p>Two-line format. Execute these in parallel.
  15245. </p>
  15246. </dd>
  15247. <dt><code>mulx a0,r8,r9</code></dt>
  15248. <dt><code>stw r2,@(r3,r4)</code></dt>
  15249. <dd><p>Two-line format. Execute these sequentially unless &lsquo;<samp>-O</samp>&rsquo; option is
  15250. used. If the &lsquo;<samp>-O</samp>&rsquo; option is used, the assembler will determine if
  15251. the instructions could be done in parallel (the above two instructions
  15252. can be done in parallel), and if so, emit them as parallel instructions.
  15253. The assembler will put them in the proper containers. In the above
  15254. example, the assembler will put the &lsquo;<samp>stw</samp>&rsquo; instruction in left
  15255. container and the &lsquo;<samp>mulx</samp>&rsquo; instruction in the right container.
  15256. </p>
  15257. </dd>
  15258. <dt><code>stw r2,@(r3,r4) -&gt;</code></dt>
  15259. <dt><code>mulx a0,r8,r9</code></dt>
  15260. <dd><p>Two-line format. Execute the &lsquo;<samp>stw</samp>&rsquo; instruction followed by the
  15261. &lsquo;<samp>mulx</samp>&rsquo; instruction sequentially. The first instruction goes in the
  15262. left container and the second instruction goes into right container.
  15263. The assembler will give an error if the machine ordering constraints are
  15264. violated.
  15265. </p>
  15266. </dd>
  15267. <dt><code>stw r2,@(r3,r4) &lt;-</code></dt>
  15268. <dt><code>mulx a0,r8,r9</code></dt>
  15269. <dd><p>Same as previous example, except that the &lsquo;<samp>mulx</samp>&rsquo; instruction is
  15270. executed before the &lsquo;<samp>stw</samp>&rsquo; instruction.
  15271. </p></dd>
  15272. </dl>
  15273. <span id="index-symbol-names_002c-_0024-in-1"></span>
  15274. <span id="index-_0024-in-symbol-names-1"></span>
  15275. <p>Since &lsquo;<samp>$</samp>&rsquo; has no special meaning, you may use it in symbol names.
  15276. </p>
  15277. <hr>
  15278. <span id="D30V_002dGuarded"></span><div class="header">
  15279. <p>
  15280. Next: <a href="#D30V_002dRegs" accesskey="n" rel="next">D30V-Regs</a>, Previous: <a href="#D30V_002dChars" accesskey="p" rel="prev">D30V-Chars</a>, Up: <a href="#D30V_002dSyntax" accesskey="u" rel="up">D30V-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15281. </div>
  15282. <span id="Guarded-Execution"></span><h4 class="subsubsection">9.12.2.4 Guarded Execution</h4>
  15283. <span id="index-D30V-Guarded-Execution"></span>
  15284. <p><code>as</code> supports the full range of guarded execution
  15285. directives for each instruction. Just append the directive after the
  15286. instruction proper. The directives are:
  15287. </p>
  15288. <dl compact="compact">
  15289. <dt>&lsquo;<samp>/tx</samp>&rsquo;</dt>
  15290. <dd><p>Execute the instruction if flag f0 is true.
  15291. </p></dd>
  15292. <dt>&lsquo;<samp>/fx</samp>&rsquo;</dt>
  15293. <dd><p>Execute the instruction if flag f0 is false.
  15294. </p></dd>
  15295. <dt>&lsquo;<samp>/xt</samp>&rsquo;</dt>
  15296. <dd><p>Execute the instruction if flag f1 is true.
  15297. </p></dd>
  15298. <dt>&lsquo;<samp>/xf</samp>&rsquo;</dt>
  15299. <dd><p>Execute the instruction if flag f1 is false.
  15300. </p></dd>
  15301. <dt>&lsquo;<samp>/tt</samp>&rsquo;</dt>
  15302. <dd><p>Execute the instruction if both flags f0 and f1 are true.
  15303. </p></dd>
  15304. <dt>&lsquo;<samp>/tf</samp>&rsquo;</dt>
  15305. <dd><p>Execute the instruction if flag f0 is true and flag f1 is false.
  15306. </p></dd>
  15307. </dl>
  15308. <hr>
  15309. <span id="D30V_002dRegs"></span><div class="header">
  15310. <p>
  15311. Next: <a href="#D30V_002dAddressing" accesskey="n" rel="next">D30V-Addressing</a>, Previous: <a href="#D30V_002dGuarded" accesskey="p" rel="prev">D30V-Guarded</a>, Up: <a href="#D30V_002dSyntax" accesskey="u" rel="up">D30V-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15312. </div>
  15313. <span id="Register-Names-6"></span><h4 class="subsubsection">9.12.2.5 Register Names</h4>
  15314. <span id="index-D30V-registers"></span>
  15315. <span id="index-registers_002c-D30V"></span>
  15316. <p>You can use the predefined symbols &lsquo;<samp>r0</samp>&rsquo; through &lsquo;<samp>r63</samp>&rsquo; to refer
  15317. to the D30V registers. You can also use &lsquo;<samp>sp</samp>&rsquo; as an alias for
  15318. &lsquo;<samp>r63</samp>&rsquo; and &lsquo;<samp>link</samp>&rsquo; as an alias for &lsquo;<samp>r62</samp>&rsquo;. The accumulators
  15319. are &lsquo;<samp>a0</samp>&rsquo; and &lsquo;<samp>a1</samp>&rsquo;.
  15320. </p>
  15321. <p>The D30V also has predefined symbols for these control registers and status bits:
  15322. </p><dl compact="compact">
  15323. <dt><code>psw</code></dt>
  15324. <dd><p>Processor Status Word
  15325. </p></dd>
  15326. <dt><code>bpsw</code></dt>
  15327. <dd><p>Backup Processor Status Word
  15328. </p></dd>
  15329. <dt><code>pc</code></dt>
  15330. <dd><p>Program Counter
  15331. </p></dd>
  15332. <dt><code>bpc</code></dt>
  15333. <dd><p>Backup Program Counter
  15334. </p></dd>
  15335. <dt><code>rpt_c</code></dt>
  15336. <dd><p>Repeat Count
  15337. </p></dd>
  15338. <dt><code>rpt_s</code></dt>
  15339. <dd><p>Repeat Start address
  15340. </p></dd>
  15341. <dt><code>rpt_e</code></dt>
  15342. <dd><p>Repeat End address
  15343. </p></dd>
  15344. <dt><code>mod_s</code></dt>
  15345. <dd><p>Modulo Start address
  15346. </p></dd>
  15347. <dt><code>mod_e</code></dt>
  15348. <dd><p>Modulo End address
  15349. </p></dd>
  15350. <dt><code>iba</code></dt>
  15351. <dd><p>Instruction Break Address
  15352. </p></dd>
  15353. <dt><code>f0</code></dt>
  15354. <dd><p>Flag 0
  15355. </p></dd>
  15356. <dt><code>f1</code></dt>
  15357. <dd><p>Flag 1
  15358. </p></dd>
  15359. <dt><code>f2</code></dt>
  15360. <dd><p>Flag 2
  15361. </p></dd>
  15362. <dt><code>f3</code></dt>
  15363. <dd><p>Flag 3
  15364. </p></dd>
  15365. <dt><code>f4</code></dt>
  15366. <dd><p>Flag 4
  15367. </p></dd>
  15368. <dt><code>f5</code></dt>
  15369. <dd><p>Flag 5
  15370. </p></dd>
  15371. <dt><code>f6</code></dt>
  15372. <dd><p>Flag 6
  15373. </p></dd>
  15374. <dt><code>f7</code></dt>
  15375. <dd><p>Flag 7
  15376. </p></dd>
  15377. <dt><code>s</code></dt>
  15378. <dd><p>Same as flag 4 (saturation flag)
  15379. </p></dd>
  15380. <dt><code>v</code></dt>
  15381. <dd><p>Same as flag 5 (overflow flag)
  15382. </p></dd>
  15383. <dt><code>va</code></dt>
  15384. <dd><p>Same as flag 6 (sticky overflow flag)
  15385. </p></dd>
  15386. <dt><code>c</code></dt>
  15387. <dd><p>Same as flag 7 (carry/borrow flag)
  15388. </p></dd>
  15389. <dt><code>b</code></dt>
  15390. <dd><p>Same as flag 7 (carry/borrow flag)
  15391. </p></dd>
  15392. </dl>
  15393. <hr>
  15394. <span id="D30V_002dAddressing"></span><div class="header">
  15395. <p>
  15396. Previous: <a href="#D30V_002dRegs" accesskey="p" rel="prev">D30V-Regs</a>, Up: <a href="#D30V_002dSyntax" accesskey="u" rel="up">D30V-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15397. </div>
  15398. <span id="Addressing-Modes-1"></span><h4 class="subsubsection">9.12.2.6 Addressing Modes</h4>
  15399. <span id="index-addressing-modes_002c-D30V"></span>
  15400. <span id="index-D30V-addressing-modes"></span>
  15401. <p><code>as</code> understands the following addressing modes for the D30V.
  15402. <code>R<var>n</var></code> in the following refers to any of the numbered
  15403. registers, but <em>not</em> the control registers.
  15404. </p><dl compact="compact">
  15405. <dt><code>R<var>n</var></code></dt>
  15406. <dd><p>Register direct
  15407. </p></dd>
  15408. <dt><code>@R<var>n</var></code></dt>
  15409. <dd><p>Register indirect
  15410. </p></dd>
  15411. <dt><code>@R<var>n</var>+</code></dt>
  15412. <dd><p>Register indirect with post-increment
  15413. </p></dd>
  15414. <dt><code>@R<var>n</var>-</code></dt>
  15415. <dd><p>Register indirect with post-decrement
  15416. </p></dd>
  15417. <dt><code>@-SP</code></dt>
  15418. <dd><p>Register indirect with pre-decrement
  15419. </p></dd>
  15420. <dt><code>@(<var>disp</var>, R<var>n</var>)</code></dt>
  15421. <dd><p>Register indirect with displacement
  15422. </p></dd>
  15423. <dt><code><var>addr</var></code></dt>
  15424. <dd><p>PC relative address (for branch or rep).
  15425. </p></dd>
  15426. <dt><code>#<var>imm</var></code></dt>
  15427. <dd><p>Immediate data (the &lsquo;<samp>#</samp>&rsquo; is optional and ignored)
  15428. </p></dd>
  15429. </dl>
  15430. <hr>
  15431. <span id="D30V_002dFloat"></span><div class="header">
  15432. <p>
  15433. Next: <a href="#D30V_002dOpcodes" accesskey="n" rel="next">D30V-Opcodes</a>, Previous: <a href="#D30V_002dSyntax" accesskey="p" rel="prev">D30V-Syntax</a>, Up: <a href="#D30V_002dDependent" accesskey="u" rel="up">D30V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15434. </div>
  15435. <span id="Floating-Point-4"></span><h4 class="subsection">9.12.3 Floating Point</h4>
  15436. <span id="index-floating-point_002c-D30V"></span>
  15437. <span id="index-D30V-floating-point"></span>
  15438. <p>The D30V has no hardware floating point, but the <code>.float</code> and <code>.double</code>
  15439. directives generates <small>IEEE</small> floating-point numbers for compatibility
  15440. with other development tools.
  15441. </p>
  15442. <hr>
  15443. <span id="D30V_002dOpcodes"></span><div class="header">
  15444. <p>
  15445. Previous: <a href="#D30V_002dFloat" accesskey="p" rel="prev">D30V-Float</a>, Up: <a href="#D30V_002dDependent" accesskey="u" rel="up">D30V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15446. </div>
  15447. <span id="Opcodes-6"></span><h4 class="subsection">9.12.4 Opcodes</h4>
  15448. <span id="index-D30V-opcode-summary"></span>
  15449. <span id="index-opcode-summary_002c-D30V"></span>
  15450. <span id="index-mnemonics_002c-D30V"></span>
  15451. <span id="index-instruction-summary_002c-D30V"></span>
  15452. <p>For detailed information on the D30V machine instruction set, see
  15453. <cite>D30V Architecture: A VLIW Microprocessor for Multimedia Applications</cite>
  15454. (Mitsubishi Electric Corp.).
  15455. <code>as</code> implements all the standard D30V opcodes. The only changes are those
  15456. described in the section on size modifiers
  15457. </p>
  15458. <hr>
  15459. <span id="Epiphany_002dDependent"></span><div class="header">
  15460. <p>
  15461. Next: <a href="#H8_002f300_002dDependent" accesskey="n" rel="next">H8/300-Dependent</a>, Previous: <a href="#D30V_002dDependent" accesskey="p" rel="prev">D30V-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15462. </div>
  15463. <span id="Epiphany-Dependent-Features"></span><h3 class="section">9.13 Epiphany Dependent Features</h3>
  15464. <span id="index-Epiphany-support"></span>
  15465. <table class="menu" border="0" cellspacing="0">
  15466. <tr><td align="left" valign="top">&bull; <a href="#Epiphany-Options" accesskey="1">Epiphany Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  15467. </td></tr>
  15468. <tr><td align="left" valign="top">&bull; <a href="#Epiphany-Syntax" accesskey="2">Epiphany Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Epiphany Syntax
  15469. </td></tr>
  15470. </table>
  15471. <hr>
  15472. <span id="Epiphany-Options"></span><div class="header">
  15473. <p>
  15474. Next: <a href="#Epiphany-Syntax" accesskey="n" rel="next">Epiphany Syntax</a>, Up: <a href="#Epiphany_002dDependent" accesskey="u" rel="up">Epiphany-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15475. </div>
  15476. <span id="Options-7"></span><h4 class="subsection">9.13.1 Options</h4>
  15477. <span id="index-Epiphany-options"></span>
  15478. <span id="index-options_002c-Epiphany"></span>
  15479. <p><code>as</code> has two additional command-line options for the Epiphany
  15480. architecture.
  15481. </p>
  15482. <dl compact="compact">
  15483. <dd>
  15484. <span id="index-_002dmepiphany-command_002dline-option_002c-Epiphany"></span>
  15485. </dd>
  15486. <dt><code>-mepiphany</code></dt>
  15487. <dd><p>Specifies that the both 32 and 16 bit instructions are allowed. This is the
  15488. default behavior.
  15489. </p>
  15490. <span id="index-_002dmepiphany16-command_002dline-option_002c-Epiphany"></span>
  15491. </dd>
  15492. <dt><code>-mepiphany16</code></dt>
  15493. <dd><p>Restricts the permitted instructions to just the 16 bit set.
  15494. </p></dd>
  15495. </dl>
  15496. <hr>
  15497. <span id="Epiphany-Syntax"></span><div class="header">
  15498. <p>
  15499. Previous: <a href="#Epiphany-Options" accesskey="p" rel="prev">Epiphany Options</a>, Up: <a href="#Epiphany_002dDependent" accesskey="u" rel="up">Epiphany-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15500. </div>
  15501. <span id="Epiphany-Syntax-1"></span><h4 class="subsection">9.13.2 Epiphany Syntax</h4>
  15502. <table class="menu" border="0" cellspacing="0">
  15503. <tr><td align="left" valign="top">&bull; <a href="#Epiphany_002dChars" accesskey="1">Epiphany-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  15504. </td></tr>
  15505. </table>
  15506. <hr>
  15507. <span id="Epiphany_002dChars"></span><div class="header">
  15508. <p>
  15509. Up: <a href="#Epiphany-Syntax" accesskey="u" rel="up">Epiphany Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15510. </div>
  15511. <span id="Special-Characters-9"></span><h4 class="subsubsection">9.13.2.1 Special Characters</h4>
  15512. <span id="index-line-comment-character_002c-Epiphany"></span>
  15513. <span id="index-Epiphany-line-comment-character"></span>
  15514. <p>The presence of a &lsquo;<samp>;</samp>&rsquo; on a line indicates the start
  15515. of a comment that extends to the end of the current line.
  15516. </p>
  15517. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  15518. line is treated as a comment, but in this case the line could also be
  15519. a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  15520. control command (see <a href="#Preprocessing">Preprocessing</a>).
  15521. </p>
  15522. <span id="index-line-separator_002c-Epiphany"></span>
  15523. <span id="index-statement-separator_002c-Epiphany"></span>
  15524. <span id="index-Epiphany-line-separator"></span>
  15525. <p>The &lsquo;<samp>`</samp>&rsquo; character can be used to separate statements on the same
  15526. line.
  15527. </p>
  15528. <hr>
  15529. <span id="H8_002f300_002dDependent"></span><div class="header">
  15530. <p>
  15531. Next: <a href="#HPPA_002dDependent" accesskey="n" rel="next">HPPA-Dependent</a>, Previous: <a href="#Epiphany_002dDependent" accesskey="p" rel="prev">Epiphany-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15532. </div>
  15533. <span id="H8_002f300-Dependent-Features"></span><h3 class="section">9.14 H8/300 Dependent Features</h3>
  15534. <span id="index-H8_002f300-support"></span>
  15535. <table class="menu" border="0" cellspacing="0">
  15536. <tr><td align="left" valign="top">&bull; <a href="#H8_002f300-Options" accesskey="1">H8/300 Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  15537. </td></tr>
  15538. <tr><td align="left" valign="top">&bull; <a href="#H8_002f300-Syntax" accesskey="2">H8/300 Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  15539. </td></tr>
  15540. <tr><td align="left" valign="top">&bull; <a href="#H8_002f300-Floating-Point" accesskey="3">H8/300 Floating Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  15541. </td></tr>
  15542. <tr><td align="left" valign="top">&bull; <a href="#H8_002f300-Directives" accesskey="4">H8/300 Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">H8/300 Machine Directives
  15543. </td></tr>
  15544. <tr><td align="left" valign="top">&bull; <a href="#H8_002f300-Opcodes" accesskey="5">H8/300 Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  15545. </td></tr>
  15546. </table>
  15547. <hr>
  15548. <span id="H8_002f300-Options"></span><div class="header">
  15549. <p>
  15550. Next: <a href="#H8_002f300-Syntax" accesskey="n" rel="next">H8/300 Syntax</a>, Up: <a href="#H8_002f300_002dDependent" accesskey="u" rel="up">H8/300-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15551. </div>
  15552. <span id="Options-8"></span><h4 class="subsection">9.14.1 Options</h4>
  15553. <span id="index-H8_002f300-options"></span>
  15554. <span id="index-options_002c-H8_002f300"></span>
  15555. <p>The Renesas H8/300 version of <code>as</code> has one
  15556. machine-dependent option:
  15557. </p>
  15558. <dl compact="compact">
  15559. <dt><code>-h-tick-hex</code></dt>
  15560. <dd><p>Support H&rsquo;00 style hex constants in addition to 0x00 style.
  15561. </p>
  15562. </dd>
  15563. <dt><code>-mach=<var>name</var></code></dt>
  15564. <dd><p>Sets the H8300 machine variant. The following machine names
  15565. are recognised:
  15566. <code>h8300h</code>,
  15567. <code>h8300hn</code>,
  15568. <code>h8300s</code>,
  15569. <code>h8300sn</code>,
  15570. <code>h8300sx</code> and
  15571. <code>h8300sxn</code>.
  15572. </p>
  15573. </dd>
  15574. </dl>
  15575. <hr>
  15576. <span id="H8_002f300-Syntax"></span><div class="header">
  15577. <p>
  15578. Next: <a href="#H8_002f300-Floating-Point" accesskey="n" rel="next">H8/300 Floating Point</a>, Previous: <a href="#H8_002f300-Options" accesskey="p" rel="prev">H8/300 Options</a>, Up: <a href="#H8_002f300_002dDependent" accesskey="u" rel="up">H8/300-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15579. </div>
  15580. <span id="Syntax-12"></span><h4 class="subsection">9.14.2 Syntax</h4>
  15581. <table class="menu" border="0" cellspacing="0">
  15582. <tr><td align="left" valign="top">&bull; <a href="#H8_002f300_002dChars" accesskey="1">H8/300-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  15583. </td></tr>
  15584. <tr><td align="left" valign="top">&bull; <a href="#H8_002f300_002dRegs" accesskey="2">H8/300-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  15585. </td></tr>
  15586. <tr><td align="left" valign="top">&bull; <a href="#H8_002f300_002dAddressing" accesskey="3">H8/300-Addressing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Addressing Modes
  15587. </td></tr>
  15588. </table>
  15589. <hr>
  15590. <span id="H8_002f300_002dChars"></span><div class="header">
  15591. <p>
  15592. Next: <a href="#H8_002f300_002dRegs" accesskey="n" rel="next">H8/300-Regs</a>, Up: <a href="#H8_002f300-Syntax" accesskey="u" rel="up">H8/300 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15593. </div>
  15594. <span id="Special-Characters-10"></span><h4 class="subsubsection">9.14.2.1 Special Characters</h4>
  15595. <span id="index-line-comment-character_002c-H8_002f300"></span>
  15596. <span id="index-H8_002f300-line-comment-character"></span>
  15597. <p>&lsquo;<samp>;</samp>&rsquo; is the line comment character.
  15598. </p>
  15599. <span id="index-line-separator_002c-H8_002f300"></span>
  15600. <span id="index-statement-separator_002c-H8_002f300"></span>
  15601. <span id="index-H8_002f300-line-separator"></span>
  15602. <p>&lsquo;<samp>$</samp>&rsquo; can be used instead of a newline to separate statements.
  15603. Therefore <em>you may not use &lsquo;<samp>$</samp>&rsquo; in symbol names</em> on the H8/300.
  15604. </p>
  15605. <hr>
  15606. <span id="H8_002f300_002dRegs"></span><div class="header">
  15607. <p>
  15608. Next: <a href="#H8_002f300_002dAddressing" accesskey="n" rel="next">H8/300-Addressing</a>, Previous: <a href="#H8_002f300_002dChars" accesskey="p" rel="prev">H8/300-Chars</a>, Up: <a href="#H8_002f300-Syntax" accesskey="u" rel="up">H8/300 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15609. </div>
  15610. <span id="Register-Names-7"></span><h4 class="subsubsection">9.14.2.2 Register Names</h4>
  15611. <span id="index-H8_002f300-registers"></span>
  15612. <span id="index-register-names_002c-H8_002f300"></span>
  15613. <p>You can use predefined symbols of the form &lsquo;<samp>r<var>n</var>h</samp>&rsquo; and
  15614. &lsquo;<samp>r<var>n</var>l</samp>&rsquo; to refer to the H8/300 registers as sixteen 8-bit
  15615. general-purpose registers. <var>n</var> is a digit from &lsquo;<samp>0</samp>&rsquo; to
  15616. &lsquo;<samp>7</samp>&rsquo;); for instance, both &lsquo;<samp>r0h</samp>&rsquo; and &lsquo;<samp>r7l</samp>&rsquo; are valid
  15617. register names.
  15618. </p>
  15619. <p>You can also use the eight predefined symbols &lsquo;<samp>r<var>n</var></samp>&rsquo; to refer
  15620. to the H8/300 registers as 16-bit registers (you must use this form for
  15621. addressing).
  15622. </p>
  15623. <p>On the H8/300H, you can also use the eight predefined symbols
  15624. &lsquo;<samp>er<var>n</var></samp>&rsquo; (&lsquo;<samp>er0</samp>&rsquo; &hellip; &lsquo;<samp>er7</samp>&rsquo;) to refer to the 32-bit
  15625. general purpose registers.
  15626. </p>
  15627. <p>The two control registers are called <code>pc</code> (program counter; a
  15628. 16-bit register, except on the H8/300H where it is 24 bits) and
  15629. <code>ccr</code> (condition code register; an 8-bit register). <code>r7</code> is
  15630. used as the stack pointer, and can also be called <code>sp</code>.
  15631. </p>
  15632. <hr>
  15633. <span id="H8_002f300_002dAddressing"></span><div class="header">
  15634. <p>
  15635. Previous: <a href="#H8_002f300_002dRegs" accesskey="p" rel="prev">H8/300-Regs</a>, Up: <a href="#H8_002f300-Syntax" accesskey="u" rel="up">H8/300 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15636. </div>
  15637. <span id="Addressing-Modes-2"></span><h4 class="subsubsection">9.14.2.3 Addressing Modes</h4>
  15638. <span id="index-addressing-modes_002c-H8_002f300"></span>
  15639. <span id="index-H8_002f300-addressing-modes"></span>
  15640. <p>as understands the following addressing modes for the H8/300:
  15641. </p><dl compact="compact">
  15642. <dt><code>r<var>n</var></code></dt>
  15643. <dd><p>Register direct
  15644. </p>
  15645. </dd>
  15646. <dt><code>@r<var>n</var></code></dt>
  15647. <dd><p>Register indirect
  15648. </p>
  15649. </dd>
  15650. <dt><code>@(<var>d</var>, r<var>n</var>)</code></dt>
  15651. <dt><code>@(<var>d</var>:16, r<var>n</var>)</code></dt>
  15652. <dt><code>@(<var>d</var>:24, r<var>n</var>)</code></dt>
  15653. <dd><p>Register indirect: 16-bit or 24-bit displacement <var>d</var> from register
  15654. <var>n</var>. (24-bit displacements are only meaningful on the H8/300H.)
  15655. </p>
  15656. </dd>
  15657. <dt><code>@r<var>n</var>+</code></dt>
  15658. <dd><p>Register indirect with post-increment
  15659. </p>
  15660. </dd>
  15661. <dt><code>@-r<var>n</var></code></dt>
  15662. <dd><p>Register indirect with pre-decrement
  15663. </p>
  15664. </dd>
  15665. <dt><code><code>@</code><var>aa</var></code></dt>
  15666. <dt><code><code>@</code><var>aa</var>:8</code></dt>
  15667. <dt><code><code>@</code><var>aa</var>:16</code></dt>
  15668. <dt><code><code>@</code><var>aa</var>:24</code></dt>
  15669. <dd><p>Absolute address <code>aa</code>. (The address size &lsquo;<samp>:24</samp>&rsquo; only makes
  15670. sense on the H8/300H.)
  15671. </p>
  15672. </dd>
  15673. <dt><code>#<var>xx</var></code></dt>
  15674. <dt><code>#<var>xx</var>:8</code></dt>
  15675. <dt><code>#<var>xx</var>:16</code></dt>
  15676. <dt><code>#<var>xx</var>:32</code></dt>
  15677. <dd><p>Immediate data <var>xx</var>. You may specify the &lsquo;<samp>:8</samp>&rsquo;, &lsquo;<samp>:16</samp>&rsquo;, or
  15678. &lsquo;<samp>:32</samp>&rsquo; for clarity, if you wish; but <code>as</code> neither
  15679. requires this nor uses it&mdash;the data size required is taken from
  15680. context.
  15681. </p>
  15682. </dd>
  15683. <dt><code><code>@</code><code>@</code><var>aa</var></code></dt>
  15684. <dt><code><code>@</code><code>@</code><var>aa</var>:8</code></dt>
  15685. <dd><p>Memory indirect. You may specify the &lsquo;<samp>:8</samp>&rsquo; for clarity, if you
  15686. wish; but <code>as</code> neither requires this nor uses it.
  15687. </p></dd>
  15688. </dl>
  15689. <hr>
  15690. <span id="H8_002f300-Floating-Point"></span><div class="header">
  15691. <p>
  15692. Next: <a href="#H8_002f300-Directives" accesskey="n" rel="next">H8/300 Directives</a>, Previous: <a href="#H8_002f300-Syntax" accesskey="p" rel="prev">H8/300 Syntax</a>, Up: <a href="#H8_002f300_002dDependent" accesskey="u" rel="up">H8/300-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15693. </div>
  15694. <span id="Floating-Point-5"></span><h4 class="subsection">9.14.3 Floating Point</h4>
  15695. <span id="index-floating-point_002c-H8_002f300-_0028IEEE_0029"></span>
  15696. <span id="index-H8_002f300-floating-point-_0028IEEE_0029"></span>
  15697. <p>The H8/300 family has no hardware floating point, but the <code>.float</code>
  15698. directive generates <small>IEEE</small> floating-point numbers for compatibility
  15699. with other development tools.
  15700. </p>
  15701. <hr>
  15702. <span id="H8_002f300-Directives"></span><div class="header">
  15703. <p>
  15704. Next: <a href="#H8_002f300-Opcodes" accesskey="n" rel="next">H8/300 Opcodes</a>, Previous: <a href="#H8_002f300-Floating-Point" accesskey="p" rel="prev">H8/300 Floating Point</a>, Up: <a href="#H8_002f300_002dDependent" accesskey="u" rel="up">H8/300-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15705. </div>
  15706. <span id="H8_002f300-Machine-Directives"></span><h4 class="subsection">9.14.4 H8/300 Machine Directives</h4>
  15707. <span id="index-H8_002f300-machine-directives-_0028none_0029"></span>
  15708. <span id="index-machine-directives_002c-H8_002f300-_0028none_0029"></span>
  15709. <span id="index-word-directive_002c-H8_002f300"></span>
  15710. <span id="index-int-directive_002c-H8_002f300"></span>
  15711. <p><code>as</code> has the following machine-dependent directives for
  15712. the H8/300:
  15713. </p>
  15714. <dl compact="compact">
  15715. <dd><span id="index-H8_002f300H_002c-assembling-for"></span>
  15716. </dd>
  15717. <dt><code>.h8300h</code></dt>
  15718. <dd><p>Recognize and emit additional instructions for the H8/300H variant, and
  15719. also make <code>.int</code> emit 32-bit numbers rather than the usual (16-bit)
  15720. for the H8/300 family.
  15721. </p>
  15722. </dd>
  15723. <dt><code>.h8300s</code></dt>
  15724. <dd><p>Recognize and emit additional instructions for the H8S variant, and
  15725. also make <code>.int</code> emit 32-bit numbers rather than the usual (16-bit)
  15726. for the H8/300 family.
  15727. </p>
  15728. </dd>
  15729. <dt><code>.h8300hn</code></dt>
  15730. <dd><p>Recognize and emit additional instructions for the H8/300H variant in
  15731. normal mode, and also make <code>.int</code> emit 32-bit numbers rather than
  15732. the usual (16-bit) for the H8/300 family.
  15733. </p>
  15734. </dd>
  15735. <dt><code>.h8300sn</code></dt>
  15736. <dd><p>Recognize and emit additional instructions for the H8S variant in
  15737. normal mode, and also make <code>.int</code> emit 32-bit numbers rather than
  15738. the usual (16-bit) for the H8/300 family.
  15739. </p></dd>
  15740. </dl>
  15741. <p>On the H8/300 family (including the H8/300H) &lsquo;<samp>.word</samp>&rsquo; directives
  15742. generate 16-bit numbers.
  15743. </p>
  15744. <hr>
  15745. <span id="H8_002f300-Opcodes"></span><div class="header">
  15746. <p>
  15747. Previous: <a href="#H8_002f300-Directives" accesskey="p" rel="prev">H8/300 Directives</a>, Up: <a href="#H8_002f300_002dDependent" accesskey="u" rel="up">H8/300-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15748. </div>
  15749. <span id="Opcodes-7"></span><h4 class="subsection">9.14.5 Opcodes</h4>
  15750. <span id="index-H8_002f300-opcode-summary"></span>
  15751. <span id="index-opcode-summary_002c-H8_002f300"></span>
  15752. <span id="index-mnemonics_002c-H8_002f300"></span>
  15753. <span id="index-instruction-summary_002c-H8_002f300"></span>
  15754. <p>For detailed information on the H8/300 machine instruction set, see
  15755. <cite>H8/300 Series Programming Manual</cite>. For information specific to
  15756. the H8/300H, see <cite>H8/300H Series Programming Manual</cite> (Renesas).
  15757. </p>
  15758. <p><code>as</code> implements all the standard H8/300 opcodes. No additional
  15759. pseudo-instructions are needed on this family.
  15760. </p>
  15761. <span id="index-size-suffixes_002c-H8_002f300"></span>
  15762. <span id="index-H8_002f300-size-suffixes"></span>
  15763. <p>Four H8/300 instructions (<code>add</code>, <code>cmp</code>, <code>mov</code>,
  15764. <code>sub</code>) are defined with variants using the suffixes &lsquo;<samp>.b</samp>&rsquo;,
  15765. &lsquo;<samp>.w</samp>&rsquo;, and &lsquo;<samp>.l</samp>&rsquo; to specify the size of a memory operand.
  15766. <code>as</code> supports these suffixes, but does not require them;
  15767. since one of the operands is always a register, <code>as</code> can
  15768. deduce the correct size.
  15769. </p>
  15770. <p>For example, since <code>r0</code> refers to a 16-bit register,
  15771. </p><div class="example">
  15772. <pre class="example">mov r0,@foo
  15773. </pre><pre class="example">is equivalent to
  15774. </pre><pre class="example">mov.w r0,@foo
  15775. </pre></div>
  15776. <p>If you use the size suffixes, <code>as</code> issues a warning when
  15777. the suffix and the register size do not match.
  15778. </p>
  15779. <hr>
  15780. <span id="HPPA_002dDependent"></span><div class="header">
  15781. <p>
  15782. Next: <a href="#i386_002dDependent" accesskey="n" rel="next">i386-Dependent</a>, Previous: <a href="#H8_002f300_002dDependent" accesskey="p" rel="prev">H8/300-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15783. </div>
  15784. <span id="HPPA-Dependent-Features"></span><h3 class="section">9.15 HPPA Dependent Features</h3>
  15785. <span id="index-support"></span>
  15786. <table class="menu" border="0" cellspacing="0">
  15787. <tr><td align="left" valign="top">&bull; <a href="#HPPA-Notes" accesskey="1">HPPA Notes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Notes
  15788. </td></tr>
  15789. <tr><td align="left" valign="top">&bull; <a href="#HPPA-Options" accesskey="2">HPPA Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  15790. </td></tr>
  15791. <tr><td align="left" valign="top">&bull; <a href="#HPPA-Syntax" accesskey="3">HPPA Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  15792. </td></tr>
  15793. <tr><td align="left" valign="top">&bull; <a href="#HPPA-Floating-Point" accesskey="4">HPPA Floating Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  15794. </td></tr>
  15795. <tr><td align="left" valign="top">&bull; <a href="#HPPA-Directives" accesskey="5">HPPA Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">HPPA Machine Directives
  15796. </td></tr>
  15797. <tr><td align="left" valign="top">&bull; <a href="#HPPA-Opcodes" accesskey="6">HPPA Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  15798. </td></tr>
  15799. </table>
  15800. <hr>
  15801. <span id="HPPA-Notes"></span><div class="header">
  15802. <p>
  15803. Next: <a href="#HPPA-Options" accesskey="n" rel="next">HPPA Options</a>, Up: <a href="#HPPA_002dDependent" accesskey="u" rel="up">HPPA-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15804. </div>
  15805. <span id="Notes-1"></span><h4 class="subsection">9.15.1 Notes</h4>
  15806. <p>As a back end for <small>GNU</small> <small>CC</small> <code>as</code> has been thoroughly tested and should
  15807. work extremely well. We have tested it only minimally on hand written assembly
  15808. code and no one has tested it much on the assembly output from the HP
  15809. compilers.
  15810. </p>
  15811. <p>The format of the debugging sections has changed since the original
  15812. <code>as</code> port (version 1.3X) was released; therefore,
  15813. you must rebuild all HPPA objects and libraries with the new
  15814. assembler so that you can debug the final executable.
  15815. </p>
  15816. <p>The HPPA <code>as</code> port generates a small subset of the relocations
  15817. available in the SOM and ELF object file formats. Additional relocation
  15818. support will be added as it becomes necessary.
  15819. </p>
  15820. <hr>
  15821. <span id="HPPA-Options"></span><div class="header">
  15822. <p>
  15823. Next: <a href="#HPPA-Syntax" accesskey="n" rel="next">HPPA Syntax</a>, Previous: <a href="#HPPA-Notes" accesskey="p" rel="prev">HPPA Notes</a>, Up: <a href="#HPPA_002dDependent" accesskey="u" rel="up">HPPA-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15824. </div>
  15825. <span id="Options-9"></span><h4 class="subsection">9.15.2 Options</h4>
  15826. <p><code>as</code> has no machine-dependent command-line options for the HPPA.
  15827. </p>
  15828. <span id="index-HPPA-Syntax"></span>
  15829. <hr>
  15830. <span id="HPPA-Syntax"></span><div class="header">
  15831. <p>
  15832. Next: <a href="#HPPA-Floating-Point" accesskey="n" rel="next">HPPA Floating Point</a>, Previous: <a href="#HPPA-Options" accesskey="p" rel="prev">HPPA Options</a>, Up: <a href="#HPPA_002dDependent" accesskey="u" rel="up">HPPA-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15833. </div>
  15834. <span id="Syntax-13"></span><h4 class="subsection">9.15.3 Syntax</h4>
  15835. <p>The assembler syntax closely follows the HPPA instruction set
  15836. reference manual; assembler directives and general syntax closely follow the
  15837. HPPA assembly language reference manual, with a few noteworthy differences.
  15838. </p>
  15839. <p>First, a colon may immediately follow a label definition. This is
  15840. simply for compatibility with how most assembly language programmers
  15841. write code.
  15842. </p>
  15843. <p>Some obscure expression parsing problems may affect hand written code which
  15844. uses the <code>spop</code> instructions, or code which makes significant
  15845. use of the <code>!</code> line separator.
  15846. </p>
  15847. <p><code>as</code> is much less forgiving about missing arguments and other
  15848. similar oversights than the HP assembler. <code>as</code> notifies you
  15849. of missing arguments as syntax errors; this is regarded as a feature, not a
  15850. bug.
  15851. </p>
  15852. <p>Finally, <code>as</code> allows you to use an external symbol without
  15853. explicitly importing the symbol. <em>Warning:</em> in the future this will be
  15854. an error for HPPA targets.
  15855. </p>
  15856. <p>Special characters for HPPA targets include:
  15857. </p>
  15858. <p>&lsquo;<samp>;</samp>&rsquo; is the line comment character.
  15859. </p>
  15860. <p>&lsquo;<samp>!</samp>&rsquo; can be used instead of a newline to separate statements.
  15861. </p>
  15862. <p>Since &lsquo;<samp>$</samp>&rsquo; has no special meaning, you may use it in symbol names.
  15863. </p>
  15864. <hr>
  15865. <span id="HPPA-Floating-Point"></span><div class="header">
  15866. <p>
  15867. Next: <a href="#HPPA-Directives" accesskey="n" rel="next">HPPA Directives</a>, Previous: <a href="#HPPA-Syntax" accesskey="p" rel="prev">HPPA Syntax</a>, Up: <a href="#HPPA_002dDependent" accesskey="u" rel="up">HPPA-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15868. </div>
  15869. <span id="Floating-Point-6"></span><h4 class="subsection">9.15.4 Floating Point</h4>
  15870. <span id="index-floating-point_002c-HPPA-_0028IEEE_0029"></span>
  15871. <span id="index-HPPA-floating-point-_0028IEEE_0029"></span>
  15872. <p>The HPPA family uses <small>IEEE</small> floating-point numbers.
  15873. </p>
  15874. <hr>
  15875. <span id="HPPA-Directives"></span><div class="header">
  15876. <p>
  15877. Next: <a href="#HPPA-Opcodes" accesskey="n" rel="next">HPPA Opcodes</a>, Previous: <a href="#HPPA-Floating-Point" accesskey="p" rel="prev">HPPA Floating Point</a>, Up: <a href="#HPPA_002dDependent" accesskey="u" rel="up">HPPA-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  15878. </div>
  15879. <span id="HPPA-Assembler-Directives"></span><h4 class="subsection">9.15.5 HPPA Assembler Directives</h4>
  15880. <p><code>as</code> for the HPPA supports many additional directives for
  15881. compatibility with the native assembler. This section describes them only
  15882. briefly. For detailed information on HPPA-specific assembler directives, see
  15883. <cite>HP9000 Series 800 Assembly Language Reference Manual</cite> (HP 92432-90001).
  15884. </p>
  15885. <span id="index-HPPA-directives-not-supported"></span>
  15886. <p><code>as</code> does <em>not</em> support the following assembler directives
  15887. described in the HP manual:
  15888. </p>
  15889. <div class="example">
  15890. <pre class="example">.endm .liston
  15891. .enter .locct
  15892. .leave .macro
  15893. .listoff
  15894. </pre></div>
  15895. <span id="index-_002eparam-on-HPPA"></span>
  15896. <p>Beyond those implemented for compatibility, <code>as</code> supports one
  15897. additional assembler directive for the HPPA: <code>.param</code>. It conveys
  15898. register argument locations for static functions. Its syntax closely follows
  15899. the <code>.export</code> directive.
  15900. </p>
  15901. <span id="index-HPPA_002donly-directives"></span>
  15902. <p>These are the additional directives in <code>as</code> for the HPPA:
  15903. </p>
  15904. <dl compact="compact">
  15905. <dt><code>.block <var>n</var></code></dt>
  15906. <dt><code>.blockz <var>n</var></code></dt>
  15907. <dd><p>Reserve <var>n</var> bytes of storage, and initialize them to zero.
  15908. </p>
  15909. </dd>
  15910. <dt><code>.call</code></dt>
  15911. <dd><p>Mark the beginning of a procedure call. Only the special case with <em>no
  15912. arguments</em> is allowed.
  15913. </p>
  15914. </dd>
  15915. <dt><code>.callinfo [ <var>param</var>=<var>value</var>, &hellip; ] [ <var>flag</var>, &hellip; ]</code></dt>
  15916. <dd><p>Specify a number of parameters and flags that define the environment for a
  15917. procedure.
  15918. </p>
  15919. <p><var>param</var> may be any of &lsquo;<samp>frame</samp>&rsquo; (frame size), &lsquo;<samp>entry_gr</samp>&rsquo; (end of
  15920. general register range), &lsquo;<samp>entry_fr</samp>&rsquo; (end of float register range),
  15921. &lsquo;<samp>entry_sr</samp>&rsquo; (end of space register range).
  15922. </p>
  15923. <p>The values for <var>flag</var> are &lsquo;<samp>calls</samp>&rsquo; or &lsquo;<samp>caller</samp>&rsquo; (proc has
  15924. subroutines), &lsquo;<samp>no_calls</samp>&rsquo; (proc does not call subroutines), &lsquo;<samp>save_rp</samp>&rsquo;
  15925. (preserve return pointer), &lsquo;<samp>save_sp</samp>&rsquo; (proc preserves stack pointer),
  15926. &lsquo;<samp>no_unwind</samp>&rsquo; (do not unwind this proc), &lsquo;<samp>hpux_int</samp>&rsquo; (proc is interrupt
  15927. routine).
  15928. </p>
  15929. </dd>
  15930. <dt><code>.code</code></dt>
  15931. <dd><p>Assemble into the standard section called &lsquo;<samp>$TEXT$</samp>&rsquo;, subsection
  15932. &lsquo;<samp>$CODE$</samp>&rsquo;.
  15933. </p>
  15934. </dd>
  15935. <dt><code>.copyright &quot;<var>string</var>&quot;</code></dt>
  15936. <dd><p>In the SOM object format, insert <var>string</var> into the object code, marked as a
  15937. copyright string.
  15938. </p>
  15939. </dd>
  15940. <dt><code>.copyright &quot;<var>string</var>&quot;</code></dt>
  15941. <dd><p>In the ELF object format, insert <var>string</var> into the object code, marked as a
  15942. version string.
  15943. </p>
  15944. </dd>
  15945. <dt><code>.enter</code></dt>
  15946. <dd><p>Not yet supported; the assembler rejects programs containing this directive.
  15947. </p>
  15948. </dd>
  15949. <dt><code>.entry</code></dt>
  15950. <dd><p>Mark the beginning of a procedure.
  15951. </p>
  15952. </dd>
  15953. <dt><code>.exit</code></dt>
  15954. <dd><p>Mark the end of a procedure.
  15955. </p>
  15956. </dd>
  15957. <dt><code>.export <var>name</var> [ ,<var>typ</var> ] [ ,<var>param</var>=<var>r</var> ]</code></dt>
  15958. <dd><p>Make a procedure <var>name</var> available to callers. <var>typ</var>, if present, must
  15959. be one of &lsquo;<samp>absolute</samp>&rsquo;, &lsquo;<samp>code</samp>&rsquo; (ELF only, not SOM), &lsquo;<samp>data</samp>&rsquo;,
  15960. &lsquo;<samp>entry</samp>&rsquo;, &lsquo;<samp>data</samp>&rsquo;, &lsquo;<samp>entry</samp>&rsquo;, &lsquo;<samp>millicode</samp>&rsquo;, &lsquo;<samp>plabel</samp>&rsquo;,
  15961. &lsquo;<samp>pri_prog</samp>&rsquo;, or &lsquo;<samp>sec_prog</samp>&rsquo;.
  15962. </p>
  15963. <p><var>param</var>, if present, provides either relocation information for the
  15964. procedure arguments and result, or a privilege level. <var>param</var> may be
  15965. &lsquo;<samp>argw<var>n</var></samp>&rsquo; (where <var>n</var> ranges from <code>0</code> to <code>3</code>, and
  15966. indicates one of four one-word arguments); &lsquo;<samp>rtnval</samp>&rsquo; (the procedure&rsquo;s
  15967. result); or &lsquo;<samp>priv_lev</samp>&rsquo; (privilege level). For arguments or the result,
  15968. <var>r</var> specifies how to relocate, and must be one of &lsquo;<samp>no</samp>&rsquo; (not
  15969. relocatable), &lsquo;<samp>gr</samp>&rsquo; (argument is in general register), &lsquo;<samp>fr</samp>&rsquo; (in
  15970. floating point register), or &lsquo;<samp>fu</samp>&rsquo; (upper half of float register).
  15971. For &lsquo;<samp>priv_lev</samp>&rsquo;, <var>r</var> is an integer.
  15972. </p>
  15973. </dd>
  15974. <dt><code>.half <var>n</var></code></dt>
  15975. <dd><p>Define a two-byte integer constant <var>n</var>; synonym for the portable
  15976. <code>as</code> directive <code>.short</code>.
  15977. </p>
  15978. </dd>
  15979. <dt><code>.import <var>name</var> [ ,<var>typ</var> ]</code></dt>
  15980. <dd><p>Converse of <code>.export</code>; make a procedure available to call. The arguments
  15981. use the same conventions as the first two arguments for <code>.export</code>.
  15982. </p>
  15983. </dd>
  15984. <dt><code>.label <var>name</var></code></dt>
  15985. <dd><p>Define <var>name</var> as a label for the current assembly location.
  15986. </p>
  15987. </dd>
  15988. <dt><code>.leave</code></dt>
  15989. <dd><p>Not yet supported; the assembler rejects programs containing this directive.
  15990. </p>
  15991. </dd>
  15992. <dt><code>.origin <var>lc</var></code></dt>
  15993. <dd><p>Advance location counter to <var>lc</var>. Synonym for the <code>as</code>
  15994. portable directive <code>.org</code>.
  15995. </p>
  15996. </dd>
  15997. <dt><code>.param <var>name</var> [ ,<var>typ</var> ] [ ,<var>param</var>=<var>r</var> ]</code></dt>
  15998. <dd><p>Similar to <code>.export</code>, but used for static procedures.
  15999. </p>
  16000. </dd>
  16001. <dt><code>.proc</code></dt>
  16002. <dd><p>Use preceding the first statement of a procedure.
  16003. </p>
  16004. </dd>
  16005. <dt><code>.procend</code></dt>
  16006. <dd><p>Use following the last statement of a procedure.
  16007. </p>
  16008. </dd>
  16009. <dt><code><var>label</var> .reg <var>expr</var></code></dt>
  16010. <dd><p>Synonym for <code>.equ</code>; define <var>label</var> with the absolute expression
  16011. <var>expr</var> as its value.
  16012. </p>
  16013. </dd>
  16014. <dt><code>.space <var>secname</var> [ ,<var>params</var> ]</code></dt>
  16015. <dd><p>Switch to section <var>secname</var>, creating a new section by that name if
  16016. necessary. You may only use <var>params</var> when creating a new section, not
  16017. when switching to an existing one. <var>secname</var> may identify a section by
  16018. number rather than by name.
  16019. </p>
  16020. <p>If specified, the list <var>params</var> declares attributes of the section,
  16021. identified by keywords. The keywords recognized are &lsquo;<samp>spnum=<var>exp</var></samp>&rsquo;
  16022. (identify this section by the number <var>exp</var>, an absolute expression),
  16023. &lsquo;<samp>sort=<var>exp</var></samp>&rsquo; (order sections according to this sort key when linking;
  16024. <var>exp</var> is an absolute expression), &lsquo;<samp>unloadable</samp>&rsquo; (section contains no
  16025. loadable data), &lsquo;<samp>notdefined</samp>&rsquo; (this section defined elsewhere), and
  16026. &lsquo;<samp>private</samp>&rsquo; (data in this section not available to other programs).
  16027. </p>
  16028. </dd>
  16029. <dt><code>.spnum <var>secnam</var></code></dt>
  16030. <dd><p>Allocate four bytes of storage, and initialize them with the section number of
  16031. the section named <var>secnam</var>. (You can define the section number with the
  16032. HPPA <code>.space</code> directive.)
  16033. </p>
  16034. <span id="index-string-directive-on-HPPA"></span>
  16035. </dd>
  16036. <dt><code>.string &quot;<var>str</var>&quot;</code></dt>
  16037. <dd><p>Copy the characters in the string <var>str</var> to the object file.
  16038. See <a href="#Strings">Strings</a>, for information on escape sequences you can use in
  16039. <code>as</code> strings.
  16040. </p>
  16041. <p><em>Warning!</em> The HPPA version of <code>.string</code> differs from the
  16042. usual <code>as</code> definition: it does <em>not</em> write a zero byte
  16043. after copying <var>str</var>.
  16044. </p>
  16045. </dd>
  16046. <dt><code>.stringz &quot;<var>str</var>&quot;</code></dt>
  16047. <dd><p>Like <code>.string</code>, but appends a zero byte after copying <var>str</var> to object
  16048. file.
  16049. </p>
  16050. </dd>
  16051. <dt><code>.subspa <var>name</var> [ ,<var>params</var> ]</code></dt>
  16052. <dt><code>.nsubspa <var>name</var> [ ,<var>params</var> ]</code></dt>
  16053. <dd><p>Similar to <code>.space</code>, but selects a subsection <var>name</var> within the
  16054. current section. You may only specify <var>params</var> when you create a
  16055. subsection (in the first instance of <code>.subspa</code> for this <var>name</var>).
  16056. </p>
  16057. <p>If specified, the list <var>params</var> declares attributes of the subsection,
  16058. identified by keywords. The keywords recognized are &lsquo;<samp>quad=<var>expr</var></samp>&rsquo;
  16059. (&ldquo;quadrant&rdquo; for this subsection), &lsquo;<samp>align=<var>expr</var></samp>&rsquo; (alignment for
  16060. beginning of this subsection; a power of two), &lsquo;<samp>access=<var>expr</var></samp>&rsquo; (value
  16061. for &ldquo;access rights&rdquo; field), &lsquo;<samp>sort=<var>expr</var></samp>&rsquo; (sorting order for this
  16062. subspace in link), &lsquo;<samp>code_only</samp>&rsquo; (subsection contains only code),
  16063. &lsquo;<samp>unloadable</samp>&rsquo; (subsection cannot be loaded into memory), &lsquo;<samp>comdat</samp>&rsquo;
  16064. (subsection is comdat), &lsquo;<samp>common</samp>&rsquo; (subsection is common block),
  16065. &lsquo;<samp>dup_comm</samp>&rsquo; (subsection may have duplicate names), or &lsquo;<samp>zero</samp>&rsquo;
  16066. (subsection is all zeros, do not write in object file).
  16067. </p>
  16068. <p><code>.nsubspa</code> always creates a new subspace with the given name, even
  16069. if one with the same name already exists.
  16070. </p>
  16071. <p>&lsquo;<samp>comdat</samp>&rsquo;, &lsquo;<samp>common</samp>&rsquo; and &lsquo;<samp>dup_comm</samp>&rsquo; can be used to implement
  16072. various flavors of one-only support when using the SOM linker. The SOM
  16073. linker only supports specific combinations of these flags. The details
  16074. are not documented. A brief description is provided here.
  16075. </p>
  16076. <p>&lsquo;<samp>comdat</samp>&rsquo; provides a form of linkonce support. It is useful for
  16077. both code and data subspaces. A &lsquo;<samp>comdat</samp>&rsquo; subspace has a key symbol
  16078. marked by the &lsquo;<samp>is_comdat</samp>&rsquo; flag or &lsquo;<samp>ST_COMDAT</samp>&rsquo;. Only the first
  16079. subspace for any given key is selected. The key symbol becomes universal
  16080. in shared links. This is similar to the behavior of &lsquo;<samp>secondary_def</samp>&rsquo;
  16081. symbols.
  16082. </p>
  16083. <p>&lsquo;<samp>common</samp>&rsquo; provides Fortran named common support. It is only useful
  16084. for data subspaces. Symbols with the flag &lsquo;<samp>is_common</samp>&rsquo; retain this
  16085. flag in shared links. Referencing a &lsquo;<samp>is_common</samp>&rsquo; symbol in a shared
  16086. library from outside the library doesn&rsquo;t work. Thus, &lsquo;<samp>is_common</samp>&rsquo;
  16087. symbols must be output whenever they are needed.
  16088. </p>
  16089. <p>&lsquo;<samp>common</samp>&rsquo; and &lsquo;<samp>dup_comm</samp>&rsquo; together provide Cobol common support.
  16090. The subspaces in this case must all be the same length. Otherwise, this
  16091. support is similar to the Fortran common support.
  16092. </p>
  16093. <p>&lsquo;<samp>dup_comm</samp>&rsquo; by itself provides a type of one-only support for code.
  16094. Only the first &lsquo;<samp>dup_comm</samp>&rsquo; subspace is selected. There is a rather
  16095. complex algorithm to compare subspaces. Code symbols marked with the
  16096. &lsquo;<samp>dup_common</samp>&rsquo; flag are hidden. This support was intended for &quot;C++
  16097. duplicate inlines&quot;.
  16098. </p>
  16099. <p>A simplified technique is used to mark the flags of symbols based on
  16100. the flags of their subspace. A symbol with the scope SS_UNIVERSAL and
  16101. type ST_ENTRY, ST_CODE or ST_DATA is marked with the corresponding
  16102. settings of &lsquo;<samp>comdat</samp>&rsquo;, &lsquo;<samp>common</samp>&rsquo; and &lsquo;<samp>dup_comm</samp>&rsquo; from the
  16103. subspace, respectively. This avoids having to introduce additional
  16104. directives to mark these symbols. The HP assembler sets &lsquo;<samp>is_common</samp>&rsquo;
  16105. from &lsquo;<samp>common</samp>&rsquo;. However, it doesn&rsquo;t set the &lsquo;<samp>dup_common</samp>&rsquo; from
  16106. &lsquo;<samp>dup_comm</samp>&rsquo;. It doesn&rsquo;t have &lsquo;<samp>comdat</samp>&rsquo; support.
  16107. </p>
  16108. </dd>
  16109. <dt><code>.version &quot;<var>str</var>&quot;</code></dt>
  16110. <dd><p>Write <var>str</var> as version identifier in object code.
  16111. </p></dd>
  16112. </dl>
  16113. <hr>
  16114. <span id="HPPA-Opcodes"></span><div class="header">
  16115. <p>
  16116. Previous: <a href="#HPPA-Directives" accesskey="p" rel="prev">HPPA Directives</a>, Up: <a href="#HPPA_002dDependent" accesskey="u" rel="up">HPPA-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  16117. </div>
  16118. <span id="Opcodes-8"></span><h4 class="subsection">9.15.6 Opcodes</h4>
  16119. <p>For detailed information on the HPPA machine instruction set, see
  16120. <cite>PA-RISC Architecture and Instruction Set Reference Manual</cite>
  16121. (HP 09740-90039).
  16122. </p>
  16123. <hr>
  16124. <span id="i386_002dDependent"></span><div class="header">
  16125. <p>
  16126. Next: <a href="#IA_002d64_002dDependent" accesskey="n" rel="next">IA-64-Dependent</a>, Previous: <a href="#HPPA_002dDependent" accesskey="p" rel="prev">HPPA-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  16127. </div>
  16128. <span id="g_t80386-Dependent-Features"></span><h3 class="section">9.16 80386 Dependent Features</h3>
  16129. <span id="index-i386-support"></span>
  16130. <span id="index-i80386-support"></span>
  16131. <span id="index-x86_002d64-support"></span>
  16132. <p>The i386 version <code>as</code> supports both the original Intel 386
  16133. architecture in both 16 and 32-bit mode as well as AMD x86-64 architecture
  16134. extending the Intel architecture to 64-bits.
  16135. </p>
  16136. <table class="menu" border="0" cellspacing="0">
  16137. <tr><td align="left" valign="top">&bull; <a href="#i386_002dOptions" accesskey="1">i386-Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  16138. </td></tr>
  16139. <tr><td align="left" valign="top">&bull; <a href="#i386_002dDirectives" accesskey="2">i386-Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">X86 specific directives
  16140. </td></tr>
  16141. <tr><td align="left" valign="top">&bull; <a href="#i386_002dSyntax" accesskey="3">i386-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntactical considerations
  16142. </td></tr>
  16143. <tr><td align="left" valign="top">&bull; <a href="#i386_002dMnemonics" accesskey="4">i386-Mnemonics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Instruction Naming
  16144. </td></tr>
  16145. <tr><td align="left" valign="top">&bull; <a href="#i386_002dRegs" accesskey="5">i386-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Naming
  16146. </td></tr>
  16147. <tr><td align="left" valign="top">&bull; <a href="#i386_002dPrefixes" accesskey="6">i386-Prefixes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Instruction Prefixes
  16148. </td></tr>
  16149. <tr><td align="left" valign="top">&bull; <a href="#i386_002dMemory" accesskey="7">i386-Memory</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Memory References
  16150. </td></tr>
  16151. <tr><td align="left" valign="top">&bull; <a href="#i386_002dJumps" accesskey="8">i386-Jumps</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Handling of Jump Instructions
  16152. </td></tr>
  16153. <tr><td align="left" valign="top">&bull; <a href="#i386_002dFloat" accesskey="9">i386-Float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  16154. </td></tr>
  16155. <tr><td align="left" valign="top">&bull; <a href="#i386_002dSIMD">i386-SIMD</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Intel&rsquo;s MMX and AMD&rsquo;s 3DNow! SIMD Operations
  16156. </td></tr>
  16157. <tr><td align="left" valign="top">&bull; <a href="#i386_002dLWP">i386-LWP</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">AMD&rsquo;s Lightweight Profiling Instructions
  16158. </td></tr>
  16159. <tr><td align="left" valign="top">&bull; <a href="#i386_002dBMI">i386-BMI</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Bit Manipulation Instruction
  16160. </td></tr>
  16161. <tr><td align="left" valign="top">&bull; <a href="#i386_002dTBM">i386-TBM</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">AMD&rsquo;s Trailing Bit Manipulation Instructions
  16162. </td></tr>
  16163. <tr><td align="left" valign="top">&bull; <a href="#i386_002d16bit">i386-16bit</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing 16-bit Code
  16164. </td></tr>
  16165. <tr><td align="left" valign="top">&bull; <a href="#i386_002dArch">i386-Arch</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying an x86 CPU architecture
  16166. </td></tr>
  16167. <tr><td align="left" valign="top">&bull; <a href="#i386_002dISA">i386-ISA</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">AMD64 ISA vs. Intel64 ISA
  16168. </td></tr>
  16169. <tr><td align="left" valign="top">&bull; <a href="#i386_002dBugs">i386-Bugs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">AT&amp;T Syntax bugs
  16170. </td></tr>
  16171. <tr><td align="left" valign="top">&bull; <a href="#i386_002dNotes">i386-Notes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Notes
  16172. </td></tr>
  16173. </table>
  16174. <hr>
  16175. <span id="i386_002dOptions"></span><div class="header">
  16176. <p>
  16177. Next: <a href="#i386_002dDirectives" accesskey="n" rel="next">i386-Directives</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  16178. </div>
  16179. <span id="Options-10"></span><h4 class="subsection">9.16.1 Options</h4>
  16180. <span id="index-options-for-i386"></span>
  16181. <span id="index-options-for-x86_002d64"></span>
  16182. <span id="index-i386-options"></span>
  16183. <span id="index-x86_002d64-options"></span>
  16184. <p>The i386 version of <code>as</code> has a few machine
  16185. dependent options:
  16186. </p>
  16187. <dl compact="compact">
  16188. <dd><span id="index-_002d_002d32-option_002c-i386"></span>
  16189. <span id="index-_002d_002d32-option_002c-x86_002d64"></span>
  16190. <span id="index-_002d_002dx32-option_002c-i386"></span>
  16191. <span id="index-_002d_002dx32-option_002c-x86_002d64"></span>
  16192. <span id="index-_002d_002d64-option_002c-i386"></span>
  16193. <span id="index-_002d_002d64-option_002c-x86_002d64"></span>
  16194. </dd>
  16195. <dt><code>--32 | --x32 | --64</code></dt>
  16196. <dd><p>Select the word size, either 32 bits or 64 bits. &lsquo;<samp>--32</samp>&rsquo;
  16197. implies Intel i386 architecture, while &lsquo;<samp>--x32</samp>&rsquo; and &lsquo;<samp>--64</samp>&rsquo;
  16198. imply AMD x86-64 architecture with 32-bit or 64-bit word-size
  16199. respectively.
  16200. </p>
  16201. <p>These options are only available with the ELF object file format, and
  16202. require that the necessary BFD support has been included (on a 32-bit
  16203. platform you have to add &ndash;enable-64-bit-bfd to configure enable 64-bit
  16204. usage and use x86-64 as target platform).
  16205. </p>
  16206. </dd>
  16207. <dt><code>-n</code></dt>
  16208. <dd><p>By default, x86 GAS replaces multiple nop instructions used for
  16209. alignment within code sections with multi-byte nop instructions such
  16210. as leal 0(%esi,1),%esi. This switch disables the optimization if a single
  16211. byte nop (0x90) is explicitly specified as the fill byte for alignment.
  16212. </p>
  16213. <span id="index-_002d_002ddivide-option_002c-i386"></span>
  16214. </dd>
  16215. <dt><code>--divide</code></dt>
  16216. <dd><p>On SVR4-derived platforms, the character &lsquo;<samp>/</samp>&rsquo; is treated as a comment
  16217. character, which means that it cannot be used in expressions. The
  16218. &lsquo;<samp>--divide</samp>&rsquo; option turns &lsquo;<samp>/</samp>&rsquo; into a normal character. This does
  16219. not disable &lsquo;<samp>/</samp>&rsquo; at the beginning of a line starting a comment, or
  16220. affect using &lsquo;<samp>#</samp>&rsquo; for starting a comment.
  16221. </p>
  16222. <span id="index-_002dmarch_003d-option_002c-i386"></span>
  16223. <span id="index-_002dmarch_003d-option_002c-x86_002d64"></span>
  16224. </dd>
  16225. <dt><code>-march=<var>CPU</var>[+<var>EXTENSION</var>&hellip;]</code></dt>
  16226. <dd><p>This option specifies the target processor. The assembler will
  16227. issue an error message if an attempt is made to assemble an instruction
  16228. which will not execute on the target processor. The following
  16229. processor names are recognized:
  16230. <code>i8086</code>,
  16231. <code>i186</code>,
  16232. <code>i286</code>,
  16233. <code>i386</code>,
  16234. <code>i486</code>,
  16235. <code>i586</code>,
  16236. <code>i686</code>,
  16237. <code>pentium</code>,
  16238. <code>pentiumpro</code>,
  16239. <code>pentiumii</code>,
  16240. <code>pentiumiii</code>,
  16241. <code>pentium4</code>,
  16242. <code>prescott</code>,
  16243. <code>nocona</code>,
  16244. <code>core</code>,
  16245. <code>core2</code>,
  16246. <code>corei7</code>,
  16247. <code>iamcu</code>,
  16248. <code>k6</code>,
  16249. <code>k6_2</code>,
  16250. <code>athlon</code>,
  16251. <code>opteron</code>,
  16252. <code>k8</code>,
  16253. <code>amdfam10</code>,
  16254. <code>bdver1</code>,
  16255. <code>bdver2</code>,
  16256. <code>bdver3</code>,
  16257. <code>bdver4</code>,
  16258. <code>znver1</code>,
  16259. <code>znver2</code>,
  16260. <code>znver3</code>,
  16261. <code>znver4</code>,
  16262. <code>znver5</code>,
  16263. <code>btver1</code>,
  16264. <code>btver2</code>,
  16265. <code>generic32</code> and
  16266. <code>generic64</code>.
  16267. </p>
  16268. <p>In addition to the basic instruction set, the assembler can be told to
  16269. accept various extension mnemonics. For example,
  16270. <code>-march=i686+sse4+vmx</code> extends <var>i686</var> with <var>sse4</var> and
  16271. <var>vmx</var>. The following extensions are currently supported:
  16272. <code>8087</code>,
  16273. <code>287</code>,
  16274. <code>387</code>,
  16275. <code>687</code>,
  16276. <code>cmov</code>,
  16277. <code>fxsr</code>,
  16278. <code>mmx</code>,
  16279. <code>sse</code>,
  16280. <code>sse2</code>,
  16281. <code>sse3</code>,
  16282. <code>sse4a</code>,
  16283. <code>ssse3</code>,
  16284. <code>sse4.1</code>,
  16285. <code>sse4.2</code>,
  16286. <code>sse4</code>,
  16287. <code>avx</code>,
  16288. <code>avx2</code>,
  16289. <code>lahf_sahf</code>,
  16290. <code>monitor</code>,
  16291. <code>adx</code>,
  16292. <code>rdseed</code>,
  16293. <code>prfchw</code>,
  16294. <code>smap</code>,
  16295. <code>mpx</code>,
  16296. <code>sha</code>,
  16297. <code>rdpid</code>,
  16298. <code>ptwrite</code>,
  16299. <code>cet</code>,
  16300. <code>gfni</code>,
  16301. <code>vaes</code>,
  16302. <code>vpclmulqdq</code>,
  16303. <code>prefetchwt1</code>,
  16304. <code>clflushopt</code>,
  16305. <code>se1</code>,
  16306. <code>clwb</code>,
  16307. <code>movdiri</code>,
  16308. <code>movdir64b</code>,
  16309. <code>enqcmd</code>,
  16310. <code>serialize</code>,
  16311. <code>tsxldtrk</code>,
  16312. <code>kl</code>,
  16313. <code>widekl</code>,
  16314. <code>hreset</code>,
  16315. <code>avx512f</code>,
  16316. <code>avx512cd</code>,
  16317. <code>avx512er</code>,
  16318. <code>avx512pf</code>,
  16319. <code>avx512vl</code>,
  16320. <code>avx512bw</code>,
  16321. <code>avx512dq</code>,
  16322. <code>avx512ifma</code>,
  16323. <code>avx512vbmi</code>,
  16324. <code>avx512_4fmaps</code>,
  16325. <code>avx512_4vnniw</code>,
  16326. <code>avx512_vpopcntdq</code>,
  16327. <code>avx512_vbmi2</code>,
  16328. <code>avx512_vnni</code>,
  16329. <code>avx512_bitalg</code>,
  16330. <code>avx512_vp2intersect</code>,
  16331. <code>tdx</code>,
  16332. <code>avx512_bf16</code>,
  16333. <code>avx_vnni</code>,
  16334. <code>avx512_fp16</code>,
  16335. <code>prefetchi</code>,
  16336. <code>avx_ifma</code>,
  16337. <code>avx_vnni_int8</code>,
  16338. <code>cmpccxadd</code>,
  16339. <code>wrmsrns</code>,
  16340. <code>msrlist</code>,
  16341. <code>avx_ne_convert</code>,
  16342. <code>rao_int</code>,
  16343. <code>fred</code>,
  16344. <code>lkgs</code>,
  16345. <code>avx_vnni_int16</code>,
  16346. <code>sha512</code>,
  16347. <code>sm3</code>,
  16348. <code>sm4</code>,
  16349. <code>pbndkb</code>,
  16350. <code>avx10.1</code>,
  16351. <code>avx10.1/512</code>,
  16352. <code>avx10.1/256</code>,
  16353. <code>avx10.1/128</code>,
  16354. <code>user_msr</code>,
  16355. <code>apx_f</code>,
  16356. <code>amx_int8</code>,
  16357. <code>amx_bf16</code>,
  16358. <code>amx_fp16</code>,
  16359. <code>amx_complex</code>,
  16360. <code>amx_tile</code>,
  16361. <code>vmx</code>,
  16362. <code>vmfunc</code>,
  16363. <code>smx</code>,
  16364. <code>xsave</code>,
  16365. <code>xsaveopt</code>,
  16366. <code>xsavec</code>,
  16367. <code>xsaves</code>,
  16368. <code>aes</code>,
  16369. <code>pclmul</code>,
  16370. <code>fsgsbase</code>,
  16371. <code>rdrnd</code>,
  16372. <code>f16c</code>,
  16373. <code>bmi2</code>,
  16374. <code>fma</code>,
  16375. <code>movbe</code>,
  16376. <code>ept</code>,
  16377. <code>lzcnt</code>,
  16378. <code>popcnt</code>,
  16379. <code>hle</code>,
  16380. <code>rtm</code>,
  16381. <code>tsx</code>,
  16382. <code>invpcid</code>,
  16383. <code>clflush</code>,
  16384. <code>mwaitx</code>,
  16385. <code>clzero</code>,
  16386. <code>wbnoinvd</code>,
  16387. <code>pconfig</code>,
  16388. <code>waitpkg</code>,
  16389. <code>uintr</code>,
  16390. <code>cldemote</code>,
  16391. <code>rdpru</code>,
  16392. <code>mcommit</code>,
  16393. <code>sev_es</code>,
  16394. <code>lwp</code>,
  16395. <code>fma4</code>,
  16396. <code>xop</code>,
  16397. <code>cx16</code>,
  16398. <code>syscall</code>,
  16399. <code>rdtscp</code>,
  16400. <code>3dnow</code>,
  16401. <code>3dnowa</code>,
  16402. <code>sse4a</code>,
  16403. <code>sse5</code>,
  16404. <code>snp</code>,
  16405. <code>invlpgb</code>,
  16406. <code>tlbsync</code>,
  16407. <code>svme</code> and
  16408. <code>padlock</code>.
  16409. Note that these extension mnemonics can be prefixed with <code>no</code> to revoke
  16410. the respective (and any dependent) functionality. Note further that the
  16411. suffixes permitted on <code>-march=avx10.&lt;N&gt;</code> enforce a vector length
  16412. restriction, i.e. despite these otherwise being &quot;enabling&quot; options, using
  16413. these suffixes will disable all insns with wider vector or mask register
  16414. operands.
  16415. </p>
  16416. <p>When the <code>.arch</code> directive is used with <samp>-march</samp>, the
  16417. <code>.arch</code> directive will take precedent.
  16418. </p>
  16419. <span id="index-_002dmtune_003d-option_002c-i386"></span>
  16420. <span id="index-_002dmtune_003d-option_002c-x86_002d64"></span>
  16421. </dd>
  16422. <dt><code>-mtune=<var>CPU</var></code></dt>
  16423. <dd><p>This option specifies a processor to optimize for. When used in
  16424. conjunction with the <samp>-march</samp> option, only instructions
  16425. of the processor specified by the <samp>-march</samp> option will be
  16426. generated.
  16427. </p>
  16428. <p>Valid <var>CPU</var> values are identical to the processor list of
  16429. <samp>-march=<var>CPU</var></samp>.
  16430. </p>
  16431. <span id="index-_002dmsse2avx-option_002c-i386"></span>
  16432. <span id="index-_002dmsse2avx-option_002c-x86_002d64"></span>
  16433. </dd>
  16434. <dt><code>-msse2avx</code></dt>
  16435. <dd><p>This option specifies that the assembler should encode SSE instructions
  16436. with VEX prefix.
  16437. </p>
  16438. <span id="index-_002dmuse_002dunaligned_002dvector_002dmove-option_002c-i386"></span>
  16439. <span id="index-_002dmuse_002dunaligned_002dvector_002dmove-option_002c-x86_002d64"></span>
  16440. </dd>
  16441. <dt><code>-muse-unaligned-vector-move</code></dt>
  16442. <dd><p>This option specifies that the assembler should encode aligned vector
  16443. move as unaligned vector move.
  16444. </p>
  16445. <span id="index-_002dmsse_002dcheck_003d-option_002c-i386"></span>
  16446. <span id="index-_002dmsse_002dcheck_003d-option_002c-x86_002d64"></span>
  16447. </dd>
  16448. <dt><code>-msse-check=<var>none</var></code></dt>
  16449. <dt><code>-msse-check=<var>warning</var></code></dt>
  16450. <dt><code>-msse-check=<var>error</var></code></dt>
  16451. <dd><p>These options control if the assembler should check SSE instructions.
  16452. <samp>-msse-check=<var>none</var></samp> will make the assembler not to check SSE
  16453. instructions, which is the default. <samp>-msse-check=<var>warning</var></samp>
  16454. will make the assembler issue a warning for any SSE instruction.
  16455. <samp>-msse-check=<var>error</var></samp> will make the assembler issue an error
  16456. for any SSE instruction.
  16457. </p>
  16458. <span id="index-_002dmavxscalar_003d-option_002c-i386"></span>
  16459. <span id="index-_002dmavxscalar_003d-option_002c-x86_002d64"></span>
  16460. </dd>
  16461. <dt><code>-mavxscalar=<var>128</var></code></dt>
  16462. <dt><code>-mavxscalar=<var>256</var></code></dt>
  16463. <dd><p>These options control how the assembler should encode scalar AVX
  16464. instructions. <samp>-mavxscalar=<var>128</var></samp> will encode scalar
  16465. AVX instructions with 128bit vector length, which is the default.
  16466. <samp>-mavxscalar=<var>256</var></samp> will encode scalar AVX instructions
  16467. with 256bit vector length.
  16468. </p>
  16469. <p>WARNING: Don&rsquo;t use this for production code - due to CPU errata the
  16470. resulting code may not work on certain models.
  16471. </p>
  16472. <span id="index-_002dmvexwig_003d-option_002c-i386"></span>
  16473. <span id="index-_002dmvexwig_003d-option_002c-x86_002d64"></span>
  16474. </dd>
  16475. <dt><code>-mvexwig=<var>0</var></code></dt>
  16476. <dt><code>-mvexwig=<var>1</var></code></dt>
  16477. <dd><p>These options control how the assembler should encode VEX.W-ignored (WIG)
  16478. VEX instructions. <samp>-mvexwig=<var>0</var></samp> will encode WIG VEX
  16479. instructions with vex.w = 0, which is the default.
  16480. <samp>-mvexwig=<var>1</var></samp> will encode WIG EVEX instructions with
  16481. vex.w = 1.
  16482. </p>
  16483. <p>WARNING: Don&rsquo;t use this for production code - due to CPU errata the
  16484. resulting code may not work on certain models.
  16485. </p>
  16486. <span id="index-_002dmevexlig_003d-option_002c-i386"></span>
  16487. <span id="index-_002dmevexlig_003d-option_002c-x86_002d64"></span>
  16488. </dd>
  16489. <dt><code>-mevexlig=<var>128</var></code></dt>
  16490. <dt><code>-mevexlig=<var>256</var></code></dt>
  16491. <dt><code>-mevexlig=<var>512</var></code></dt>
  16492. <dd><p>These options control how the assembler should encode length-ignored
  16493. (LIG) EVEX instructions. <samp>-mevexlig=<var>128</var></samp> will encode LIG
  16494. EVEX instructions with 128bit vector length, which is the default.
  16495. <samp>-mevexlig=<var>256</var></samp> and <samp>-mevexlig=<var>512</var></samp> will
  16496. encode LIG EVEX instructions with 256bit and 512bit vector length,
  16497. respectively.
  16498. </p>
  16499. <span id="index-_002dmevexwig_003d-option_002c-i386"></span>
  16500. <span id="index-_002dmevexwig_003d-option_002c-x86_002d64"></span>
  16501. </dd>
  16502. <dt><code>-mevexwig=<var>0</var></code></dt>
  16503. <dt><code>-mevexwig=<var>1</var></code></dt>
  16504. <dd><p>These options control how the assembler should encode w-ignored (WIG)
  16505. EVEX instructions. <samp>-mevexwig=<var>0</var></samp> will encode WIG
  16506. EVEX instructions with evex.w = 0, which is the default.
  16507. <samp>-mevexwig=<var>1</var></samp> will encode WIG EVEX instructions with
  16508. evex.w = 1.
  16509. </p>
  16510. <span id="index-_002dmmnemonic_003d-option_002c-i386"></span>
  16511. <span id="index-_002dmmnemonic_003d-option_002c-x86_002d64"></span>
  16512. </dd>
  16513. <dt><code>-mmnemonic=<var>att</var></code></dt>
  16514. <dt><code>-mmnemonic=<var>intel</var></code></dt>
  16515. <dd><p>This option specifies instruction mnemonic for matching instructions.
  16516. The <code>.att_mnemonic</code> and <code>.intel_mnemonic</code> directives will
  16517. take precedent.
  16518. </p>
  16519. <span id="index-_002dmsyntax_003d-option_002c-i386"></span>
  16520. <span id="index-_002dmsyntax_003d-option_002c-x86_002d64"></span>
  16521. </dd>
  16522. <dt><code>-msyntax=<var>att</var></code></dt>
  16523. <dt><code>-msyntax=<var>intel</var></code></dt>
  16524. <dd><p>This option specifies instruction syntax when processing instructions.
  16525. The <code>.att_syntax</code> and <code>.intel_syntax</code> directives will
  16526. take precedent.
  16527. </p>
  16528. <span id="index-_002dmnaked_002dreg-option_002c-i386"></span>
  16529. <span id="index-_002dmnaked_002dreg-option_002c-x86_002d64"></span>
  16530. </dd>
  16531. <dt><code>-mnaked-reg</code></dt>
  16532. <dd><p>This option specifies that registers don&rsquo;t require a &lsquo;<samp>%</samp>&rsquo; prefix.
  16533. The <code>.att_syntax</code> and <code>.intel_syntax</code> directives will take precedent.
  16534. </p>
  16535. <span id="index-_002dmadd_002dbnd_002dprefix-option_002c-i386"></span>
  16536. <span id="index-_002dmadd_002dbnd_002dprefix-option_002c-x86_002d64"></span>
  16537. </dd>
  16538. <dt><code>-madd-bnd-prefix</code></dt>
  16539. <dd><p>This option forces the assembler to add BND prefix to all branches, even
  16540. if such prefix was not explicitly specified in the source code.
  16541. </p>
  16542. <span id="index-_002dmshared-option_002c-i386"></span>
  16543. <span id="index-_002dmshared-option_002c-x86_002d64"></span>
  16544. </dd>
  16545. <dt><code>-mno-shared</code></dt>
  16546. <dd><p>On ELF target, the assembler normally optimizes out non-PLT relocations
  16547. against defined non-weak global branch targets with default visibility.
  16548. The &lsquo;<samp>-mshared</samp>&rsquo; option tells the assembler to generate code which
  16549. may go into a shared library where all non-weak global branch targets
  16550. with default visibility can be preempted. The resulting code is
  16551. slightly bigger. This option only affects the handling of branch
  16552. instructions.
  16553. </p>
  16554. <span id="index-_002dmbig_002dobj-option_002c-i386"></span>
  16555. <span id="index-_002dmbig_002dobj-option_002c-x86_002d64"></span>
  16556. </dd>
  16557. <dt><code>-mbig-obj</code></dt>
  16558. <dd><p>On PE/COFF target this option forces the use of big object file
  16559. format, which allows more than 32768 sections.
  16560. </p>
  16561. <span id="index-_002dmomit_002dlock_002dprefix_003d-option_002c-i386"></span>
  16562. <span id="index-_002dmomit_002dlock_002dprefix_003d-option_002c-x86_002d64"></span>
  16563. </dd>
  16564. <dt><code>-momit-lock-prefix=<var>no</var></code></dt>
  16565. <dt><code>-momit-lock-prefix=<var>yes</var></code></dt>
  16566. <dd><p>These options control how the assembler should encode lock prefix.
  16567. This option is intended as a workaround for processors, that fail on
  16568. lock prefix. This option can only be safely used with single-core,
  16569. single-thread computers
  16570. <samp>-momit-lock-prefix=<var>yes</var></samp> will omit all lock prefixes.
  16571. <samp>-momit-lock-prefix=<var>no</var></samp> will encode lock prefix as usual,
  16572. which is the default.
  16573. </p>
  16574. <span id="index-_002dmfence_002das_002dlock_002dadd_003d-option_002c-i386"></span>
  16575. <span id="index-_002dmfence_002das_002dlock_002dadd_003d-option_002c-x86_002d64"></span>
  16576. </dd>
  16577. <dt><code>-mfence-as-lock-add=<var>no</var></code></dt>
  16578. <dt><code>-mfence-as-lock-add=<var>yes</var></code></dt>
  16579. <dd><p>These options control how the assembler should encode lfence, mfence and
  16580. sfence.
  16581. <samp>-mfence-as-lock-add=<var>yes</var></samp> will encode lfence, mfence and
  16582. sfence as &lsquo;<samp>lock addl $0x0, (%rsp)</samp>&rsquo; in 64-bit mode and
  16583. &lsquo;<samp>lock addl $0x0, (%esp)</samp>&rsquo; in 32-bit mode.
  16584. <samp>-mfence-as-lock-add=<var>no</var></samp> will encode lfence, mfence and
  16585. sfence as usual, which is the default.
  16586. </p>
  16587. <span id="index-_002dmrelax_002drelocations_003d-option_002c-i386"></span>
  16588. <span id="index-_002dmrelax_002drelocations_003d-option_002c-x86_002d64"></span>
  16589. </dd>
  16590. <dt><code>-mrelax-relocations=<var>no</var></code></dt>
  16591. <dt><code>-mrelax-relocations=<var>yes</var></code></dt>
  16592. <dd><p>These options control whether the assembler should generate relax
  16593. relocations, R_386_GOT32X, in 32-bit mode, or R_X86_64_GOTPCRELX and
  16594. R_X86_64_REX_GOTPCRELX, in 64-bit mode.
  16595. <samp>-mrelax-relocations=<var>yes</var></samp> will generate relax relocations.
  16596. <samp>-mrelax-relocations=<var>no</var></samp> will not generate relax
  16597. relocations. The default can be controlled by a configure option
  16598. <samp>--enable-x86-relax-relocations</samp>.
  16599. </p>
  16600. <span id="index-_002dmalign_002dbranch_002dboundary_003d-option_002c-i386"></span>
  16601. <span id="index-_002dmalign_002dbranch_002dboundary_003d-option_002c-x86_002d64"></span>
  16602. </dd>
  16603. <dt><code>-malign-branch-boundary=<var>NUM</var></code></dt>
  16604. <dd><p>This option controls how the assembler should align branches with segment
  16605. prefixes or NOP. <var>NUM</var> must be a power of 2. It should be 0 or
  16606. no less than 16. Branches will be aligned within <var>NUM</var> byte
  16607. boundary. <samp>-malign-branch-boundary=0</samp>, which is the default,
  16608. doesn&rsquo;t align branches.
  16609. </p>
  16610. <span id="index-_002dmalign_002dbranch_003d-option_002c-i386"></span>
  16611. <span id="index-_002dmalign_002dbranch_003d-option_002c-x86_002d64"></span>
  16612. </dd>
  16613. <dt><code>-malign-branch=<var>TYPE</var>[+<var>TYPE</var>...]</code></dt>
  16614. <dd><p>This option specifies types of branches to align. <var>TYPE</var> is
  16615. combination of &lsquo;<samp>jcc</samp>&rsquo;, which aligns conditional jumps,
  16616. &lsquo;<samp>fused</samp>&rsquo;, which aligns fused conditional jumps, &lsquo;<samp>jmp</samp>&rsquo;,
  16617. which aligns unconditional jumps, &lsquo;<samp>call</samp>&rsquo; which aligns calls,
  16618. &lsquo;<samp>ret</samp>&rsquo;, which aligns rets, &lsquo;<samp>indirect</samp>&rsquo;, which aligns indirect
  16619. jumps and calls. The default is <samp>-malign-branch=jcc+fused+jmp</samp>.
  16620. </p>
  16621. <span id="index-_002dmalign_002dbranch_002dprefix_002dsize_003d-option_002c-i386"></span>
  16622. <span id="index-_002dmalign_002dbranch_002dprefix_002dsize_003d-option_002c-x86_002d64"></span>
  16623. </dd>
  16624. <dt><code>-malign-branch-prefix-size=<var>NUM</var></code></dt>
  16625. <dd><p>This option specifies the maximum number of prefixes on an instruction
  16626. to align branches. <var>NUM</var> should be between 0 and 5. The default
  16627. <var>NUM</var> is 5.
  16628. </p>
  16629. <span id="index-_002dmbranches_002dwithin_002d32B_002dboundaries-option_002c-i386"></span>
  16630. <span id="index-_002dmbranches_002dwithin_002d32B_002dboundaries-option_002c-x86_002d64"></span>
  16631. </dd>
  16632. <dt><code>-mbranches-within-32B-boundaries</code></dt>
  16633. <dd><p>This option aligns conditional jumps, fused conditional jumps and
  16634. unconditional jumps within 32 byte boundary with up to 5 segment prefixes
  16635. on an instruction. It is equivalent to
  16636. <samp>-malign-branch-boundary=32</samp>
  16637. <samp>-malign-branch=jcc+fused+jmp</samp>
  16638. <samp>-malign-branch-prefix-size=5</samp>.
  16639. The default doesn&rsquo;t align branches.
  16640. </p>
  16641. <span id="index-_002dmlfence_002dafter_002dload_003d-option_002c-i386"></span>
  16642. <span id="index-_002dmlfence_002dafter_002dload_003d-option_002c-x86_002d64"></span>
  16643. </dd>
  16644. <dt><code>-mlfence-after-load=<var>no</var></code></dt>
  16645. <dt><code>-mlfence-after-load=<var>yes</var></code></dt>
  16646. <dd><p>These options control whether the assembler should generate lfence
  16647. after load instructions. <samp>-mlfence-after-load=<var>yes</var></samp> will
  16648. generate lfence. <samp>-mlfence-after-load=<var>no</var></samp> will not generate
  16649. lfence, which is the default.
  16650. </p>
  16651. <span id="index-_002dmlfence_002dbefore_002dindirect_002dbranch_003d-option_002c-i386"></span>
  16652. <span id="index-_002dmlfence_002dbefore_002dindirect_002dbranch_003d-option_002c-x86_002d64"></span>
  16653. </dd>
  16654. <dt><code>-mlfence-before-indirect-branch=<var>none</var></code></dt>
  16655. <dt><code>-mlfence-before-indirect-branch=<var>all</var></code></dt>
  16656. <dt><code>-mlfence-before-indirect-branch=<var>register</var></code></dt>
  16657. <dt><code>-mlfence-before-indirect-branch=<var>memory</var></code></dt>
  16658. <dd><p>These options control whether the assembler should generate lfence
  16659. before indirect near branch instructions.
  16660. <samp>-mlfence-before-indirect-branch=<var>all</var></samp> will generate lfence
  16661. before indirect near branch via register and issue a warning before
  16662. indirect near branch via memory.
  16663. It also implicitly sets <samp>-mlfence-before-ret=<var>shl</var></samp> when
  16664. there&rsquo;s no explicit <samp>-mlfence-before-ret=</samp>.
  16665. <samp>-mlfence-before-indirect-branch=<var>register</var></samp> will generate
  16666. lfence before indirect near branch via register.
  16667. <samp>-mlfence-before-indirect-branch=<var>memory</var></samp> will issue a
  16668. warning before indirect near branch via memory.
  16669. <samp>-mlfence-before-indirect-branch=<var>none</var></samp> will not generate
  16670. lfence nor issue warning, which is the default. Note that lfence won&rsquo;t
  16671. be generated before indirect near branch via register with
  16672. <samp>-mlfence-after-load=<var>yes</var></samp> since lfence will be generated
  16673. after loading branch target register.
  16674. </p>
  16675. <span id="index-_002dmlfence_002dbefore_002dret_003d-option_002c-i386"></span>
  16676. <span id="index-_002dmlfence_002dbefore_002dret_003d-option_002c-x86_002d64"></span>
  16677. </dd>
  16678. <dt><code>-mlfence-before-ret=<var>none</var></code></dt>
  16679. <dt><code>-mlfence-before-ret=<var>shl</var></code></dt>
  16680. <dt><code>-mlfence-before-ret=<var>or</var></code></dt>
  16681. <dt><code>-mlfence-before-ret=<var>yes</var></code></dt>
  16682. <dt><code>-mlfence-before-ret=<var>not</var></code></dt>
  16683. <dd><p>These options control whether the assembler should generate lfence
  16684. before ret. <samp>-mlfence-before-ret=<var>or</var></samp> will generate
  16685. generate or instruction with lfence.
  16686. <samp>-mlfence-before-ret=<var>shl/yes</var></samp> will generate shl instruction
  16687. with lfence. <samp>-mlfence-before-ret=<var>not</var></samp> will generate not
  16688. instruction with lfence. <samp>-mlfence-before-ret=<var>none</var></samp> will not
  16689. generate lfence, which is the default.
  16690. </p>
  16691. <span id="index-_002dmx86_002dused_002dnote_003d-option_002c-i386"></span>
  16692. <span id="index-_002dmx86_002dused_002dnote_003d-option_002c-x86_002d64"></span>
  16693. </dd>
  16694. <dt><code>-mx86-used-note=<var>no</var></code></dt>
  16695. <dt><code>-mx86-used-note=<var>yes</var></code></dt>
  16696. <dd><p>These options control whether the assembler should generate
  16697. GNU_PROPERTY_X86_ISA_1_USED and GNU_PROPERTY_X86_FEATURE_2_USED
  16698. GNU property notes. The default can be controlled by the
  16699. <samp>--enable-x86-used-note</samp> configure option.
  16700. </p>
  16701. <span id="index-_002dmevexrcig_003d-option_002c-i386"></span>
  16702. <span id="index-_002dmevexrcig_003d-option_002c-x86_002d64"></span>
  16703. </dd>
  16704. <dt><code>-mevexrcig=<var>rne</var></code></dt>
  16705. <dt><code>-mevexrcig=<var>rd</var></code></dt>
  16706. <dt><code>-mevexrcig=<var>ru</var></code></dt>
  16707. <dt><code>-mevexrcig=<var>rz</var></code></dt>
  16708. <dd><p>These options control how the assembler should encode SAE-only
  16709. EVEX instructions. <samp>-mevexrcig=<var>rne</var></samp> will encode RC bits
  16710. of EVEX instruction with 00, which is the default.
  16711. <samp>-mevexrcig=<var>rd</var></samp>, <samp>-mevexrcig=<var>ru</var></samp>
  16712. and <samp>-mevexrcig=<var>rz</var></samp> will encode SAE-only EVEX instructions
  16713. with 01, 10 and 11 RC bits, respectively.
  16714. </p>
  16715. <span id="index-_002dmamd64-option_002c-x86_002d64"></span>
  16716. <span id="index-_002dmintel64-option_002c-x86_002d64"></span>
  16717. </dd>
  16718. <dt><code>-mamd64</code></dt>
  16719. <dt><code>-mintel64</code></dt>
  16720. <dd><p>This option specifies that the assembler should accept only AMD64 or
  16721. Intel64 ISA in 64-bit mode. The default is to accept common, Intel64
  16722. only and AMD64 ISAs.
  16723. </p>
  16724. <span id="index-_002dO0-option_002c-i386"></span>
  16725. <span id="index-_002dO0-option_002c-x86_002d64"></span>
  16726. <span id="index-_002dO-option_002c-i386"></span>
  16727. <span id="index-_002dO-option_002c-x86_002d64"></span>
  16728. <span id="index-_002dO1-option_002c-i386"></span>
  16729. <span id="index-_002dO1-option_002c-x86_002d64"></span>
  16730. <span id="index-_002dO2-option_002c-i386"></span>
  16731. <span id="index-_002dO2-option_002c-x86_002d64"></span>
  16732. <span id="index-_002dOs-option_002c-i386"></span>
  16733. <span id="index-_002dOs-option_002c-x86_002d64"></span>
  16734. </dd>
  16735. <dt><code>-O0 | -O | -O1 | -O2 | -Os</code></dt>
  16736. <dd><p>Optimize instruction encoding with smaller instruction size. &lsquo;<samp>-O</samp>&rsquo;
  16737. and &lsquo;<samp>-O1</samp>&rsquo; encode 64-bit register load instructions with 64-bit
  16738. immediate as 32-bit register load instructions with 31-bit or 32-bits
  16739. immediates, encode 64-bit register clearing instructions with 32-bit
  16740. register clearing instructions, encode 256-bit/512-bit VEX/EVEX vector
  16741. register clearing instructions with 128-bit VEX vector register
  16742. clearing instructions, encode 128-bit/256-bit EVEX vector
  16743. register load/store instructions with VEX vector register load/store
  16744. instructions, and encode 128-bit/256-bit EVEX packed integer logical
  16745. instructions with 128-bit/256-bit VEX packed integer logical.
  16746. </p>
  16747. <p>&lsquo;<samp>-O2</samp>&rsquo; includes &lsquo;<samp>-O1</samp>&rsquo; optimization plus encodes
  16748. 256-bit/512-bit EVEX vector register clearing instructions with 128-bit
  16749. EVEX vector register clearing instructions. In 64-bit mode VEX encoded
  16750. instructions with commutative source operands will also have their
  16751. source operands swapped if this allows using the 2-byte VEX prefix form
  16752. instead of the 3-byte one. Certain forms of AND as well as OR with the
  16753. same (register) operand specified twice will also be changed to TEST.
  16754. </p>
  16755. <p>&lsquo;<samp>-Os</samp>&rsquo; includes &lsquo;<samp>-O2</samp>&rsquo; optimization plus encodes 16-bit, 32-bit
  16756. and 64-bit register tests with immediate as 8-bit register test with
  16757. immediate. &lsquo;<samp>-O0</samp>&rsquo; turns off this optimization.
  16758. </p>
  16759. </dd>
  16760. </dl>
  16761. <hr>
  16762. <span id="i386_002dDirectives"></span><div class="header">
  16763. <p>
  16764. Next: <a href="#i386_002dSyntax" accesskey="n" rel="next">i386-Syntax</a>, Previous: <a href="#i386_002dOptions" accesskey="p" rel="prev">i386-Options</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  16765. </div>
  16766. <span id="x86-specific-Directives"></span><h4 class="subsection">9.16.2 x86 specific Directives</h4>
  16767. <span id="index-machine-directives_002c-x86"></span>
  16768. <span id="index-x86-machine-directives"></span>
  16769. <dl compact="compact">
  16770. <dd>
  16771. <span id="index-lcomm-directive_002c-COFF"></span>
  16772. </dd>
  16773. <dt><code>.lcomm <var>symbol</var> , <var>length</var>[, <var>alignment</var>]</code></dt>
  16774. <dd><p>Reserve <var>length</var> (an absolute expression) bytes for a local common
  16775. denoted by <var>symbol</var>. The section and value of <var>symbol</var> are
  16776. those of the new local common. The addresses are allocated in the bss
  16777. section, so that at run-time the bytes start off zeroed. Since
  16778. <var>symbol</var> is not declared global, it is normally not visible to
  16779. <code>ld</code>. The optional third parameter, <var>alignment</var>,
  16780. specifies the desired alignment of the symbol in the bss section.
  16781. </p>
  16782. <p>This directive is only available for COFF based x86 targets.
  16783. </p>
  16784. <span id="index-largecomm-directive_002c-ELF"></span>
  16785. </dd>
  16786. <dt><code>.largecomm <var>symbol</var> , <var>length</var>[, <var>alignment</var>]</code></dt>
  16787. <dd><p>This directive behaves in the same way as the <code>comm</code> directive
  16788. except that the data is placed into the <var>.lbss</var> section instead of
  16789. the <var>.bss</var> section <a href="#Comm">Comm</a>.
  16790. </p>
  16791. <p>The directive is intended to be used for data which requires a large
  16792. amount of space, and it is only available for ELF based x86_64
  16793. targets.
  16794. </p>
  16795. <span id="index-value-directive"></span>
  16796. </dd>
  16797. <dt><code>.value <var>expression</var> [, <var>expression</var>]</code></dt>
  16798. <dd><p>This directive behaves in the same way as the <code>.short</code> directive,
  16799. taking a series of comma separated expressions and storing them as
  16800. two-byte wide values into the current section.
  16801. </p>
  16802. <span id="index-insn-directive"></span>
  16803. </dd>
  16804. <dt><code>.insn [<var>prefix</var>[,...]] [<var>encoding</var>] <var>major-opcode</var>[<code>+r</code>|<code>/<var>extension</var></code>] [,<var>operand</var>[,...]]</code></dt>
  16805. <dd><p>This directive allows composing instructions which <code>as</code>
  16806. may not know about yet, or which it has no way of expressing (which
  16807. can be the case for certain alternative encodings). It assumes certain
  16808. basic structure in how operands are encoded, and it also only
  16809. recognizes - with a few extensions as per below - operands otherwise
  16810. valid for instructions. Therefore there is no guarantee that
  16811. everything can be expressed (e.g. the original Intel Xeon Phi&rsquo;s MVEX
  16812. encodings cannot be expressed).
  16813. </p>
  16814. <ul>
  16815. <li> <var>prefix</var> expresses one or more opcode prefixes in the usual way.
  16816. Legacy encoding prefixes altering meaning (0x66, 0xF2, 0xF3) may be
  16817. specified as high byte of &lt;major-opcode&gt; (perhaps already including an
  16818. encoding space prefix). Note that there can only be one such prefix.
  16819. Segment overrides are better specified in the respective memory
  16820. operand, as long as there is one.
  16821. </li><li> <var>encoding</var> is used to specify VEX, XOP, or EVEX encodings. The
  16822. syntax tries to resemble that used in documentation:
  16823. <ul>
  16824. <li> <code>VEX</code>[<code>.<var>len</var></code>][<code>.<var>prefix</var></code>][<code>.<var>space</var></code>][<code>.<var>w</var></code>]
  16825. </li><li> <code>EVEX</code>[<code>.<var>len</var></code>][<code>.<var>prefix</var></code>][<code>.<var>space</var></code>][<code>.<var>w</var></code>]
  16826. </li><li> <code>XOP</code><var>space</var>[<code>.<var>len</var></code>][<code>.<var>prefix</var></code>][<code>.<var>w</var></code>]
  16827. </li></ul>
  16828. <p>Here
  16829. </p><ul>
  16830. <li> <var>len</var> can be <code>LIG</code>, <code>128</code>, <code>256</code>, or (EVEX
  16831. only) <code>512</code> as well as <code>L0</code> / <code>L1</code> for VEX / XOP and
  16832. <code>L0</code>...<code>L3</code> for EVEX
  16833. </li><li> <var>prefix</var> can be <code>NP</code>, <code>66</code>, <code>F3</code>, or <code>F2</code>
  16834. </li><li> <var>space</var> can be
  16835. <ul>
  16836. <li> <code>0f</code>, <code>0f38</code>, <code>0f3a</code>, or <code>M0</code>...<code>M31</code>
  16837. for VEX
  16838. </li><li> <code>08</code>...<code>1f</code> for XOP
  16839. </li><li> <code>0f</code>, <code>0f38</code>, <code>0f3a</code>, or <code>M0</code>...<code>M15</code>
  16840. for EVEX
  16841. </li></ul>
  16842. </li><li> <var>w</var> can be <code>WIG</code>, <code>W0</code>, or <code>W1</code>
  16843. </li></ul>
  16844. <p>Defaults:
  16845. </p><ul>
  16846. <li> Omitted <var>len</var> means &quot;infer from operand size&quot; if there is at
  16847. least one sized vector operand, or <code>LIG</code> otherwise. (Obviously
  16848. <var>len</var> has to be omitted when there&rsquo;s EVEX rounding control
  16849. specified later in the operands.)
  16850. </li><li> Omitted <var>prefix</var> means <code>NP</code>.
  16851. </li><li> Omitted <var>space</var> (VEX/EVEX only) implies encoding space is
  16852. taken from <var>major-opcode</var>.
  16853. </li><li> Omitted <var>w</var> means &quot;infer from GPR operand size&quot; in 64-bit
  16854. code if there is at least one GPR(-like) operand, or <code>WIG</code>
  16855. otherwise.
  16856. </li></ul>
  16857. </li><li> <var>major-opcode</var> is an absolute expression specifying the instruction
  16858. opcode. Legacy encoding prefixes altering encoding space (0x0f,
  16859. 0x0f38, 0x0f3a) have to be specified as high byte(s) here.
  16860. &quot;Degenerate&quot; ModR/M bytes, as present in e.g. certain FPU opcodes or
  16861. sub-spaces like that of major opcode 0x0f01, generally want encoding as
  16862. immediate operand (such opcodes wouldn&rsquo;t normally have non-immediate
  16863. operands); in some cases it may be possible to also encode these as low
  16864. byte of the major opcode, but there are potential ambiguities. Also
  16865. note that after stripping encoding prefixes, the residual has to fit in
  16866. two bytes (16 bits). <code>+r</code> can be suffixed to the major opcode
  16867. expression to specify register-only encoding forms not using a ModR/M
  16868. byte. <code>/<var>extension</var></code> can alternatively be suffixed to the
  16869. major opcode expression to specify an extension opcode, encoded in bits
  16870. 3-5 of the ModR/M byte.
  16871. </li><li> <var>operand</var> is an instruction operand expressed the usual way.
  16872. Register operands are primarily used to express register numbers as
  16873. encoded in ModR/M byte and REX/VEX/XOP/EVEX prefixes. In certain
  16874. cases the register type (really: size) is also used to derive other
  16875. encoding attributes, if these aren&rsquo;t specified explicitly. Note that
  16876. there is no consistency checking among operands, so entirely bogus
  16877. mixes of operands are possible. Note further that only operands
  16878. actually encoded in the instruction should be specified. Operands like
  16879. &lsquo;<samp>%cl</samp>&rsquo; in shift/rotate instructions have to be omitted, or else
  16880. they&rsquo;ll be encoded as an ordinary (register) operand. Operand order
  16881. may also not match that of the actual instruction (see below).
  16882. </li></ul>
  16883. <p>Encoding of operands: While for a memory operand (of which there can be
  16884. only one) it is clear how to encode it in the resulting ModR/M byte,
  16885. register operands are encoded strictly in this order (operand counts do
  16886. not include immediate ones in the enumeration below, and if there was an
  16887. extension opcode specified it counts as a register operand; VEX.vvvv
  16888. is meant to cover XOP and EVEX as well):
  16889. </p>
  16890. <ul>
  16891. <li> VEX.vvvv for 1-register-operand VEX/XOP/EVEX insns,
  16892. </li><li> ModR/M.rm, ModR/M.reg for 2-operand insns,
  16893. </li><li> ModR/M.rm, VEX.vvvv, ModR/M.reg for 3-operand insns, and
  16894. </li><li> Imm{4,5}, ModR/M.rm, VEX.vvvv, ModR/M.reg for 4-operand insns,
  16895. </li></ul>
  16896. <p>obviously with the ModR/M.rm slot skipped when there is a memory
  16897. operand, and obviously with the ModR/M.reg slot skipped when there is
  16898. an extension opcode. For Intel syntax of course the opposite order
  16899. applies. With <code>+r</code> (and hence no ModR/M) there can only be a
  16900. single register operand for legacy encodings. VEX and alike can have
  16901. two register operands, where the second (first in Intel syntax) would
  16902. go into VEX.vvvv.
  16903. </p>
  16904. <p>Immediate operands (including immediate-like displacements, i.e. when
  16905. not part of ModR/M addressing) are emitted in the order specified,
  16906. regardless of AT&amp;T or Intel syntax. Since it may not be possible to
  16907. infer the size of such immediates, they can be suffixed by
  16908. <code>{:s<var>n</var>}</code> or <code>{:u<var>n</var>}</code>, representing signed /
  16909. unsigned immediates of the given number of bits respectively. When
  16910. emitting such operands, the number of bits will be rounded up to the
  16911. smallest suitable of 8, 16, 32, or 64. Immediates wider than 32 bits
  16912. are permitted in 64-bit code only.
  16913. </p>
  16914. <p>For EVEX encoding memory operands with a displacement need to know
  16915. Disp8 scaling size in order to use an 8-bit displacement. For many
  16916. instructions this can be inferred from the types of other operands
  16917. specified. In Intel syntax &lsquo;<samp>DWORD PTR</samp>&rsquo; and alike can be used to
  16918. specify the respective size. In AT&amp;T syntax the memory operands can
  16919. be suffixed by <code>{:d<var>n</var>}</code> to specify the size (in bytes).
  16920. This can be combined with an embedded broadcast specifier:
  16921. &lsquo;<samp>8(%eax){1to8:d8}</samp>&rsquo;.
  16922. </p>
  16923. </dd>
  16924. </dl>
  16925. <hr>
  16926. <span id="i386_002dSyntax"></span><div class="header">
  16927. <p>
  16928. Next: <a href="#i386_002dMnemonics" accesskey="n" rel="next">i386-Mnemonics</a>, Previous: <a href="#i386_002dDirectives" accesskey="p" rel="prev">i386-Directives</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  16929. </div>
  16930. <span id="i386-Syntactical-Considerations"></span><h4 class="subsection">9.16.3 i386 Syntactical Considerations</h4>
  16931. <table class="menu" border="0" cellspacing="0">
  16932. <tr><td align="left" valign="top">&bull; <a href="#i386_002dVariations" accesskey="1">i386-Variations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">AT&amp;T Syntax versus Intel Syntax
  16933. </td></tr>
  16934. <tr><td align="left" valign="top">&bull; <a href="#i386_002dChars" accesskey="2">i386-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  16935. </td></tr>
  16936. </table>
  16937. <hr>
  16938. <span id="i386_002dVariations"></span><div class="header">
  16939. <p>
  16940. Next: <a href="#i386_002dChars" accesskey="n" rel="next">i386-Chars</a>, Up: <a href="#i386_002dSyntax" accesskey="u" rel="up">i386-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  16941. </div>
  16942. <span id="AT_0026T-Syntax-versus-Intel-Syntax"></span><h4 class="subsubsection">9.16.3.1 AT&amp;T Syntax versus Intel Syntax</h4>
  16943. <span id="index-i386-intel_005fsyntax-pseudo-op"></span>
  16944. <span id="index-intel_005fsyntax-pseudo-op_002c-i386"></span>
  16945. <span id="index-i386-att_005fsyntax-pseudo-op"></span>
  16946. <span id="index-att_005fsyntax-pseudo-op_002c-i386"></span>
  16947. <span id="index-i386-syntax-compatibility"></span>
  16948. <span id="index-syntax-compatibility_002c-i386"></span>
  16949. <span id="index-x86_002d64-intel_005fsyntax-pseudo-op"></span>
  16950. <span id="index-intel_005fsyntax-pseudo-op_002c-x86_002d64"></span>
  16951. <span id="index-x86_002d64-att_005fsyntax-pseudo-op"></span>
  16952. <span id="index-att_005fsyntax-pseudo-op_002c-x86_002d64"></span>
  16953. <span id="index-x86_002d64-syntax-compatibility"></span>
  16954. <span id="index-syntax-compatibility_002c-x86_002d64"></span>
  16955. <p><code>as</code> now supports assembly using Intel assembler syntax.
  16956. <code>.intel_syntax</code> selects Intel mode, and <code>.att_syntax</code> switches
  16957. back to the usual AT&amp;T mode for compatibility with the output of
  16958. <code>gcc</code>. Either of these directives may have an optional
  16959. argument, <code>prefix</code>, or <code>noprefix</code> specifying whether registers
  16960. require a &lsquo;<samp>%</samp>&rsquo; prefix. AT&amp;T System V/386 assembler syntax is quite
  16961. different from Intel syntax. We mention these differences because
  16962. almost all 80386 documents use Intel syntax. Notable differences
  16963. between the two syntaxes are:
  16964. </p>
  16965. <span id="index-immediate-operands_002c-i386"></span>
  16966. <span id="index-i386-immediate-operands"></span>
  16967. <span id="index-register-operands_002c-i386"></span>
  16968. <span id="index-i386-register-operands"></span>
  16969. <span id="index-jump_002fcall-operands_002c-i386"></span>
  16970. <span id="index-i386-jump_002fcall-operands"></span>
  16971. <span id="index-operand-delimiters_002c-i386"></span>
  16972. <span id="index-immediate-operands_002c-x86_002d64"></span>
  16973. <span id="index-x86_002d64-immediate-operands"></span>
  16974. <span id="index-register-operands_002c-x86_002d64"></span>
  16975. <span id="index-x86_002d64-register-operands"></span>
  16976. <span id="index-jump_002fcall-operands_002c-x86_002d64"></span>
  16977. <span id="index-x86_002d64-jump_002fcall-operands"></span>
  16978. <span id="index-operand-delimiters_002c-x86_002d64"></span>
  16979. <ul>
  16980. <li> AT&amp;T immediate operands are preceded by &lsquo;<samp>$</samp>&rsquo;; Intel immediate
  16981. operands are undelimited (Intel &lsquo;<samp>push 4</samp>&rsquo; is AT&amp;T &lsquo;<samp>pushl $4</samp>&rsquo;).
  16982. AT&amp;T register operands are preceded by &lsquo;<samp>%</samp>&rsquo;; Intel register operands
  16983. are undelimited. AT&amp;T absolute (as opposed to PC relative) jump/call
  16984. operands are prefixed by &lsquo;<samp>*</samp>&rsquo;; they are undelimited in Intel syntax.
  16985. </li><li> <span id="index-i386-source_002c-destination-operands"></span>
  16986. <span id="index-source_002c-destination-operands_003b-i386"></span>
  16987. <span id="index-x86_002d64-source_002c-destination-operands"></span>
  16988. <span id="index-source_002c-destination-operands_003b-x86_002d64"></span>
  16989. AT&amp;T and Intel syntax use the opposite order for source and destination
  16990. operands. Intel &lsquo;<samp>add eax, 4</samp>&rsquo; is &lsquo;<samp>addl $4, %eax</samp>&rsquo;. The
  16991. &lsquo;<samp>source, dest</samp>&rsquo; convention is maintained for compatibility with
  16992. previous Unix assemblers. Note that &lsquo;<samp>bound</samp>&rsquo;, &lsquo;<samp>invlpga</samp>&rsquo;, and
  16993. instructions with 2 immediate operands, such as the &lsquo;<samp>enter</samp>&rsquo;
  16994. instruction, do <em>not</em> have reversed order. <a href="#i386_002dBugs">i386-Bugs</a>.
  16995. </li><li> <span id="index-mnemonic-suffixes_002c-i386"></span>
  16996. <span id="index-sizes-operands_002c-i386"></span>
  16997. <span id="index-i386-size-suffixes"></span>
  16998. <span id="index-mnemonic-suffixes_002c-x86_002d64"></span>
  16999. <span id="index-sizes-operands_002c-x86_002d64"></span>
  17000. <span id="index-x86_002d64-size-suffixes"></span>
  17001. In AT&amp;T syntax the size of memory operands is determined from the last
  17002. character of the instruction mnemonic. Mnemonic suffixes of &lsquo;<samp>b</samp>&rsquo;,
  17003. &lsquo;<samp>w</samp>&rsquo;, &lsquo;<samp>l</samp>&rsquo; and &lsquo;<samp>q</samp>&rsquo; specify byte (8-bit), word (16-bit), long
  17004. (32-bit) and quadruple word (64-bit) memory references. Mnemonic suffixes
  17005. of &lsquo;<samp>x</samp>&rsquo;, &lsquo;<samp>y</samp>&rsquo; and &lsquo;<samp>z</samp>&rsquo; specify xmm (128-bit vector), ymm
  17006. (256-bit vector) and zmm (512-bit vector) memory references, only when there&rsquo;s
  17007. no other way to disambiguate an instruction. Intel syntax accomplishes this by
  17008. prefixing memory operands (<em>not</em> the instruction mnemonics) with
  17009. &lsquo;<samp>byte ptr</samp>&rsquo;, &lsquo;<samp>word ptr</samp>&rsquo;, &lsquo;<samp>dword ptr</samp>&rsquo;, &lsquo;<samp>qword ptr</samp>&rsquo;,
  17010. &lsquo;<samp>xmmword ptr</samp>&rsquo;, &lsquo;<samp>ymmword ptr</samp>&rsquo; and &lsquo;<samp>zmmword ptr</samp>&rsquo;. Thus, Intel
  17011. syntax &lsquo;<samp>mov al, byte ptr <var>foo</var></samp>&rsquo; is &lsquo;<samp>movb <var>foo</var>, %al</samp>&rsquo; in AT&amp;T
  17012. syntax. In Intel syntax, &lsquo;<samp>fword ptr</samp>&rsquo;, &lsquo;<samp>tbyte ptr</samp>&rsquo; and
  17013. &lsquo;<samp>oword ptr</samp>&rsquo; specify 48-bit, 80-bit and 128-bit memory references.
  17014. <p>In 64-bit code, &lsquo;<samp>movabs</samp>&rsquo; can be used to encode the &lsquo;<samp>mov</samp>&rsquo;
  17015. instruction with the 64-bit displacement or immediate operand.
  17016. </p>
  17017. </li><li> <span id="index-return-instructions_002c-i386"></span>
  17018. <span id="index-i386-jump_002c-call_002c-return"></span>
  17019. <span id="index-return-instructions_002c-x86_002d64"></span>
  17020. <span id="index-x86_002d64-jump_002c-call_002c-return"></span>
  17021. Immediate form long jumps and calls are
  17022. &lsquo;<samp>lcall/ljmp $<var>section</var>, $<var>offset</var></samp>&rsquo; in AT&amp;T syntax; the
  17023. Intel syntax is
  17024. &lsquo;<samp>call/jmp far <var>section</var>:<var>offset</var></samp>&rsquo;. Also, the far return
  17025. instruction
  17026. is &lsquo;<samp>lret $<var>stack-adjust</var></samp>&rsquo; in AT&amp;T syntax; Intel syntax is
  17027. &lsquo;<samp>ret far <var>stack-adjust</var></samp>&rsquo;.
  17028. </li><li> <span id="index-sections_002c-i386"></span>
  17029. <span id="index-i386-sections"></span>
  17030. <span id="index-sections_002c-x86_002d64"></span>
  17031. <span id="index-x86_002d64-sections"></span>
  17032. The AT&amp;T assembler does not provide support for multiple section
  17033. programs. Unix style systems expect all programs to be single sections.
  17034. </li></ul>
  17035. <hr>
  17036. <span id="i386_002dChars"></span><div class="header">
  17037. <p>
  17038. Previous: <a href="#i386_002dVariations" accesskey="p" rel="prev">i386-Variations</a>, Up: <a href="#i386_002dSyntax" accesskey="u" rel="up">i386-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17039. </div>
  17040. <span id="Special-Characters-11"></span><h4 class="subsubsection">9.16.3.2 Special Characters</h4>
  17041. <span id="index-line-comment-character_002c-i386"></span>
  17042. <span id="index-i386-line-comment-character"></span>
  17043. <p>The presence of a &lsquo;<samp>#</samp>&rsquo; appearing anywhere on a line indicates the
  17044. start of a comment that extends to the end of that line.
  17045. </p>
  17046. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  17047. line is treated as a comment, but in this case the line can also be a
  17048. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  17049. control command (see <a href="#Preprocessing">Preprocessing</a>).
  17050. </p>
  17051. <p>If the <samp>--divide</samp> command-line option has not been specified
  17052. then the &lsquo;<samp>/</samp>&rsquo; character appearing anywhere on a line also
  17053. introduces a line comment.
  17054. </p>
  17055. <span id="index-line-separator_002c-i386"></span>
  17056. <span id="index-statement-separator_002c-i386"></span>
  17057. <span id="index-i386-line-separator"></span>
  17058. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used to separate statements on the same
  17059. line.
  17060. </p>
  17061. <hr>
  17062. <span id="i386_002dMnemonics"></span><div class="header">
  17063. <p>
  17064. Next: <a href="#i386_002dRegs" accesskey="n" rel="next">i386-Regs</a>, Previous: <a href="#i386_002dSyntax" accesskey="p" rel="prev">i386-Syntax</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17065. </div>
  17066. <span id="i386_002dMnemonics-1"></span><h4 class="subsection">9.16.4 i386-Mnemonics</h4>
  17067. <span id="Instruction-Naming"></span><h4 class="subsubsection">9.16.4.1 Instruction Naming</h4>
  17068. <span id="index-i386-instruction-naming"></span>
  17069. <span id="index-instruction-naming_002c-i386"></span>
  17070. <span id="index-x86_002d64-instruction-naming"></span>
  17071. <span id="index-instruction-naming_002c-x86_002d64"></span>
  17072. <p>Instruction mnemonics are suffixed with one character modifiers which
  17073. specify the size of operands. The letters &lsquo;<samp>b</samp>&rsquo;, &lsquo;<samp>w</samp>&rsquo;, &lsquo;<samp>l</samp>&rsquo;
  17074. and &lsquo;<samp>q</samp>&rsquo; specify byte, word, long and quadruple word operands. If
  17075. no suffix is specified by an instruction then <code>as</code> tries to
  17076. fill in the missing suffix based on the destination register operand
  17077. (the last one by convention). Thus, &lsquo;<samp>mov %ax, %bx</samp>&rsquo; is equivalent
  17078. to &lsquo;<samp>movw %ax, %bx</samp>&rsquo;; also, &lsquo;<samp>mov $1, %bx</samp>&rsquo; is equivalent to
  17079. &lsquo;<samp>movw $1, bx</samp>&rsquo;. Note that this is incompatible with the AT&amp;T Unix
  17080. assembler which assumes that a missing mnemonic suffix implies long
  17081. operand size. (This incompatibility does not affect compiler output
  17082. since compilers always explicitly specify the mnemonic suffix.)
  17083. </p>
  17084. <p>When there is no sizing suffix and no (suitable) register operands to
  17085. deduce the size of memory operands, with a few exceptions and where long
  17086. operand size is possible in the first place, operand size will default
  17087. to long in 32- and 64-bit modes. Similarly it will default to short in
  17088. 16-bit mode. Noteworthy exceptions are
  17089. </p>
  17090. <ul>
  17091. <li> Instructions with an implicit on-stack operand as well as branches,
  17092. which default to quad in 64-bit mode.
  17093. </li><li> Sign- and zero-extending moves, which default to byte size source
  17094. operands.
  17095. </li><li> Floating point insns with integer operands, which default to short (for
  17096. perhaps historical reasons).
  17097. </li><li> CRC32 with a 64-bit destination, which defaults to a quad source
  17098. operand.
  17099. </li></ul>
  17100. <span id="index-encoding-options_002c-i386"></span>
  17101. <span id="index-encoding-options_002c-x86_002d64"></span>
  17102. <p>Different encoding options can be specified via pseudo prefixes:
  17103. </p>
  17104. <ul>
  17105. <li> &lsquo;<samp>{disp8}</samp>&rsquo; &ndash; prefer 8-bit displacement.
  17106. </li><li> &lsquo;<samp>{disp32}</samp>&rsquo; &ndash; prefer 32-bit displacement.
  17107. </li><li> &lsquo;<samp>{disp16}</samp>&rsquo; &ndash; prefer 16-bit displacement.
  17108. </li><li> &lsquo;<samp>{load}</samp>&rsquo; &ndash; prefer load-form instruction.
  17109. </li><li> &lsquo;<samp>{store}</samp>&rsquo; &ndash; prefer store-form instruction.
  17110. </li><li> &lsquo;<samp>{vex}</samp>&rsquo; &ndash; encode with VEX prefix.
  17111. </li><li> &lsquo;<samp>{vex3}</samp>&rsquo; &ndash; encode with 3-byte VEX prefix.
  17112. </li><li> &lsquo;<samp>{evex}</samp>&rsquo; &ndash; encode with EVEX prefix.
  17113. </li><li> &lsquo;<samp>{rex}</samp>&rsquo; &ndash; prefer REX prefix for integer and legacy vector
  17114. instructions (x86-64 only). Note that this differs from the &lsquo;<samp>rex</samp>&rsquo;
  17115. prefix which generates REX prefix unconditionally.
  17116. </li><li> &lsquo;<samp>{rex2}</samp>&rsquo; &ndash; prefer REX2 prefix for integer and legacy vector
  17117. instructions (APX_F only).
  17118. </li><li> &lsquo;<samp>{nooptimize}</samp>&rsquo; &ndash; disable instruction size optimization.
  17119. </li></ul>
  17120. <p>Mnemonics of Intel VNNI/IFMA instructions are encoded with the EVEX prefix
  17121. by default. The pseudo &lsquo;<samp>{vex}</samp>&rsquo; prefix can be used to encode
  17122. mnemonics of Intel VNNI/IFMA instructions with the VEX prefix.
  17123. </p>
  17124. <span id="index-conversion-instructions_002c-i386"></span>
  17125. <span id="index-i386-conversion-instructions"></span>
  17126. <span id="index-conversion-instructions_002c-x86_002d64"></span>
  17127. <span id="index-x86_002d64-conversion-instructions"></span>
  17128. <p>The Intel-syntax conversion instructions
  17129. </p>
  17130. <ul>
  17131. <li> &lsquo;<samp>cbw</samp>&rsquo; &mdash; sign-extend byte in &lsquo;<samp>%al</samp>&rsquo; to word in &lsquo;<samp>%ax</samp>&rsquo;,
  17132. </li><li> &lsquo;<samp>cwde</samp>&rsquo; &mdash; sign-extend word in &lsquo;<samp>%ax</samp>&rsquo; to long in &lsquo;<samp>%eax</samp>&rsquo;,
  17133. </li><li> &lsquo;<samp>cwd</samp>&rsquo; &mdash; sign-extend word in &lsquo;<samp>%ax</samp>&rsquo; to long in &lsquo;<samp>%dx:%ax</samp>&rsquo;,
  17134. </li><li> &lsquo;<samp>cdq</samp>&rsquo; &mdash; sign-extend dword in &lsquo;<samp>%eax</samp>&rsquo; to quad in &lsquo;<samp>%edx:%eax</samp>&rsquo;,
  17135. </li><li> &lsquo;<samp>cdqe</samp>&rsquo; &mdash; sign-extend dword in &lsquo;<samp>%eax</samp>&rsquo; to quad in &lsquo;<samp>%rax</samp>&rsquo;
  17136. (x86-64 only),
  17137. </li><li> &lsquo;<samp>cqo</samp>&rsquo; &mdash; sign-extend quad in &lsquo;<samp>%rax</samp>&rsquo; to octuple in
  17138. &lsquo;<samp>%rdx:%rax</samp>&rsquo; (x86-64 only),
  17139. </li></ul>
  17140. <p>are called &lsquo;<samp>cbtw</samp>&rsquo;, &lsquo;<samp>cwtl</samp>&rsquo;, &lsquo;<samp>cwtd</samp>&rsquo;, &lsquo;<samp>cltd</samp>&rsquo;, &lsquo;<samp>cltq</samp>&rsquo;, and
  17141. &lsquo;<samp>cqto</samp>&rsquo; in AT&amp;T naming. <code>as</code> accepts either naming for these
  17142. instructions.
  17143. </p>
  17144. <span id="index-extension-instructions_002c-i386"></span>
  17145. <span id="index-i386-extension-instructions"></span>
  17146. <span id="index-extension-instructions_002c-x86_002d64"></span>
  17147. <span id="index-x86_002d64-extension-instructions"></span>
  17148. <p>The Intel-syntax extension instructions
  17149. </p>
  17150. <ul>
  17151. <li> &lsquo;<samp>movsx</samp>&rsquo; &mdash; sign-extend &lsquo;<samp>reg8/mem8</samp>&rsquo; to &lsquo;<samp>reg16</samp>&rsquo;.
  17152. </li><li> &lsquo;<samp>movsx</samp>&rsquo; &mdash; sign-extend &lsquo;<samp>reg8/mem8</samp>&rsquo; to &lsquo;<samp>reg32</samp>&rsquo;.
  17153. </li><li> &lsquo;<samp>movsx</samp>&rsquo; &mdash; sign-extend &lsquo;<samp>reg8/mem8</samp>&rsquo; to &lsquo;<samp>reg64</samp>&rsquo;
  17154. (x86-64 only).
  17155. </li><li> &lsquo;<samp>movsx</samp>&rsquo; &mdash; sign-extend &lsquo;<samp>reg16/mem16</samp>&rsquo; to &lsquo;<samp>reg32</samp>&rsquo;
  17156. </li><li> &lsquo;<samp>movsx</samp>&rsquo; &mdash; sign-extend &lsquo;<samp>reg16/mem16</samp>&rsquo; to &lsquo;<samp>reg64</samp>&rsquo;
  17157. (x86-64 only).
  17158. </li><li> &lsquo;<samp>movsxd</samp>&rsquo; &mdash; sign-extend &lsquo;<samp>reg32/mem32</samp>&rsquo; to &lsquo;<samp>reg64</samp>&rsquo;
  17159. (x86-64 only).
  17160. </li><li> &lsquo;<samp>movzx</samp>&rsquo; &mdash; zero-extend &lsquo;<samp>reg8/mem8</samp>&rsquo; to &lsquo;<samp>reg16</samp>&rsquo;.
  17161. </li><li> &lsquo;<samp>movzx</samp>&rsquo; &mdash; zero-extend &lsquo;<samp>reg8/mem8</samp>&rsquo; to &lsquo;<samp>reg32</samp>&rsquo;.
  17162. </li><li> &lsquo;<samp>movzx</samp>&rsquo; &mdash; zero-extend &lsquo;<samp>reg8/mem8</samp>&rsquo; to &lsquo;<samp>reg64</samp>&rsquo;
  17163. (x86-64 only).
  17164. </li><li> &lsquo;<samp>movzx</samp>&rsquo; &mdash; zero-extend &lsquo;<samp>reg16/mem16</samp>&rsquo; to &lsquo;<samp>reg32</samp>&rsquo;
  17165. </li><li> &lsquo;<samp>movzx</samp>&rsquo; &mdash; zero-extend &lsquo;<samp>reg16/mem16</samp>&rsquo; to &lsquo;<samp>reg64</samp>&rsquo;
  17166. (x86-64 only).
  17167. </li></ul>
  17168. <p>are called &lsquo;<samp>movsbw/movsxb/movsx</samp>&rsquo;, &lsquo;<samp>movsbl/movsxb/movsx</samp>&rsquo;,
  17169. &lsquo;<samp>movsbq/movsxb/movsx</samp>&rsquo;, &lsquo;<samp>movswl/movsxw</samp>&rsquo;, &lsquo;<samp>movswq/movsxw</samp>&rsquo;,
  17170. &lsquo;<samp>movslq/movsxl</samp>&rsquo;, &lsquo;<samp>movzbw/movzxb/movzx</samp>&rsquo;,
  17171. &lsquo;<samp>movzbl/movzxb/movzx</samp>&rsquo;, &lsquo;<samp>movzbq/movzxb/movzx</samp>&rsquo;,
  17172. &lsquo;<samp>movzwl/movzxw</samp>&rsquo; and &lsquo;<samp>movzwq/movzxw</samp>&rsquo; in AT&amp;T syntax.
  17173. </p>
  17174. <span id="index-jump-instructions_002c-i386"></span>
  17175. <span id="index-call-instructions_002c-i386"></span>
  17176. <span id="index-jump-instructions_002c-x86_002d64"></span>
  17177. <span id="index-call-instructions_002c-x86_002d64"></span>
  17178. <p>Far call/jump instructions are &lsquo;<samp>lcall</samp>&rsquo; and &lsquo;<samp>ljmp</samp>&rsquo; in
  17179. AT&amp;T syntax, but are &lsquo;<samp>call far</samp>&rsquo; and &lsquo;<samp>jump far</samp>&rsquo; in Intel
  17180. convention.
  17181. </p>
  17182. <span id="AT_0026T-Mnemonic-versus-Intel-Mnemonic"></span><h4 class="subsubsection">9.16.4.2 AT&amp;T Mnemonic versus Intel Mnemonic</h4>
  17183. <span id="index-i386-mnemonic-compatibility"></span>
  17184. <span id="index-mnemonic-compatibility_002c-i386"></span>
  17185. <p><code>as</code> supports assembly using Intel mnemonic.
  17186. <code>.intel_mnemonic</code> selects Intel mnemonic with Intel syntax, and
  17187. <code>.att_mnemonic</code> switches back to the usual AT&amp;T mnemonic with AT&amp;T
  17188. syntax for compatibility with the output of <code>gcc</code>.
  17189. Several x87 instructions, &lsquo;<samp>fadd</samp>&rsquo;, &lsquo;<samp>fdiv</samp>&rsquo;, &lsquo;<samp>fdivp</samp>&rsquo;,
  17190. &lsquo;<samp>fdivr</samp>&rsquo;, &lsquo;<samp>fdivrp</samp>&rsquo;, &lsquo;<samp>fmul</samp>&rsquo;, &lsquo;<samp>fsub</samp>&rsquo;, &lsquo;<samp>fsubp</samp>&rsquo;,
  17191. &lsquo;<samp>fsubr</samp>&rsquo; and &lsquo;<samp>fsubrp</samp>&rsquo;, are implemented in AT&amp;T System V/386
  17192. assembler with different mnemonics from those in Intel IA32 specification.
  17193. <code>gcc</code> generates those instructions with AT&amp;T mnemonic.
  17194. </p>
  17195. <ul>
  17196. <li> &lsquo;<samp>movslq</samp>&rsquo; with AT&amp;T mnemonic only accepts 64-bit destination
  17197. register. &lsquo;<samp>movsxd</samp>&rsquo; should be used to encode 16-bit or 32-bit
  17198. destination register with both AT&amp;T and Intel mnemonics.
  17199. </li></ul>
  17200. <hr>
  17201. <span id="i386_002dRegs"></span><div class="header">
  17202. <p>
  17203. Next: <a href="#i386_002dPrefixes" accesskey="n" rel="next">i386-Prefixes</a>, Previous: <a href="#i386_002dMnemonics" accesskey="p" rel="prev">i386-Mnemonics</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17204. </div>
  17205. <span id="Register-Naming"></span><h4 class="subsection">9.16.5 Register Naming</h4>
  17206. <span id="index-i386-registers"></span>
  17207. <span id="index-registers_002c-i386"></span>
  17208. <span id="index-x86_002d64-registers"></span>
  17209. <span id="index-registers_002c-x86_002d64"></span>
  17210. <p>Register operands are always prefixed with &lsquo;<samp>%</samp>&rsquo;. The 80386 registers
  17211. consist of
  17212. </p>
  17213. <ul>
  17214. <li> the 8 32-bit registers &lsquo;<samp>%eax</samp>&rsquo; (the accumulator), &lsquo;<samp>%ebx</samp>&rsquo;,
  17215. &lsquo;<samp>%ecx</samp>&rsquo;, &lsquo;<samp>%edx</samp>&rsquo;, &lsquo;<samp>%edi</samp>&rsquo;, &lsquo;<samp>%esi</samp>&rsquo;, &lsquo;<samp>%ebp</samp>&rsquo; (the
  17216. frame pointer), and &lsquo;<samp>%esp</samp>&rsquo; (the stack pointer).
  17217. </li><li> the 8 16-bit low-ends of these: &lsquo;<samp>%ax</samp>&rsquo;, &lsquo;<samp>%bx</samp>&rsquo;, &lsquo;<samp>%cx</samp>&rsquo;,
  17218. &lsquo;<samp>%dx</samp>&rsquo;, &lsquo;<samp>%di</samp>&rsquo;, &lsquo;<samp>%si</samp>&rsquo;, &lsquo;<samp>%bp</samp>&rsquo;, and &lsquo;<samp>%sp</samp>&rsquo;.
  17219. </li><li> the 8 8-bit registers: &lsquo;<samp>%ah</samp>&rsquo;, &lsquo;<samp>%al</samp>&rsquo;, &lsquo;<samp>%bh</samp>&rsquo;,
  17220. &lsquo;<samp>%bl</samp>&rsquo;, &lsquo;<samp>%ch</samp>&rsquo;, &lsquo;<samp>%cl</samp>&rsquo;, &lsquo;<samp>%dh</samp>&rsquo;, and &lsquo;<samp>%dl</samp>&rsquo; (These
  17221. are the high-bytes and low-bytes of &lsquo;<samp>%ax</samp>&rsquo;, &lsquo;<samp>%bx</samp>&rsquo;,
  17222. &lsquo;<samp>%cx</samp>&rsquo;, and &lsquo;<samp>%dx</samp>&rsquo;)
  17223. </li><li> the 6 section registers &lsquo;<samp>%cs</samp>&rsquo; (code section), &lsquo;<samp>%ds</samp>&rsquo;
  17224. (data section), &lsquo;<samp>%ss</samp>&rsquo; (stack section), &lsquo;<samp>%es</samp>&rsquo;, &lsquo;<samp>%fs</samp>&rsquo;,
  17225. and &lsquo;<samp>%gs</samp>&rsquo;.
  17226. </li><li> the 5 processor control registers &lsquo;<samp>%cr0</samp>&rsquo;, &lsquo;<samp>%cr2</samp>&rsquo;,
  17227. &lsquo;<samp>%cr3</samp>&rsquo;, &lsquo;<samp>%cr4</samp>&rsquo;, and &lsquo;<samp>%cr8</samp>&rsquo;.
  17228. </li><li> the 6 debug registers &lsquo;<samp>%db0</samp>&rsquo;, &lsquo;<samp>%db1</samp>&rsquo;, &lsquo;<samp>%db2</samp>&rsquo;,
  17229. &lsquo;<samp>%db3</samp>&rsquo;, &lsquo;<samp>%db6</samp>&rsquo;, and &lsquo;<samp>%db7</samp>&rsquo;.
  17230. </li><li> the 2 test registers &lsquo;<samp>%tr6</samp>&rsquo; and &lsquo;<samp>%tr7</samp>&rsquo;.
  17231. </li><li> the 8 floating point register stack &lsquo;<samp>%st</samp>&rsquo; or equivalently
  17232. &lsquo;<samp>%st(0)</samp>&rsquo;, &lsquo;<samp>%st(1)</samp>&rsquo;, &lsquo;<samp>%st(2)</samp>&rsquo;, &lsquo;<samp>%st(3)</samp>&rsquo;,
  17233. &lsquo;<samp>%st(4)</samp>&rsquo;, &lsquo;<samp>%st(5)</samp>&rsquo;, &lsquo;<samp>%st(6)</samp>&rsquo;, and &lsquo;<samp>%st(7)</samp>&rsquo;.
  17234. These registers are overloaded by 8 MMX registers &lsquo;<samp>%mm0</samp>&rsquo;,
  17235. &lsquo;<samp>%mm1</samp>&rsquo;, &lsquo;<samp>%mm2</samp>&rsquo;, &lsquo;<samp>%mm3</samp>&rsquo;, &lsquo;<samp>%mm4</samp>&rsquo;, &lsquo;<samp>%mm5</samp>&rsquo;,
  17236. &lsquo;<samp>%mm6</samp>&rsquo; and &lsquo;<samp>%mm7</samp>&rsquo;.
  17237. </li><li> the 8 128-bit SSE registers registers &lsquo;<samp>%xmm0</samp>&rsquo;, &lsquo;<samp>%xmm1</samp>&rsquo;, &lsquo;<samp>%xmm2</samp>&rsquo;,
  17238. &lsquo;<samp>%xmm3</samp>&rsquo;, &lsquo;<samp>%xmm4</samp>&rsquo;, &lsquo;<samp>%xmm5</samp>&rsquo;, &lsquo;<samp>%xmm6</samp>&rsquo; and &lsquo;<samp>%xmm7</samp>&rsquo;.
  17239. </li></ul>
  17240. <p>The AMD x86-64 architecture extends the register set by:
  17241. </p>
  17242. <ul>
  17243. <li> enhancing the 8 32-bit registers to 64-bit: &lsquo;<samp>%rax</samp>&rsquo; (the
  17244. accumulator), &lsquo;<samp>%rbx</samp>&rsquo;, &lsquo;<samp>%rcx</samp>&rsquo;, &lsquo;<samp>%rdx</samp>&rsquo;, &lsquo;<samp>%rdi</samp>&rsquo;,
  17245. &lsquo;<samp>%rsi</samp>&rsquo;, &lsquo;<samp>%rbp</samp>&rsquo; (the frame pointer), &lsquo;<samp>%rsp</samp>&rsquo; (the stack
  17246. pointer)
  17247. </li><li> the 8 extended registers &lsquo;<samp>%r8</samp>&rsquo;&ndash;&lsquo;<samp>%r15</samp>&rsquo;.
  17248. </li><li> the 8 32-bit low ends of the extended registers: &lsquo;<samp>%r8d</samp>&rsquo;&ndash;&lsquo;<samp>%r15d</samp>&rsquo;.
  17249. </li><li> the 8 16-bit low ends of the extended registers: &lsquo;<samp>%r8w</samp>&rsquo;&ndash;&lsquo;<samp>%r15w</samp>&rsquo;.
  17250. </li><li> the 8 8-bit low ends of the extended registers: &lsquo;<samp>%r8b</samp>&rsquo;&ndash;&lsquo;<samp>%r15b</samp>&rsquo;.
  17251. </li><li> the 4 8-bit registers: &lsquo;<samp>%sil</samp>&rsquo;, &lsquo;<samp>%dil</samp>&rsquo;, &lsquo;<samp>%bpl</samp>&rsquo;, &lsquo;<samp>%spl</samp>&rsquo;.
  17252. </li><li> the 8 debug registers: &lsquo;<samp>%db8</samp>&rsquo;&ndash;&lsquo;<samp>%db15</samp>&rsquo;.
  17253. </li><li> the 8 128-bit SSE registers: &lsquo;<samp>%xmm8</samp>&rsquo;&ndash;&lsquo;<samp>%xmm15</samp>&rsquo;.
  17254. </li></ul>
  17255. <p>With the AVX extensions more registers were made available:
  17256. </p>
  17257. <ul>
  17258. <li> the 16 256-bit SSE &lsquo;<samp>%ymm0</samp>&rsquo;&ndash;&lsquo;<samp>%ymm15</samp>&rsquo; (only the first 8
  17259. available in 32-bit mode). The bottom 128 bits are overlaid with the
  17260. &lsquo;<samp>xmm0</samp>&rsquo;&ndash;&lsquo;<samp>xmm15</samp>&rsquo; registers.
  17261. </li></ul>
  17262. <p>The AVX512 extensions added the following registers:
  17263. </p>
  17264. <ul>
  17265. <li> the 32 512-bit registers &lsquo;<samp>%zmm0</samp>&rsquo;&ndash;&lsquo;<samp>%zmm31</samp>&rsquo; (only the first 8
  17266. available in 32-bit mode). The bottom 128 bits are overlaid with the
  17267. &lsquo;<samp>%xmm0</samp>&rsquo;&ndash;&lsquo;<samp>%xmm31</samp>&rsquo; registers and the first 256 bits are
  17268. overlaid with the &lsquo;<samp>%ymm0</samp>&rsquo;&ndash;&lsquo;<samp>%ymm31</samp>&rsquo; registers.
  17269. </li><li> the 8 mask registers &lsquo;<samp>%k0</samp>&rsquo;&ndash;&lsquo;<samp>%k7</samp>&rsquo;.
  17270. </li></ul>
  17271. <hr>
  17272. <span id="i386_002dPrefixes"></span><div class="header">
  17273. <p>
  17274. Next: <a href="#i386_002dMemory" accesskey="n" rel="next">i386-Memory</a>, Previous: <a href="#i386_002dRegs" accesskey="p" rel="prev">i386-Regs</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17275. </div>
  17276. <span id="Instruction-Prefixes"></span><h4 class="subsection">9.16.6 Instruction Prefixes</h4>
  17277. <span id="index-i386-instruction-prefixes"></span>
  17278. <span id="index-instruction-prefixes_002c-i386"></span>
  17279. <span id="index-prefixes_002c-i386"></span>
  17280. <p>Instruction prefixes are used to modify the following instruction. They
  17281. are used to repeat string instructions, to provide section overrides, to
  17282. perform bus lock operations, and to change operand and address sizes.
  17283. (Most instructions that normally operate on 32-bit operands will use
  17284. 16-bit operands if the instruction has an &ldquo;operand size&rdquo; prefix.)
  17285. Instruction prefixes are best written on the same line as the instruction
  17286. they act upon. For example, the &lsquo;<samp>scas</samp>&rsquo; (scan string) instruction is
  17287. repeated with:
  17288. </p>
  17289. <div class="example">
  17290. <pre class="example"> repne scas %es:(%edi),%al
  17291. </pre></div>
  17292. <p>You may also place prefixes on the lines immediately preceding the
  17293. instruction, but this circumvents checks that <code>as</code> does
  17294. with prefixes, and will not work with all prefixes.
  17295. </p>
  17296. <p>Here is a list of instruction prefixes:
  17297. </p>
  17298. <span id="index-section-override-prefixes_002c-i386"></span>
  17299. <ul>
  17300. <li> Section override prefixes &lsquo;<samp>cs</samp>&rsquo;, &lsquo;<samp>ds</samp>&rsquo;, &lsquo;<samp>ss</samp>&rsquo;, &lsquo;<samp>es</samp>&rsquo;,
  17301. &lsquo;<samp>fs</samp>&rsquo;, &lsquo;<samp>gs</samp>&rsquo;. These are automatically added by specifying
  17302. using the <var>section</var>:<var>memory-operand</var> form for memory references.
  17303. </li><li> <span id="index-size-prefixes_002c-i386"></span>
  17304. Operand/Address size prefixes &lsquo;<samp>data16</samp>&rsquo; and &lsquo;<samp>addr16</samp>&rsquo;
  17305. change 32-bit operands/addresses into 16-bit operands/addresses,
  17306. while &lsquo;<samp>data32</samp>&rsquo; and &lsquo;<samp>addr32</samp>&rsquo; change 16-bit ones (in a
  17307. <code>.code16</code> section) into 32-bit operands/addresses. These prefixes
  17308. <em>must</em> appear on the same line of code as the instruction they
  17309. modify. For example, in a 16-bit <code>.code16</code> section, you might
  17310. write:
  17311. <div class="example">
  17312. <pre class="example"> addr32 jmpl *(%ebx)
  17313. </pre></div>
  17314. </li><li> <span id="index-bus-lock-prefixes_002c-i386"></span>
  17315. <span id="index-inhibiting-interrupts_002c-i386"></span>
  17316. The bus lock prefix &lsquo;<samp>lock</samp>&rsquo; inhibits interrupts during execution of
  17317. the instruction it precedes. (This is only valid with certain
  17318. instructions; see a 80386 manual for details).
  17319. </li><li> <span id="index-coprocessor-wait_002c-i386"></span>
  17320. The wait for coprocessor prefix &lsquo;<samp>wait</samp>&rsquo; waits for the coprocessor to
  17321. complete the current instruction. This should never be needed for the
  17322. 80386/80387 combination.
  17323. </li><li> <span id="index-repeat-prefixes_002c-i386"></span>
  17324. The &lsquo;<samp>rep</samp>&rsquo;, &lsquo;<samp>repe</samp>&rsquo;, and &lsquo;<samp>repne</samp>&rsquo; prefixes are added
  17325. to string instructions to make them repeat &lsquo;<samp>%ecx</samp>&rsquo; times (&lsquo;<samp>%cx</samp>&rsquo;
  17326. times if the current address size is 16-bits).
  17327. </li><li> <span id="index-REX-prefixes_002c-i386"></span>
  17328. The &lsquo;<samp>rex</samp>&rsquo; family of prefixes is used by x86-64 to encode
  17329. extensions to i386 instruction set. The &lsquo;<samp>rex</samp>&rsquo; prefix has four
  17330. bits &mdash; an operand size overwrite (<code>64</code>) used to change operand size
  17331. from 32-bit to 64-bit and X, Y and Z extensions bits used to extend the
  17332. register set.
  17333. <p>You may write the &lsquo;<samp>rex</samp>&rsquo; prefixes directly. The &lsquo;<samp>rex64xyz</samp>&rsquo;
  17334. instruction emits &lsquo;<samp>rex</samp>&rsquo; prefix with all the bits set. By omitting
  17335. the <code>64</code>, <code>x</code>, <code>y</code> or <code>z</code> you may write other
  17336. prefixes as well. Normally, there is no need to write the prefixes
  17337. explicitly, since gas will automatically generate them based on the
  17338. instruction operands.
  17339. </p></li></ul>
  17340. <hr>
  17341. <span id="i386_002dMemory"></span><div class="header">
  17342. <p>
  17343. Next: <a href="#i386_002dJumps" accesskey="n" rel="next">i386-Jumps</a>, Previous: <a href="#i386_002dPrefixes" accesskey="p" rel="prev">i386-Prefixes</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17344. </div>
  17345. <span id="Memory-References"></span><h4 class="subsection">9.16.7 Memory References</h4>
  17346. <span id="index-i386-memory-references"></span>
  17347. <span id="index-memory-references_002c-i386"></span>
  17348. <span id="index-x86_002d64-memory-references"></span>
  17349. <span id="index-memory-references_002c-x86_002d64"></span>
  17350. <p>An Intel syntax indirect memory reference of the form
  17351. </p>
  17352. <div class="example">
  17353. <pre class="example"><var>section</var>:[<var>base</var> + <var>index</var>*<var>scale</var> + <var>disp</var>]
  17354. </pre></div>
  17355. <p>is translated into the AT&amp;T syntax
  17356. </p>
  17357. <div class="example">
  17358. <pre class="example"><var>section</var>:<var>disp</var>(<var>base</var>, <var>index</var>, <var>scale</var>)
  17359. </pre></div>
  17360. <p>where <var>base</var> and <var>index</var> are the optional 32-bit base and
  17361. index registers, <var>disp</var> is the optional displacement, and
  17362. <var>scale</var>, taking the values 1, 2, 4, and 8, multiplies <var>index</var>
  17363. to calculate the address of the operand. If no <var>scale</var> is
  17364. specified, <var>scale</var> is taken to be 1. <var>section</var> specifies the
  17365. optional section register for the memory operand, and may override the
  17366. default section register (see a 80386 manual for section register
  17367. defaults). Note that section overrides in AT&amp;T syntax <em>must</em>
  17368. be preceded by a &lsquo;<samp>%</samp>&rsquo;. If you specify a section override which
  17369. coincides with the default section register, <code>as</code> does <em>not</em>
  17370. output any section register override prefixes to assemble the given
  17371. instruction. Thus, section overrides can be specified to emphasize which
  17372. section register is used for a given memory operand.
  17373. </p>
  17374. <p>Here are some examples of Intel and AT&amp;T style memory references:
  17375. </p>
  17376. <dl compact="compact">
  17377. <dt>AT&amp;T: &lsquo;<samp>-4(%ebp)</samp>&rsquo;, Intel: &lsquo;<samp>[ebp - 4]</samp>&rsquo;</dt>
  17378. <dd><p><var>base</var> is &lsquo;<samp>%ebp</samp>&rsquo;; <var>disp</var> is &lsquo;<samp>-4</samp>&rsquo;. <var>section</var> is
  17379. missing, and the default section is used (&lsquo;<samp>%ss</samp>&rsquo; for addressing with
  17380. &lsquo;<samp>%ebp</samp>&rsquo; as the base register). <var>index</var>, <var>scale</var> are both missing.
  17381. </p>
  17382. </dd>
  17383. <dt>AT&amp;T: &lsquo;<samp>foo(,%eax,4)</samp>&rsquo;, Intel: &lsquo;<samp>[foo + eax*4]</samp>&rsquo;</dt>
  17384. <dd><p><var>index</var> is &lsquo;<samp>%eax</samp>&rsquo; (scaled by a <var>scale</var> 4); <var>disp</var> is
  17385. &lsquo;<samp>foo</samp>&rsquo;. All other fields are missing. The section register here
  17386. defaults to &lsquo;<samp>%ds</samp>&rsquo;.
  17387. </p>
  17388. </dd>
  17389. <dt>AT&amp;T: &lsquo;<samp>foo(,1)</samp>&rsquo;; Intel &lsquo;<samp>[foo]</samp>&rsquo;</dt>
  17390. <dd><p>This uses the value pointed to by &lsquo;<samp>foo</samp>&rsquo; as a memory operand.
  17391. Note that <var>base</var> and <var>index</var> are both missing, but there is only
  17392. <em>one</em> &lsquo;<samp>,</samp>&rsquo;. This is a syntactic exception.
  17393. </p>
  17394. </dd>
  17395. <dt>AT&amp;T: &lsquo;<samp>%gs:foo</samp>&rsquo;; Intel &lsquo;<samp>gs:foo</samp>&rsquo;</dt>
  17396. <dd><p>This selects the contents of the variable &lsquo;<samp>foo</samp>&rsquo; with section
  17397. register <var>section</var> being &lsquo;<samp>%gs</samp>&rsquo;.
  17398. </p></dd>
  17399. </dl>
  17400. <p>Absolute (as opposed to PC relative) call and jump operands must be
  17401. prefixed with &lsquo;<samp>*</samp>&rsquo;. If no &lsquo;<samp>*</samp>&rsquo; is specified, <code>as</code>
  17402. always chooses PC relative addressing for jump/call labels.
  17403. </p>
  17404. <p>Any instruction that has a memory operand, but no register operand,
  17405. <em>must</em> specify its size (byte, word, long, or quadruple) with an
  17406. instruction mnemonic suffix (&lsquo;<samp>b</samp>&rsquo;, &lsquo;<samp>w</samp>&rsquo;, &lsquo;<samp>l</samp>&rsquo; or &lsquo;<samp>q</samp>&rsquo;,
  17407. respectively).
  17408. </p>
  17409. <p>The x86-64 architecture adds an RIP (instruction pointer relative)
  17410. addressing. This addressing mode is specified by using &lsquo;<samp>rip</samp>&rsquo; as a
  17411. base register. Only constant offsets are valid. For example:
  17412. </p>
  17413. <dl compact="compact">
  17414. <dt>AT&amp;T: &lsquo;<samp>1234(%rip)</samp>&rsquo;, Intel: &lsquo;<samp>[rip + 1234]</samp>&rsquo;</dt>
  17415. <dd><p>Points to the address 1234 bytes past the end of the current
  17416. instruction.
  17417. </p>
  17418. </dd>
  17419. <dt>AT&amp;T: &lsquo;<samp>symbol(%rip)</samp>&rsquo;, Intel: &lsquo;<samp>[rip + symbol]</samp>&rsquo;</dt>
  17420. <dd><p>Points to the <code>symbol</code> in RIP relative way, this is shorter than
  17421. the default absolute addressing.
  17422. </p></dd>
  17423. </dl>
  17424. <p>Other addressing modes remain unchanged in x86-64 architecture, except
  17425. registers used are 64-bit instead of 32-bit.
  17426. </p>
  17427. <hr>
  17428. <span id="i386_002dJumps"></span><div class="header">
  17429. <p>
  17430. Next: <a href="#i386_002dFloat" accesskey="n" rel="next">i386-Float</a>, Previous: <a href="#i386_002dMemory" accesskey="p" rel="prev">i386-Memory</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17431. </div>
  17432. <span id="Handling-of-Jump-Instructions"></span><h4 class="subsection">9.16.8 Handling of Jump Instructions</h4>
  17433. <span id="index-jump-optimization_002c-i386"></span>
  17434. <span id="index-i386-jump-optimization"></span>
  17435. <span id="index-jump-optimization_002c-x86_002d64"></span>
  17436. <span id="index-x86_002d64-jump-optimization"></span>
  17437. <p>Jump instructions are always optimized to use the smallest possible
  17438. displacements. This is accomplished by using byte (8-bit) displacement
  17439. jumps whenever the target is sufficiently close. If a byte displacement
  17440. is insufficient a long displacement is used. We do not support
  17441. word (16-bit) displacement jumps in 32-bit mode (i.e. prefixing the jump
  17442. instruction with the &lsquo;<samp>data16</samp>&rsquo; instruction prefix), since the 80386
  17443. insists upon masking &lsquo;<samp>%eip</samp>&rsquo; to 16 bits after the word displacement
  17444. is added. (See also see <a href="#i386_002dArch">i386-Arch</a>)
  17445. </p>
  17446. <p>Note that the &lsquo;<samp>jcxz</samp>&rsquo;, &lsquo;<samp>jecxz</samp>&rsquo;, &lsquo;<samp>loop</samp>&rsquo;, &lsquo;<samp>loopz</samp>&rsquo;,
  17447. &lsquo;<samp>loope</samp>&rsquo;, &lsquo;<samp>loopnz</samp>&rsquo; and &lsquo;<samp>loopne</samp>&rsquo; instructions only come in byte
  17448. displacements, so that if you use these instructions (<code>gcc</code> does
  17449. not use them) you may get an error message (and incorrect code). The AT&amp;T
  17450. 80386 assembler tries to get around this problem by expanding &lsquo;<samp>jcxz foo</samp>&rsquo;
  17451. to
  17452. </p>
  17453. <div class="example">
  17454. <pre class="example"> jcxz cx_zero
  17455. jmp cx_nonzero
  17456. cx_zero: jmp foo
  17457. cx_nonzero:
  17458. </pre></div>
  17459. <hr>
  17460. <span id="i386_002dFloat"></span><div class="header">
  17461. <p>
  17462. Next: <a href="#i386_002dSIMD" accesskey="n" rel="next">i386-SIMD</a>, Previous: <a href="#i386_002dJumps" accesskey="p" rel="prev">i386-Jumps</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17463. </div>
  17464. <span id="Floating-Point-7"></span><h4 class="subsection">9.16.9 Floating Point</h4>
  17465. <span id="index-i386-floating-point"></span>
  17466. <span id="index-floating-point_002c-i386"></span>
  17467. <span id="index-x86_002d64-floating-point"></span>
  17468. <span id="index-floating-point_002c-x86_002d64"></span>
  17469. <p>All 80387 floating point types except packed BCD are supported.
  17470. (BCD support may be added without much difficulty). These data
  17471. types are 16-, 32-, and 64- bit integers, and single (32-bit),
  17472. double (64-bit), and extended (80-bit) precision floating point.
  17473. Each supported type has an instruction mnemonic suffix and a constructor
  17474. associated with it. Instruction mnemonic suffixes specify the operand&rsquo;s
  17475. data type. Constructors build these data types into memory.
  17476. </p>
  17477. <span id="index-float-directive_002c-i386"></span>
  17478. <span id="index-single-directive_002c-i386"></span>
  17479. <span id="index-double-directive_002c-i386"></span>
  17480. <span id="index-tfloat-directive_002c-i386"></span>
  17481. <span id="index-hfloat-directive_002c-i386"></span>
  17482. <span id="index-bfloat16-directive_002c-i386"></span>
  17483. <span id="index-float-directive_002c-x86_002d64"></span>
  17484. <span id="index-single-directive_002c-x86_002d64"></span>
  17485. <span id="index-double-directive_002c-x86_002d64"></span>
  17486. <span id="index-tfloat-directive_002c-x86_002d64"></span>
  17487. <span id="index-hfloat-directive_002c-x86_002d64"></span>
  17488. <span id="index-bfloat16-directive_002c-x86_002d64"></span>
  17489. <ul>
  17490. <li> Floating point constructors are &lsquo;<samp>.float</samp>&rsquo; or &lsquo;<samp>.single</samp>&rsquo;,
  17491. &lsquo;<samp>.double</samp>&rsquo;, &lsquo;<samp>.tfloat</samp>&rsquo;, &lsquo;<samp>.hfloat</samp>&rsquo;, and &lsquo;<samp>.bfloat16</samp>&rsquo; for 32-,
  17492. 64-, 80-, and 16-bit (two flavors) formats respectively. The former three
  17493. correspond to instruction mnemonic suffixes &lsquo;<samp>s</samp>&rsquo;, &lsquo;<samp>l</samp>&rsquo;, and &lsquo;<samp>t</samp>&rsquo;.
  17494. &lsquo;<samp>t</samp>&rsquo; stands for 80-bit (ten byte) real. The 80387 only supports this
  17495. format via the &lsquo;<samp>fldt</samp>&rsquo; (load 80-bit real to stack top) and &lsquo;<samp>fstpt</samp>&rsquo;
  17496. (store 80-bit real and pop stack) instructions.
  17497. </li><li> <span id="index-word-directive_002c-i386"></span>
  17498. <span id="index-long-directive_002c-i386"></span>
  17499. <span id="index-int-directive_002c-i386"></span>
  17500. <span id="index-quad-directive_002c-i386"></span>
  17501. <span id="index-word-directive_002c-x86_002d64"></span>
  17502. <span id="index-long-directive_002c-x86_002d64"></span>
  17503. <span id="index-int-directive_002c-x86_002d64"></span>
  17504. <span id="index-quad-directive_002c-x86_002d64"></span>
  17505. Integer constructors are &lsquo;<samp>.word</samp>&rsquo;, &lsquo;<samp>.long</samp>&rsquo; or &lsquo;<samp>.int</samp>&rsquo;, and
  17506. &lsquo;<samp>.quad</samp>&rsquo; for the 16-, 32-, and 64-bit integer formats. The
  17507. corresponding instruction mnemonic suffixes are &lsquo;<samp>s</samp>&rsquo; (short),
  17508. &lsquo;<samp>l</samp>&rsquo; (long), and &lsquo;<samp>q</samp>&rsquo; (quad). As with the 80-bit real format,
  17509. the 64-bit &lsquo;<samp>q</samp>&rsquo; format is only present in the &lsquo;<samp>fildq</samp>&rsquo; (load
  17510. quad integer to stack top) and &lsquo;<samp>fistpq</samp>&rsquo; (store quad integer and pop
  17511. stack) instructions.
  17512. </li></ul>
  17513. <p>Register to register operations should not use instruction mnemonic suffixes.
  17514. &lsquo;<samp>fstl %st, %st(1)</samp>&rsquo; will give a warning, and be assembled as if you
  17515. wrote &lsquo;<samp>fst %st, %st(1)</samp>&rsquo;, since all register to register operations
  17516. use 80-bit floating point operands. (Contrast this with &lsquo;<samp>fstl %st, mem</samp>&rsquo;,
  17517. which converts &lsquo;<samp>%st</samp>&rsquo; from 80-bit to 64-bit floating point format,
  17518. then stores the result in the 4 byte location &lsquo;<samp>mem</samp>&rsquo;)
  17519. </p>
  17520. <hr>
  17521. <span id="i386_002dSIMD"></span><div class="header">
  17522. <p>
  17523. Next: <a href="#i386_002dLWP" accesskey="n" rel="next">i386-LWP</a>, Previous: <a href="#i386_002dFloat" accesskey="p" rel="prev">i386-Float</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17524. </div>
  17525. <span id="Intel_0027s-MMX-and-AMD_0027s-3DNow_0021-SIMD-Operations"></span><h4 class="subsection">9.16.10 Intel&rsquo;s MMX and AMD&rsquo;s 3DNow! SIMD Operations</h4>
  17526. <span id="index-MMX_002c-i386"></span>
  17527. <span id="index-3DNow_0021_002c-i386"></span>
  17528. <span id="index-SIMD_002c-i386"></span>
  17529. <span id="index-MMX_002c-x86_002d64"></span>
  17530. <span id="index-3DNow_0021_002c-x86_002d64"></span>
  17531. <span id="index-SIMD_002c-x86_002d64"></span>
  17532. <p><code>as</code> supports Intel&rsquo;s MMX instruction set (SIMD
  17533. instructions for integer data), available on Intel&rsquo;s Pentium MMX
  17534. processors and Pentium II processors, AMD&rsquo;s K6 and K6-2 processors,
  17535. Cyrix&rsquo; M2 processor, and probably others. It also supports AMD&rsquo;s 3DNow!
  17536. instruction set (SIMD instructions for 32-bit floating point data)
  17537. available on AMD&rsquo;s K6-2 processor and possibly others in the future.
  17538. </p>
  17539. <p>Currently, <code>as</code> does not support Intel&rsquo;s floating point
  17540. SIMD, Katmai (KNI).
  17541. </p>
  17542. <p>The eight 64-bit MMX operands, also used by 3DNow!, are called &lsquo;<samp>%mm0</samp>&rsquo;,
  17543. &lsquo;<samp>%mm1</samp>&rsquo;, ... &lsquo;<samp>%mm7</samp>&rsquo;. They contain eight 8-bit integers, four
  17544. 16-bit integers, two 32-bit integers, one 64-bit integer, or two 32-bit
  17545. floating point values. The MMX registers cannot be used at the same time
  17546. as the floating point stack.
  17547. </p>
  17548. <p>See Intel and AMD documentation, keeping in mind that the operand order in
  17549. instructions is reversed from the Intel syntax.
  17550. </p>
  17551. <hr>
  17552. <span id="i386_002dLWP"></span><div class="header">
  17553. <p>
  17554. Next: <a href="#i386_002dBMI" accesskey="n" rel="next">i386-BMI</a>, Previous: <a href="#i386_002dSIMD" accesskey="p" rel="prev">i386-SIMD</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17555. </div>
  17556. <span id="AMD_0027s-Lightweight-Profiling-Instructions"></span><h4 class="subsection">9.16.11 AMD&rsquo;s Lightweight Profiling Instructions</h4>
  17557. <span id="index-LWP_002c-i386"></span>
  17558. <span id="index-LWP_002c-x86_002d64"></span>
  17559. <p><code>as</code> supports AMD&rsquo;s Lightweight Profiling (LWP)
  17560. instruction set, available on AMD&rsquo;s Family 15h (Orochi) processors.
  17561. </p>
  17562. <p>LWP enables applications to collect and manage performance data, and
  17563. react to performance events. The collection of performance data
  17564. requires no context switches. LWP runs in the context of a thread and
  17565. so several counters can be used independently across multiple threads.
  17566. LWP can be used in both 64-bit and legacy 32-bit modes.
  17567. </p>
  17568. <p>For detailed information on the LWP instruction set, see the
  17569. <cite>AMD Lightweight Profiling Specification</cite> available at
  17570. <a href="http://developer.amd.com/cpu/LWP">Lightweight Profiling Specification</a>.
  17571. </p>
  17572. <hr>
  17573. <span id="i386_002dBMI"></span><div class="header">
  17574. <p>
  17575. Next: <a href="#i386_002dTBM" accesskey="n" rel="next">i386-TBM</a>, Previous: <a href="#i386_002dLWP" accesskey="p" rel="prev">i386-LWP</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17576. </div>
  17577. <span id="Bit-Manipulation-Instructions"></span><h4 class="subsection">9.16.12 Bit Manipulation Instructions</h4>
  17578. <span id="index-BMI_002c-i386"></span>
  17579. <span id="index-BMI_002c-x86_002d64"></span>
  17580. <p><code>as</code> supports the Bit Manipulation (BMI) instruction set.
  17581. </p>
  17582. <p>BMI instructions provide several instructions implementing individual
  17583. bit manipulation operations such as isolation, masking, setting, or
  17584. resetting.
  17585. </p>
  17586. <hr>
  17587. <span id="i386_002dTBM"></span><div class="header">
  17588. <p>
  17589. Next: <a href="#i386_002d16bit" accesskey="n" rel="next">i386-16bit</a>, Previous: <a href="#i386_002dBMI" accesskey="p" rel="prev">i386-BMI</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17590. </div>
  17591. <span id="AMD_0027s-Trailing-Bit-Manipulation-Instructions"></span><h4 class="subsection">9.16.13 AMD&rsquo;s Trailing Bit Manipulation Instructions</h4>
  17592. <span id="index-TBM_002c-i386"></span>
  17593. <span id="index-TBM_002c-x86_002d64"></span>
  17594. <p><code>as</code> supports AMD&rsquo;s Trailing Bit Manipulation (TBM)
  17595. instruction set, available on AMD&rsquo;s BDVER2 processors (Trinity and
  17596. Viperfish).
  17597. </p>
  17598. <p>TBM instructions provide instructions implementing individual bit
  17599. manipulation operations such as isolating, masking, setting, resetting,
  17600. complementing, and operations on trailing zeros and ones.
  17601. </p>
  17602. <hr>
  17603. <span id="i386_002d16bit"></span><div class="header">
  17604. <p>
  17605. Next: <a href="#i386_002dArch" accesskey="n" rel="next">i386-Arch</a>, Previous: <a href="#i386_002dTBM" accesskey="p" rel="prev">i386-TBM</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17606. </div>
  17607. <span id="Writing-16_002dbit-Code"></span><h4 class="subsection">9.16.14 Writing 16-bit Code</h4>
  17608. <span id="index-i386-16_002dbit-code"></span>
  17609. <span id="index-16_002dbit-code_002c-i386"></span>
  17610. <span id="index-real_002dmode-code_002c-i386"></span>
  17611. <span id="index-code16gcc-directive_002c-i386"></span>
  17612. <span id="index-code16-directive_002c-i386"></span>
  17613. <span id="index-code32-directive_002c-i386"></span>
  17614. <span id="index-code64-directive_002c-i386"></span>
  17615. <span id="index-code64-directive_002c-x86_002d64"></span>
  17616. <p>While <code>as</code> normally writes only &ldquo;pure&rdquo; 32-bit i386 code
  17617. or 64-bit x86-64 code depending on the default configuration,
  17618. it also supports writing code to run in real mode or in 16-bit protected
  17619. mode code segments. To do this, put a &lsquo;<samp>.code16</samp>&rsquo; or
  17620. &lsquo;<samp>.code16gcc</samp>&rsquo; directive before the assembly language instructions to
  17621. be run in 16-bit mode. You can switch <code>as</code> to writing
  17622. 32-bit code with the &lsquo;<samp>.code32</samp>&rsquo; directive or 64-bit code with the
  17623. &lsquo;<samp>.code64</samp>&rsquo; directive.
  17624. </p>
  17625. <p>&lsquo;<samp>.code16gcc</samp>&rsquo; provides experimental support for generating 16-bit
  17626. code from gcc, and differs from &lsquo;<samp>.code16</samp>&rsquo; in that &lsquo;<samp>call</samp>&rsquo;,
  17627. &lsquo;<samp>ret</samp>&rsquo;, &lsquo;<samp>enter</samp>&rsquo;, &lsquo;<samp>leave</samp>&rsquo;, &lsquo;<samp>push</samp>&rsquo;, &lsquo;<samp>pop</samp>&rsquo;,
  17628. &lsquo;<samp>pusha</samp>&rsquo;, &lsquo;<samp>popa</samp>&rsquo;, &lsquo;<samp>pushf</samp>&rsquo;, and &lsquo;<samp>popf</samp>&rsquo; instructions
  17629. default to 32-bit size. This is so that the stack pointer is
  17630. manipulated in the same way over function calls, allowing access to
  17631. function parameters at the same stack offsets as in 32-bit mode.
  17632. &lsquo;<samp>.code16gcc</samp>&rsquo; also automatically adds address size prefixes where
  17633. necessary to use the 32-bit addressing modes that gcc generates.
  17634. </p>
  17635. <p>The code which <code>as</code> generates in 16-bit mode will not
  17636. necessarily run on a 16-bit pre-80386 processor. To write code that
  17637. runs on such a processor, you must refrain from using <em>any</em> 32-bit
  17638. constructs which require <code>as</code> to output address or operand
  17639. size prefixes.
  17640. </p>
  17641. <p>Note that writing 16-bit code instructions by explicitly specifying a
  17642. prefix or an instruction mnemonic suffix within a 32-bit code section
  17643. generates different machine instructions than those generated for a
  17644. 16-bit code segment. In a 32-bit code section, the following code
  17645. generates the machine opcode bytes &lsquo;<samp>66 6a 04</samp>&rsquo;, which pushes the
  17646. value &lsquo;<samp>4</samp>&rsquo; onto the stack, decrementing &lsquo;<samp>%esp</samp>&rsquo; by 2.
  17647. </p>
  17648. <div class="example">
  17649. <pre class="example"> pushw $4
  17650. </pre></div>
  17651. <p>The same code in a 16-bit code section would generate the machine
  17652. opcode bytes &lsquo;<samp>6a 04</samp>&rsquo; (i.e., without the operand size prefix), which
  17653. is correct since the processor default operand size is assumed to be 16
  17654. bits in a 16-bit code section.
  17655. </p>
  17656. <hr>
  17657. <span id="i386_002dArch"></span><div class="header">
  17658. <p>
  17659. Next: <a href="#i386_002dISA" accesskey="n" rel="next">i386-ISA</a>, Previous: <a href="#i386_002d16bit" accesskey="p" rel="prev">i386-16bit</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17660. </div>
  17661. <span id="Specifying-CPU-Architecture"></span><h4 class="subsection">9.16.15 Specifying CPU Architecture</h4>
  17662. <span id="index-arch-directive_002c-i386"></span>
  17663. <span id="index-i386-arch-directive"></span>
  17664. <span id="index-arch-directive_002c-x86_002d64"></span>
  17665. <span id="index-x86_002d64-arch-directive"></span>
  17666. <p><code>as</code> may be told to assemble for a particular CPU
  17667. (sub-)architecture with the <code>.arch <var>cpu_type</var></code> directive. This
  17668. directive enables a warning when gas detects an instruction that is not
  17669. supported on the CPU specified. The choices for <var>cpu_type</var> are:
  17670. </p>
  17671. <table>
  17672. <tr><td width="20%">&lsquo;<samp>default</samp>&rsquo;</td><td width="20%">&lsquo;<samp>push</samp>&rsquo;</td><td width="20%">&lsquo;<samp>pop</samp>&rsquo;</td></tr>
  17673. <tr><td width="20%">&lsquo;<samp>i8086</samp>&rsquo;</td><td width="20%">&lsquo;<samp>i186</samp>&rsquo;</td><td width="20%">&lsquo;<samp>i286</samp>&rsquo;</td><td width="20%">&lsquo;<samp>i386</samp>&rsquo;</td></tr>
  17674. <tr><td width="20%">&lsquo;<samp>i486</samp>&rsquo;</td><td width="20%">&lsquo;<samp>i586</samp>&rsquo;</td><td width="20%">&lsquo;<samp>i686</samp>&rsquo;</td><td width="20%">&lsquo;<samp>pentium</samp>&rsquo;</td></tr>
  17675. <tr><td width="20%">&lsquo;<samp>pentiumpro</samp>&rsquo;</td><td width="20%">&lsquo;<samp>pentiumii</samp>&rsquo;</td><td width="20%">&lsquo;<samp>pentiumiii</samp>&rsquo;</td><td width="20%">&lsquo;<samp>pentium4</samp>&rsquo;</td></tr>
  17676. <tr><td width="20%">&lsquo;<samp>prescott</samp>&rsquo;</td><td width="20%">&lsquo;<samp>nocona</samp>&rsquo;</td><td width="20%">&lsquo;<samp>core</samp>&rsquo;</td><td width="20%">&lsquo;<samp>core2</samp>&rsquo;</td></tr>
  17677. <tr><td width="20%">&lsquo;<samp>corei7</samp>&rsquo;</td><td width="20%">&lsquo;<samp>iamcu</samp>&rsquo;</td></tr>
  17678. <tr><td width="20%">&lsquo;<samp>k6</samp>&rsquo;</td><td width="20%">&lsquo;<samp>k6_2</samp>&rsquo;</td><td width="20%">&lsquo;<samp>athlon</samp>&rsquo;</td><td width="20%">&lsquo;<samp>k8</samp>&rsquo;</td></tr>
  17679. <tr><td width="20%">&lsquo;<samp>amdfam10</samp>&rsquo;</td><td width="20%">&lsquo;<samp>bdver1</samp>&rsquo;</td><td width="20%">&lsquo;<samp>bdver2</samp>&rsquo;</td><td width="20%">&lsquo;<samp>bdver3</samp>&rsquo;</td></tr>
  17680. <tr><td width="20%">&lsquo;<samp>bdver4</samp>&rsquo;</td><td width="20%">&lsquo;<samp>znver1</samp>&rsquo;</td><td width="20%">&lsquo;<samp>znver2</samp>&rsquo;</td><td width="20%">&lsquo;<samp>znver3</samp>&rsquo;</td></tr>
  17681. <tr><td width="20%">&lsquo;<samp>znver4</samp>&rsquo;</td><td width="20%">&lsquo;<samp>znver5</samp>&rsquo;</td><td width="20%">&lsquo;<samp>btver1</samp>&rsquo;</td><td width="20%">&lsquo;<samp>btver2</samp>&rsquo;</td></tr>
  17682. <tr><td width="20%">&lsquo;<samp>generic32</samp>&rsquo;</td></tr>
  17683. <tr><td width="20%">&lsquo;<samp>generic64</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.cmov</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.fxsr</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.mmx</samp>&rsquo;</td></tr>
  17684. <tr><td width="20%">&lsquo;<samp>.sse</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sse2</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sse3</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sse4a</samp>&rsquo;</td></tr>
  17685. <tr><td width="20%">&lsquo;<samp>.ssse3</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sse4.1</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sse4.2</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sse4</samp>&rsquo;</td></tr>
  17686. <tr><td width="20%">&lsquo;<samp>.avx</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.vmx</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.smx</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.ept</samp>&rsquo;</td></tr>
  17687. <tr><td width="20%">&lsquo;<samp>.clflush</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.movbe</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.xsave</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.xsaveopt</samp>&rsquo;</td></tr>
  17688. <tr><td width="20%">&lsquo;<samp>.aes</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.pclmul</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.fma</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.fsgsbase</samp>&rsquo;</td></tr>
  17689. <tr><td width="20%">&lsquo;<samp>.rdrnd</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.f16c</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx2</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.bmi2</samp>&rsquo;</td></tr>
  17690. <tr><td width="20%">&lsquo;<samp>.lzcnt</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.popcnt</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.invpcid</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.vmfunc</samp>&rsquo;</td></tr>
  17691. <tr><td width="20%">&lsquo;<samp>.monitor</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.hle</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.rtm</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.tsx</samp>&rsquo;</td></tr>
  17692. <tr><td width="20%">&lsquo;<samp>.lahf_sahf</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.adx</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.rdseed</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.prfchw</samp>&rsquo;</td></tr>
  17693. <tr><td width="20%">&lsquo;<samp>.smap</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.mpx</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sha</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.prefetchwt1</samp>&rsquo;</td></tr>
  17694. <tr><td width="20%">&lsquo;<samp>.clflushopt</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.xsavec</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.xsaves</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.se1</samp>&rsquo;</td></tr>
  17695. <tr><td width="20%">&lsquo;<samp>.avx512f</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512cd</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512er</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512pf</samp>&rsquo;</td></tr>
  17696. <tr><td width="20%">&lsquo;<samp>.avx512vl</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512bw</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512dq</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512ifma</samp>&rsquo;</td></tr>
  17697. <tr><td width="20%">&lsquo;<samp>.avx512vbmi</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512_4fmaps</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512_4vnniw</samp>&rsquo;</td></tr>
  17698. <tr><td width="20%">&lsquo;<samp>.avx512_vpopcntdq</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512_vbmi2</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512_vnni</samp>&rsquo;</td></tr>
  17699. <tr><td width="20%">&lsquo;<samp>.avx512_bitalg</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512_bf16</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512_vp2intersect</samp>&rsquo;</td></tr>
  17700. <tr><td width="20%">&lsquo;<samp>.tdx</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx_vnni</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx512_fp16</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx10.1</samp>&rsquo;</td></tr>
  17701. <tr><td width="20%">&lsquo;<samp>.clwb</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.rdpid</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.ptwrite</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.ibt</samp>&rsquo;</td></tr>
  17702. <tr><td width="20%">&lsquo;<samp>.prefetchi</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx_ifma</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.avx_vnni_int8</samp>&rsquo;</td></tr>
  17703. <tr><td width="20%">&lsquo;<samp>.cmpccxadd</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.wrmsrns</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.msrlist</samp>&rsquo;</td></tr>
  17704. <tr><td width="20%">&lsquo;<samp>.avx_ne_convert</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.rao_int</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.fred</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.lkgs</samp>&rsquo;</td></tr>
  17705. <tr><td width="20%">&lsquo;<samp>.avx_vnni_int16</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sha512</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sm3</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sm4</samp>&rsquo;</td></tr>
  17706. <tr><td width="20%">&lsquo;<samp>.pbndkb</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.user_msr</samp>&rsquo;</td></tr>
  17707. <tr><td width="20%">&lsquo;<samp>.wbnoinvd</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.pconfig</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.waitpkg</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.cldemote</samp>&rsquo;</td></tr>
  17708. <tr><td width="20%">&lsquo;<samp>.shstk</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.gfni</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.vaes</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.vpclmulqdq</samp>&rsquo;</td></tr>
  17709. <tr><td width="20%">&lsquo;<samp>.movdiri</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.movdir64b</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.enqcmd</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.tsxldtrk</samp>&rsquo;</td></tr>
  17710. <tr><td width="20%">&lsquo;<samp>.amx_int8</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.amx_bf16</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.amx_fp16</samp>&rsquo;</td></tr>
  17711. <tr><td width="20%">&lsquo;<samp>.amx_complex</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.amx_tile</samp>&rsquo;</td></tr>
  17712. <tr><td width="20%">&lsquo;<samp>.kl</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.widekl</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.uintr</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.hreset</samp>&rsquo;</td></tr>
  17713. <tr><td width="20%">&lsquo;<samp>.3dnow</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.3dnowa</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sse4a</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sse5</samp>&rsquo;</td></tr>
  17714. <tr><td width="20%">&lsquo;<samp>.syscall</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.rdtscp</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.svme</samp>&rsquo;</td></tr>
  17715. <tr><td width="20%">&lsquo;<samp>.lwp</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.fma4</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.xop</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.cx16</samp>&rsquo;</td></tr>
  17716. <tr><td width="20%">&lsquo;<samp>.padlock</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.clzero</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.mwaitx</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.rdpru</samp>&rsquo;</td></tr>
  17717. <tr><td width="20%">&lsquo;<samp>.mcommit</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.sev_es</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.snp</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.invlpgb</samp>&rsquo;</td></tr>
  17718. <tr><td width="20%">&lsquo;<samp>.tlbsync</samp>&rsquo;</td><td width="20%">&lsquo;<samp>.apx_f</samp>&rsquo;</td></tr>
  17719. </table>
  17720. <p>Apart from the warning, there are only two other effects on
  17721. <code>as</code> operation; Firstly, if you specify a CPU other than
  17722. &lsquo;<samp>i486</samp>&rsquo;, then shift by one instructions such as &lsquo;<samp>sarl $1, %eax</samp>&rsquo;
  17723. will automatically use a two byte opcode sequence. The larger three
  17724. byte opcode sequence is used on the 486 (and when no architecture is
  17725. specified) because it executes faster on the 486. Note that you can
  17726. explicitly request the two byte opcode by writing &lsquo;<samp>sarl %eax</samp>&rsquo;.
  17727. Secondly, if you specify &lsquo;<samp>i8086</samp>&rsquo;, &lsquo;<samp>i186</samp>&rsquo;, or &lsquo;<samp>i286</samp>&rsquo;,
  17728. <em>and</em> &lsquo;<samp>.code16</samp>&rsquo; or &lsquo;<samp>.code16gcc</samp>&rsquo; then byte offset
  17729. conditional jumps will be promoted when necessary to a two instruction
  17730. sequence consisting of a conditional jump of the opposite sense around
  17731. an unconditional jump to the target.
  17732. </p>
  17733. <p>Note that the sub-architecture specifiers (starting with a dot) can be prefixed
  17734. with <code>no</code> to revoke the respective (and any dependent) functionality.
  17735. Note further that &lsquo;<samp>.avx10.&lt;N&gt;</samp>&rsquo; can be suffixed with a vector length
  17736. restriction (&lsquo;<samp>/256</samp>&rsquo; or &lsquo;<samp>/128</samp>&rsquo;, with &lsquo;<samp>/512</samp>&rsquo; simply restoring the
  17737. default). Despite these otherwise being &quot;enabling&quot; specifiers, using these
  17738. suffixes will disable all insns with wider vector or mask register operands.
  17739. On SVR4-derived platforms, the separator character &lsquo;<samp>/</samp>&rsquo; can be replaced by
  17740. &lsquo;<samp>:</samp>&rsquo;.
  17741. </p>
  17742. <p>Following the CPU architecture (but not a sub-architecture, which are those
  17743. starting with a dot), you may specify &lsquo;<samp>jumps</samp>&rsquo; or &lsquo;<samp>nojumps</samp>&rsquo; to
  17744. control automatic promotion of conditional jumps. &lsquo;<samp>jumps</samp>&rsquo; is the
  17745. default, and enables jump promotion; All external jumps will be of the long
  17746. variety, and file-local jumps will be promoted as necessary.
  17747. (see <a href="#i386_002dJumps">i386-Jumps</a>) &lsquo;<samp>nojumps</samp>&rsquo; leaves external conditional jumps as
  17748. byte offset jumps, and warns about file-local conditional jumps that
  17749. <code>as</code> promotes.
  17750. Unconditional jumps are treated as for &lsquo;<samp>jumps</samp>&rsquo;.
  17751. </p>
  17752. <p>For example
  17753. </p>
  17754. <div class="example">
  17755. <pre class="example"> .arch i8086,nojumps
  17756. </pre></div>
  17757. <hr>
  17758. <span id="i386_002dISA"></span><div class="header">
  17759. <p>
  17760. Next: <a href="#i386_002dBugs" accesskey="n" rel="next">i386-Bugs</a>, Previous: <a href="#i386_002dArch" accesskey="p" rel="prev">i386-Arch</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17761. </div>
  17762. <span id="AMD64-ISA-vs_002e-Intel64-ISA"></span><h4 class="subsection">9.16.16 AMD64 ISA vs. Intel64 ISA</h4>
  17763. <p>There are some discrepancies between AMD64 and Intel64 ISAs.
  17764. </p>
  17765. <ul>
  17766. <li> For &lsquo;<samp>movsxd</samp>&rsquo; with 16-bit destination register, AMD64
  17767. supports 32-bit source operand and Intel64 supports 16-bit source
  17768. operand.
  17769. </li><li> For far branches (with explicit memory operand), both ISAs support
  17770. 32- and 16-bit operand size. Intel64 additionally supports 64-bit
  17771. operand size, encoded as &lsquo;<samp>ljmpq</samp>&rsquo; and &lsquo;<samp>lcallq</samp>&rsquo; in AT&amp;T syntax
  17772. and with an explicit &lsquo;<samp>tbyte ptr</samp>&rsquo; operand size specifier in Intel
  17773. syntax.
  17774. </li><li> &lsquo;<samp>lfs</samp>&rsquo;, &lsquo;<samp>lgs</samp>&rsquo;, and &lsquo;<samp>lss</samp>&rsquo; similarly allow for 16-
  17775. and 32-bit operand size (32- and 48-bit memory operand) in both ISAs,
  17776. while Intel64 additionally supports 64-bit operand size (80-bit memory
  17777. operands).
  17778. </li></ul>
  17779. <hr>
  17780. <span id="i386_002dBugs"></span><div class="header">
  17781. <p>
  17782. Next: <a href="#i386_002dNotes" accesskey="n" rel="next">i386-Notes</a>, Previous: <a href="#i386_002dISA" accesskey="p" rel="prev">i386-ISA</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17783. </div>
  17784. <span id="AT_0026T-Syntax-bugs"></span><h4 class="subsection">9.16.17 AT&amp;T Syntax bugs</h4>
  17785. <p>The UnixWare assembler, and probably other AT&amp;T derived ix86 Unix
  17786. assemblers, generate floating point instructions with reversed source
  17787. and destination registers in certain cases. Unfortunately, gcc and
  17788. possibly many other programs use this reversed syntax, so we&rsquo;re stuck
  17789. with it.
  17790. </p>
  17791. <p>For example
  17792. </p>
  17793. <div class="example">
  17794. <pre class="example"> fsub %st,%st(3)
  17795. </pre></div>
  17796. <p>results in &lsquo;<samp>%st(3)</samp>&rsquo; being updated to &lsquo;<samp>%st - %st(3)</samp>&rsquo; rather
  17797. than the expected &lsquo;<samp>%st(3) - %st</samp>&rsquo;. This happens with all the
  17798. non-commutative arithmetic floating point operations with two register
  17799. operands where the source register is &lsquo;<samp>%st</samp>&rsquo; and the destination
  17800. register is &lsquo;<samp>%st(i)</samp>&rsquo;.
  17801. </p>
  17802. <hr>
  17803. <span id="i386_002dNotes"></span><div class="header">
  17804. <p>
  17805. Previous: <a href="#i386_002dBugs" accesskey="p" rel="prev">i386-Bugs</a>, Up: <a href="#i386_002dDependent" accesskey="u" rel="up">i386-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17806. </div>
  17807. <span id="Notes-2"></span><h4 class="subsection">9.16.18 Notes</h4>
  17808. <span id="index-i386-mul_002c-imul-instructions"></span>
  17809. <span id="index-mul-instruction_002c-i386"></span>
  17810. <span id="index-imul-instruction_002c-i386"></span>
  17811. <span id="index-mul-instruction_002c-x86_002d64"></span>
  17812. <span id="index-imul-instruction_002c-x86_002d64"></span>
  17813. <p>There is some trickery concerning the &lsquo;<samp>mul</samp>&rsquo; and &lsquo;<samp>imul</samp>&rsquo;
  17814. instructions that deserves mention. The 16-, 32-, 64- and 128-bit expanding
  17815. multiplies (base opcode &lsquo;<samp>0xf6</samp>&rsquo;; extension 4 for &lsquo;<samp>mul</samp>&rsquo; and 5
  17816. for &lsquo;<samp>imul</samp>&rsquo;) can be output only in the one operand form. Thus,
  17817. &lsquo;<samp>imul %ebx, %eax</samp>&rsquo; does <em>not</em> select the expanding multiply;
  17818. the expanding multiply would clobber the &lsquo;<samp>%edx</samp>&rsquo; register, and this
  17819. would confuse <code>gcc</code> output. Use &lsquo;<samp>imul %ebx</samp>&rsquo; to get the
  17820. 64-bit product in &lsquo;<samp>%edx:%eax</samp>&rsquo;.
  17821. </p>
  17822. <p>We have added a two operand form of &lsquo;<samp>imul</samp>&rsquo; when the first operand
  17823. is an immediate mode expression and the second operand is a register.
  17824. This is just a shorthand, so that, multiplying &lsquo;<samp>%eax</samp>&rsquo; by 69, for
  17825. example, can be done with &lsquo;<samp>imul $69, %eax</samp>&rsquo; rather than &lsquo;<samp>imul
  17826. $69, %eax, %eax</samp>&rsquo;.
  17827. </p>
  17828. <hr>
  17829. <span id="IA_002d64_002dDependent"></span><div class="header">
  17830. <p>
  17831. Next: <a href="#IP2K_002dDependent" accesskey="n" rel="next">IP2K-Dependent</a>, Previous: <a href="#i386_002dDependent" accesskey="p" rel="prev">i386-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17832. </div>
  17833. <span id="IA_002d64-Dependent-Features"></span><h3 class="section">9.17 IA-64 Dependent Features</h3>
  17834. <span id="index-IA_002d64-support"></span>
  17835. <table class="menu" border="0" cellspacing="0">
  17836. <tr><td align="left" valign="top">&bull; <a href="#IA_002d64-Options" accesskey="1">IA-64 Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  17837. </td></tr>
  17838. <tr><td align="left" valign="top">&bull; <a href="#IA_002d64-Syntax" accesskey="2">IA-64 Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  17839. </td></tr>
  17840. <tr><td align="left" valign="top">&bull; <a href="#IA_002d64-Opcodes" accesskey="3">IA-64 Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  17841. </td></tr>
  17842. </table>
  17843. <hr>
  17844. <span id="IA_002d64-Options"></span><div class="header">
  17845. <p>
  17846. Next: <a href="#IA_002d64-Syntax" accesskey="n" rel="next">IA-64 Syntax</a>, Up: <a href="#IA_002d64_002dDependent" accesskey="u" rel="up">IA-64-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17847. </div>
  17848. <span id="Options-11"></span><h4 class="subsection">9.17.1 Options</h4>
  17849. <span id="index-IA_002d64-options"></span>
  17850. <span id="index-options-for-IA_002d64"></span>
  17851. <dl compact="compact">
  17852. <dd><span id="index-_002dmconstant_002dgp-command_002dline-option_002c-IA_002d64"></span>
  17853. </dd>
  17854. <dt><samp>-mconstant-gp</samp></dt>
  17855. <dd><p>This option instructs the assembler to mark the resulting object file
  17856. as using the &ldquo;constant GP&rdquo; model. With this model, it is assumed
  17857. that the entire program uses a single global pointer (GP) value. Note
  17858. that this option does not in any fashion affect the machine code
  17859. emitted by the assembler. All it does is turn on the EF_IA_64_CONS_GP
  17860. flag in the ELF file header.
  17861. </p>
  17862. </dd>
  17863. <dt><samp>-mauto-pic</samp></dt>
  17864. <dd><p>This option instructs the assembler to mark the resulting object file
  17865. as using the &ldquo;constant GP without function descriptor&rdquo; data model.
  17866. This model is like the &ldquo;constant GP&rdquo; model, except that it
  17867. additionally does away with function descriptors. What this means is
  17868. that the address of a function refers directly to the function&rsquo;s code
  17869. entry-point. Normally, such an address would refer to a function
  17870. descriptor, which contains both the code entry-point and the GP-value
  17871. needed by the function. Note that this option does not in any fashion
  17872. affect the machine code emitted by the assembler. All it does is
  17873. turn on the EF_IA_64_NOFUNCDESC_CONS_GP flag in the ELF file header.
  17874. </p>
  17875. </dd>
  17876. <dt><samp>-milp32</samp></dt>
  17877. <dt><samp>-milp64</samp></dt>
  17878. <dt><samp>-mlp64</samp></dt>
  17879. <dt><samp>-mp64</samp></dt>
  17880. <dd><p>These options select the data model. The assembler defaults to <code>-mlp64</code>
  17881. (LP64 data model).
  17882. </p>
  17883. </dd>
  17884. <dt><samp>-mle</samp></dt>
  17885. <dt><samp>-mbe</samp></dt>
  17886. <dd><p>These options select the byte order. The <code>-mle</code> option selects little-endian
  17887. byte order (default) and <code>-mbe</code> selects big-endian byte order. Note that
  17888. IA-64 machine code always uses little-endian byte order.
  17889. </p>
  17890. </dd>
  17891. <dt><samp>-mtune=itanium1</samp></dt>
  17892. <dt><samp>-mtune=itanium2</samp></dt>
  17893. <dd><p>Tune for a particular IA-64 CPU, <var>itanium1</var> or <var>itanium2</var>. The
  17894. default is <var>itanium2</var>.
  17895. </p>
  17896. </dd>
  17897. <dt><samp>-munwind-check=warning</samp></dt>
  17898. <dt><samp>-munwind-check=error</samp></dt>
  17899. <dd><p>These options control what the assembler will do when performing
  17900. consistency checks on unwind directives. <code>-munwind-check=warning</code>
  17901. will make the assembler issue a warning when an unwind directive check
  17902. fails. This is the default. <code>-munwind-check=error</code> will make the
  17903. assembler issue an error when an unwind directive check fails.
  17904. </p>
  17905. </dd>
  17906. <dt><samp>-mhint.b=ok</samp></dt>
  17907. <dt><samp>-mhint.b=warning</samp></dt>
  17908. <dt><samp>-mhint.b=error</samp></dt>
  17909. <dd><p>These options control what the assembler will do when the &lsquo;<samp>hint.b</samp>&rsquo;
  17910. instruction is used. <code>-mhint.b=ok</code> will make the assembler accept
  17911. &lsquo;<samp>hint.b</samp>&rsquo;. <code>-mint.b=warning</code> will make the assembler issue a
  17912. warning when &lsquo;<samp>hint.b</samp>&rsquo; is used. <code>-mhint.b=error</code> will make
  17913. the assembler treat &lsquo;<samp>hint.b</samp>&rsquo; as an error, which is the default.
  17914. </p>
  17915. </dd>
  17916. <dt><samp>-x</samp></dt>
  17917. <dt><samp>-xexplicit</samp></dt>
  17918. <dd><p>These options turn on dependency violation checking.
  17919. </p>
  17920. </dd>
  17921. <dt><samp>-xauto</samp></dt>
  17922. <dd><p>This option instructs the assembler to automatically insert stop bits where necessary
  17923. to remove dependency violations. This is the default mode.
  17924. </p>
  17925. </dd>
  17926. <dt><samp>-xnone</samp></dt>
  17927. <dd><p>This option turns off dependency violation checking.
  17928. </p>
  17929. </dd>
  17930. <dt><samp>-xdebug</samp></dt>
  17931. <dd><p>This turns on debug output intended to help tracking down bugs in the dependency
  17932. violation checker.
  17933. </p>
  17934. </dd>
  17935. <dt><samp>-xdebugn</samp></dt>
  17936. <dd><p>This is a shortcut for -xnone -xdebug.
  17937. </p>
  17938. </dd>
  17939. <dt><samp>-xdebugx</samp></dt>
  17940. <dd><p>This is a shortcut for -xexplicit -xdebug.
  17941. </p>
  17942. </dd>
  17943. </dl>
  17944. <span id="index-IA_002d64-Syntax"></span>
  17945. <hr>
  17946. <span id="IA_002d64-Syntax"></span><div class="header">
  17947. <p>
  17948. Next: <a href="#IA_002d64-Opcodes" accesskey="n" rel="next">IA-64 Opcodes</a>, Previous: <a href="#IA_002d64-Options" accesskey="p" rel="prev">IA-64 Options</a>, Up: <a href="#IA_002d64_002dDependent" accesskey="u" rel="up">IA-64-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17949. </div>
  17950. <span id="Syntax-14"></span><h4 class="subsection">9.17.2 Syntax</h4>
  17951. <p>The assembler syntax closely follows the IA-64 Assembly Language
  17952. Reference Guide.
  17953. </p>
  17954. <table class="menu" border="0" cellspacing="0">
  17955. <tr><td align="left" valign="top">&bull; <a href="#IA_002d64_002dChars" accesskey="1">IA-64-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  17956. </td></tr>
  17957. <tr><td align="left" valign="top">&bull; <a href="#IA_002d64_002dRegs" accesskey="2">IA-64-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  17958. </td></tr>
  17959. <tr><td align="left" valign="top">&bull; <a href="#IA_002d64_002dBits" accesskey="3">IA-64-Bits</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Bit Names
  17960. </td></tr>
  17961. <tr><td align="left" valign="top">&bull; <a href="#IA_002d64_002dRelocs" accesskey="4">IA-64-Relocs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relocations
  17962. </td></tr>
  17963. </table>
  17964. <hr>
  17965. <span id="IA_002d64_002dChars"></span><div class="header">
  17966. <p>
  17967. Next: <a href="#IA_002d64_002dRegs" accesskey="n" rel="next">IA-64-Regs</a>, Up: <a href="#IA_002d64-Syntax" accesskey="u" rel="up">IA-64 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17968. </div>
  17969. <span id="Special-Characters-12"></span><h4 class="subsubsection">9.17.2.1 Special Characters</h4>
  17970. <span id="index-line-comment-character_002c-IA_002d64"></span>
  17971. <span id="index-IA_002d64-line-comment-character"></span>
  17972. <p>&lsquo;<samp>//</samp>&rsquo; is the line comment token.
  17973. </p>
  17974. <span id="index-line-separator_002c-IA_002d64"></span>
  17975. <span id="index-statement-separator_002c-IA_002d64"></span>
  17976. <span id="index-IA_002d64-line-separator"></span>
  17977. <p>&lsquo;<samp>;</samp>&rsquo; can be used instead of a newline to separate statements.
  17978. </p>
  17979. <hr>
  17980. <span id="IA_002d64_002dRegs"></span><div class="header">
  17981. <p>
  17982. Next: <a href="#IA_002d64_002dBits" accesskey="n" rel="next">IA-64-Bits</a>, Previous: <a href="#IA_002d64_002dChars" accesskey="p" rel="prev">IA-64-Chars</a>, Up: <a href="#IA_002d64-Syntax" accesskey="u" rel="up">IA-64 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  17983. </div>
  17984. <span id="Register-Names-8"></span><h4 class="subsubsection">9.17.2.2 Register Names</h4>
  17985. <span id="index-IA_002d64-registers"></span>
  17986. <span id="index-register-names_002c-IA_002d64"></span>
  17987. <p>The 128 integer registers are referred to as &lsquo;<samp>r<var>n</var></samp>&rsquo;.
  17988. The 128 floating-point registers are referred to as &lsquo;<samp>f<var>n</var></samp>&rsquo;.
  17989. The 128 application registers are referred to as &lsquo;<samp>ar<var>n</var></samp>&rsquo;.
  17990. The 128 control registers are referred to as &lsquo;<samp>cr<var>n</var></samp>&rsquo;.
  17991. The 64 one-bit predicate registers are referred to as &lsquo;<samp>p<var>n</var></samp>&rsquo;.
  17992. The 8 branch registers are referred to as &lsquo;<samp>b<var>n</var></samp>&rsquo;.
  17993. In addition, the assembler defines a number of aliases:
  17994. &lsquo;<samp>gp</samp>&rsquo; (&lsquo;<samp>r1</samp>&rsquo;), &lsquo;<samp>sp</samp>&rsquo; (&lsquo;<samp>r12</samp>&rsquo;), &lsquo;<samp>rp</samp>&rsquo; (&lsquo;<samp>b0</samp>&rsquo;),
  17995. &lsquo;<samp>ret0</samp>&rsquo; (&lsquo;<samp>r8</samp>&rsquo;), &lsquo;<samp>ret1</samp>&rsquo; (&lsquo;<samp>r9</samp>&rsquo;), &lsquo;<samp>ret2</samp>&rsquo; (&lsquo;<samp>r10</samp>&rsquo;),
  17996. &lsquo;<samp>ret3</samp>&rsquo; (&lsquo;<samp>r9</samp>&rsquo;), &lsquo;<samp>farg<var>n</var></samp>&rsquo; (&lsquo;<samp>f8+<var>n</var></samp>&rsquo;), and
  17997. &lsquo;<samp>fret<var>n</var></samp>&rsquo; (&lsquo;<samp>f8+<var>n</var></samp>&rsquo;).
  17998. </p>
  17999. <p>For convenience, the assembler also defines aliases for all named application
  18000. and control registers. For example, &lsquo;<samp>ar.bsp</samp>&rsquo; refers to the register
  18001. backing store pointer (&lsquo;<samp>ar17</samp>&rsquo;). Similarly, &lsquo;<samp>cr.eoi</samp>&rsquo; refers to
  18002. the end-of-interrupt register (&lsquo;<samp>cr67</samp>&rsquo;).
  18003. </p>
  18004. <hr>
  18005. <span id="IA_002d64_002dBits"></span><div class="header">
  18006. <p>
  18007. Next: <a href="#IA_002d64_002dRelocs" accesskey="n" rel="next">IA-64-Relocs</a>, Previous: <a href="#IA_002d64_002dRegs" accesskey="p" rel="prev">IA-64-Regs</a>, Up: <a href="#IA_002d64-Syntax" accesskey="u" rel="up">IA-64 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18008. </div>
  18009. <span id="IA_002d64-Processor_002dStatus_002dRegister-_0028PSR_0029-Bit-Names"></span><h4 class="subsubsection">9.17.2.3 IA-64 Processor-Status-Register (PSR) Bit Names</h4>
  18010. <span id="index-IA_002d64-Processor_002dstatus_002dRegister-bit-names"></span>
  18011. <span id="index-PSR-bits"></span>
  18012. <span id="index-bit-names_002c-IA_002d64"></span>
  18013. <p>The assembler defines bit masks for each of the bits in the IA-64
  18014. processor status register. For example, &lsquo;<samp>psr.ic</samp>&rsquo; corresponds to
  18015. a value of 0x2000. These masks are primarily intended for use with
  18016. the &lsquo;<samp>ssm</samp>&rsquo;/&lsquo;<samp>sum</samp>&rsquo; and &lsquo;<samp>rsm</samp>&rsquo;/&lsquo;<samp>rum</samp>&rsquo;
  18017. instructions, but they can be used anywhere else where an integer
  18018. constant is expected.
  18019. </p>
  18020. <hr>
  18021. <span id="IA_002d64_002dRelocs"></span><div class="header">
  18022. <p>
  18023. Previous: <a href="#IA_002d64_002dBits" accesskey="p" rel="prev">IA-64-Bits</a>, Up: <a href="#IA_002d64-Syntax" accesskey="u" rel="up">IA-64 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18024. </div>
  18025. <span id="Relocations-2"></span><h4 class="subsubsection">9.17.2.4 Relocations</h4>
  18026. <span id="index-IA_002d64-relocations"></span>
  18027. <p>In addition to the standard IA-64 relocations, the following relocations are
  18028. implemented by <code>as</code>:
  18029. </p>
  18030. <dl compact="compact">
  18031. <dt><code>@slotcount(<var>V</var>)</code></dt>
  18032. <dd><p>Convert the address offset <var>V</var> into a slot count. This pseudo
  18033. function is available only on VMS. The expression <var>V</var> must be
  18034. known at assembly time: it can&rsquo;t reference undefined symbols or symbols in
  18035. different sections.
  18036. </p></dd>
  18037. </dl>
  18038. <hr>
  18039. <span id="IA_002d64-Opcodes"></span><div class="header">
  18040. <p>
  18041. Previous: <a href="#IA_002d64-Syntax" accesskey="p" rel="prev">IA-64 Syntax</a>, Up: <a href="#IA_002d64_002dDependent" accesskey="u" rel="up">IA-64-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18042. </div>
  18043. <span id="Opcodes-9"></span><h4 class="subsection">9.17.3 Opcodes</h4>
  18044. <p>For detailed information on the IA-64 machine instruction set, see the
  18045. <a href="http://developer.intel.com/design/itanium/arch_spec.htm">IA-64 Architecture Handbook</a>.
  18046. </p>
  18047. <hr>
  18048. <span id="IP2K_002dDependent"></span><div class="header">
  18049. <p>
  18050. Next: <a href="#LM32_002dDependent" accesskey="n" rel="next">LM32-Dependent</a>, Previous: <a href="#IA_002d64_002dDependent" accesskey="p" rel="prev">IA-64-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18051. </div>
  18052. <span id="IP2K-Dependent-Features"></span><h3 class="section">9.18 IP2K Dependent Features</h3>
  18053. <span id="index-IP2K-support"></span>
  18054. <table class="menu" border="0" cellspacing="0">
  18055. <tr><td align="left" valign="top">&bull; <a href="#IP2K_002dOpts" accesskey="1">IP2K-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">IP2K Options
  18056. </td></tr>
  18057. <tr><td align="left" valign="top">&bull; <a href="#IP2K_002dSyntax" accesskey="2">IP2K-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">IP2K Syntax
  18058. </td></tr>
  18059. </table>
  18060. <hr>
  18061. <span id="IP2K_002dOpts"></span><div class="header">
  18062. <p>
  18063. Next: <a href="#IP2K_002dSyntax" accesskey="n" rel="next">IP2K-Syntax</a>, Up: <a href="#IP2K_002dDependent" accesskey="u" rel="up">IP2K-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18064. </div>
  18065. <span id="IP2K-Options"></span><h4 class="subsection">9.18.1 IP2K Options</h4>
  18066. <span id="index-options_002c-IP2K"></span>
  18067. <span id="index-IP2K-options"></span>
  18068. <p>The Ubicom IP2K version of <code>as</code> has a few machine
  18069. dependent options:
  18070. </p>
  18071. <dl compact="compact">
  18072. <dt><code>-mip2022ext</code></dt>
  18073. <dd><span id="index-_002dmip2022ext-option_002c-IP2022"></span>
  18074. <span id="index-architecture-options_002c-IP2022"></span>
  18075. <span id="index-IP2K-architecture-options"></span>
  18076. <p><code>as</code> can assemble the extended IP2022 instructions, but
  18077. it will only do so if this is specifically allowed via this command
  18078. line option.
  18079. </p>
  18080. </dd>
  18081. <dt><code>-mip2022</code></dt>
  18082. <dd><span id="index-_002dmip2022-option_002c-IP2K"></span>
  18083. <span id="index-architecture-options_002c-IP2K"></span>
  18084. <span id="index-IP2K-architecture-options-1"></span>
  18085. <p>This option restores the assembler&rsquo;s default behaviour of not
  18086. permitting the extended IP2022 instructions to be assembled.
  18087. </p>
  18088. </dd>
  18089. </dl>
  18090. <hr>
  18091. <span id="IP2K_002dSyntax"></span><div class="header">
  18092. <p>
  18093. Previous: <a href="#IP2K_002dOpts" accesskey="p" rel="prev">IP2K-Opts</a>, Up: <a href="#IP2K_002dDependent" accesskey="u" rel="up">IP2K-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18094. </div>
  18095. <span id="IP2K-Syntax"></span><h4 class="subsection">9.18.2 IP2K Syntax</h4>
  18096. <table class="menu" border="0" cellspacing="0">
  18097. <tr><td align="left" valign="top">&bull; <a href="#IP2K_002dChars" accesskey="1">IP2K-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  18098. </td></tr>
  18099. </table>
  18100. <hr>
  18101. <span id="IP2K_002dChars"></span><div class="header">
  18102. <p>
  18103. Up: <a href="#IP2K_002dSyntax" accesskey="u" rel="up">IP2K-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18104. </div>
  18105. <span id="Special-Characters-13"></span><h4 class="subsubsection">9.18.2.1 Special Characters</h4>
  18106. <span id="index-line-comment-character_002c-IP2K"></span>
  18107. <span id="index-IP2K-line-comment-character"></span>
  18108. <p>The presence of a &lsquo;<samp>;</samp>&rsquo; on a line indicates the start of a comment
  18109. that extends to the end of the current line.
  18110. </p>
  18111. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line, the whole line
  18112. is treated as a comment, but in this case the line can also be a
  18113. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  18114. control command (see <a href="#Preprocessing">Preprocessing</a>).
  18115. </p>
  18116. <span id="index-line-separator_002c-IP2K"></span>
  18117. <span id="index-statement-separator_002c-IP2K"></span>
  18118. <span id="index-IP2K-line-separator"></span>
  18119. <p>The IP2K assembler does not currently support a line separator
  18120. character.
  18121. </p>
  18122. <hr>
  18123. <span id="LM32_002dDependent"></span><div class="header">
  18124. <p>
  18125. Next: <a href="#KVX_002dDependent" accesskey="n" rel="next">KVX-Dependent</a>, Previous: <a href="#IP2K_002dDependent" accesskey="p" rel="prev">IP2K-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18126. </div>
  18127. <span id="LM32-Dependent-Features"></span><h3 class="section">9.19 LM32 Dependent Features</h3>
  18128. <span id="index-LM32-support"></span>
  18129. <table class="menu" border="0" cellspacing="0">
  18130. <tr><td align="left" valign="top">&bull; <a href="#LM32-Options" accesskey="1">LM32 Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  18131. </td></tr>
  18132. <tr><td align="left" valign="top">&bull; <a href="#LM32-Syntax" accesskey="2">LM32 Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  18133. </td></tr>
  18134. <tr><td align="left" valign="top">&bull; <a href="#LM32-Opcodes" accesskey="3">LM32 Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  18135. </td></tr>
  18136. </table>
  18137. <hr>
  18138. <span id="LM32-Options"></span><div class="header">
  18139. <p>
  18140. Next: <a href="#LM32-Syntax" accesskey="n" rel="next">LM32 Syntax</a>, Up: <a href="#LM32_002dDependent" accesskey="u" rel="up">LM32-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18141. </div>
  18142. <span id="Options-12"></span><h4 class="subsection">9.19.1 Options</h4>
  18143. <span id="index-LM32-options-_0028none_0029"></span>
  18144. <span id="index-options-for-LM32-_0028none_0029"></span>
  18145. <dl compact="compact">
  18146. <dd>
  18147. <span id="index-_002dmmultiply_002denabled-command_002dline-option_002c-LM32"></span>
  18148. </dd>
  18149. <dt><code>-mmultiply-enabled</code></dt>
  18150. <dd><p>Enable multiply instructions.
  18151. </p>
  18152. <span id="index-_002dmdivide_002denabled-command_002dline-option_002c-LM32"></span>
  18153. </dd>
  18154. <dt><code>-mdivide-enabled</code></dt>
  18155. <dd><p>Enable divide instructions.
  18156. </p>
  18157. <span id="index-_002dmbarrel_002dshift_002denabled-command_002dline-option_002c-LM32"></span>
  18158. </dd>
  18159. <dt><code>-mbarrel-shift-enabled</code></dt>
  18160. <dd><p>Enable barrel-shift instructions.
  18161. </p>
  18162. <span id="index-_002dmsign_002dextend_002denabled-command_002dline-option_002c-LM32"></span>
  18163. </dd>
  18164. <dt><code>-msign-extend-enabled</code></dt>
  18165. <dd><p>Enable sign extend instructions.
  18166. </p>
  18167. <span id="index-_002dmuser_002denabled-command_002dline-option_002c-LM32"></span>
  18168. </dd>
  18169. <dt><code>-muser-enabled</code></dt>
  18170. <dd><p>Enable user defined instructions.
  18171. </p>
  18172. <span id="index-_002dmicache_002denabled-command_002dline-option_002c-LM32"></span>
  18173. </dd>
  18174. <dt><code>-micache-enabled</code></dt>
  18175. <dd><p>Enable instruction cache related CSRs.
  18176. </p>
  18177. <span id="index-_002dmdcache_002denabled-command_002dline-option_002c-LM32"></span>
  18178. </dd>
  18179. <dt><code>-mdcache-enabled</code></dt>
  18180. <dd><p>Enable data cache related CSRs.
  18181. </p>
  18182. <span id="index-_002dmbreak_002denabled-command_002dline-option_002c-LM32"></span>
  18183. </dd>
  18184. <dt><code>-mbreak-enabled</code></dt>
  18185. <dd><p>Enable break instructions.
  18186. </p>
  18187. <span id="index-_002dmall_002denabled-command_002dline-option_002c-LM32"></span>
  18188. </dd>
  18189. <dt><code>-mall-enabled</code></dt>
  18190. <dd><p>Enable all instructions and CSRs.
  18191. </p>
  18192. </dd>
  18193. </dl>
  18194. <hr>
  18195. <span id="LM32-Syntax"></span><div class="header">
  18196. <p>
  18197. Next: <a href="#LM32-Opcodes" accesskey="n" rel="next">LM32 Opcodes</a>, Previous: <a href="#LM32-Options" accesskey="p" rel="prev">LM32 Options</a>, Up: <a href="#LM32_002dDependent" accesskey="u" rel="up">LM32-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18198. </div>
  18199. <span id="Syntax-15"></span><h4 class="subsection">9.19.2 Syntax</h4>
  18200. <table class="menu" border="0" cellspacing="0">
  18201. <tr><td align="left" valign="top">&bull; <a href="#LM32_002dRegs" accesskey="1">LM32-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  18202. </td></tr>
  18203. <tr><td align="left" valign="top">&bull; <a href="#LM32_002dModifiers" accesskey="2">LM32-Modifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relocatable Expression Modifiers
  18204. </td></tr>
  18205. <tr><td align="left" valign="top">&bull; <a href="#LM32_002dChars" accesskey="3">LM32-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  18206. </td></tr>
  18207. </table>
  18208. <hr>
  18209. <span id="LM32_002dRegs"></span><div class="header">
  18210. <p>
  18211. Next: <a href="#LM32_002dModifiers" accesskey="n" rel="next">LM32-Modifiers</a>, Up: <a href="#LM32-Syntax" accesskey="u" rel="up">LM32 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18212. </div>
  18213. <span id="Register-Names-9"></span><h4 class="subsubsection">9.19.2.1 Register Names</h4>
  18214. <span id="index-LM32-register-names"></span>
  18215. <span id="index-register-names_002c-LM32"></span>
  18216. <p>LM32 has 32 x 32-bit general purpose registers &lsquo;<samp>r0</samp>&rsquo;,
  18217. &lsquo;<samp>r1</samp>&rsquo;, ... &lsquo;<samp>r31</samp>&rsquo;.
  18218. </p>
  18219. <p>The following aliases are defined: &lsquo;<samp>gp</samp>&rsquo; - &lsquo;<samp>r26</samp>&rsquo;,
  18220. &lsquo;<samp>fp</samp>&rsquo; - &lsquo;<samp>r27</samp>&rsquo;, &lsquo;<samp>sp</samp>&rsquo; - &lsquo;<samp>r28</samp>&rsquo;,
  18221. &lsquo;<samp>ra</samp>&rsquo; - &lsquo;<samp>r29</samp>&rsquo;, &lsquo;<samp>ea</samp>&rsquo; - &lsquo;<samp>r30</samp>&rsquo;,
  18222. &lsquo;<samp>ba</samp>&rsquo; - &lsquo;<samp>r31</samp>&rsquo;.
  18223. </p>
  18224. <p>LM32 has the following Control and Status Registers (CSRs).
  18225. </p>
  18226. <dl compact="compact">
  18227. <dt><code>IE</code></dt>
  18228. <dd><p>Interrupt enable.
  18229. </p></dd>
  18230. <dt><code>IM</code></dt>
  18231. <dd><p>Interrupt mask.
  18232. </p></dd>
  18233. <dt><code>IP</code></dt>
  18234. <dd><p>Interrupt pending.
  18235. </p></dd>
  18236. <dt><code>ICC</code></dt>
  18237. <dd><p>Instruction cache control.
  18238. </p></dd>
  18239. <dt><code>DCC</code></dt>
  18240. <dd><p>Data cache control.
  18241. </p></dd>
  18242. <dt><code>CC</code></dt>
  18243. <dd><p>Cycle counter.
  18244. </p></dd>
  18245. <dt><code>CFG</code></dt>
  18246. <dd><p>Configuration.
  18247. </p></dd>
  18248. <dt><code>EBA</code></dt>
  18249. <dd><p>Exception base address.
  18250. </p></dd>
  18251. <dt><code>DC</code></dt>
  18252. <dd><p>Debug control.
  18253. </p></dd>
  18254. <dt><code>DEBA</code></dt>
  18255. <dd><p>Debug exception base address.
  18256. </p></dd>
  18257. <dt><code>JTX</code></dt>
  18258. <dd><p>JTAG transmit.
  18259. </p></dd>
  18260. <dt><code>JRX</code></dt>
  18261. <dd><p>JTAG receive.
  18262. </p></dd>
  18263. <dt><code>BP0</code></dt>
  18264. <dd><p>Breakpoint 0.
  18265. </p></dd>
  18266. <dt><code>BP1</code></dt>
  18267. <dd><p>Breakpoint 1.
  18268. </p></dd>
  18269. <dt><code>BP2</code></dt>
  18270. <dd><p>Breakpoint 2.
  18271. </p></dd>
  18272. <dt><code>BP3</code></dt>
  18273. <dd><p>Breakpoint 3.
  18274. </p></dd>
  18275. <dt><code>WP0</code></dt>
  18276. <dd><p>Watchpoint 0.
  18277. </p></dd>
  18278. <dt><code>WP1</code></dt>
  18279. <dd><p>Watchpoint 1.
  18280. </p></dd>
  18281. <dt><code>WP2</code></dt>
  18282. <dd><p>Watchpoint 2.
  18283. </p></dd>
  18284. <dt><code>WP3</code></dt>
  18285. <dd><p>Watchpoint 3.
  18286. </p></dd>
  18287. </dl>
  18288. <hr>
  18289. <span id="LM32_002dModifiers"></span><div class="header">
  18290. <p>
  18291. Next: <a href="#LM32_002dChars" accesskey="n" rel="next">LM32-Chars</a>, Previous: <a href="#LM32_002dRegs" accesskey="p" rel="prev">LM32-Regs</a>, Up: <a href="#LM32-Syntax" accesskey="u" rel="up">LM32 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18292. </div>
  18293. <span id="Relocatable-Expression-Modifiers-1"></span><h4 class="subsubsection">9.19.2.2 Relocatable Expression Modifiers</h4>
  18294. <span id="index-LM32-modifiers"></span>
  18295. <span id="index-syntax_002c-LM32"></span>
  18296. <p>The assembler supports several modifiers when using relocatable addresses
  18297. in LM32 instruction operands. The general syntax is the following:
  18298. </p>
  18299. <div class="example">
  18300. <pre class="example">modifier(relocatable-expression)
  18301. </pre></div>
  18302. <dl compact="compact">
  18303. <dd><span id="index-symbol-modifiers-1"></span>
  18304. </dd>
  18305. <dt><code>lo</code></dt>
  18306. <dd>
  18307. <p>This modifier allows you to use bits 0 through 15 of
  18308. an address expression as 16 bit relocatable expression.
  18309. </p>
  18310. </dd>
  18311. <dt><code>hi</code></dt>
  18312. <dd>
  18313. <p>This modifier allows you to use bits 16 through 23 of an address expression
  18314. as 16 bit relocatable expression.
  18315. </p>
  18316. <p>For example
  18317. </p>
  18318. <div class="example">
  18319. <pre class="example">ori r4, r4, lo(sym+10)
  18320. orhi r4, r4, hi(sym+10)
  18321. </pre></div>
  18322. </dd>
  18323. <dt><code>gp</code></dt>
  18324. <dd>
  18325. <p>This modified creates a 16-bit relocatable expression that is
  18326. the offset of the symbol from the global pointer.
  18327. </p>
  18328. <div class="example">
  18329. <pre class="example">mva r4, gp(sym)
  18330. </pre></div>
  18331. </dd>
  18332. <dt><code>got</code></dt>
  18333. <dd>
  18334. <p>This modifier places a symbol in the GOT and creates a 16-bit
  18335. relocatable expression that is the offset into the GOT of this
  18336. symbol.
  18337. </p>
  18338. <div class="example">
  18339. <pre class="example">lw r4, (gp+got(sym))
  18340. </pre></div>
  18341. </dd>
  18342. <dt><code>gotofflo16</code></dt>
  18343. <dd>
  18344. <p>This modifier allows you to use the bits 0 through 15 of an
  18345. address which is an offset from the GOT.
  18346. </p>
  18347. </dd>
  18348. <dt><code>gotoffhi16</code></dt>
  18349. <dd>
  18350. <p>This modifier allows you to use the bits 16 through 31 of an
  18351. address which is an offset from the GOT.
  18352. </p>
  18353. <div class="example">
  18354. <pre class="example">orhi r4, r4, gotoffhi16(lsym)
  18355. addi r4, r4, gotofflo16(lsym)
  18356. </pre></div>
  18357. </dd>
  18358. </dl>
  18359. <hr>
  18360. <span id="LM32_002dChars"></span><div class="header">
  18361. <p>
  18362. Previous: <a href="#LM32_002dModifiers" accesskey="p" rel="prev">LM32-Modifiers</a>, Up: <a href="#LM32-Syntax" accesskey="u" rel="up">LM32 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18363. </div>
  18364. <span id="Special-Characters-14"></span><h4 class="subsubsection">9.19.2.3 Special Characters</h4>
  18365. <span id="index-line-comment-character_002c-LM32"></span>
  18366. <span id="index-LM32-line-comment-character"></span>
  18367. <p>The presence of a &lsquo;<samp>#</samp>&rsquo; on a line indicates the start of a comment
  18368. that extends to the end of the current line. Note that if a line
  18369. starts with a &lsquo;<samp>#</samp>&rsquo; character then it can also be a logical line
  18370. number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  18371. control command (see <a href="#Preprocessing">Preprocessing</a>).
  18372. </p>
  18373. <span id="index-line-separator_002c-LM32"></span>
  18374. <span id="index-statement-separator_002c-LM32"></span>
  18375. <span id="index-LM32-line-separator"></span>
  18376. <p>A semicolon (&lsquo;<samp>;</samp>&rsquo;) can be used to separate multiple statements on
  18377. the same line.
  18378. </p>
  18379. <hr>
  18380. <span id="LM32-Opcodes"></span><div class="header">
  18381. <p>
  18382. Previous: <a href="#LM32-Syntax" accesskey="p" rel="prev">LM32 Syntax</a>, Up: <a href="#LM32_002dDependent" accesskey="u" rel="up">LM32-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18383. </div>
  18384. <span id="Opcodes-10"></span><h4 class="subsection">9.19.3 Opcodes</h4>
  18385. <span id="index-LM32-opcode-summary"></span>
  18386. <span id="index-opcode-summary_002c-LM32"></span>
  18387. <span id="index-mnemonics_002c-LM32"></span>
  18388. <span id="index-instruction-summary_002c-LM32"></span>
  18389. <p>For detailed information on the LM32 machine instruction set, see
  18390. <a href="http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/">http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/</a>.
  18391. </p>
  18392. <p><code>as</code> implements all the standard LM32 opcodes.
  18393. </p>
  18394. <hr>
  18395. <span id="KVX_002dDependent"></span><div class="header">
  18396. <p>
  18397. Next: <a href="#M32C_002dDependent" accesskey="n" rel="next">M32C-Dependent</a>, Previous: <a href="#LM32_002dDependent" accesskey="p" rel="prev">LM32-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18398. </div>
  18399. <span id="KVX-Dependent-Features"></span><h3 class="section">9.20 KVX Dependent Features</h3>
  18400. <p>Labels followed by &lsquo;::&rsquo; are extern symbols.
  18401. </p>
  18402. <span id="index-KVX-support"></span>
  18403. <table class="menu" border="0" cellspacing="0">
  18404. <tr><td align="left" valign="top">&bull; <a href="#KVX-Options" accesskey="1">KVX Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  18405. </td></tr>
  18406. <tr><td align="left" valign="top">&bull; <a href="#KVX-Directives" accesskey="2">KVX Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">KVX Machine Directives
  18407. </td></tr>
  18408. </table>
  18409. <hr>
  18410. <span id="KVX-Options"></span><div class="header">
  18411. <p>
  18412. Next: <a href="#KVX-Directives" accesskey="n" rel="next">KVX Directives</a>, Up: <a href="#KVX_002dDependent" accesskey="u" rel="up">KVX-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18413. </div>
  18414. <span id="Options-13"></span><h4 class="subsection">9.20.1 Options</h4>
  18415. <span id="index-KVX-Options"></span>
  18416. <span id="index-options-for-KVX"></span>
  18417. <dl compact="compact">
  18418. <dd>
  18419. <span id="index-_002d_002ddump_002dinsn-option_002c-KVX"></span>
  18420. </dd>
  18421. <dt><code>--dump-insn</code></dt>
  18422. <dd><p>Dump the full list of instructions.
  18423. </p>
  18424. <span id="index-_002dmarch-option_002c-KVX"></span>
  18425. </dd>
  18426. <dt><code>-march=</code></dt>
  18427. <dd><p>The assembler supports the following architectures: kv3-1, kv3-2.
  18428. </p>
  18429. <span id="index-_002d_002dcheck_002dresources-option_002c-KVX"></span>
  18430. </dd>
  18431. <dt><code>--check-resources</code></dt>
  18432. <dd><p>Check that each bundle does not use more resources than available. This is the
  18433. default.
  18434. </p>
  18435. <span id="index-_002d_002dno_002dcheck_002dresources-option_002c-KVX"></span>
  18436. </dd>
  18437. <dt><code>--no-check-resources</code></dt>
  18438. <dd><p>Do not check that each bundle does not use more resources than available.
  18439. </p>
  18440. <span id="index-_002d_002dgenerate_002dillegal_002dcode-option_002c-KVX"></span>
  18441. </dd>
  18442. <dt><code>--generate-illegal-code</code></dt>
  18443. <dd><p>For debugging purposes only. In order to properly work, the bundle is sorted
  18444. with respect to the issues it uses. If this option is turned on the assembler
  18445. will not sort the bundle instructions and illegal bundles might be formed unless
  18446. they were properly sorted by hand.
  18447. </p>
  18448. <span id="index-_002d_002ddump_002dtable-option_002c-KVX"></span>
  18449. </dd>
  18450. <dt><code>--dump-table</code></dt>
  18451. <dd><p>Dump the table of opcodes.
  18452. </p>
  18453. <span id="index-_002d_002dmpic-option_002c-KVX"></span>
  18454. <span id="index-_002d_002dmPIC-option_002c-KVX"></span>
  18455. </dd>
  18456. <dt><code>--mpic | --mPIC</code></dt>
  18457. <dd><p>Generate position independent code.
  18458. </p>
  18459. <span id="index-_002d_002dmnopic-option_002c-KVX"></span>
  18460. </dd>
  18461. <dt><code>--mnopic</code></dt>
  18462. <dd><p>Generate position dependent code.
  18463. </p>
  18464. <span id="index-_002dm32-option_002c-KVX"></span>
  18465. </dd>
  18466. <dt><code>-m32</code></dt>
  18467. <dd><p>Generate 32-bits code.
  18468. </p>
  18469. <span id="index-_002d_002dall_002dsfr-option_002c-KVX"></span>
  18470. </dd>
  18471. <dt><code>--all-sfr</code></dt>
  18472. <dd><p>This switch enables the register class &quot;system register&quot;. This register
  18473. class is used when performing system validation and allows the full class of
  18474. system registers to be used even on instructions that are only valid with some
  18475. specific system registers.
  18476. </p>
  18477. <span id="index-_002d_002ddiagnostics-option_002c-KVX"></span>
  18478. </dd>
  18479. <dt><code>--diagnostics</code></dt>
  18480. <dd><p>Print multi-line errors. This is the default.
  18481. </p>
  18482. <span id="index-_002d_002dno_002ddiagnostics-option_002c-KVX"></span>
  18483. </dd>
  18484. <dt><code>--no-diagnostics</code></dt>
  18485. <dd><p>Print succinct diagnostics on one line.
  18486. </p>
  18487. </dd>
  18488. </dl>
  18489. <hr>
  18490. <span id="KVX-Directives"></span><div class="header">
  18491. <p>
  18492. Previous: <a href="#KVX-Options" accesskey="p" rel="prev">KVX Options</a>, Up: <a href="#KVX_002dDependent" accesskey="u" rel="up">KVX-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18493. </div>
  18494. <span id="KVX-Machine-Directives"></span><h4 class="subsection">9.20.2 KVX Machine Directives</h4>
  18495. <span id="index-machine-directives_002c-AArch64-1"></span>
  18496. <span id="index-AArch64-machine-directives-1"></span>
  18497. <dl compact="compact">
  18498. <dd>
  18499. <span id="index-_002ealign-directive_002c-KVX"></span>
  18500. </dd>
  18501. <dt><code>.align ALIGNMENT</code></dt>
  18502. <dd><p>Pad with NOPs until the next boundary with the required ALIGNMENT.
  18503. </p>
  18504. <span id="index-_002edword-directive_002c-KVX"></span>
  18505. </dd>
  18506. <dt><code>.dword</code></dt>
  18507. <dd><p>Declare a double-word-sized (8 bytes) constant.
  18508. </p>
  18509. <span id="index-_002eendp-directive_002c-KVX"></span>
  18510. </dd>
  18511. <dt><code>.endp [PROC]</code></dt>
  18512. <dd><p>This directive marks the end of the procedure PROC. The name of the procedure
  18513. is always ignored (it is only here as a visual indicator).
  18514. </p>
  18515. <div class="example">
  18516. <pre class="example">.proc NAME
  18517. ...
  18518. .endp NAME
  18519. </pre></div>
  18520. <p>is equivalent to the more traditional
  18521. </p>
  18522. <div class="example">
  18523. <pre class="example">.type NAME, @function
  18524. ...
  18525. .size NAME,.-NAME
  18526. </pre></div>
  18527. <span id="index-_002efile-directive_002c-KVX"></span>
  18528. </dd>
  18529. <dt><code>.file</code></dt>
  18530. <dd><p>This directive is only supported when producing ELF files.
  18531. see <a href="#File"><code>.file</code></a> for details.
  18532. </p>
  18533. <span id="index-_002eloc-directive_002c-KVX"></span>
  18534. </dd>
  18535. <dt><code>.loc FILENO LINENO</code></dt>
  18536. <dd><p>This directive is only supported when producing ELF files.
  18537. see <a href="#Line"><code>.line</code></a> for details.
  18538. </p>
  18539. <span id="index-_002eproc-directive_002c-KVX"></span>
  18540. </dd>
  18541. <dt><code>.proc PROC</code></dt>
  18542. <dd><p>This directive marks the start of procedure, the name of the procedure PROC is
  18543. mandatory and all <code>.proc</code> directive should be matched by exactly one
  18544. <code>.endp</code> directive.
  18545. </p>
  18546. <span id="index-_002eword-directive_002c-KVX"></span>
  18547. </dd>
  18548. <dt><code>.word</code></dt>
  18549. <dd><p>Declare a word-sized (4 bytes) constant.
  18550. </p>
  18551. </dd>
  18552. </dl>
  18553. <hr>
  18554. <span id="M32C_002dDependent"></span><div class="header">
  18555. <p>
  18556. Next: <a href="#M32R_002dDependent" accesskey="n" rel="next">M32R-Dependent</a>, Previous: <a href="#KVX_002dDependent" accesskey="p" rel="prev">KVX-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18557. </div>
  18558. <span id="M32C-Dependent-Features"></span><h3 class="section">9.21 M32C Dependent Features</h3>
  18559. <span id="index-M32C-support"></span>
  18560. <p><code>as</code> can assemble code for several different members of
  18561. the Renesas M32C family. Normally the default is to assemble code for
  18562. the M16C microprocessor. The <code>-m32c</code> option may be used to
  18563. change the default to the M32C microprocessor.
  18564. </p>
  18565. <table class="menu" border="0" cellspacing="0">
  18566. <tr><td align="left" valign="top">&bull; <a href="#M32C_002dOpts" accesskey="1">M32C-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">M32C Options
  18567. </td></tr>
  18568. <tr><td align="left" valign="top">&bull; <a href="#M32C_002dSyntax" accesskey="2">M32C-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">M32C Syntax
  18569. </td></tr>
  18570. </table>
  18571. <hr>
  18572. <span id="M32C_002dOpts"></span><div class="header">
  18573. <p>
  18574. Next: <a href="#M32C_002dSyntax" accesskey="n" rel="next">M32C-Syntax</a>, Up: <a href="#M32C_002dDependent" accesskey="u" rel="up">M32C-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18575. </div>
  18576. <span id="M32C-Options"></span><h4 class="subsection">9.21.1 M32C Options</h4>
  18577. <span id="index-options_002c-M32C"></span>
  18578. <span id="index-M32C-options"></span>
  18579. <p>The Renesas M32C version of <code>as</code> has these
  18580. machine-dependent options:
  18581. </p>
  18582. <dl compact="compact">
  18583. <dt><code>-m32c</code></dt>
  18584. <dd><span id="index-_002dm32c-option_002c-M32C"></span>
  18585. <span id="index-architecture-options_002c-M32C"></span>
  18586. <span id="index-M32C-architecture-option"></span>
  18587. <p>Assemble M32C instructions.
  18588. </p>
  18589. </dd>
  18590. <dt><code>-m16c</code></dt>
  18591. <dd><span id="index-_002dm16c-option_002c-M16C"></span>
  18592. <span id="index-architecture-options_002c-M16C"></span>
  18593. <span id="index-M16C-architecture-option"></span>
  18594. <p>Assemble M16C instructions (default).
  18595. </p>
  18596. </dd>
  18597. <dt><code>-relax</code></dt>
  18598. <dd><p>Enable support for link-time relaxations.
  18599. </p>
  18600. </dd>
  18601. <dt><code>-h-tick-hex</code></dt>
  18602. <dd><p>Support H&rsquo;00 style hex constants in addition to 0x00 style.
  18603. </p>
  18604. </dd>
  18605. </dl>
  18606. <hr>
  18607. <span id="M32C_002dSyntax"></span><div class="header">
  18608. <p>
  18609. Previous: <a href="#M32C_002dOpts" accesskey="p" rel="prev">M32C-Opts</a>, Up: <a href="#M32C_002dDependent" accesskey="u" rel="up">M32C-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18610. </div>
  18611. <span id="M32C-Syntax"></span><h4 class="subsection">9.21.2 M32C Syntax</h4>
  18612. <table class="menu" border="0" cellspacing="0">
  18613. <tr><td align="left" valign="top">&bull; <a href="#M32C_002dModifiers" accesskey="1">M32C-Modifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbolic Operand Modifiers
  18614. </td></tr>
  18615. <tr><td align="left" valign="top">&bull; <a href="#M32C_002dChars" accesskey="2">M32C-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  18616. </td></tr>
  18617. </table>
  18618. <hr>
  18619. <span id="M32C_002dModifiers"></span><div class="header">
  18620. <p>
  18621. Next: <a href="#M32C_002dChars" accesskey="n" rel="next">M32C-Chars</a>, Up: <a href="#M32C_002dSyntax" accesskey="u" rel="up">M32C-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18622. </div>
  18623. <span id="Symbolic-Operand-Modifiers"></span><h4 class="subsubsection">9.21.2.1 Symbolic Operand Modifiers</h4>
  18624. <span id="index-M32C-modifiers"></span>
  18625. <span id="index-modifiers_002c-M32C"></span>
  18626. <p>The assembler supports several modifiers when using symbol addresses
  18627. in M32C instruction operands. The general syntax is the following:
  18628. </p>
  18629. <div class="example">
  18630. <pre class="example">%modifier(symbol)
  18631. </pre></div>
  18632. <dl compact="compact">
  18633. <dd><span id="index-symbol-modifiers-2"></span>
  18634. </dd>
  18635. <dt><code>%dsp8</code></dt>
  18636. <dt><code>%dsp16</code></dt>
  18637. <dd>
  18638. <p>These modifiers override the assembler&rsquo;s assumptions about how big a
  18639. symbol&rsquo;s address is. Normally, when it sees an operand like
  18640. &lsquo;<samp>sym[a0]</samp>&rsquo; it assumes &lsquo;<samp>sym</samp>&rsquo; may require the widest
  18641. displacement field (16 bits for &lsquo;<samp>-m16c</samp>&rsquo;, 24 bits for
  18642. &lsquo;<samp>-m32c</samp>&rsquo;). These modifiers tell it to assume the address will fit
  18643. in an 8 or 16 bit (respectively) unsigned displacement. Note that, of
  18644. course, if it doesn&rsquo;t actually fit you will get linker errors. Example:
  18645. </p>
  18646. <div class="example">
  18647. <pre class="example">mov.w %dsp8(sym)[a0],r1
  18648. mov.b #0,%dsp8(sym)[a0]
  18649. </pre></div>
  18650. </dd>
  18651. <dt><code>%hi8</code></dt>
  18652. <dd>
  18653. <p>This modifier allows you to load bits 16 through 23 of a 24 bit
  18654. address into an 8 bit register. This is useful with, for example, the
  18655. M16C &lsquo;<samp>smovf</samp>&rsquo; instruction, which expects a 20 bit address in
  18656. &lsquo;<samp>r1h</samp>&rsquo; and &lsquo;<samp>a0</samp>&rsquo;. Example:
  18657. </p>
  18658. <div class="example">
  18659. <pre class="example">mov.b #%hi8(sym),r1h
  18660. mov.w #%lo16(sym),a0
  18661. smovf.b
  18662. </pre></div>
  18663. </dd>
  18664. <dt><code>%lo16</code></dt>
  18665. <dd>
  18666. <p>Likewise, this modifier allows you to load bits 0 through 15 of a 24
  18667. bit address into a 16 bit register.
  18668. </p>
  18669. </dd>
  18670. <dt><code>%hi16</code></dt>
  18671. <dd>
  18672. <p>This modifier allows you to load bits 16 through 31 of a 32 bit
  18673. address into a 16 bit register. While the M32C family only has 24
  18674. bits of address space, it does support addresses in pairs of 16 bit
  18675. registers (like &lsquo;<samp>a1a0</samp>&rsquo; for the &lsquo;<samp>lde</samp>&rsquo; instruction). This
  18676. modifier is for loading the upper half in such cases. Example:
  18677. </p>
  18678. <div class="example">
  18679. <pre class="example">mov.w #%hi16(sym),a1
  18680. mov.w #%lo16(sym),a0
  18681. &hellip;
  18682. lde.w [a1a0],r1
  18683. </pre></div>
  18684. </dd>
  18685. </dl>
  18686. <hr>
  18687. <span id="M32C_002dChars"></span><div class="header">
  18688. <p>
  18689. Previous: <a href="#M32C_002dModifiers" accesskey="p" rel="prev">M32C-Modifiers</a>, Up: <a href="#M32C_002dSyntax" accesskey="u" rel="up">M32C-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18690. </div>
  18691. <span id="Special-Characters-15"></span><h4 class="subsubsection">9.21.2.2 Special Characters</h4>
  18692. <span id="index-line-comment-character_002c-M32C"></span>
  18693. <span id="index-M32C-line-comment-character"></span>
  18694. <p>The presence of a &lsquo;<samp>;</samp>&rsquo; character on a line indicates the start of
  18695. a comment that extends to the end of that line.
  18696. </p>
  18697. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line, the whole line
  18698. is treated as a comment, but in this case the line can also be a
  18699. logical line number directive (see <a href="#Comments">Comments</a>) or a
  18700. preprocessor control command (see <a href="#Preprocessing">Preprocessing</a>).
  18701. </p>
  18702. <span id="index-line-separator_002c-M32C"></span>
  18703. <span id="index-statement-separator_002c-M32C"></span>
  18704. <span id="index-M32C-line-separator"></span>
  18705. <p>The &lsquo;<samp>|</samp>&rsquo; character can be used to separate statements on the same
  18706. line.
  18707. </p>
  18708. <hr>
  18709. <span id="M32R_002dDependent"></span><div class="header">
  18710. <p>
  18711. Next: <a href="#M68K_002dDependent" accesskey="n" rel="next">M68K-Dependent</a>, Previous: <a href="#M32C_002dDependent" accesskey="p" rel="prev">M32C-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18712. </div>
  18713. <span id="M32R-Dependent-Features"></span><h3 class="section">9.22 M32R Dependent Features</h3>
  18714. <span id="index-M32R-support"></span>
  18715. <table class="menu" border="0" cellspacing="0">
  18716. <tr><td align="left" valign="top">&bull; <a href="#M32R_002dOpts" accesskey="1">M32R-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">M32R Options
  18717. </td></tr>
  18718. <tr><td align="left" valign="top">&bull; <a href="#M32R_002dDirectives" accesskey="2">M32R-Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">M32R Directives
  18719. </td></tr>
  18720. <tr><td align="left" valign="top">&bull; <a href="#M32R_002dWarnings" accesskey="3">M32R-Warnings</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">M32R Warnings
  18721. </td></tr>
  18722. </table>
  18723. <hr>
  18724. <span id="M32R_002dOpts"></span><div class="header">
  18725. <p>
  18726. Next: <a href="#M32R_002dDirectives" accesskey="n" rel="next">M32R-Directives</a>, Up: <a href="#M32R_002dDependent" accesskey="u" rel="up">M32R-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18727. </div>
  18728. <span id="M32R-Options"></span><h4 class="subsection">9.22.1 M32R Options</h4>
  18729. <span id="index-options_002c-M32R"></span>
  18730. <span id="index-M32R-options"></span>
  18731. <p>The Renesas M32R version of <code>as</code> has a few machine
  18732. dependent options:
  18733. </p>
  18734. <dl compact="compact">
  18735. <dt><code>-m32rx</code></dt>
  18736. <dd><span id="index-_002dm32rx-option_002c-M32RX"></span>
  18737. <span id="index-architecture-options_002c-M32RX"></span>
  18738. <span id="index-M32R-architecture-options"></span>
  18739. <p><code>as</code> can assemble code for several different members of the
  18740. Renesas M32R family. Normally the default is to assemble code for
  18741. the M32R microprocessor. This option may be used to change the default
  18742. to the M32RX microprocessor, which adds some more instructions to the
  18743. basic M32R instruction set, and some additional parameters to some of
  18744. the original instructions.
  18745. </p>
  18746. </dd>
  18747. <dt><code>-m32r2</code></dt>
  18748. <dd><span id="index-_002dm32rx-option_002c-M32R2"></span>
  18749. <span id="index-architecture-options_002c-M32R2"></span>
  18750. <span id="index-M32R-architecture-options-1"></span>
  18751. <p>This option changes the target processor to the M32R2
  18752. microprocessor.
  18753. </p>
  18754. </dd>
  18755. <dt><code>-m32r</code></dt>
  18756. <dd><span id="index-_002dm32r-option_002c-M32R"></span>
  18757. <span id="index-architecture-options_002c-M32R"></span>
  18758. <span id="index-M32R-architecture-options-2"></span>
  18759. <p>This option can be used to restore the assembler&rsquo;s default behaviour of
  18760. assembling for the M32R microprocessor. This can be useful if the
  18761. default has been changed by a previous command-line option.
  18762. </p>
  18763. </dd>
  18764. <dt><code>-little</code></dt>
  18765. <dd><span id="index-_002dlittle-option_002c-M32R"></span>
  18766. <p>This option tells the assembler to produce little-endian code and
  18767. data. The default is dependent upon how the toolchain was
  18768. configured.
  18769. </p>
  18770. </dd>
  18771. <dt><code>-EL</code></dt>
  18772. <dd><span id="index-_002dEL-option_002c-M32R"></span>
  18773. <p>This is a synonym for <em>-little</em>.
  18774. </p>
  18775. </dd>
  18776. <dt><code>-big</code></dt>
  18777. <dd><span id="index-_002dbig-option_002c-M32R"></span>
  18778. <p>This option tells the assembler to produce big-endian code and
  18779. data.
  18780. </p>
  18781. </dd>
  18782. <dt><code>-EB</code></dt>
  18783. <dd><span id="index-_002dEB-option_002c-M32R"></span>
  18784. <p>This is a synonym for <em>-big</em>.
  18785. </p>
  18786. </dd>
  18787. <dt><code>-KPIC</code></dt>
  18788. <dd><span id="index-_002dKPIC-option_002c-M32R"></span>
  18789. <span id="index-PIC-code-generation-for-M32R"></span>
  18790. <p>This option specifies that the output of the assembler should be
  18791. marked as position-independent code (PIC).
  18792. </p>
  18793. </dd>
  18794. <dt><code>-parallel</code></dt>
  18795. <dd><span id="index-_002dparallel-option_002c-M32RX"></span>
  18796. <p>This option tells the assembler to attempts to combine two sequential
  18797. instructions into a single, parallel instruction, where it is legal to
  18798. do so.
  18799. </p>
  18800. </dd>
  18801. <dt><code>-no-parallel</code></dt>
  18802. <dd><span id="index-_002dno_002dparallel-option_002c-M32RX"></span>
  18803. <p>This option disables a previously enabled <em>-parallel</em> option.
  18804. </p>
  18805. </dd>
  18806. <dt><code>-no-bitinst</code></dt>
  18807. <dd><span id="index-_002dno_002dbitinst_002c-M32R2"></span>
  18808. <p>This option disables the support for the extended bit-field
  18809. instructions provided by the M32R2. If this support needs to be
  18810. re-enabled the <em>-bitinst</em> switch can be used to restore it.
  18811. </p>
  18812. </dd>
  18813. <dt><code>-O</code></dt>
  18814. <dd><span id="index-_002dO-option_002c-M32RX"></span>
  18815. <p>This option tells the assembler to attempt to optimize the
  18816. instructions that it produces. This includes filling delay slots and
  18817. converting sequential instructions into parallel ones. This option
  18818. implies <em>-parallel</em>.
  18819. </p>
  18820. </dd>
  18821. <dt><code>-warn-explicit-parallel-conflicts</code></dt>
  18822. <dd><span id="index-_002dwarn_002dexplicit_002dparallel_002dconflicts-option_002c-M32RX"></span>
  18823. <p>Instructs <code>as</code> to produce warning messages when
  18824. questionable parallel instructions are encountered. This option is
  18825. enabled by default, but <code>gcc</code> disables it when it invokes
  18826. <code>as</code> directly. Questionable instructions are those whose
  18827. behaviour would be different if they were executed sequentially. For
  18828. example the code fragment &lsquo;<samp>mv r1, r2 || mv r3, r1</samp>&rsquo; produces a
  18829. different result from &lsquo;<samp>mv r1, r2 \n mv r3, r1</samp>&rsquo; since the former
  18830. moves r1 into r3 and then r2 into r1, whereas the later moves r2 into r1
  18831. and r3.
  18832. </p>
  18833. </dd>
  18834. <dt><code>-Wp</code></dt>
  18835. <dd><span id="index-_002dWp-option_002c-M32RX"></span>
  18836. <p>This is a shorter synonym for the <em>-warn-explicit-parallel-conflicts</em>
  18837. option.
  18838. </p>
  18839. </dd>
  18840. <dt><code>-no-warn-explicit-parallel-conflicts</code></dt>
  18841. <dd><span id="index-_002dno_002dwarn_002dexplicit_002dparallel_002dconflicts-option_002c-M32RX"></span>
  18842. <p>Instructs <code>as</code> not to produce warning messages when
  18843. questionable parallel instructions are encountered.
  18844. </p>
  18845. </dd>
  18846. <dt><code>-Wnp</code></dt>
  18847. <dd><span id="index-_002dWnp-option_002c-M32RX"></span>
  18848. <p>This is a shorter synonym for the <em>-no-warn-explicit-parallel-conflicts</em>
  18849. option.
  18850. </p>
  18851. </dd>
  18852. <dt><code>-ignore-parallel-conflicts</code></dt>
  18853. <dd><span id="index-_002dignore_002dparallel_002dconflicts-option_002c-M32RX"></span>
  18854. <p>This option tells the assembler&rsquo;s to stop checking parallel
  18855. instructions for constraint violations. This ability is provided for
  18856. hardware vendors testing chip designs and should not be used under
  18857. normal circumstances.
  18858. </p>
  18859. </dd>
  18860. <dt><code>-no-ignore-parallel-conflicts</code></dt>
  18861. <dd><span id="index-_002dno_002dignore_002dparallel_002dconflicts-option_002c-M32RX"></span>
  18862. <p>This option restores the assembler&rsquo;s default behaviour of checking
  18863. parallel instructions to detect constraint violations.
  18864. </p>
  18865. </dd>
  18866. <dt><code>-Ip</code></dt>
  18867. <dd><span id="index-_002dIp-option_002c-M32RX"></span>
  18868. <p>This is a shorter synonym for the <em>-ignore-parallel-conflicts</em>
  18869. option.
  18870. </p>
  18871. </dd>
  18872. <dt><code>-nIp</code></dt>
  18873. <dd><span id="index-_002dnIp-option_002c-M32RX"></span>
  18874. <p>This is a shorter synonym for the <em>-no-ignore-parallel-conflicts</em>
  18875. option.
  18876. </p>
  18877. </dd>
  18878. <dt><code>-warn-unmatched-high</code></dt>
  18879. <dd><span id="index-_002dwarn_002dunmatched_002dhigh-option_002c-M32R"></span>
  18880. <p>This option tells the assembler to produce a warning message if a
  18881. <code>.high</code> pseudo op is encountered without a matching <code>.low</code>
  18882. pseudo op. The presence of such an unmatched pseudo op usually
  18883. indicates a programming error.
  18884. </p>
  18885. </dd>
  18886. <dt><code>-no-warn-unmatched-high</code></dt>
  18887. <dd><span id="index-_002dno_002dwarn_002dunmatched_002dhigh-option_002c-M32R"></span>
  18888. <p>Disables a previously enabled <em>-warn-unmatched-high</em> option.
  18889. </p>
  18890. </dd>
  18891. <dt><code>-Wuh</code></dt>
  18892. <dd><span id="index-_002dWuh-option_002c-M32RX"></span>
  18893. <p>This is a shorter synonym for the <em>-warn-unmatched-high</em> option.
  18894. </p>
  18895. </dd>
  18896. <dt><code>-Wnuh</code></dt>
  18897. <dd><span id="index-_002dWnuh-option_002c-M32RX"></span>
  18898. <p>This is a shorter synonym for the <em>-no-warn-unmatched-high</em> option.
  18899. </p>
  18900. </dd>
  18901. </dl>
  18902. <hr>
  18903. <span id="M32R_002dDirectives"></span><div class="header">
  18904. <p>
  18905. Next: <a href="#M32R_002dWarnings" accesskey="n" rel="next">M32R-Warnings</a>, Previous: <a href="#M32R_002dOpts" accesskey="p" rel="prev">M32R-Opts</a>, Up: <a href="#M32R_002dDependent" accesskey="u" rel="up">M32R-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  18906. </div>
  18907. <span id="M32R-Directives"></span><h4 class="subsection">9.22.2 M32R Directives</h4>
  18908. <span id="index-directives_002c-M32R"></span>
  18909. <span id="index-M32R-directives"></span>
  18910. <p>The Renesas M32R version of <code>as</code> has a few architecture
  18911. specific directives:
  18912. </p>
  18913. <dl compact="compact">
  18914. <dd>
  18915. <span id="index-low-directive_002c-M32R"></span>
  18916. </dd>
  18917. <dt><code>low <var>expression</var></code></dt>
  18918. <dd><p>The <code>low</code> directive computes the value of its expression and
  18919. places the lower 16-bits of the result into the immediate-field of the
  18920. instruction. For example:
  18921. </p>
  18922. <div class="example">
  18923. <pre class="example"> or3 r0, r0, #low(0x12345678) ; compute r0 = r0 | 0x5678
  18924. add3, r0, r0, #low(fred) ; compute r0 = r0 + low 16-bits of address of fred
  18925. </pre></div>
  18926. </dd>
  18927. <dt><code>high <var>expression</var></code></dt>
  18928. <dd><span id="index-high-directive_002c-M32R"></span>
  18929. <p>The <code>high</code> directive computes the value of its expression and
  18930. places the upper 16-bits of the result into the immediate-field of the
  18931. instruction. For example:
  18932. </p>
  18933. <div class="example">
  18934. <pre class="example"> seth r0, #high(0x12345678) ; compute r0 = 0x12340000
  18935. seth, r0, #high(fred) ; compute r0 = upper 16-bits of address of fred
  18936. </pre></div>
  18937. </dd>
  18938. <dt><code>shigh <var>expression</var></code></dt>
  18939. <dd><span id="index-shigh-directive_002c-M32R"></span>
  18940. <p>The <code>shigh</code> directive is very similar to the <code>high</code>
  18941. directive. It also computes the value of its expression and places
  18942. the upper 16-bits of the result into the immediate-field of the
  18943. instruction. The difference is that <code>shigh</code> also checks to see
  18944. if the lower 16-bits could be interpreted as a signed number, and if
  18945. so it assumes that a borrow will occur from the upper-16 bits. To
  18946. compensate for this the <code>shigh</code> directive pre-biases the upper
  18947. 16 bit value by adding one to it. For example:
  18948. </p>
  18949. <p>For example:
  18950. </p>
  18951. <div class="example">
  18952. <pre class="example"> seth r0, #shigh(0x12345678) ; compute r0 = 0x12340000
  18953. seth r0, #shigh(0x00008000) ; compute r0 = 0x00010000
  18954. </pre></div>
  18955. <p>In the second example the lower 16-bits are 0x8000. If these are
  18956. treated as a signed value and sign extended to 32-bits then the value
  18957. becomes 0xffff8000. If this value is then added to 0x00010000 then
  18958. the result is 0x00008000.
  18959. </p>
  18960. <p>This behaviour is to allow for the different semantics of the
  18961. <code>or3</code> and <code>add3</code> instructions. The <code>or3</code> instruction
  18962. treats its 16-bit immediate argument as unsigned whereas the
  18963. <code>add3</code> treats its 16-bit immediate as a signed value. So for
  18964. example:
  18965. </p>
  18966. <div class="example">
  18967. <pre class="example"> seth r0, #shigh(0x00008000)
  18968. add3 r0, r0, #low(0x00008000)
  18969. </pre></div>
  18970. <p>Produces the correct result in r0, whereas:
  18971. </p>
  18972. <div class="example">
  18973. <pre class="example"> seth r0, #shigh(0x00008000)
  18974. or3 r0, r0, #low(0x00008000)
  18975. </pre></div>
  18976. <p>Stores 0xffff8000 into r0.
  18977. </p>
  18978. <p>Note - the <code>shigh</code> directive does not know where in the assembly
  18979. source code the lower 16-bits of the value are going set, so it cannot
  18980. check to make sure that an <code>or3</code> instruction is being used rather
  18981. than an <code>add3</code> instruction. It is up to the programmer to make
  18982. sure that correct directives are used.
  18983. </p>
  18984. <span id="index-_002em32r-directive_002c-M32R"></span>
  18985. </dd>
  18986. <dt><code>.m32r</code></dt>
  18987. <dd><p>The directive performs a similar thing as the <em>-m32r</em> command
  18988. line option. It tells the assembler to only accept M32R instructions
  18989. from now on. An instructions from later M32R architectures are
  18990. refused.
  18991. </p>
  18992. <span id="index-_002em32rx-directive_002c-M32RX"></span>
  18993. </dd>
  18994. <dt><code>.m32rx</code></dt>
  18995. <dd><p>The directive performs a similar thing as the <em>-m32rx</em> command
  18996. line option. It tells the assembler to start accepting the extra
  18997. instructions in the M32RX ISA as well as the ordinary M32R ISA.
  18998. </p>
  18999. <span id="index-_002em32r2-directive_002c-M32R2"></span>
  19000. </dd>
  19001. <dt><code>.m32r2</code></dt>
  19002. <dd><p>The directive performs a similar thing as the <em>-m32r2</em> command
  19003. line option. It tells the assembler to start accepting the extra
  19004. instructions in the M32R2 ISA as well as the ordinary M32R ISA.
  19005. </p>
  19006. <span id="index-_002elittle-directive_002c-M32RX"></span>
  19007. </dd>
  19008. <dt><code>.little</code></dt>
  19009. <dd><p>The directive performs a similar thing as the <em>-little</em> command
  19010. line option. It tells the assembler to start producing little-endian
  19011. code and data. This option should be used with care as producing
  19012. mixed-endian binary files is fraught with danger.
  19013. </p>
  19014. <span id="index-_002ebig-directive_002c-M32RX"></span>
  19015. </dd>
  19016. <dt><code>.big</code></dt>
  19017. <dd><p>The directive performs a similar thing as the <em>-big</em> command
  19018. line option. It tells the assembler to start producing big-endian
  19019. code and data. This option should be used with care as producing
  19020. mixed-endian binary files is fraught with danger.
  19021. </p>
  19022. </dd>
  19023. </dl>
  19024. <hr>
  19025. <span id="M32R_002dWarnings"></span><div class="header">
  19026. <p>
  19027. Previous: <a href="#M32R_002dDirectives" accesskey="p" rel="prev">M32R-Directives</a>, Up: <a href="#M32R_002dDependent" accesskey="u" rel="up">M32R-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19028. </div>
  19029. <span id="M32R-Warnings"></span><h4 class="subsection">9.22.3 M32R Warnings</h4>
  19030. <span id="index-warnings_002c-M32R"></span>
  19031. <span id="index-M32R-warnings"></span>
  19032. <p>There are several warning and error messages that can be produced by
  19033. <code>as</code> which are specific to the M32R:
  19034. </p>
  19035. <dl compact="compact">
  19036. <dt><code>output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?</code></dt>
  19037. <dd><p>This message is only produced if warnings for explicit parallel
  19038. conflicts have been enabled. It indicates that the assembler has
  19039. encountered a parallel instruction in which the destination register of
  19040. the left hand instruction is used as an input register in the right hand
  19041. instruction. For example in this code fragment
  19042. &lsquo;<samp>mv r1, r2 || neg r3, r1</samp>&rsquo; register r1 is the destination of the
  19043. move instruction and the input to the neg instruction.
  19044. </p>
  19045. </dd>
  19046. <dt><code>output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?</code></dt>
  19047. <dd><p>This message is only produced if warnings for explicit parallel
  19048. conflicts have been enabled. It indicates that the assembler has
  19049. encountered a parallel instruction in which the destination register of
  19050. the right hand instruction is used as an input register in the left hand
  19051. instruction. For example in this code fragment
  19052. &lsquo;<samp>mv r1, r2 || neg r2, r3</samp>&rsquo; register r2 is the destination of the
  19053. neg instruction and the input to the move instruction.
  19054. </p>
  19055. </dd>
  19056. <dt><code>instruction &lsquo;<samp>...</samp>&rsquo; is for the M32RX only</code></dt>
  19057. <dd><p>This message is produced when the assembler encounters an instruction
  19058. which is only supported by the M32Rx processor, and the &lsquo;<samp>-m32rx</samp>&rsquo;
  19059. command-line flag has not been specified to allow assembly of such
  19060. instructions.
  19061. </p>
  19062. </dd>
  19063. <dt><code>unknown instruction &lsquo;<samp>...</samp>&rsquo;</code></dt>
  19064. <dd><p>This message is produced when the assembler encounters an instruction
  19065. which it does not recognize.
  19066. </p>
  19067. </dd>
  19068. <dt><code>only the NOP instruction can be issued in parallel on the m32r</code></dt>
  19069. <dd><p>This message is produced when the assembler encounters a parallel
  19070. instruction which does not involve a NOP instruction and the
  19071. &lsquo;<samp>-m32rx</samp>&rsquo; command-line flag has not been specified. Only the M32Rx
  19072. processor is able to execute two instructions in parallel.
  19073. </p>
  19074. </dd>
  19075. <dt><code>instruction &lsquo;<samp>...</samp>&rsquo; cannot be executed in parallel.</code></dt>
  19076. <dd><p>This message is produced when the assembler encounters a parallel
  19077. instruction which is made up of one or two instructions which cannot be
  19078. executed in parallel.
  19079. </p>
  19080. </dd>
  19081. <dt><code>Instructions share the same execution pipeline</code></dt>
  19082. <dd><p>This message is produced when the assembler encounters a parallel
  19083. instruction whose components both use the same execution pipeline.
  19084. </p>
  19085. </dd>
  19086. <dt><code>Instructions write to the same destination register.</code></dt>
  19087. <dd><p>This message is produced when the assembler encounters a parallel
  19088. instruction where both components attempt to modify the same register.
  19089. For example these code fragments will produce this message:
  19090. &lsquo;<samp>mv r1, r2 || neg r1, r3</samp>&rsquo;
  19091. &lsquo;<samp>jl r0 || mv r14, r1</samp>&rsquo;
  19092. &lsquo;<samp>st r2, @-r1 || mv r1, r3</samp>&rsquo;
  19093. &lsquo;<samp>mv r1, r2 || ld r0, @r1+</samp>&rsquo;
  19094. &lsquo;<samp>cmp r1, r2 || addx r3, r4</samp>&rsquo; (Both write to the condition bit)
  19095. </p>
  19096. </dd>
  19097. </dl>
  19098. <hr>
  19099. <span id="M68K_002dDependent"></span><div class="header">
  19100. <p>
  19101. Next: <a href="#M68HC11_002dDependent" accesskey="n" rel="next">M68HC11-Dependent</a>, Previous: <a href="#M32R_002dDependent" accesskey="p" rel="prev">M32R-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19102. </div>
  19103. <span id="M680x0-Dependent-Features"></span><h3 class="section">9.23 M680x0 Dependent Features</h3>
  19104. <span id="index-M680x0-support"></span>
  19105. <table class="menu" border="0" cellspacing="0">
  19106. <tr><td align="left" valign="top">&bull; <a href="#M68K_002dOpts" accesskey="1">M68K-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">M680x0 Options
  19107. </td></tr>
  19108. <tr><td align="left" valign="top">&bull; <a href="#M68K_002dSyntax" accesskey="2">M68K-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  19109. </td></tr>
  19110. <tr><td align="left" valign="top">&bull; <a href="#M68K_002dMoto_002dSyntax" accesskey="3">M68K-Moto-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Motorola Syntax
  19111. </td></tr>
  19112. <tr><td align="left" valign="top">&bull; <a href="#M68K_002dFloat" accesskey="4">M68K-Float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  19113. </td></tr>
  19114. <tr><td align="left" valign="top">&bull; <a href="#M68K_002dDirectives" accesskey="5">M68K-Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">680x0 Machine Directives
  19115. </td></tr>
  19116. <tr><td align="left" valign="top">&bull; <a href="#M68K_002dopcodes" accesskey="6">M68K-opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  19117. </td></tr>
  19118. </table>
  19119. <hr>
  19120. <span id="M68K_002dOpts"></span><div class="header">
  19121. <p>
  19122. Next: <a href="#M68K_002dSyntax" accesskey="n" rel="next">M68K-Syntax</a>, Up: <a href="#M68K_002dDependent" accesskey="u" rel="up">M68K-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19123. </div>
  19124. <span id="M680x0-Options"></span><h4 class="subsection">9.23.1 M680x0 Options</h4>
  19125. <span id="index-options_002c-M680x0"></span>
  19126. <span id="index-M680x0-options"></span>
  19127. <p>The Motorola 680x0 version of <code>as</code> has a few machine
  19128. dependent options:
  19129. </p>
  19130. <dl compact="compact">
  19131. <dd>
  19132. <span id="index-_002dmarch_003d-command_002dline-option_002c-M680x0"></span>
  19133. </dd>
  19134. <dt>&lsquo;<samp>-march=<var>architecture</var></samp>&rsquo;</dt>
  19135. <dd><p>This option specifies a target architecture. The following
  19136. architectures are recognized:
  19137. <code>68000</code>,
  19138. <code>68010</code>,
  19139. <code>68020</code>,
  19140. <code>68030</code>,
  19141. <code>68040</code>,
  19142. <code>68060</code>,
  19143. <code>cpu32</code>,
  19144. <code>isaa</code>,
  19145. <code>isaaplus</code>,
  19146. <code>isab</code>,
  19147. <code>isac</code> and
  19148. <code>cfv4e</code>.
  19149. </p>
  19150. <span id="index-_002dmcpu_003d-command_002dline-option_002c-M680x0"></span>
  19151. </dd>
  19152. <dt>&lsquo;<samp>-mcpu=<var>cpu</var></samp>&rsquo;</dt>
  19153. <dd><p>This option specifies a target cpu. When used in conjunction with the
  19154. <samp>-march</samp> option, the cpu must be within the specified
  19155. architecture. Also, the generic features of the architecture are used
  19156. for instruction generation, rather than those of the specific chip.
  19157. </p>
  19158. <span id="index-_002dm_005bno_002d_005d68851-command_002dline-option_002c-M680x0"></span>
  19159. <span id="index-_002dm_005bno_002d_005d68881-command_002dline-option_002c-M680x0"></span>
  19160. <span id="index-_002dm_005bno_002d_005ddiv-command_002dline-option_002c-M680x0"></span>
  19161. <span id="index-_002dm_005bno_002d_005dusp-command_002dline-option_002c-M680x0"></span>
  19162. <span id="index-_002dm_005bno_002d_005dfloat-command_002dline-option_002c-M680x0"></span>
  19163. <span id="index-_002dm_005bno_002d_005dmac-command_002dline-option_002c-M680x0"></span>
  19164. <span id="index-_002dm_005bno_002d_005demac-command_002dline-option_002c-M680x0"></span>
  19165. </dd>
  19166. <dt>&lsquo;<samp>-m[no-]68851</samp>&rsquo;</dt>
  19167. <dt>&lsquo;<samp>-m[no-]68881</samp>&rsquo;</dt>
  19168. <dt>&lsquo;<samp>-m[no-]div</samp>&rsquo;</dt>
  19169. <dt>&lsquo;<samp>-m[no-]usp</samp>&rsquo;</dt>
  19170. <dt>&lsquo;<samp>-m[no-]float</samp>&rsquo;</dt>
  19171. <dt>&lsquo;<samp>-m[no-]mac</samp>&rsquo;</dt>
  19172. <dt>&lsquo;<samp>-m[no-]emac</samp>&rsquo;</dt>
  19173. <dd>
  19174. <p>Enable or disable various architecture specific features. If a chip
  19175. or architecture by default supports an option (for instance
  19176. <samp>-march=isaaplus</samp> includes the <samp>-mdiv</samp> option),
  19177. explicitly disabling the option will override the default.
  19178. </p>
  19179. <span id="index-_002dl-option_002c-M680x0"></span>
  19180. </dd>
  19181. <dt>&lsquo;<samp>-l</samp>&rsquo;</dt>
  19182. <dd><p>You can use the &lsquo;<samp>-l</samp>&rsquo; option to shorten the size of references to undefined
  19183. symbols. If you do not use the &lsquo;<samp>-l</samp>&rsquo; option, references to undefined
  19184. symbols are wide enough for a full <code>long</code> (32 bits). (Since
  19185. <code>as</code> cannot know where these symbols end up, <code>as</code> can
  19186. only allocate space for the linker to fill in later. Since <code>as</code>
  19187. does not know how far away these symbols are, it allocates as much space as it
  19188. can.) If you use this option, the references are only one word wide (16 bits).
  19189. This may be useful if you want the object file to be as small as possible, and
  19190. you know that the relevant symbols are always less than 17 bits away.
  19191. </p>
  19192. <span id="index-_002d_002dregister_002dprefix_002doptional-option_002c-M680x0"></span>
  19193. </dd>
  19194. <dt>&lsquo;<samp>--register-prefix-optional</samp>&rsquo;</dt>
  19195. <dd><p>For some configurations, especially those where the compiler normally
  19196. does not prepend an underscore to the names of user variables, the
  19197. assembler requires a &lsquo;<samp>%</samp>&rsquo; before any use of a register name. This
  19198. is intended to let the assembler distinguish between C variables and
  19199. functions named &lsquo;<samp>a0</samp>&rsquo; through &lsquo;<samp>a7</samp>&rsquo;, and so on. The &lsquo;<samp>%</samp>&rsquo; is
  19200. always accepted, but is not required for certain configurations, notably
  19201. &lsquo;<samp>sun3</samp>&rsquo;. The &lsquo;<samp>--register-prefix-optional</samp>&rsquo; option may be used
  19202. to permit omitting the &lsquo;<samp>%</samp>&rsquo; even for configurations for which it is
  19203. normally required. If this is done, it will generally be impossible to
  19204. refer to C variables and functions with the same names as register
  19205. names.
  19206. </p>
  19207. <span id="index-_002d_002dbitwise_002dor-option_002c-M680x0"></span>
  19208. </dd>
  19209. <dt>&lsquo;<samp>--bitwise-or</samp>&rsquo;</dt>
  19210. <dd><p>Normally the character &lsquo;<samp>|</samp>&rsquo; is treated as a comment character, which
  19211. means that it can not be used in expressions. The &lsquo;<samp>--bitwise-or</samp>&rsquo;
  19212. option turns &lsquo;<samp>|</samp>&rsquo; into a normal character. In this mode, you must
  19213. either use C style comments, or start comments with a &lsquo;<samp>#</samp>&rsquo; character
  19214. at the beginning of a line.
  19215. </p>
  19216. <span id="index-_002d_002dbase_002dsize_002ddefault_002d16"></span>
  19217. <span id="index-_002d_002dbase_002dsize_002ddefault_002d32"></span>
  19218. </dd>
  19219. <dt>&lsquo;<samp>--base-size-default-16 --base-size-default-32</samp>&rsquo;</dt>
  19220. <dd><p>If you use an addressing mode with a base register without specifying
  19221. the size, <code>as</code> will normally use the full 32 bit value.
  19222. For example, the addressing mode &lsquo;<samp>%a0@(%d0)</samp>&rsquo; is equivalent to
  19223. &lsquo;<samp>%a0@(%d0:l)</samp>&rsquo;. You may use the &lsquo;<samp>--base-size-default-16</samp>&rsquo;
  19224. option to tell <code>as</code> to default to using the 16 bit value.
  19225. In this case, &lsquo;<samp>%a0@(%d0)</samp>&rsquo; is equivalent to &lsquo;<samp>%a0@(%d0:w)</samp>&rsquo;.
  19226. You may use the &lsquo;<samp>--base-size-default-32</samp>&rsquo; option to restore the
  19227. default behaviour.
  19228. </p>
  19229. <span id="index-_002d_002ddisp_002dsize_002ddefault_002d16"></span>
  19230. <span id="index-_002d_002ddisp_002dsize_002ddefault_002d32"></span>
  19231. </dd>
  19232. <dt>&lsquo;<samp>--disp-size-default-16 --disp-size-default-32</samp>&rsquo;</dt>
  19233. <dd><p>If you use an addressing mode with a displacement, and the value of the
  19234. displacement is not known, <code>as</code> will normally assume that
  19235. the value is 32 bits. For example, if the symbol &lsquo;<samp>disp</samp>&rsquo; has not
  19236. been defined, <code>as</code> will assemble the addressing mode
  19237. &lsquo;<samp>%a0@(disp,%d0)</samp>&rsquo; as though &lsquo;<samp>disp</samp>&rsquo; is a 32 bit value. You may
  19238. use the &lsquo;<samp>--disp-size-default-16</samp>&rsquo; option to tell <code>as</code>
  19239. to instead assume that the displacement is 16 bits. In this case,
  19240. <code>as</code> will assemble &lsquo;<samp>%a0@(disp,%d0)</samp>&rsquo; as though
  19241. &lsquo;<samp>disp</samp>&rsquo; is a 16 bit value. You may use the
  19242. &lsquo;<samp>--disp-size-default-32</samp>&rsquo; option to restore the default behaviour.
  19243. </p>
  19244. <span id="index-_002d_002dpcrel"></span>
  19245. </dd>
  19246. <dt>&lsquo;<samp>--pcrel</samp>&rsquo;</dt>
  19247. <dd><p>Always keep branches PC-relative. In the M680x0 architecture all branches
  19248. are defined as PC-relative. However, on some processors they are limited
  19249. to word displacements maximum. When <code>as</code> needs a long branch
  19250. that is not available, it normally emits an absolute jump instead. This
  19251. option disables this substitution. When this option is given and no long
  19252. branches are available, only word branches will be emitted. An error
  19253. message will be generated if a word branch cannot reach its target. This
  19254. option has no effect on 68020 and other processors that have long branches.
  19255. see <a href="#M68K_002dBranch">Branch Improvement</a>.
  19256. </p>
  19257. <span id="index-_002dm68000-and-related-options"></span>
  19258. <span id="index-architecture-options_002c-M680x0"></span>
  19259. <span id="index-M680x0-architecture-options"></span>
  19260. </dd>
  19261. <dt>&lsquo;<samp>-m68000</samp>&rsquo;</dt>
  19262. <dd><p><code>as</code> can assemble code for several different members of the
  19263. Motorola 680x0 family. The default depends upon how <code>as</code>
  19264. was configured when it was built; normally, the default is to assemble
  19265. code for the 68020 microprocessor. The following options may be used to
  19266. change the default. These options control which instructions and
  19267. addressing modes are permitted. The members of the 680x0 family are
  19268. very similar. For detailed information about the differences, see the
  19269. Motorola manuals.
  19270. </p>
  19271. <dl compact="compact">
  19272. <dt>&lsquo;<samp>-m68000</samp>&rsquo;</dt>
  19273. <dt>&lsquo;<samp>-m68ec000</samp>&rsquo;</dt>
  19274. <dt>&lsquo;<samp>-m68hc000</samp>&rsquo;</dt>
  19275. <dt>&lsquo;<samp>-m68hc001</samp>&rsquo;</dt>
  19276. <dt>&lsquo;<samp>-m68008</samp>&rsquo;</dt>
  19277. <dt>&lsquo;<samp>-m68302</samp>&rsquo;</dt>
  19278. <dt>&lsquo;<samp>-m68306</samp>&rsquo;</dt>
  19279. <dt>&lsquo;<samp>-m68307</samp>&rsquo;</dt>
  19280. <dt>&lsquo;<samp>-m68322</samp>&rsquo;</dt>
  19281. <dt>&lsquo;<samp>-m68356</samp>&rsquo;</dt>
  19282. <dd><p>Assemble for the 68000. &lsquo;<samp>-m68008</samp>&rsquo;, &lsquo;<samp>-m68302</samp>&rsquo;, and so on are synonyms
  19283. for &lsquo;<samp>-m68000</samp>&rsquo;, since the chips are the same from the point of view
  19284. of the assembler.
  19285. </p>
  19286. </dd>
  19287. <dt>&lsquo;<samp>-m68010</samp>&rsquo;</dt>
  19288. <dd><p>Assemble for the 68010.
  19289. </p>
  19290. </dd>
  19291. <dt>&lsquo;<samp>-m68020</samp>&rsquo;</dt>
  19292. <dt>&lsquo;<samp>-m68ec020</samp>&rsquo;</dt>
  19293. <dd><p>Assemble for the 68020. This is normally the default.
  19294. </p>
  19295. </dd>
  19296. <dt>&lsquo;<samp>-m68030</samp>&rsquo;</dt>
  19297. <dt>&lsquo;<samp>-m68ec030</samp>&rsquo;</dt>
  19298. <dd><p>Assemble for the 68030.
  19299. </p>
  19300. </dd>
  19301. <dt>&lsquo;<samp>-m68040</samp>&rsquo;</dt>
  19302. <dt>&lsquo;<samp>-m68ec040</samp>&rsquo;</dt>
  19303. <dd><p>Assemble for the 68040.
  19304. </p>
  19305. </dd>
  19306. <dt>&lsquo;<samp>-m68060</samp>&rsquo;</dt>
  19307. <dt>&lsquo;<samp>-m68ec060</samp>&rsquo;</dt>
  19308. <dd><p>Assemble for the 68060.
  19309. </p>
  19310. </dd>
  19311. <dt>&lsquo;<samp>-mcpu32</samp>&rsquo;</dt>
  19312. <dt>&lsquo;<samp>-m68330</samp>&rsquo;</dt>
  19313. <dt>&lsquo;<samp>-m68331</samp>&rsquo;</dt>
  19314. <dt>&lsquo;<samp>-m68332</samp>&rsquo;</dt>
  19315. <dt>&lsquo;<samp>-m68333</samp>&rsquo;</dt>
  19316. <dt>&lsquo;<samp>-m68334</samp>&rsquo;</dt>
  19317. <dt>&lsquo;<samp>-m68336</samp>&rsquo;</dt>
  19318. <dt>&lsquo;<samp>-m68340</samp>&rsquo;</dt>
  19319. <dt>&lsquo;<samp>-m68341</samp>&rsquo;</dt>
  19320. <dt>&lsquo;<samp>-m68349</samp>&rsquo;</dt>
  19321. <dt>&lsquo;<samp>-m68360</samp>&rsquo;</dt>
  19322. <dd><p>Assemble for the CPU32 family of chips.
  19323. </p>
  19324. </dd>
  19325. <dt>&lsquo;<samp>-m5200</samp>&rsquo;</dt>
  19326. <dt>&lsquo;<samp>-m5202</samp>&rsquo;</dt>
  19327. <dt>&lsquo;<samp>-m5204</samp>&rsquo;</dt>
  19328. <dt>&lsquo;<samp>-m5206</samp>&rsquo;</dt>
  19329. <dt>&lsquo;<samp>-m5206e</samp>&rsquo;</dt>
  19330. <dt>&lsquo;<samp>-m521x</samp>&rsquo;</dt>
  19331. <dt>&lsquo;<samp>-m5249</samp>&rsquo;</dt>
  19332. <dt>&lsquo;<samp>-m528x</samp>&rsquo;</dt>
  19333. <dt>&lsquo;<samp>-m5307</samp>&rsquo;</dt>
  19334. <dt>&lsquo;<samp>-m5407</samp>&rsquo;</dt>
  19335. <dt>&lsquo;<samp>-m547x</samp>&rsquo;</dt>
  19336. <dt>&lsquo;<samp>-m548x</samp>&rsquo;</dt>
  19337. <dt>&lsquo;<samp>-mcfv4</samp>&rsquo;</dt>
  19338. <dt>&lsquo;<samp>-mcfv4e</samp>&rsquo;</dt>
  19339. <dd><p>Assemble for the ColdFire family of chips.
  19340. </p>
  19341. </dd>
  19342. <dt>&lsquo;<samp>-m68881</samp>&rsquo;</dt>
  19343. <dt>&lsquo;<samp>-m68882</samp>&rsquo;</dt>
  19344. <dd><p>Assemble 68881 floating point instructions. This is the default for the
  19345. 68020, 68030, and the CPU32. The 68040 and 68060 always support
  19346. floating point instructions.
  19347. </p>
  19348. </dd>
  19349. <dt>&lsquo;<samp>-mno-68881</samp>&rsquo;</dt>
  19350. <dd><p>Do not assemble 68881 floating point instructions. This is the default
  19351. for 68000 and the 68010. The 68040 and 68060 always support floating
  19352. point instructions, even if this option is used.
  19353. </p>
  19354. </dd>
  19355. <dt>&lsquo;<samp>-m68851</samp>&rsquo;</dt>
  19356. <dd><p>Assemble 68851 MMU instructions. This is the default for the 68020,
  19357. 68030, and 68060. The 68040 accepts a somewhat different set of MMU
  19358. instructions; &lsquo;<samp>-m68851</samp>&rsquo; and &lsquo;<samp>-m68040</samp>&rsquo; should not be used
  19359. together.
  19360. </p>
  19361. </dd>
  19362. <dt>&lsquo;<samp>-mno-68851</samp>&rsquo;</dt>
  19363. <dd><p>Do not assemble 68851 MMU instructions. This is the default for the
  19364. 68000, 68010, and the CPU32. The 68040 accepts a somewhat different set
  19365. of MMU instructions.
  19366. </p></dd>
  19367. </dl>
  19368. </dd>
  19369. </dl>
  19370. <hr>
  19371. <span id="M68K_002dSyntax"></span><div class="header">
  19372. <p>
  19373. Next: <a href="#M68K_002dMoto_002dSyntax" accesskey="n" rel="next">M68K-Moto-Syntax</a>, Previous: <a href="#M68K_002dOpts" accesskey="p" rel="prev">M68K-Opts</a>, Up: <a href="#M68K_002dDependent" accesskey="u" rel="up">M68K-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19374. </div>
  19375. <span id="Syntax-16"></span><h4 class="subsection">9.23.2 Syntax</h4>
  19376. <span id="index-MIT"></span>
  19377. <p>This syntax for the Motorola 680x0 was developed at <small>MIT</small>.
  19378. </p>
  19379. <span id="index-M680x0-syntax"></span>
  19380. <span id="index-syntax_002c-M680x0"></span>
  19381. <span id="index-M680x0-size-modifiers"></span>
  19382. <span id="index-size-modifiers_002c-M680x0"></span>
  19383. <p>The 680x0 version of <code>as</code> uses instructions names and
  19384. syntax compatible with the Sun assembler. Intervening periods are
  19385. ignored; for example, &lsquo;<samp>movl</samp>&rsquo; is equivalent to &lsquo;<samp>mov.l</samp>&rsquo;.
  19386. </p>
  19387. <p>In the following table <var>apc</var> stands for any of the address registers
  19388. (&lsquo;<samp>%a0</samp>&rsquo; through &lsquo;<samp>%a7</samp>&rsquo;), the program counter (&lsquo;<samp>%pc</samp>&rsquo;), the
  19389. zero-address relative to the program counter (&lsquo;<samp>%zpc</samp>&rsquo;), a suppressed
  19390. address register (&lsquo;<samp>%za0</samp>&rsquo; through &lsquo;<samp>%za7</samp>&rsquo;), or it may be omitted
  19391. entirely. The use of <var>size</var> means one of &lsquo;<samp>w</samp>&rsquo; or &lsquo;<samp>l</samp>&rsquo;, and
  19392. it may be omitted, along with the leading colon, unless a scale is also
  19393. specified. The use of <var>scale</var> means one of &lsquo;<samp>1</samp>&rsquo;, &lsquo;<samp>2</samp>&rsquo;,
  19394. &lsquo;<samp>4</samp>&rsquo;, or &lsquo;<samp>8</samp>&rsquo;, and it may always be omitted along with the
  19395. leading colon.
  19396. </p>
  19397. <span id="index-M680x0-addressing-modes"></span>
  19398. <span id="index-addressing-modes_002c-M680x0"></span>
  19399. <p>The following addressing modes are understood:
  19400. </p><dl compact="compact">
  19401. <dt><em>Immediate</em></dt>
  19402. <dd><p>&lsquo;<samp>#<var>number</var></samp>&rsquo;
  19403. </p>
  19404. </dd>
  19405. <dt><em>Data Register</em></dt>
  19406. <dd><p>&lsquo;<samp>%d0</samp>&rsquo; through &lsquo;<samp>%d7</samp>&rsquo;
  19407. </p>
  19408. </dd>
  19409. <dt><em>Address Register</em></dt>
  19410. <dd><p>&lsquo;<samp>%a0</samp>&rsquo; through &lsquo;<samp>%a7</samp>&rsquo;<br>
  19411. &lsquo;<samp>%a7</samp>&rsquo; is also known as &lsquo;<samp>%sp</samp>&rsquo;, i.e., the Stack Pointer. <code>%a6</code>
  19412. is also known as &lsquo;<samp>%fp</samp>&rsquo;, the Frame Pointer.
  19413. </p>
  19414. </dd>
  19415. <dt><em>Address Register Indirect</em></dt>
  19416. <dd><p>&lsquo;<samp>%a0@</samp>&rsquo; through &lsquo;<samp>%a7@</samp>&rsquo;
  19417. </p>
  19418. </dd>
  19419. <dt><em>Address Register Postincrement</em></dt>
  19420. <dd><p>&lsquo;<samp>%a0@+</samp>&rsquo; through &lsquo;<samp>%a7@+</samp>&rsquo;
  19421. </p>
  19422. </dd>
  19423. <dt><em>Address Register Predecrement</em></dt>
  19424. <dd><p>&lsquo;<samp>%a0@-</samp>&rsquo; through &lsquo;<samp>%a7@-</samp>&rsquo;
  19425. </p>
  19426. </dd>
  19427. <dt><em>Indirect Plus Offset</em></dt>
  19428. <dd><p>&lsquo;<samp><var>apc</var>@(<var>number</var>)</samp>&rsquo;
  19429. </p>
  19430. </dd>
  19431. <dt><em>Index</em></dt>
  19432. <dd><p>&lsquo;<samp><var>apc</var>@(<var>number</var>,<var>register</var>:<var>size</var>:<var>scale</var>)</samp>&rsquo;
  19433. </p>
  19434. <p>The <var>number</var> may be omitted.
  19435. </p>
  19436. </dd>
  19437. <dt><em>Postindex</em></dt>
  19438. <dd><p>&lsquo;<samp><var>apc</var>@(<var>number</var>)@(<var>onumber</var>,<var>register</var>:<var>size</var>:<var>scale</var>)</samp>&rsquo;
  19439. </p>
  19440. <p>The <var>onumber</var> or the <var>register</var>, but not both, may be omitted.
  19441. </p>
  19442. </dd>
  19443. <dt><em>Preindex</em></dt>
  19444. <dd><p>&lsquo;<samp><var>apc</var>@(<var>number</var>,<var>register</var>:<var>size</var>:<var>scale</var>)@(<var>onumber</var>)</samp>&rsquo;
  19445. </p>
  19446. <p>The <var>number</var> may be omitted. Omitting the <var>register</var> produces
  19447. the Postindex addressing mode.
  19448. </p>
  19449. </dd>
  19450. <dt><em>Absolute</em></dt>
  19451. <dd><p>&lsquo;<samp><var>symbol</var></samp>&rsquo;, or &lsquo;<samp><var>digits</var></samp>&rsquo;, optionally followed by
  19452. &lsquo;<samp>:b</samp>&rsquo;, &lsquo;<samp>:w</samp>&rsquo;, or &lsquo;<samp>:l</samp>&rsquo;.
  19453. </p></dd>
  19454. </dl>
  19455. <hr>
  19456. <span id="M68K_002dMoto_002dSyntax"></span><div class="header">
  19457. <p>
  19458. Next: <a href="#M68K_002dFloat" accesskey="n" rel="next">M68K-Float</a>, Previous: <a href="#M68K_002dSyntax" accesskey="p" rel="prev">M68K-Syntax</a>, Up: <a href="#M68K_002dDependent" accesskey="u" rel="up">M68K-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19459. </div>
  19460. <span id="Motorola-Syntax"></span><h4 class="subsection">9.23.3 Motorola Syntax</h4>
  19461. <span id="index-Motorola-syntax-for-the-680x0"></span>
  19462. <span id="index-alternate-syntax-for-the-680x0"></span>
  19463. <p>The standard Motorola syntax for this chip differs from the syntax
  19464. already discussed (see <a href="#M68K_002dSyntax">Syntax</a>). <code>as</code> can
  19465. accept Motorola syntax for operands, even if <small>MIT</small> syntax is used for
  19466. other operands in the same instruction. The two kinds of syntax are
  19467. fully compatible.
  19468. </p>
  19469. <p>In the following table <var>apc</var> stands for any of the address registers
  19470. (&lsquo;<samp>%a0</samp>&rsquo; through &lsquo;<samp>%a7</samp>&rsquo;), the program counter (&lsquo;<samp>%pc</samp>&rsquo;), the
  19471. zero-address relative to the program counter (&lsquo;<samp>%zpc</samp>&rsquo;), or a
  19472. suppressed address register (&lsquo;<samp>%za0</samp>&rsquo; through &lsquo;<samp>%za7</samp>&rsquo;). The use
  19473. of <var>size</var> means one of &lsquo;<samp>w</samp>&rsquo; or &lsquo;<samp>l</samp>&rsquo;, and it may always be
  19474. omitted along with the leading dot. The use of <var>scale</var> means one of
  19475. &lsquo;<samp>1</samp>&rsquo;, &lsquo;<samp>2</samp>&rsquo;, &lsquo;<samp>4</samp>&rsquo;, or &lsquo;<samp>8</samp>&rsquo;, and it may always be omitted
  19476. along with the leading asterisk.
  19477. </p>
  19478. <p>The following additional addressing modes are understood:
  19479. </p>
  19480. <dl compact="compact">
  19481. <dt><em>Address Register Indirect</em></dt>
  19482. <dd><p>&lsquo;<samp>(%a0)</samp>&rsquo; through &lsquo;<samp>(%a7)</samp>&rsquo;<br>
  19483. &lsquo;<samp>%a7</samp>&rsquo; is also known as &lsquo;<samp>%sp</samp>&rsquo;, i.e., the Stack Pointer. <code>%a6</code>
  19484. is also known as &lsquo;<samp>%fp</samp>&rsquo;, the Frame Pointer.
  19485. </p>
  19486. </dd>
  19487. <dt><em>Address Register Postincrement</em></dt>
  19488. <dd><p>&lsquo;<samp>(%a0)+</samp>&rsquo; through &lsquo;<samp>(%a7)+</samp>&rsquo;
  19489. </p>
  19490. </dd>
  19491. <dt><em>Address Register Predecrement</em></dt>
  19492. <dd><p>&lsquo;<samp>-(%a0)</samp>&rsquo; through &lsquo;<samp>-(%a7)</samp>&rsquo;
  19493. </p>
  19494. </dd>
  19495. <dt><em>Indirect Plus Offset</em></dt>
  19496. <dd><p>&lsquo;<samp><var>number</var>(<var>%a0</var>)</samp>&rsquo; through &lsquo;<samp><var>number</var>(<var>%a7</var>)</samp>&rsquo;,
  19497. or &lsquo;<samp><var>number</var>(<var>%pc</var>)</samp>&rsquo;.
  19498. </p>
  19499. <p>The <var>number</var> may also appear within the parentheses, as in
  19500. &lsquo;<samp>(<var>number</var>,<var>%a0</var>)</samp>&rsquo;. When used with the <var>pc</var>, the
  19501. <var>number</var> may be omitted (with an address register, omitting the
  19502. <var>number</var> produces Address Register Indirect mode).
  19503. </p>
  19504. </dd>
  19505. <dt><em>Index</em></dt>
  19506. <dd><p>&lsquo;<samp><var>number</var>(<var>apc</var>,<var>register</var>.<var>size</var>*<var>scale</var>)</samp>&rsquo;
  19507. </p>
  19508. <p>The <var>number</var> may be omitted, or it may appear within the
  19509. parentheses. The <var>apc</var> may be omitted. The <var>register</var> and the
  19510. <var>apc</var> may appear in either order. If both <var>apc</var> and
  19511. <var>register</var> are address registers, and the <var>size</var> and <var>scale</var>
  19512. are omitted, then the first register is taken as the base register, and
  19513. the second as the index register.
  19514. </p>
  19515. </dd>
  19516. <dt><em>Postindex</em></dt>
  19517. <dd><p>&lsquo;<samp>([<var>number</var>,<var>apc</var>],<var>register</var>.<var>size</var>*<var>scale</var>,<var>onumber</var>)</samp>&rsquo;
  19518. </p>
  19519. <p>The <var>onumber</var>, or the <var>register</var>, or both, may be omitted.
  19520. Either the <var>number</var> or the <var>apc</var> may be omitted, but not both.
  19521. </p>
  19522. </dd>
  19523. <dt><em>Preindex</em></dt>
  19524. <dd><p>&lsquo;<samp>([<var>number</var>,<var>apc</var>,<var>register</var>.<var>size</var>*<var>scale</var>],<var>onumber</var>)</samp>&rsquo;
  19525. </p>
  19526. <p>The <var>number</var>, or the <var>apc</var>, or the <var>register</var>, or any two of
  19527. them, may be omitted. The <var>onumber</var> may be omitted. The
  19528. <var>register</var> and the <var>apc</var> may appear in either order. If both
  19529. <var>apc</var> and <var>register</var> are address registers, and the <var>size</var>
  19530. and <var>scale</var> are omitted, then the first register is taken as the
  19531. base register, and the second as the index register.
  19532. </p></dd>
  19533. </dl>
  19534. <hr>
  19535. <span id="M68K_002dFloat"></span><div class="header">
  19536. <p>
  19537. Next: <a href="#M68K_002dDirectives" accesskey="n" rel="next">M68K-Directives</a>, Previous: <a href="#M68K_002dMoto_002dSyntax" accesskey="p" rel="prev">M68K-Moto-Syntax</a>, Up: <a href="#M68K_002dDependent" accesskey="u" rel="up">M68K-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19538. </div>
  19539. <span id="Floating-Point-8"></span><h4 class="subsection">9.23.4 Floating Point</h4>
  19540. <span id="index-floating-point_002c-M680x0"></span>
  19541. <span id="index-M680x0-floating-point"></span>
  19542. <p>Packed decimal (P) format floating literals are not supported.
  19543. Feel free to add the code!
  19544. </p>
  19545. <p>The floating point formats generated by directives are these.
  19546. </p>
  19547. <dl compact="compact">
  19548. <dd><span id="index-float-directive_002c-M680x0"></span>
  19549. </dd>
  19550. <dt><code>.float</code></dt>
  19551. <dd><p><code>Single</code> precision floating point constants.
  19552. </p>
  19553. <span id="index-double-directive_002c-M680x0"></span>
  19554. </dd>
  19555. <dt><code>.double</code></dt>
  19556. <dd><p><code>Double</code> precision floating point constants.
  19557. </p>
  19558. <span id="index-extend-directive-M680x0"></span>
  19559. <span id="index-ldouble-directive-M680x0"></span>
  19560. </dd>
  19561. <dt><code>.extend</code></dt>
  19562. <dt><code>.ldouble</code></dt>
  19563. <dd><p><code>Extended</code> precision (<code>long double</code>) floating point constants.
  19564. </p></dd>
  19565. </dl>
  19566. <hr>
  19567. <span id="M68K_002dDirectives"></span><div class="header">
  19568. <p>
  19569. Next: <a href="#M68K_002dopcodes" accesskey="n" rel="next">M68K-opcodes</a>, Previous: <a href="#M68K_002dFloat" accesskey="p" rel="prev">M68K-Float</a>, Up: <a href="#M68K_002dDependent" accesskey="u" rel="up">M68K-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19570. </div>
  19571. <span id="g_t680x0-Machine-Directives"></span><h4 class="subsection">9.23.5 680x0 Machine Directives</h4>
  19572. <span id="index-M680x0-directives"></span>
  19573. <span id="index-directives_002c-M680x0"></span>
  19574. <p>In order to be compatible with the Sun assembler the 680x0 assembler
  19575. understands the following directives.
  19576. </p>
  19577. <dl compact="compact">
  19578. <dd><span id="index-data1-directive_002c-M680x0"></span>
  19579. </dd>
  19580. <dt><code>.data1</code></dt>
  19581. <dd><p>This directive is identical to a <code>.data 1</code> directive.
  19582. </p>
  19583. <span id="index-data2-directive_002c-M680x0"></span>
  19584. </dd>
  19585. <dt><code>.data2</code></dt>
  19586. <dd><p>This directive is identical to a <code>.data 2</code> directive.
  19587. </p>
  19588. <span id="index-even-directive_002c-M680x0"></span>
  19589. </dd>
  19590. <dt><code>.even</code></dt>
  19591. <dd><p>This directive is a special case of the <code>.align</code> directive; it
  19592. aligns the output to an even byte boundary.
  19593. </p>
  19594. <span id="index-skip-directive_002c-M680x0"></span>
  19595. </dd>
  19596. <dt><code>.skip</code></dt>
  19597. <dd><p>This directive is identical to a <code>.space</code> directive.
  19598. </p>
  19599. <span id="index-arch-directive_002c-M680x0"></span>
  19600. </dd>
  19601. <dt><code>.arch <var>name</var></code></dt>
  19602. <dd><p>Select the target architecture and extension features. Valid values
  19603. for <var>name</var> are the same as for the <samp>-march</samp> command-line
  19604. option. This directive cannot be specified after
  19605. any instructions have been assembled. If it is given multiple times,
  19606. or in conjunction with the <samp>-march</samp> option, all uses must be for
  19607. the same architecture and extension set.
  19608. </p>
  19609. <span id="index-cpu-directive_002c-M680x0"></span>
  19610. </dd>
  19611. <dt><code>.cpu <var>name</var></code></dt>
  19612. <dd><p>Select the target cpu. Valid values
  19613. for <var>name</var> are the same as for the <samp>-mcpu</samp> command-line
  19614. option. This directive cannot be specified after
  19615. any instructions have been assembled. If it is given multiple times,
  19616. or in conjunction with the <samp>-mopt</samp> option, all uses must be for
  19617. the same cpu.
  19618. </p>
  19619. </dd>
  19620. </dl>
  19621. <hr>
  19622. <span id="M68K_002dopcodes"></span><div class="header">
  19623. <p>
  19624. Previous: <a href="#M68K_002dDirectives" accesskey="p" rel="prev">M68K-Directives</a>, Up: <a href="#M68K_002dDependent" accesskey="u" rel="up">M68K-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19625. </div>
  19626. <span id="Opcodes-11"></span><h4 class="subsection">9.23.6 Opcodes</h4>
  19627. <span id="index-M680x0-opcodes"></span>
  19628. <span id="index-opcodes_002c-M680x0"></span>
  19629. <span id="index-instruction-set_002c-M680x0"></span>
  19630. <table class="menu" border="0" cellspacing="0">
  19631. <tr><td align="left" valign="top">&bull; <a href="#M68K_002dBranch" accesskey="1">M68K-Branch</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Branch Improvement
  19632. </td></tr>
  19633. <tr><td align="left" valign="top">&bull; <a href="#M68K_002dChars" accesskey="2">M68K-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  19634. </td></tr>
  19635. </table>
  19636. <hr>
  19637. <span id="M68K_002dBranch"></span><div class="header">
  19638. <p>
  19639. Next: <a href="#M68K_002dChars" accesskey="n" rel="next">M68K-Chars</a>, Up: <a href="#M68K_002dopcodes" accesskey="u" rel="up">M68K-opcodes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19640. </div>
  19641. <span id="Branch-Improvement"></span><h4 class="subsubsection">9.23.6.1 Branch Improvement</h4>
  19642. <span id="index-pseudo_002dopcodes_002c-M680x0"></span>
  19643. <span id="index-M680x0-pseudo_002dopcodes"></span>
  19644. <span id="index-branch-improvement_002c-M680x0"></span>
  19645. <span id="index-M680x0-branch-improvement"></span>
  19646. <p>Certain pseudo opcodes are permitted for branch instructions.
  19647. They expand to the shortest branch instruction that reach the
  19648. target. Generally these mnemonics are made by substituting &lsquo;<samp>j</samp>&rsquo; for
  19649. &lsquo;<samp>b</samp>&rsquo; at the start of a Motorola mnemonic.
  19650. </p>
  19651. <p>The following table summarizes the pseudo-operations. A <code>*</code> flags
  19652. cases that are more fully described after the table:
  19653. </p>
  19654. <div class="example">
  19655. <pre class="example"> Displacement
  19656. +------------------------------------------------------------
  19657. | 68020 68000/10, not PC-relative OK
  19658. Pseudo-Op |BYTE WORD LONG ABSOLUTE LONG JUMP **
  19659. +------------------------------------------------------------
  19660. jbsr |bsrs bsrw bsrl jsr
  19661. jra |bras braw bral jmp
  19662. * jXX |bXXs bXXw bXXl bNXs;jmp
  19663. * dbXX | N/A dbXXw dbXX;bras;bral dbXX;bras;jmp
  19664. fjXX | N/A fbXXw fbXXl N/A
  19665. XX: condition
  19666. NX: negative of condition XX
  19667. </pre></div>
  19668. <div align="center"><code>*</code>&mdash;see full description below
  19669. </div><div align="center"><code>**</code>&mdash;this expansion mode is disallowed by &lsquo;<samp>--pcrel</samp>&rsquo;
  19670. </div>
  19671. <dl compact="compact">
  19672. <dt><code>jbsr</code></dt>
  19673. <dt><code>jra</code></dt>
  19674. <dd><p>These are the simplest jump pseudo-operations; they always map to one
  19675. particular machine instruction, depending on the displacement to the
  19676. branch target. This instruction will be a byte or word branch is that
  19677. is sufficient. Otherwise, a long branch will be emitted if available.
  19678. If no long branches are available and the &lsquo;<samp>--pcrel</samp>&rsquo; option is not
  19679. given, an absolute long jump will be emitted instead. If no long
  19680. branches are available, the &lsquo;<samp>--pcrel</samp>&rsquo; option is given, and a word
  19681. branch cannot reach the target, an error message is generated.
  19682. </p>
  19683. <p>In addition to standard branch operands, <code>as</code> allows these
  19684. pseudo-operations to have all operands that are allowed for jsr and jmp,
  19685. substituting these instructions if the operand given is not valid for a
  19686. branch instruction.
  19687. </p>
  19688. </dd>
  19689. <dt><code>j<var>XX</var></code></dt>
  19690. <dd><p>Here, &lsquo;<samp>j<var>XX</var></samp>&rsquo; stands for an entire family of pseudo-operations,
  19691. where <var>XX</var> is a conditional branch or condition-code test. The full
  19692. list of pseudo-ops in this family is:
  19693. </p><div class="example">
  19694. <pre class="example"> jhi jls jcc jcs jne jeq jvc
  19695. jvs jpl jmi jge jlt jgt jle
  19696. </pre></div>
  19697. <p>Usually, each of these pseudo-operations expands to a single branch
  19698. instruction. However, if a word branch is not sufficient, no long branches
  19699. are available, and the &lsquo;<samp>--pcrel</samp>&rsquo; option is not given, <code>as</code>
  19700. issues a longer code fragment in terms of <var>NX</var>, the opposite condition
  19701. to <var>XX</var>. For example, under these conditions:
  19702. </p><div class="example">
  19703. <pre class="example"> j<var>XX</var> foo
  19704. </pre></div>
  19705. <p>gives
  19706. </p><div class="example">
  19707. <pre class="example"> b<var>NX</var>s oof
  19708. jmp foo
  19709. oof:
  19710. </pre></div>
  19711. </dd>
  19712. <dt><code>db<var>XX</var></code></dt>
  19713. <dd><p>The full family of pseudo-operations covered here is
  19714. </p><div class="example">
  19715. <pre class="example"> dbhi dbls dbcc dbcs dbne dbeq dbvc
  19716. dbvs dbpl dbmi dbge dblt dbgt dble
  19717. dbf dbra dbt
  19718. </pre></div>
  19719. <p>Motorola &lsquo;<samp>db<var>XX</var></samp>&rsquo; instructions allow word displacements only. When
  19720. a word displacement is sufficient, each of these pseudo-operations expands
  19721. to the corresponding Motorola instruction. When a word displacement is not
  19722. sufficient and long branches are available, when the source reads
  19723. &lsquo;<samp>db<var>XX</var> foo</samp>&rsquo;, <code>as</code> emits
  19724. </p><div class="example">
  19725. <pre class="example"> db<var>XX</var> oo1
  19726. bras oo2
  19727. oo1:bral foo
  19728. oo2:
  19729. </pre></div>
  19730. <p>If, however, long branches are not available and the &lsquo;<samp>--pcrel</samp>&rsquo; option is
  19731. not given, <code>as</code> emits
  19732. </p><div class="example">
  19733. <pre class="example"> db<var>XX</var> oo1
  19734. bras oo2
  19735. oo1:jmp foo
  19736. oo2:
  19737. </pre></div>
  19738. </dd>
  19739. <dt><code>fj<var>XX</var></code></dt>
  19740. <dd><p>This family includes
  19741. </p><div class="example">
  19742. <pre class="example"> fjne fjeq fjge fjlt fjgt fjle fjf
  19743. fjt fjgl fjgle fjnge fjngl fjngle fjngt
  19744. fjnle fjnlt fjoge fjogl fjogt fjole fjolt
  19745. fjor fjseq fjsf fjsne fjst fjueq fjuge
  19746. fjugt fjule fjult fjun
  19747. </pre></div>
  19748. <p>Each of these pseudo-operations always expands to a single Motorola
  19749. coprocessor branch instruction, word or long. All Motorola coprocessor
  19750. branch instructions allow both word and long displacements.
  19751. </p>
  19752. </dd>
  19753. </dl>
  19754. <hr>
  19755. <span id="M68K_002dChars"></span><div class="header">
  19756. <p>
  19757. Previous: <a href="#M68K_002dBranch" accesskey="p" rel="prev">M68K-Branch</a>, Up: <a href="#M68K_002dopcodes" accesskey="u" rel="up">M68K-opcodes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19758. </div>
  19759. <span id="Special-Characters-16"></span><h4 class="subsubsection">9.23.6.2 Special Characters</h4>
  19760. <span id="index-special-characters_002c-M680x0"></span>
  19761. <span id="index-M680x0-line-comment-character"></span>
  19762. <span id="index-line-comment-character_002c-M680x0"></span>
  19763. <span id="index-comments_002c-M680x0"></span>
  19764. <p>Line comments are introduced by the &lsquo;<samp>|</samp>&rsquo; character appearing
  19765. anywhere on a line, unless the <samp>--bitwise-or</samp> command-line option
  19766. has been specified.
  19767. </p>
  19768. <p>An asterisk (&lsquo;<samp>*</samp>&rsquo;) as the first character on a line marks the
  19769. start of a line comment as well.
  19770. </p>
  19771. <span id="index-M680x0-immediate-character"></span>
  19772. <span id="index-immediate-character_002c-M680x0"></span>
  19773. <p>A hash character (&lsquo;<samp>#</samp>&rsquo;) as the first character on a line also
  19774. marks the start of a line comment, but in this case it could also be a
  19775. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  19776. control command (see <a href="#Preprocessing">Preprocessing</a>). If the hash character
  19777. appears elsewhere on a line it is used to introduce an immediate
  19778. value. (This is for compatibility with Sun&rsquo;s assembler).
  19779. </p>
  19780. <span id="index-M680x0-line-separator"></span>
  19781. <span id="index-line-separator_002c-M680x0"></span>
  19782. <p>Multiple statements on the same line can appear if they are separated
  19783. by the &lsquo;<samp>;</samp>&rsquo; character.
  19784. </p>
  19785. <hr>
  19786. <span id="M68HC11_002dDependent"></span><div class="header">
  19787. <p>
  19788. Next: <a href="#S12Z_002dDependent" accesskey="n" rel="next">S12Z-Dependent</a>, Previous: <a href="#M68K_002dDependent" accesskey="p" rel="prev">M68K-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19789. </div>
  19790. <span id="M68HC11-and-M68HC12-Dependent-Features"></span><h3 class="section">9.24 M68HC11 and M68HC12 Dependent Features</h3>
  19791. <span id="index-M68HC11-and-M68HC12-support"></span>
  19792. <table class="menu" border="0" cellspacing="0">
  19793. <tr><td align="left" valign="top">&bull; <a href="#M68HC11_002dOpts" accesskey="1">M68HC11-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">M68HC11 and M68HC12 Options
  19794. </td></tr>
  19795. <tr><td align="left" valign="top">&bull; <a href="#M68HC11_002dSyntax" accesskey="2">M68HC11-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  19796. </td></tr>
  19797. <tr><td align="left" valign="top">&bull; <a href="#M68HC11_002dModifiers" accesskey="3">M68HC11-Modifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbolic Operand Modifiers
  19798. </td></tr>
  19799. <tr><td align="left" valign="top">&bull; <a href="#M68HC11_002dDirectives" accesskey="4">M68HC11-Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Directives
  19800. </td></tr>
  19801. <tr><td align="left" valign="top">&bull; <a href="#M68HC11_002dFloat" accesskey="5">M68HC11-Float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  19802. </td></tr>
  19803. <tr><td align="left" valign="top">&bull; <a href="#M68HC11_002dopcodes" accesskey="6">M68HC11-opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  19804. </td></tr>
  19805. </table>
  19806. <hr>
  19807. <span id="M68HC11_002dOpts"></span><div class="header">
  19808. <p>
  19809. Next: <a href="#M68HC11_002dSyntax" accesskey="n" rel="next">M68HC11-Syntax</a>, Up: <a href="#M68HC11_002dDependent" accesskey="u" rel="up">M68HC11-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19810. </div>
  19811. <span id="M68HC11-and-M68HC12-Options"></span><h4 class="subsection">9.24.1 M68HC11 and M68HC12 Options</h4>
  19812. <span id="index-options_002c-M68HC11"></span>
  19813. <span id="index-M68HC11-options"></span>
  19814. <p>The Motorola 68HC11 and 68HC12 version of <code>as</code> have a few machine
  19815. dependent options.
  19816. </p>
  19817. <dl compact="compact">
  19818. <dd>
  19819. <span id="index-_002dm68hc11"></span>
  19820. </dd>
  19821. <dt><code>-m68hc11</code></dt>
  19822. <dd><p>This option switches the assembler into the M68HC11 mode. In this mode,
  19823. the assembler only accepts 68HC11 operands and mnemonics. It produces
  19824. code for the 68HC11.
  19825. </p>
  19826. <span id="index-_002dm68hc12"></span>
  19827. </dd>
  19828. <dt><code>-m68hc12</code></dt>
  19829. <dd><p>This option switches the assembler into the M68HC12 mode. In this mode,
  19830. the assembler also accepts 68HC12 operands and mnemonics. It produces
  19831. code for the 68HC12. A few 68HC11 instructions are replaced by
  19832. some 68HC12 instructions as recommended by Motorola specifications.
  19833. </p>
  19834. <span id="index-_002dm68hcs12"></span>
  19835. </dd>
  19836. <dt><code>-m68hcs12</code></dt>
  19837. <dd><p>This option switches the assembler into the M68HCS12 mode. This mode is
  19838. similar to &lsquo;<samp>-m68hc12</samp>&rsquo; but specifies to assemble for the 68HCS12
  19839. series. The only difference is on the assembling of the &lsquo;<samp>movb</samp>&rsquo;
  19840. and &lsquo;<samp>movw</samp>&rsquo; instruction when a PC-relative operand is used.
  19841. </p>
  19842. <span id="index-_002dmm9s12x"></span>
  19843. </dd>
  19844. <dt><code>-mm9s12x</code></dt>
  19845. <dd><p>This option switches the assembler into the M9S12X mode. This mode is
  19846. similar to &lsquo;<samp>-m68hc12</samp>&rsquo; but specifies to assemble for the S12X
  19847. series which is a superset of the HCS12.
  19848. </p>
  19849. <span id="index-_002dmm9s12xg"></span>
  19850. </dd>
  19851. <dt><code>-mm9s12xg</code></dt>
  19852. <dd><p>This option switches the assembler into the XGATE mode for the RISC
  19853. co-processor featured on some S12X-family chips.
  19854. </p>
  19855. <span id="index-_002d_002dxgate_002dramoffset"></span>
  19856. </dd>
  19857. <dt><code>--xgate-ramoffset</code></dt>
  19858. <dd><p>This option instructs the linker to offset RAM addresses from S12X address
  19859. space into XGATE address space.
  19860. </p>
  19861. <span id="index-_002dmshort"></span>
  19862. </dd>
  19863. <dt><code>-mshort</code></dt>
  19864. <dd><p>This option controls the ABI and indicates to use a 16-bit integer ABI.
  19865. It has no effect on the assembled instructions.
  19866. This is the default.
  19867. </p>
  19868. <span id="index-_002dmlong"></span>
  19869. </dd>
  19870. <dt><code>-mlong</code></dt>
  19871. <dd><p>This option controls the ABI and indicates to use a 32-bit integer ABI.
  19872. </p>
  19873. <span id="index-_002dmshort_002ddouble"></span>
  19874. </dd>
  19875. <dt><code>-mshort-double</code></dt>
  19876. <dd><p>This option controls the ABI and indicates to use a 32-bit float ABI.
  19877. This is the default.
  19878. </p>
  19879. <span id="index-_002dmlong_002ddouble"></span>
  19880. </dd>
  19881. <dt><code>-mlong-double</code></dt>
  19882. <dd><p>This option controls the ABI and indicates to use a 64-bit float ABI.
  19883. </p>
  19884. <span id="index-_002d_002dstrict_002ddirect_002dmode"></span>
  19885. </dd>
  19886. <dt><code>--strict-direct-mode</code></dt>
  19887. <dd><p>You can use the &lsquo;<samp>--strict-direct-mode</samp>&rsquo; option to disable
  19888. the automatic translation of direct page mode addressing into
  19889. extended mode when the instruction does not support direct mode.
  19890. For example, the &lsquo;<samp>clr</samp>&rsquo; instruction does not support direct page
  19891. mode addressing. When it is used with the direct page mode,
  19892. <code>as</code> will ignore it and generate an absolute addressing.
  19893. This option prevents <code>as</code> from doing this, and the wrong
  19894. usage of the direct page mode will raise an error.
  19895. </p>
  19896. <span id="index-_002d_002dshort_002dbranches"></span>
  19897. </dd>
  19898. <dt><code>--short-branches</code></dt>
  19899. <dd><p>The &lsquo;<samp>--short-branches</samp>&rsquo; option turns off the translation of
  19900. relative branches into absolute branches when the branch offset is
  19901. out of range. By default <code>as</code> transforms the relative
  19902. branch (&lsquo;<samp>bsr</samp>&rsquo;, &lsquo;<samp>bgt</samp>&rsquo;, &lsquo;<samp>bge</samp>&rsquo;, &lsquo;<samp>beq</samp>&rsquo;, &lsquo;<samp>bne</samp>&rsquo;,
  19903. &lsquo;<samp>ble</samp>&rsquo;, &lsquo;<samp>blt</samp>&rsquo;, &lsquo;<samp>bhi</samp>&rsquo;, &lsquo;<samp>bcc</samp>&rsquo;, &lsquo;<samp>bls</samp>&rsquo;,
  19904. &lsquo;<samp>bcs</samp>&rsquo;, &lsquo;<samp>bmi</samp>&rsquo;, &lsquo;<samp>bvs</samp>&rsquo;, &lsquo;<samp>bvs</samp>&rsquo;, &lsquo;<samp>bra</samp>&rsquo;) into
  19905. an absolute branch when the offset is out of the -128 .. 127 range.
  19906. In that case, the &lsquo;<samp>bsr</samp>&rsquo; instruction is translated into a
  19907. &lsquo;<samp>jsr</samp>&rsquo;, the &lsquo;<samp>bra</samp>&rsquo; instruction is translated into a
  19908. &lsquo;<samp>jmp</samp>&rsquo; and the conditional branches instructions are inverted and
  19909. followed by a &lsquo;<samp>jmp</samp>&rsquo;. This option disables these translations
  19910. and <code>as</code> will generate an error if a relative branch
  19911. is out of range. This option does not affect the optimization
  19912. associated to the &lsquo;<samp>jbra</samp>&rsquo;, &lsquo;<samp>jbsr</samp>&rsquo; and &lsquo;<samp>jbXX</samp>&rsquo; pseudo opcodes.
  19913. </p>
  19914. <span id="index-_002d_002dforce_002dlong_002dbranches"></span>
  19915. </dd>
  19916. <dt><code>--force-long-branches</code></dt>
  19917. <dd><p>The &lsquo;<samp>--force-long-branches</samp>&rsquo; option forces the translation of
  19918. relative branches into absolute branches. This option does not affect
  19919. the optimization associated to the &lsquo;<samp>jbra</samp>&rsquo;, &lsquo;<samp>jbsr</samp>&rsquo; and
  19920. &lsquo;<samp>jbXX</samp>&rsquo; pseudo opcodes.
  19921. </p>
  19922. <span id="index-_002d_002dprint_002dinsn_002dsyntax"></span>
  19923. </dd>
  19924. <dt><code>--print-insn-syntax</code></dt>
  19925. <dd><p>You can use the &lsquo;<samp>--print-insn-syntax</samp>&rsquo; option to obtain the
  19926. syntax description of the instruction when an error is detected.
  19927. </p>
  19928. <span id="index-_002d_002dprint_002dopcodes"></span>
  19929. </dd>
  19930. <dt><code>--print-opcodes</code></dt>
  19931. <dd><p>The &lsquo;<samp>--print-opcodes</samp>&rsquo; option prints the list of all the
  19932. instructions with their syntax. The first item of each line
  19933. represents the instruction name and the rest of the line indicates
  19934. the possible operands for that instruction. The list is printed
  19935. in alphabetical order. Once the list is printed <code>as</code>
  19936. exits.
  19937. </p>
  19938. <span id="index-_002d_002dgenerate_002dexample"></span>
  19939. </dd>
  19940. <dt><code>--generate-example</code></dt>
  19941. <dd><p>The &lsquo;<samp>--generate-example</samp>&rsquo; option is similar to &lsquo;<samp>--print-opcodes</samp>&rsquo;
  19942. but it generates an example for each instruction instead.
  19943. </p></dd>
  19944. </dl>
  19945. <hr>
  19946. <span id="M68HC11_002dSyntax"></span><div class="header">
  19947. <p>
  19948. Next: <a href="#M68HC11_002dModifiers" accesskey="n" rel="next">M68HC11-Modifiers</a>, Previous: <a href="#M68HC11_002dOpts" accesskey="p" rel="prev">M68HC11-Opts</a>, Up: <a href="#M68HC11_002dDependent" accesskey="u" rel="up">M68HC11-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  19949. </div>
  19950. <span id="Syntax-17"></span><h4 class="subsection">9.24.2 Syntax</h4>
  19951. <span id="index-M68HC11-syntax"></span>
  19952. <span id="index-syntax_002c-M68HC11"></span>
  19953. <p>In the M68HC11 syntax, the instruction name comes first and it may
  19954. be followed by one or several operands (up to three). Operands are
  19955. separated by comma (&lsquo;<samp>,</samp>&rsquo;). In the normal mode,
  19956. <code>as</code> will complain if too many operands are specified for
  19957. a given instruction. In the MRI mode (turned on with &lsquo;<samp>-M</samp>&rsquo; option),
  19958. it will treat them as comments. Example:
  19959. </p>
  19960. <div class="example">
  19961. <pre class="example">inx
  19962. lda #23
  19963. bset 2,x #4
  19964. brclr *bot #8 foo
  19965. </pre></div>
  19966. <span id="index-line-comment-character_002c-M68HC11"></span>
  19967. <span id="index-M68HC11-line-comment-character"></span>
  19968. <p>The presence of a &lsquo;<samp>;</samp>&rsquo; character or a &lsquo;<samp>!</samp>&rsquo; character anywhere
  19969. on a line indicates the start of a comment that extends to the end of
  19970. that line.
  19971. </p>
  19972. <p>A &lsquo;<samp>*</samp>&rsquo; or a &lsquo;<samp>#</samp>&rsquo; character at the start of a line also
  19973. introduces a line comment, but these characters do not work elsewhere
  19974. on the line. If the first character of the line is a &lsquo;<samp>#</samp>&rsquo; then as
  19975. well as starting a comment, the line could also be logical line number
  19976. directive (see <a href="#Comments">Comments</a>) or a preprocessor control command
  19977. (see <a href="#Preprocessing">Preprocessing</a>).
  19978. </p>
  19979. <span id="index-line-separator_002c-M68HC11"></span>
  19980. <span id="index-statement-separator_002c-M68HC11"></span>
  19981. <span id="index-M68HC11-line-separator"></span>
  19982. <p>The M68HC11 assembler does not currently support a line separator
  19983. character.
  19984. </p>
  19985. <span id="index-M68HC11-addressing-modes"></span>
  19986. <span id="index-addressing-modes_002c-M68HC11"></span>
  19987. <p>The following addressing modes are understood for 68HC11 and 68HC12:
  19988. </p><dl compact="compact">
  19989. <dt><em>Immediate</em></dt>
  19990. <dd><p>&lsquo;<samp>#<var>number</var></samp>&rsquo;
  19991. </p>
  19992. </dd>
  19993. <dt><em>Address Register</em></dt>
  19994. <dd><p>&lsquo;<samp><var>number</var>,X</samp>&rsquo;, &lsquo;<samp><var>number</var>,Y</samp>&rsquo;
  19995. </p>
  19996. <p>The <var>number</var> may be omitted in which case 0 is assumed.
  19997. </p>
  19998. </dd>
  19999. <dt><em>Direct Addressing mode</em></dt>
  20000. <dd><p>&lsquo;<samp>*<var>symbol</var></samp>&rsquo;, or &lsquo;<samp>*<var>digits</var></samp>&rsquo;
  20001. </p>
  20002. </dd>
  20003. <dt><em>Absolute</em></dt>
  20004. <dd><p>&lsquo;<samp><var>symbol</var></samp>&rsquo;, or &lsquo;<samp><var>digits</var></samp>&rsquo;
  20005. </p></dd>
  20006. </dl>
  20007. <p>The M68HC12 has other more complex addressing modes. All of them
  20008. are supported and they are represented below:
  20009. </p>
  20010. <dl compact="compact">
  20011. <dt><em>Constant Offset Indexed Addressing Mode</em></dt>
  20012. <dd><p>&lsquo;<samp><var>number</var>,<var>reg</var></samp>&rsquo;
  20013. </p>
  20014. <p>The <var>number</var> may be omitted in which case 0 is assumed.
  20015. The register can be either &lsquo;<samp>X</samp>&rsquo;, &lsquo;<samp>Y</samp>&rsquo;, &lsquo;<samp>SP</samp>&rsquo; or
  20016. &lsquo;<samp>PC</samp>&rsquo;. The assembler will use the smaller post-byte definition
  20017. according to the constant value (5-bit constant offset, 9-bit constant
  20018. offset or 16-bit constant offset). If the constant is not known by
  20019. the assembler it will use the 16-bit constant offset post-byte and the value
  20020. will be resolved at link time.
  20021. </p>
  20022. </dd>
  20023. <dt><em>Offset Indexed Indirect</em></dt>
  20024. <dd><p>&lsquo;<samp>[<var>number</var>,<var>reg</var>]</samp>&rsquo;
  20025. </p>
  20026. <p>The register can be either &lsquo;<samp>X</samp>&rsquo;, &lsquo;<samp>Y</samp>&rsquo;, &lsquo;<samp>SP</samp>&rsquo; or &lsquo;<samp>PC</samp>&rsquo;.
  20027. </p>
  20028. </dd>
  20029. <dt><em>Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement</em></dt>
  20030. <dd><p>&lsquo;<samp><var>number</var>,-<var>reg</var></samp>&rsquo;
  20031. &lsquo;<samp><var>number</var>,+<var>reg</var></samp>&rsquo;
  20032. &lsquo;<samp><var>number</var>,<var>reg</var>-</samp>&rsquo;
  20033. &lsquo;<samp><var>number</var>,<var>reg</var>+</samp>&rsquo;
  20034. </p>
  20035. <p>The number must be in the range &lsquo;<samp>-8</samp>&rsquo;..&lsquo;<samp>+8</samp>&rsquo; and must not be 0.
  20036. The register can be either &lsquo;<samp>X</samp>&rsquo;, &lsquo;<samp>Y</samp>&rsquo;, &lsquo;<samp>SP</samp>&rsquo; or &lsquo;<samp>PC</samp>&rsquo;.
  20037. </p>
  20038. </dd>
  20039. <dt><em>Accumulator Offset</em></dt>
  20040. <dd><p>&lsquo;<samp><var>acc</var>,<var>reg</var></samp>&rsquo;
  20041. </p>
  20042. <p>The accumulator register can be either &lsquo;<samp>A</samp>&rsquo;, &lsquo;<samp>B</samp>&rsquo; or &lsquo;<samp>D</samp>&rsquo;.
  20043. The register can be either &lsquo;<samp>X</samp>&rsquo;, &lsquo;<samp>Y</samp>&rsquo;, &lsquo;<samp>SP</samp>&rsquo; or &lsquo;<samp>PC</samp>&rsquo;.
  20044. </p>
  20045. </dd>
  20046. <dt><em>Accumulator D offset indexed-indirect</em></dt>
  20047. <dd><p>&lsquo;<samp>[D,<var>reg</var>]</samp>&rsquo;
  20048. </p>
  20049. <p>The register can be either &lsquo;<samp>X</samp>&rsquo;, &lsquo;<samp>Y</samp>&rsquo;, &lsquo;<samp>SP</samp>&rsquo; or &lsquo;<samp>PC</samp>&rsquo;.
  20050. </p>
  20051. </dd>
  20052. </dl>
  20053. <p>For example:
  20054. </p>
  20055. <div class="example">
  20056. <pre class="example">ldab 1024,sp
  20057. ldd [10,x]
  20058. orab 3,+x
  20059. stab -2,y-
  20060. ldx a,pc
  20061. sty [d,sp]
  20062. </pre></div>
  20063. <hr>
  20064. <span id="M68HC11_002dModifiers"></span><div class="header">
  20065. <p>
  20066. Next: <a href="#M68HC11_002dDirectives" accesskey="n" rel="next">M68HC11-Directives</a>, Previous: <a href="#M68HC11_002dSyntax" accesskey="p" rel="prev">M68HC11-Syntax</a>, Up: <a href="#M68HC11_002dDependent" accesskey="u" rel="up">M68HC11-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20067. </div>
  20068. <span id="Symbolic-Operand-Modifiers-1"></span><h4 class="subsection">9.24.3 Symbolic Operand Modifiers</h4>
  20069. <span id="index-M68HC11-modifiers"></span>
  20070. <span id="index-syntax_002c-M68HC11-1"></span>
  20071. <p>The assembler supports several modifiers when using symbol addresses
  20072. in 68HC11 and 68HC12 instruction operands. The general syntax is
  20073. the following:
  20074. </p>
  20075. <div class="example">
  20076. <pre class="example">%modifier(symbol)
  20077. </pre></div>
  20078. <dl compact="compact">
  20079. <dd><span id="index-symbol-modifiers-3"></span>
  20080. </dd>
  20081. <dt><code>%addr</code></dt>
  20082. <dd><p>This modifier indicates to the assembler and linker to use
  20083. the 16-bit physical address corresponding to the symbol. This is intended
  20084. to be used on memory window systems to map a symbol in the memory bank window.
  20085. If the symbol is in a memory expansion part, the physical address
  20086. corresponds to the symbol address within the memory bank window.
  20087. If the symbol is not in a memory expansion part, this is the symbol address
  20088. (using or not using the %addr modifier has no effect in that case).
  20089. </p>
  20090. </dd>
  20091. <dt><code>%page</code></dt>
  20092. <dd><p>This modifier indicates to use the memory page number corresponding
  20093. to the symbol. If the symbol is in a memory expansion part, its page
  20094. number is computed by the linker as a number used to map the page containing
  20095. the symbol in the memory bank window. If the symbol is not in a memory
  20096. expansion part, the page number is 0.
  20097. </p>
  20098. </dd>
  20099. <dt><code>%hi</code></dt>
  20100. <dd><p>This modifier indicates to use the 8-bit high part of the physical
  20101. address of the symbol.
  20102. </p>
  20103. </dd>
  20104. <dt><code>%lo</code></dt>
  20105. <dd><p>This modifier indicates to use the 8-bit low part of the physical
  20106. address of the symbol.
  20107. </p>
  20108. </dd>
  20109. </dl>
  20110. <p>For example a 68HC12 call to a function &lsquo;<samp>foo_example</samp>&rsquo; stored in memory
  20111. expansion part could be written as follows:
  20112. </p>
  20113. <div class="example">
  20114. <pre class="example">call %addr(foo_example),%page(foo_example)
  20115. </pre></div>
  20116. <p>and this is equivalent to
  20117. </p>
  20118. <div class="example">
  20119. <pre class="example">call foo_example
  20120. </pre></div>
  20121. <p>And for 68HC11 it could be written as follows:
  20122. </p>
  20123. <div class="example">
  20124. <pre class="example">ldab #%page(foo_example)
  20125. stab _page_switch
  20126. jsr %addr(foo_example)
  20127. </pre></div>
  20128. <hr>
  20129. <span id="M68HC11_002dDirectives"></span><div class="header">
  20130. <p>
  20131. Next: <a href="#M68HC11_002dFloat" accesskey="n" rel="next">M68HC11-Float</a>, Previous: <a href="#M68HC11_002dModifiers" accesskey="p" rel="prev">M68HC11-Modifiers</a>, Up: <a href="#M68HC11_002dDependent" accesskey="u" rel="up">M68HC11-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20132. </div>
  20133. <span id="Assembler-Directives-2"></span><h4 class="subsection">9.24.4 Assembler Directives</h4>
  20134. <span id="index-assembler-directives_002c-M68HC11"></span>
  20135. <span id="index-assembler-directives_002c-M68HC12"></span>
  20136. <span id="index-M68HC11-assembler-directives"></span>
  20137. <span id="index-M68HC12-assembler-directives"></span>
  20138. <p>The 68HC11 and 68HC12 version of <code>as</code> have the following
  20139. specific assembler directives:
  20140. </p>
  20141. <dl compact="compact">
  20142. <dt><code>.relax</code></dt>
  20143. <dd><span id="index-assembler-directive-_002erelax_002c-M68HC11"></span>
  20144. <span id="index-M68HC11-assembler-directive-_002erelax"></span>
  20145. <p>The relax directive is used by the &lsquo;<samp>GNU Compiler</samp>&rsquo; to emit a specific
  20146. relocation to mark a group of instructions for linker relaxation.
  20147. The sequence of instructions within the group must be known to the linker
  20148. so that relaxation can be performed.
  20149. </p>
  20150. </dd>
  20151. <dt><code>.mode [mshort|mlong|mshort-double|mlong-double]</code></dt>
  20152. <dd><span id="index-assembler-directive-_002emode_002c-M68HC11"></span>
  20153. <span id="index-M68HC11-assembler-directive-_002emode"></span>
  20154. <p>This directive specifies the ABI. It overrides the &lsquo;<samp>-mshort</samp>&rsquo;,
  20155. &lsquo;<samp>-mlong</samp>&rsquo;, &lsquo;<samp>-mshort-double</samp>&rsquo; and &lsquo;<samp>-mlong-double</samp>&rsquo; options.
  20156. </p>
  20157. </dd>
  20158. <dt><code>.far <var>symbol</var></code></dt>
  20159. <dd><span id="index-assembler-directive-_002efar_002c-M68HC11"></span>
  20160. <span id="index-M68HC11-assembler-directive-_002efar"></span>
  20161. <p>This directive marks the symbol as a &lsquo;<samp>far</samp>&rsquo; symbol meaning that it
  20162. uses a &lsquo;<samp>call/rtc</samp>&rsquo; calling convention as opposed to &lsquo;<samp>jsr/rts</samp>&rsquo;.
  20163. During a final link, the linker will identify references to the &lsquo;<samp>far</samp>&rsquo;
  20164. symbol and will verify the proper calling convention.
  20165. </p>
  20166. </dd>
  20167. <dt><code>.interrupt <var>symbol</var></code></dt>
  20168. <dd><span id="index-assembler-directive-_002einterrupt_002c-M68HC11"></span>
  20169. <span id="index-M68HC11-assembler-directive-_002einterrupt"></span>
  20170. <p>This directive marks the symbol as an interrupt entry point.
  20171. This information is then used by the debugger to correctly unwind the
  20172. frame across interrupts.
  20173. </p>
  20174. </dd>
  20175. <dt><code>.xrefb <var>symbol</var></code></dt>
  20176. <dd><span id="index-assembler-directive-_002exrefb_002c-M68HC11"></span>
  20177. <span id="index-M68HC11-assembler-directive-_002exrefb"></span>
  20178. <p>This directive is defined for compatibility with the
  20179. &lsquo;<samp>Specification for Motorola 8 and 16-Bit Assembly Language Input
  20180. Standard</samp>&rsquo; and is ignored.
  20181. </p>
  20182. </dd>
  20183. </dl>
  20184. <hr>
  20185. <span id="M68HC11_002dFloat"></span><div class="header">
  20186. <p>
  20187. Next: <a href="#M68HC11_002dopcodes" accesskey="n" rel="next">M68HC11-opcodes</a>, Previous: <a href="#M68HC11_002dDirectives" accesskey="p" rel="prev">M68HC11-Directives</a>, Up: <a href="#M68HC11_002dDependent" accesskey="u" rel="up">M68HC11-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20188. </div>
  20189. <span id="Floating-Point-9"></span><h4 class="subsection">9.24.5 Floating Point</h4>
  20190. <span id="index-floating-point_002c-M68HC11"></span>
  20191. <span id="index-M68HC11-floating-point"></span>
  20192. <p>Packed decimal (P) format floating literals are not supported.
  20193. Feel free to add the code!
  20194. </p>
  20195. <p>The floating point formats generated by directives are these.
  20196. </p>
  20197. <dl compact="compact">
  20198. <dd><span id="index-float-directive_002c-M68HC11"></span>
  20199. </dd>
  20200. <dt><code>.float</code></dt>
  20201. <dd><p><code>Single</code> precision floating point constants.
  20202. </p>
  20203. <span id="index-double-directive_002c-M68HC11"></span>
  20204. </dd>
  20205. <dt><code>.double</code></dt>
  20206. <dd><p><code>Double</code> precision floating point constants.
  20207. </p>
  20208. <span id="index-extend-directive-M68HC11"></span>
  20209. <span id="index-ldouble-directive-M68HC11"></span>
  20210. </dd>
  20211. <dt><code>.extend</code></dt>
  20212. <dt><code>.ldouble</code></dt>
  20213. <dd><p><code>Extended</code> precision (<code>long double</code>) floating point constants.
  20214. </p></dd>
  20215. </dl>
  20216. <hr>
  20217. <span id="M68HC11_002dopcodes"></span><div class="header">
  20218. <p>
  20219. Previous: <a href="#M68HC11_002dFloat" accesskey="p" rel="prev">M68HC11-Float</a>, Up: <a href="#M68HC11_002dDependent" accesskey="u" rel="up">M68HC11-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20220. </div>
  20221. <span id="Opcodes-12"></span><h4 class="subsection">9.24.6 Opcodes</h4>
  20222. <span id="index-M68HC11-opcodes"></span>
  20223. <span id="index-opcodes_002c-M68HC11"></span>
  20224. <span id="index-instruction-set_002c-M68HC11"></span>
  20225. <table class="menu" border="0" cellspacing="0">
  20226. <tr><td align="left" valign="top">&bull; <a href="#M68HC11_002dBranch" accesskey="1">M68HC11-Branch</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Branch Improvement
  20227. </td></tr>
  20228. </table>
  20229. <hr>
  20230. <span id="M68HC11_002dBranch"></span><div class="header">
  20231. <p>
  20232. Up: <a href="#M68HC11_002dopcodes" accesskey="u" rel="up">M68HC11-opcodes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20233. </div>
  20234. <span id="Branch-Improvement-1"></span><h4 class="subsubsection">9.24.6.1 Branch Improvement</h4>
  20235. <span id="index-pseudo_002dopcodes_002c-M68HC11"></span>
  20236. <span id="index-M68HC11-pseudo_002dopcodes"></span>
  20237. <span id="index-branch-improvement_002c-M68HC11"></span>
  20238. <span id="index-M68HC11-branch-improvement"></span>
  20239. <p>Certain pseudo opcodes are permitted for branch instructions.
  20240. They expand to the shortest branch instruction that reach the
  20241. target. Generally these mnemonics are made by prepending &lsquo;<samp>j</samp>&rsquo; to
  20242. the start of Motorola mnemonic. These pseudo opcodes are not affected
  20243. by the &lsquo;<samp>--short-branches</samp>&rsquo; or &lsquo;<samp>--force-long-branches</samp>&rsquo; options.
  20244. </p>
  20245. <p>The following table summarizes the pseudo-operations.
  20246. </p>
  20247. <div class="example">
  20248. <pre class="example"> Displacement Width
  20249. +-------------------------------------------------------------+
  20250. | Options |
  20251. | --short-branches --force-long-branches |
  20252. +--------------------------+----------------------------------+
  20253. Op |BYTE WORD | BYTE WORD |
  20254. +--------------------------+----------------------------------+
  20255. bsr | bsr &lt;pc-rel&gt; &lt;error&gt; | jsr &lt;abs&gt; |
  20256. bra | bra &lt;pc-rel&gt; &lt;error&gt; | jmp &lt;abs&gt; |
  20257. jbsr | bsr &lt;pc-rel&gt; jsr &lt;abs&gt; | bsr &lt;pc-rel&gt; jsr &lt;abs&gt; |
  20258. jbra | bra &lt;pc-rel&gt; jmp &lt;abs&gt; | bra &lt;pc-rel&gt; jmp &lt;abs&gt; |
  20259. bXX | bXX &lt;pc-rel&gt; &lt;error&gt; | bNX +3; jmp &lt;abs&gt; |
  20260. jbXX | bXX &lt;pc-rel&gt; bNX +3; | bXX &lt;pc-rel&gt; bNX +3; jmp &lt;abs&gt; |
  20261. | jmp &lt;abs&gt; | |
  20262. +--------------------------+----------------------------------+
  20263. XX: condition
  20264. NX: negative of condition XX
  20265. </pre></div>
  20266. <dl compact="compact">
  20267. <dt><code>jbsr</code></dt>
  20268. <dt><code>jbra</code></dt>
  20269. <dd><p>These are the simplest jump pseudo-operations; they always map to one
  20270. particular machine instruction, depending on the displacement to the
  20271. branch target.
  20272. </p>
  20273. </dd>
  20274. <dt><code>jb<var>XX</var></code></dt>
  20275. <dd><p>Here, &lsquo;<samp>jb<var>XX</var></samp>&rsquo; stands for an entire family of pseudo-operations,
  20276. where <var>XX</var> is a conditional branch or condition-code test. The full
  20277. list of pseudo-ops in this family is:
  20278. </p><div class="example">
  20279. <pre class="example"> jbcc jbeq jbge jbgt jbhi jbvs jbpl jblo
  20280. jbcs jbne jblt jble jbls jbvc jbmi
  20281. </pre></div>
  20282. <p>For the cases of non-PC relative displacements and long displacements,
  20283. <code>as</code> issues a longer code fragment in terms of
  20284. <var>NX</var>, the opposite condition to <var>XX</var>. For example, for the
  20285. non-PC relative case:
  20286. </p><div class="example">
  20287. <pre class="example"> jb<var>XX</var> foo
  20288. </pre></div>
  20289. <p>gives
  20290. </p><div class="example">
  20291. <pre class="example"> b<var>NX</var>s oof
  20292. jmp foo
  20293. oof:
  20294. </pre></div>
  20295. </dd>
  20296. </dl>
  20297. <hr>
  20298. <span id="S12Z_002dDependent"></span><div class="header">
  20299. <p>
  20300. Next: <a href="#Meta_002dDependent" accesskey="n" rel="next">Meta-Dependent</a>, Previous: <a href="#M68HC11_002dDependent" accesskey="p" rel="prev">M68HC11-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20301. </div>
  20302. <span id="S12Z-Dependent-Features"></span><h3 class="section">9.25 S12Z Dependent Features</h3>
  20303. <p>The Freescale S12Z version of <code>as</code> has a few machine
  20304. dependent features.
  20305. </p>
  20306. <span id="index-S12Z-support"></span>
  20307. <table class="menu" border="0" cellspacing="0">
  20308. <tr><td align="left" valign="top">&bull; <a href="#S12Z-Options" accesskey="1">S12Z Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">S12Z Options
  20309. </td></tr>
  20310. <tr><td align="left" valign="top">&bull; <a href="#S12Z-Syntax" accesskey="2">S12Z Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  20311. </td></tr>
  20312. </table>
  20313. <hr>
  20314. <span id="S12Z-Options"></span><div class="header">
  20315. <p>
  20316. Next: <a href="#S12Z-Syntax" accesskey="n" rel="next">S12Z Syntax</a>, Up: <a href="#S12Z_002dDependent" accesskey="u" rel="up">S12Z-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20317. </div>
  20318. <span id="S12Z-Options-1"></span><h4 class="subsection">9.25.1 S12Z Options</h4>
  20319. <span id="index-options_002c-S12Z"></span>
  20320. <span id="index-S12Z-options"></span>
  20321. <p>The S12Z version of <code>as</code> recognizes the following options:
  20322. </p>
  20323. <dl compact="compact">
  20324. <dt>&lsquo;<samp>-mreg-prefix=<var>prefix</var></samp>&rsquo;</dt>
  20325. <dd><span id="index-_002dmreg_002dprefix_003dprefix-option_002c-reg_002dprefix"></span>
  20326. <p>You can use the &lsquo;<samp>-mreg-prefix=<var>pfx</var></samp>&rsquo; option to indicate
  20327. that the assembler should expect all register names to be prefixed with the
  20328. string <var>pfx</var>.
  20329. </p>
  20330. <p>For an explanation of what this means and why it might be needed,
  20331. see <a href="#S12Z-Register-Notation">S12Z Register Notation</a>.
  20332. </p>
  20333. </dd>
  20334. <dt>&lsquo;<samp>-mdollar-hex</samp>&rsquo;</dt>
  20335. <dd><span id="index-_002dmdollar_002dhex-option_002c-dollar_002dhex"></span>
  20336. <span id="index-hexadecimal-prefix_002c-S12Z"></span>
  20337. <p>The &lsquo;<samp>-mdollar-hex</samp>&rsquo; option affects the way that literal hexadecimal constants
  20338. are represented. When this option is specified, the assembler will consider
  20339. the &lsquo;<samp>$</samp>&rsquo; character as the start of a hexadecimal integer constant. Without
  20340. this option, the standard value of &lsquo;<samp>0x</samp>&rsquo; is expected.
  20341. </p>
  20342. <p>If you use this option, then you cannot have symbol names starting with &lsquo;<samp>$</samp>&rsquo;.
  20343. &lsquo;<samp>-mdollar-hex</samp>&rsquo; is implied if the &lsquo;<samp>--traditional-format</samp>&rsquo;
  20344. (see <a href="#traditional_002dformat">traditional-format</a>) is used.
  20345. </p></dd>
  20346. </dl>
  20347. <hr>
  20348. <span id="S12Z-Syntax"></span><div class="header">
  20349. <p>
  20350. Previous: <a href="#S12Z-Options" accesskey="p" rel="prev">S12Z Options</a>, Up: <a href="#S12Z_002dDependent" accesskey="u" rel="up">S12Z-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20351. </div>
  20352. <span id="Syntax-18"></span><h4 class="subsection">9.25.2 Syntax</h4>
  20353. <table class="menu" border="0" cellspacing="0">
  20354. <tr><td align="left" valign="top">&bull; <a href="#S12Z-Syntax-Overview" accesskey="1">S12Z Syntax Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">General description
  20355. </td></tr>
  20356. <tr><td align="left" valign="top">&bull; <a href="#S12Z-Addressing-Modes" accesskey="2">S12Z Addressing Modes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Operands and their semantics
  20357. </td></tr>
  20358. <tr><td align="left" valign="top">&bull; <a href="#S12Z-Register-Notation" accesskey="3">S12Z Register Notation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to refer to registers
  20359. </td></tr>
  20360. </table>
  20361. <span id="index-S12Z-syntax"></span>
  20362. <span id="index-syntax_002c-S12Z"></span>
  20363. <hr>
  20364. <span id="S12Z-Syntax-Overview"></span><div class="header">
  20365. <p>
  20366. Next: <a href="#S12Z-Addressing-Modes" accesskey="n" rel="next">S12Z Addressing Modes</a>, Up: <a href="#S12Z-Syntax" accesskey="u" rel="up">S12Z Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20367. </div>
  20368. <span id="Overview-2"></span><h4 class="subsubsection">9.25.2.1 Overview</h4>
  20369. <p>In the S12Z syntax, the instruction name comes first and it may
  20370. be followed by one, or by several operands.
  20371. In most cases the maximum number of operands is three.
  20372. Operands are separated by a comma (&lsquo;<samp>,</samp>&rsquo;).
  20373. A comma however does not act as a separator if it appears within parentheses
  20374. (&lsquo;<samp>()</samp>&rsquo;) or within square brackets (&lsquo;<samp>[]</samp>&rsquo;).
  20375. <code>as</code> will complain if too many, too few or inappropriate operands
  20376. are specified for a given instruction.
  20377. </p>
  20378. <p>Some instructions accept and (in certain situations require) a suffix
  20379. indicating the size of the operand.
  20380. The suffix is separated from the instruction name by a period (&lsquo;<samp>.</samp>&rsquo;)
  20381. and may be one of &lsquo;<samp>b</samp>&rsquo;, &lsquo;<samp>w</samp>&rsquo;, &lsquo;<samp>p</samp>&rsquo; or &lsquo;<samp>l</samp>&rsquo; indicating
  20382. &lsquo;byte&rsquo; (a single byte), &lsquo;word&rsquo; (2 bytes), &lsquo;pointer&rsquo; (3 bytes) or &lsquo;long&rsquo; (4 bytes)
  20383. respectively.
  20384. </p>
  20385. <p>Example:
  20386. </p>
  20387. <div class="example">
  20388. <pre class="example"> bset.b 0xA98, #5
  20389. mov.b #6, 0x2409
  20390. ld d0, #4
  20391. mov.l (d0, x), 0x2409
  20392. inc d0
  20393. cmp d0, #12
  20394. blt *-4
  20395. lea x, 0x2409
  20396. st y, (1, x)
  20397. </pre></div>
  20398. <span id="index-line-comment-character_002c-S12Z"></span>
  20399. <p>The presence of a &lsquo;<samp>;</samp>&rsquo; character anywhere
  20400. on a line indicates the start of a comment that extends to the end of
  20401. that line.
  20402. </p>
  20403. <p>A &lsquo;<samp>*</samp>&rsquo; or a &lsquo;<samp>#</samp>&rsquo; character at the start of a line also
  20404. introduces a line comment, but these characters do not work elsewhere
  20405. on the line. If the first character of the line is a &lsquo;<samp>#</samp>&rsquo; then as
  20406. well as starting a comment, the line could also be logical line number
  20407. directive (see <a href="#Comments">Comments</a>) or a preprocessor control command
  20408. (see <a href="#Preprocessing">Preprocessing</a>).
  20409. </p>
  20410. <span id="index-line-separator_002c-S12Z"></span>
  20411. <span id="index-statement-separator_002c-S12Z"></span>
  20412. <span id="index-S12Z-line-separator"></span>
  20413. <p>The S12Z assembler does not currently support a line separator
  20414. character.
  20415. </p>
  20416. <hr>
  20417. <span id="S12Z-Addressing-Modes"></span><div class="header">
  20418. <p>
  20419. Next: <a href="#S12Z-Register-Notation" accesskey="n" rel="next">S12Z Register Notation</a>, Previous: <a href="#S12Z-Syntax-Overview" accesskey="p" rel="prev">S12Z Syntax Overview</a>, Up: <a href="#S12Z-Syntax" accesskey="u" rel="up">S12Z Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20420. </div>
  20421. <span id="Addressing-Modes-3"></span><h4 class="subsubsection">9.25.2.2 Addressing Modes</h4>
  20422. <span id="index-S12Z-addressing-modes"></span>
  20423. <span id="index-addressing-modes_002c-S12Z"></span>
  20424. <p>The following addressing modes are understood for the S12Z.
  20425. </p><dl compact="compact">
  20426. <dt><em>Immediate</em></dt>
  20427. <dd><p>&lsquo;<samp>#<var>number</var></samp>&rsquo;
  20428. </p>
  20429. </dd>
  20430. <dt><em>Immediate Bit Field</em></dt>
  20431. <dd><p>&lsquo;<samp>#<var>width</var>:<var>offset</var></samp>&rsquo;
  20432. </p>
  20433. <p>Bit field instructions in the immediate mode require the width and offset to
  20434. be specified.
  20435. The <var>width</var> parameter specifies the number of bits in the field.
  20436. It should be a number in the range [1,32].
  20437. <var>Offset</var> determines the position within the field where the operation
  20438. should start.
  20439. It should be a number in the range [0,31].
  20440. </p>
  20441. </dd>
  20442. <dt><em>Relative</em></dt>
  20443. <dd><p>&lsquo;<samp>*<var>symbol</var></samp>&rsquo;, or &lsquo;<samp>*[+-]<var>digits</var></samp>&rsquo;
  20444. </p>
  20445. <p>Program counter relative addresses have a width of 15 bits.
  20446. Thus, they must be within the range [-32768, 32767].
  20447. </p>
  20448. </dd>
  20449. <dt><em>Register</em></dt>
  20450. <dd><p>&lsquo;<samp><var>reg</var></samp>&rsquo;
  20451. </p>
  20452. <span id="index-register-names_002c-S12Z"></span>
  20453. <p>Some instructions accept a register as an operand.
  20454. In general, <var>reg</var> may be a
  20455. data register (&lsquo;<samp>D0</samp>&rsquo;, &lsquo;<samp>D1</samp>&rsquo; &hellip; &lsquo;<samp>D7</samp>&rsquo;),
  20456. the &lsquo;<samp>X</samp>&rsquo; register or the &lsquo;<samp>Y</samp>&rsquo; register.
  20457. </p>
  20458. <p>A few instructions accept as an argument the stack pointer
  20459. register (&lsquo;<samp>S</samp>&rsquo;), and/or the program counter (&lsquo;<samp>P</samp>&rsquo;).
  20460. </p>
  20461. <p>Some very special instructions accept arguments which refer to the
  20462. condition code register. For these arguments the syntax is
  20463. &lsquo;<samp>CCR</samp>&rsquo;, &lsquo;<samp>CCH</samp>&rsquo; or &lsquo;<samp>CCL</samp>&rsquo; which refer to the complete
  20464. condition code register, the condition code register high byte
  20465. and the condition code register low byte respectively.
  20466. </p>
  20467. </dd>
  20468. <dt><em>Absolute Direct</em></dt>
  20469. <dd><p>&lsquo;<samp><var>symbol</var></samp>&rsquo;, or &lsquo;<samp><var>digits</var></samp>&rsquo;
  20470. </p>
  20471. </dd>
  20472. <dt><em>Absolute Indirect</em></dt>
  20473. <dd><p>&lsquo;<samp>[<var>symbol</var></samp>&rsquo;, or &lsquo;<samp><var>digits</var>]</samp>&rsquo;
  20474. </p>
  20475. </dd>
  20476. <dt><em>Constant Offset Indexed</em></dt>
  20477. <dd><p>&lsquo;<samp>(<var>number</var>,<var>reg</var>)</samp>&rsquo;
  20478. </p>
  20479. <p><var>Reg</var> may be either &lsquo;<samp>X</samp>&rsquo;, &lsquo;<samp>Y</samp>&rsquo;, &lsquo;<samp>S</samp>&rsquo; or
  20480. &lsquo;<samp>P</samp>&rsquo; or one of the data registers &lsquo;<samp>D0</samp>&rsquo;, &lsquo;<samp>D1</samp>&rsquo; &hellip;
  20481. &lsquo;<samp>D7</samp>&rsquo;.
  20482. If any of the registers &lsquo;<samp>D2</samp>&rsquo; &hellip; &lsquo;<samp>D5</samp>&rsquo; are specified, then the
  20483. register value is treated as a signed value.
  20484. Otherwise it is treated as unsigned.
  20485. <var>Number</var> may be any integer in the range [-8388608,8388607].
  20486. </p>
  20487. </dd>
  20488. <dt><em>Offset Indexed Indirect</em></dt>
  20489. <dd><p>&lsquo;<samp>[<var>number</var>,<var>reg</var>]</samp>&rsquo;
  20490. </p>
  20491. <p><var>Reg</var> may be either &lsquo;<samp>X</samp>&rsquo;, &lsquo;<samp>Y</samp>&rsquo;, &lsquo;<samp>S</samp>&rsquo; or
  20492. &lsquo;<samp>P</samp>&rsquo;.
  20493. <var>Number</var> may be any integer in the range [-8388608,8388607].
  20494. </p>
  20495. </dd>
  20496. <dt><em>Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement</em></dt>
  20497. <dd><p>&lsquo;<samp>-<var>reg</var></samp>&rsquo;,
  20498. &lsquo;<samp>+<var>reg</var></samp>&rsquo;,
  20499. &lsquo;<samp><var>reg</var>-</samp>&rsquo; or
  20500. &lsquo;<samp><var>reg</var>+</samp>&rsquo;
  20501. </p>
  20502. <p>This addressing mode is typically used to access a value at an address,
  20503. and simultaneously to increment/decrement the register pointing to that
  20504. address.
  20505. Thus <var>reg</var> may be any of the 24 bit registers &lsquo;<samp>X</samp>&rsquo;, &lsquo;<samp>Y</samp>&rsquo;, or
  20506. &lsquo;<samp>S</samp>&rsquo;.
  20507. Pre-increment and post-decrement are not available for
  20508. register &lsquo;<samp>S</samp>&rsquo; (only post-increment and pre-decrement are available).
  20509. </p>
  20510. </dd>
  20511. <dt><em>Register Offset Direct</em></dt>
  20512. <dd><p>&lsquo;<samp>(<var>data-reg</var>,<var>reg</var>)</samp>&rsquo;
  20513. </p>
  20514. <p><var>Reg</var> can be either &lsquo;<samp>X</samp>&rsquo;, &lsquo;<samp>Y</samp>&rsquo;, or &lsquo;<samp>S</samp>&rsquo;.
  20515. <var>Data-reg</var>
  20516. must be one of the data registers &lsquo;<samp>D0</samp>&rsquo;, &lsquo;<samp>D1</samp>&rsquo; &hellip; &lsquo;<samp>D7</samp>&rsquo;.
  20517. If any of the registers &lsquo;<samp>D2</samp>&rsquo; &hellip; &lsquo;<samp>D5</samp>&rsquo; are specified, then
  20518. the register value is treated as a signed value.
  20519. Otherwise it is treated as unsigned.
  20520. </p>
  20521. </dd>
  20522. <dt><em>Register Offset Indirect</em></dt>
  20523. <dd><p>&lsquo;<samp>[<var>data-reg</var>,<var>reg</var>]</samp>&rsquo;
  20524. </p>
  20525. <p><var>Reg</var> can be either &lsquo;<samp>X</samp>&rsquo; or &lsquo;<samp>Y</samp>&rsquo;.
  20526. <var>Data-reg</var>
  20527. must be one of the data registers &lsquo;<samp>D0</samp>&rsquo;, &lsquo;<samp>D1</samp>&rsquo; &hellip; &lsquo;<samp>D7</samp>&rsquo;.
  20528. If any of the registers &lsquo;<samp>D2</samp>&rsquo; &hellip; &lsquo;<samp>D5</samp>&rsquo; are specified, then
  20529. the register value is treated as a signed value.
  20530. Otherwise it is treated as unsigned.
  20531. </p></dd>
  20532. </dl>
  20533. <p>For example:
  20534. </p>
  20535. <div class="example">
  20536. <pre class="example"> trap #197 ;; Immediate mode
  20537. bra *+49 ;; Relative mode
  20538. bra .L0 ;; ditto
  20539. jmp 0xFE0034 ;; Absolute direct mode
  20540. jmp [0xFD0012] ;; Absolute indirect mode
  20541. inc.b (4,x) ;; Constant offset indexed mode
  20542. jsr (45, d0) ;; ditto
  20543. dec.w [4,y] ;; Constant offset indexed indirect mode
  20544. clr.p (-s) ;; Pre-decrement mode
  20545. neg.l (d0, s) ;; Register offset direct mode
  20546. com.b [d1, x] ;; Register offset indirect mode
  20547. psh cch ;; Register mode
  20548. </pre></div>
  20549. <hr>
  20550. <span id="S12Z-Register-Notation"></span><div class="header">
  20551. <p>
  20552. Previous: <a href="#S12Z-Addressing-Modes" accesskey="p" rel="prev">S12Z Addressing Modes</a>, Up: <a href="#S12Z-Syntax" accesskey="u" rel="up">S12Z Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20553. </div>
  20554. <span id="Register-Notation"></span><h4 class="subsubsection">9.25.2.3 Register Notation</h4>
  20555. <span id="index-register-notation_002c-S12Z"></span>
  20556. <p>Without a register prefix (see <a href="#S12Z-Options">S12Z Options</a>), S12Z assembler code is expected in the traditional
  20557. format like this:
  20558. </p><div class="example">
  20559. <pre class="example">lea s, (-2,s)
  20560. st d2, (0,s)
  20561. ld x, symbol
  20562. tfr d2, d6
  20563. cmp d6, #1532
  20564. </pre></div>
  20565. <p>However, if <code>as</code> is started with (for example) &lsquo;<samp>-mreg-prefix=%</samp>&rsquo;
  20566. then all register names must be prefixed with &lsquo;<samp>%</samp>&rsquo; as follows:
  20567. </p><div class="example">
  20568. <pre class="example">lea %s, (-2,%s)
  20569. st %d2, (0,%s)
  20570. ld %x, symbol
  20571. tfr %d2, %d6
  20572. cmp %d6, #1532
  20573. </pre></div>
  20574. <p>The register prefix feature is intended to be used by compilers
  20575. to avoid ambiguity between symbols and register names.
  20576. Consider the following assembler instruction:
  20577. </p><div class="example">
  20578. <pre class="example">st d0, d1
  20579. </pre></div>
  20580. <p>The destination operand of this instruction could either refer to the register
  20581. &lsquo;<samp>D1</samp>&rsquo;, or it could refer to the symbol named &ldquo;d1&rdquo;.
  20582. If the latter is intended then <code>as</code> must be invoked with
  20583. &lsquo;<samp>-mreg-prefix=<var>pfx</var></samp>&rsquo; and the code written as
  20584. </p><div class="example">
  20585. <pre class="example">st <var>pfx</var>d0, d1
  20586. </pre></div>
  20587. <p>where <var>pfx</var> is the chosen register prefix.
  20588. For this reason, compiler back-ends should choose a register prefix which
  20589. cannot be confused with a symbol name.
  20590. </p>
  20591. <hr>
  20592. <span id="Meta_002dDependent"></span><div class="header">
  20593. <p>
  20594. Next: <a href="#MicroBlaze_002dDependent" accesskey="n" rel="next">MicroBlaze-Dependent</a>, Previous: <a href="#S12Z_002dDependent" accesskey="p" rel="prev">S12Z-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20595. </div>
  20596. <span id="Meta-Dependent-Features"></span><h3 class="section">9.26 Meta Dependent Features</h3>
  20597. <span id="index-Meta-support"></span>
  20598. <table class="menu" border="0" cellspacing="0">
  20599. <tr><td align="left" valign="top">&bull; <a href="#Meta-Options" accesskey="1">Meta Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  20600. </td></tr>
  20601. <tr><td align="left" valign="top">&bull; <a href="#Meta-Syntax" accesskey="2">Meta Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Meta Assembler Syntax
  20602. </td></tr>
  20603. </table>
  20604. <hr>
  20605. <span id="Meta-Options"></span><div class="header">
  20606. <p>
  20607. Next: <a href="#Meta-Syntax" accesskey="n" rel="next">Meta Syntax</a>, Up: <a href="#Meta_002dDependent" accesskey="u" rel="up">Meta-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20608. </div>
  20609. <span id="Options-14"></span><h4 class="subsection">9.26.1 Options</h4>
  20610. <span id="index-options-for-Meta"></span>
  20611. <span id="index-Meta-options"></span>
  20612. <span id="index-architectures_002c-Meta"></span>
  20613. <span id="index-Meta-architectures"></span>
  20614. <p>The Imagination Technologies Meta architecture is implemented in a
  20615. number of versions, with each new version adding new features such as
  20616. instructions and registers. For precise details of what instructions
  20617. each core supports, please see the chip&rsquo;s technical reference manual.
  20618. </p>
  20619. <p>The following table lists all available Meta options.
  20620. </p>
  20621. <dl compact="compact">
  20622. <dt><code>-mcpu=metac11</code></dt>
  20623. <dd><p>Generate code for Meta 1.1.
  20624. </p>
  20625. </dd>
  20626. <dt><code>-mcpu=metac12</code></dt>
  20627. <dd><p>Generate code for Meta 1.2.
  20628. </p>
  20629. </dd>
  20630. <dt><code>-mcpu=metac21</code></dt>
  20631. <dd><p>Generate code for Meta 2.1.
  20632. </p>
  20633. </dd>
  20634. <dt><code>-mfpu=metac21</code></dt>
  20635. <dd><p>Allow code to use FPU hardware of Meta 2.1.
  20636. </p>
  20637. </dd>
  20638. </dl>
  20639. <hr>
  20640. <span id="Meta-Syntax"></span><div class="header">
  20641. <p>
  20642. Previous: <a href="#Meta-Options" accesskey="p" rel="prev">Meta Options</a>, Up: <a href="#Meta_002dDependent" accesskey="u" rel="up">Meta-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20643. </div>
  20644. <span id="Syntax-19"></span><h4 class="subsection">9.26.2 Syntax</h4>
  20645. <table class="menu" border="0" cellspacing="0">
  20646. <tr><td align="left" valign="top">&bull; <a href="#Meta_002dChars" accesskey="1">Meta-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  20647. </td></tr>
  20648. <tr><td align="left" valign="top">&bull; <a href="#Meta_002dRegs" accesskey="2">Meta-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  20649. </td></tr>
  20650. </table>
  20651. <hr>
  20652. <span id="Meta_002dChars"></span><div class="header">
  20653. <p>
  20654. Next: <a href="#Meta_002dRegs" accesskey="n" rel="next">Meta-Regs</a>, Up: <a href="#Meta-Syntax" accesskey="u" rel="up">Meta Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20655. </div>
  20656. <span id="Special-Characters-17"></span><h4 class="subsubsection">9.26.2.1 Special Characters</h4>
  20657. <span id="index-line-comment-character_002c-Meta"></span>
  20658. <span id="index-Meta-line-comment-character"></span>
  20659. <p>&lsquo;<samp>!</samp>&rsquo; is the line comment character.
  20660. </p>
  20661. <span id="index-line-separator_002c-Meta"></span>
  20662. <span id="index-statement-separator_002c-Meta"></span>
  20663. <span id="index-Meta-line-separator"></span>
  20664. <p>You can use &lsquo;<samp>;</samp>&rsquo; instead of a newline to separate statements.
  20665. </p>
  20666. <span id="index-symbol-names_002c-_0024-in-2"></span>
  20667. <span id="index-_0024-in-symbol-names-2"></span>
  20668. <p>Since &lsquo;<samp>$</samp>&rsquo; has no special meaning, you may use it in symbol names.
  20669. </p>
  20670. <hr>
  20671. <span id="Meta_002dRegs"></span><div class="header">
  20672. <p>
  20673. Previous: <a href="#Meta_002dChars" accesskey="p" rel="prev">Meta-Chars</a>, Up: <a href="#Meta-Syntax" accesskey="u" rel="up">Meta Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20674. </div>
  20675. <span id="Register-Names-10"></span><h4 class="subsubsection">9.26.2.2 Register Names</h4>
  20676. <span id="index-Meta-registers"></span>
  20677. <span id="index-registers_002c-Meta"></span>
  20678. <p>Registers can be specified either using their mnemonic names, such as
  20679. &lsquo;<samp>D0Re0</samp>&rsquo;, or using the unit plus register number separated by a &lsquo;<samp>.</samp>&rsquo;,
  20680. such as &lsquo;<samp>D0.0</samp>&rsquo;.
  20681. </p>
  20682. <hr>
  20683. <span id="MicroBlaze_002dDependent"></span><div class="header">
  20684. <p>
  20685. Next: <a href="#MIPS_002dDependent" accesskey="n" rel="next">MIPS-Dependent</a>, Previous: <a href="#Meta_002dDependent" accesskey="p" rel="prev">Meta-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20686. </div>
  20687. <span id="MicroBlaze-Dependent-Features"></span><h3 class="section">9.27 MicroBlaze Dependent Features</h3>
  20688. <span id="index-MicroBlaze-architectures"></span>
  20689. <p>The Xilinx MicroBlaze processor family includes several variants, all using
  20690. the same core instruction set. This chapter covers features of the <small>GNU</small>
  20691. assembler that are specific to the MicroBlaze architecture. For details about
  20692. the MicroBlaze instruction set, please see the <cite>MicroBlaze Processor
  20693. Reference Guide (UG081)</cite> available at www.xilinx.com.
  20694. </p>
  20695. <span id="index-MicroBlaze-support"></span>
  20696. <table class="menu" border="0" cellspacing="0">
  20697. <tr><td align="left" valign="top">&bull; <a href="#MicroBlaze-Directives" accesskey="1">MicroBlaze Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives for MicroBlaze Processors.
  20698. </td></tr>
  20699. <tr><td align="left" valign="top">&bull; <a href="#MicroBlaze-Syntax" accesskey="2">MicroBlaze Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax for the MicroBlaze
  20700. </td></tr>
  20701. <tr><td align="left" valign="top">&bull; <a href="#MicroBlaze-Options" accesskey="3">MicroBlaze Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options for MicroBlaze Processors.
  20702. </td></tr>
  20703. </table>
  20704. <hr>
  20705. <span id="MicroBlaze-Directives"></span><div class="header">
  20706. <p>
  20707. Next: <a href="#MicroBlaze-Syntax" accesskey="n" rel="next">MicroBlaze Syntax</a>, Up: <a href="#MicroBlaze_002dDependent" accesskey="u" rel="up">MicroBlaze-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20708. </div>
  20709. <span id="Directives-1"></span><h4 class="subsection">9.27.1 Directives</h4>
  20710. <span id="index-MicroBlaze-directives"></span>
  20711. <p>A number of assembler directives are available for MicroBlaze.
  20712. </p>
  20713. <dl compact="compact">
  20714. <dt><code>.data8 <var>expression</var>,...</code></dt>
  20715. <dd><p>This directive is an alias for <code>.byte</code>. Each expression is assembled
  20716. into an eight-bit value.
  20717. </p>
  20718. </dd>
  20719. <dt><code>.data16 <var>expression</var>,...</code></dt>
  20720. <dd><p>This directive is an alias for <code>.hword</code>. Each expression is assembled
  20721. into an 16-bit value.
  20722. </p>
  20723. </dd>
  20724. <dt><code>.data32 <var>expression</var>,...</code></dt>
  20725. <dd><p>This directive is an alias for <code>.word</code>. Each expression is assembled
  20726. into an 32-bit value.
  20727. </p>
  20728. </dd>
  20729. <dt><code>.ent <var>name</var>[,<var>label</var>]</code></dt>
  20730. <dd><p>This directive is an alias for <code>.func</code> denoting the start of function
  20731. <var>name</var> at (optional) <var>label</var>.
  20732. </p>
  20733. </dd>
  20734. <dt><code>.end <var>name</var>[,<var>label</var>]</code></dt>
  20735. <dd><p>This directive is an alias for <code>.endfunc</code> denoting the end of function
  20736. <var>name</var>.
  20737. </p>
  20738. </dd>
  20739. <dt><code>.gpword <var>label</var>,...</code></dt>
  20740. <dd><p>This directive is an alias for <code>.rva</code>. The resolved address of <var>label</var>
  20741. is stored in the data section.
  20742. </p>
  20743. </dd>
  20744. <dt><code>.weakext <var>label</var></code></dt>
  20745. <dd><p>Declare that <var>label</var> is a weak external symbol.
  20746. </p>
  20747. </dd>
  20748. <dt><code>.rodata</code></dt>
  20749. <dd><p>Switch to .rodata section. Equivalent to <code>.section .rodata</code>
  20750. </p>
  20751. </dd>
  20752. <dt><code>.sdata2</code></dt>
  20753. <dd><p>Switch to .sdata2 section. Equivalent to <code>.section .sdata2</code>
  20754. </p>
  20755. </dd>
  20756. <dt><code>.sdata</code></dt>
  20757. <dd><p>Switch to .sdata section. Equivalent to <code>.section .sdata</code>
  20758. </p>
  20759. </dd>
  20760. <dt><code>.bss</code></dt>
  20761. <dd><p>Switch to .bss section. Equivalent to <code>.section .bss</code>
  20762. </p>
  20763. </dd>
  20764. <dt><code>.sbss</code></dt>
  20765. <dd><p>Switch to .sbss section. Equivalent to <code>.section .sbss</code>
  20766. </p></dd>
  20767. </dl>
  20768. <hr>
  20769. <span id="MicroBlaze-Syntax"></span><div class="header">
  20770. <p>
  20771. Next: <a href="#MicroBlaze-Options" accesskey="n" rel="next">MicroBlaze Options</a>, Previous: <a href="#MicroBlaze-Directives" accesskey="p" rel="prev">MicroBlaze Directives</a>, Up: <a href="#MicroBlaze_002dDependent" accesskey="u" rel="up">MicroBlaze-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20772. </div>
  20773. <span id="Syntax-for-the-MicroBlaze"></span><h4 class="subsection">9.27.2 Syntax for the MicroBlaze</h4>
  20774. <table class="menu" border="0" cellspacing="0">
  20775. <tr><td align="left" valign="top">&bull; <a href="#MicroBlaze_002dChars" accesskey="1">MicroBlaze-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  20776. </td></tr>
  20777. </table>
  20778. <hr>
  20779. <span id="MicroBlaze_002dChars"></span><div class="header">
  20780. <p>
  20781. Up: <a href="#MicroBlaze-Syntax" accesskey="u" rel="up">MicroBlaze Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20782. </div>
  20783. <span id="Special-Characters-18"></span><h4 class="subsubsection">9.27.2.1 Special Characters</h4>
  20784. <span id="index-line-comment-character_002c-MicroBlaze"></span>
  20785. <span id="index-MicroBlaze-line-comment-character"></span>
  20786. <p>The presence of a &lsquo;<samp>#</samp>&rsquo; on a line indicates the start of a comment
  20787. that extends to the end of the current line.
  20788. </p>
  20789. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line, the whole line
  20790. is treated as a comment, but in this case the line can also be a
  20791. logical line number directive (see <a href="#Comments">Comments</a>) or a
  20792. preprocessor control command (see <a href="#Preprocessing">Preprocessing</a>).
  20793. </p>
  20794. <span id="index-line-separator_002c-MicroBlaze"></span>
  20795. <span id="index-statement-separator_002c-MicroBlaze"></span>
  20796. <span id="index-MicroBlaze-line-separator"></span>
  20797. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used to separate statements on the same
  20798. line.
  20799. </p>
  20800. <hr>
  20801. <span id="MicroBlaze-Options"></span><div class="header">
  20802. <p>
  20803. Previous: <a href="#MicroBlaze-Syntax" accesskey="p" rel="prev">MicroBlaze Syntax</a>, Up: <a href="#MicroBlaze_002dDependent" accesskey="u" rel="up">MicroBlaze-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20804. </div>
  20805. <span id="Options-15"></span><h4 class="subsection">9.27.3 Options</h4>
  20806. <p>MicroBlaze processors support the following options:
  20807. </p>
  20808. <span id="index-MicroBlaze-Options"></span>
  20809. <dl compact="compact">
  20810. <dt><code>-mbig-endian</code></dt>
  20811. <dd><p>Build for MicroBlaze in Big Endian configuration.
  20812. </p>
  20813. </dd>
  20814. <dt><code>-mlittle-endian</code></dt>
  20815. <dd><p>Build for MicroBlaze in Little Endian configuration.
  20816. </p></dd>
  20817. </dl>
  20818. <hr>
  20819. <span id="MIPS_002dDependent"></span><div class="header">
  20820. <p>
  20821. Next: <a href="#MMIX_002dDependent" accesskey="n" rel="next">MMIX-Dependent</a>, Previous: <a href="#MicroBlaze_002dDependent" accesskey="p" rel="prev">MicroBlaze-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20822. </div>
  20823. <span id="MIPS-Dependent-Features"></span><h3 class="section">9.28 MIPS Dependent Features</h3>
  20824. <span id="index-MIPS-processor"></span>
  20825. <p><small>GNU</small> <code>as</code> for MIPS architectures supports several
  20826. different MIPS processors, and MIPS ISA levels I through V, MIPS32,
  20827. and MIPS64. For information about the MIPS instruction set, see
  20828. <cite>MIPS RISC Architecture</cite>, by Kane and Heindrich (Prentice-Hall).
  20829. For an overview of MIPS assembly conventions, see &ldquo;Appendix D:
  20830. Assembly Language Programming&rdquo; in the same work.
  20831. </p>
  20832. <table class="menu" border="0" cellspacing="0">
  20833. <tr><td align="left" valign="top">&bull; <a href="#MIPS-Options" accesskey="1">MIPS Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler options
  20834. </td></tr>
  20835. <tr><td align="left" valign="top">&bull; <a href="#MIPS-Macros" accesskey="2">MIPS Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">High-level assembly macros
  20836. </td></tr>
  20837. <tr><td align="left" valign="top">&bull; <a href="#MIPS-Symbol-Sizes" accesskey="3">MIPS Symbol Sizes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives to override the size of symbols
  20838. </td></tr>
  20839. <tr><td align="left" valign="top">&bull; <a href="#MIPS-Small-Data" accesskey="4">MIPS Small Data</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controlling the use of small data accesses
  20840. </td></tr>
  20841. <tr><td align="left" valign="top">&bull; <a href="#MIPS-ISA" accesskey="5">MIPS ISA</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives to override the ISA level
  20842. </td></tr>
  20843. <tr><td align="left" valign="top">&bull; <a href="#MIPS-assembly-options" accesskey="6">MIPS assembly options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives to control code generation
  20844. </td></tr>
  20845. <tr><td align="left" valign="top">&bull; <a href="#MIPS-autoextend" accesskey="7">MIPS autoextend</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives for extending MIPS 16 bit instructions
  20846. </td></tr>
  20847. <tr><td align="left" valign="top">&bull; <a href="#MIPS-insn" accesskey="8">MIPS insn</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directive to mark data as an instruction
  20848. </td></tr>
  20849. <tr><td align="left" valign="top">&bull; <a href="#MIPS-FP-ABIs" accesskey="9">MIPS FP ABIs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Marking which FP ABI is in use
  20850. </td></tr>
  20851. <tr><td align="left" valign="top">&bull; <a href="#MIPS-NaN-Encodings">MIPS NaN Encodings</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives to record which NaN encoding is being used
  20852. </td></tr>
  20853. <tr><td align="left" valign="top">&bull; <a href="#MIPS-Option-Stack">MIPS Option Stack</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives to save and restore options
  20854. </td></tr>
  20855. <tr><td align="left" valign="top">&bull; <a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives to control
  20856. generation of MIPS ASE instructions
  20857. </td></tr>
  20858. <tr><td align="left" valign="top">&bull; <a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives to override floating-point options
  20859. </td></tr>
  20860. <tr><td align="left" valign="top">&bull; <a href="#MIPS-Syntax">MIPS Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">MIPS specific syntactical considerations
  20861. </td></tr>
  20862. </table>
  20863. <hr>
  20864. <span id="MIPS-Options"></span><div class="header">
  20865. <p>
  20866. Next: <a href="#MIPS-Macros" accesskey="n" rel="next">MIPS Macros</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  20867. </div>
  20868. <span id="Assembler-options"></span><h4 class="subsection">9.28.1 Assembler options</h4>
  20869. <p>The MIPS configurations of <small>GNU</small> <code>as</code> support these
  20870. special options:
  20871. </p>
  20872. <dl compact="compact">
  20873. <dd><span id="index-_002dG-option-_0028MIPS_0029"></span>
  20874. </dd>
  20875. <dt><code>-G <var>num</var></code></dt>
  20876. <dd><p>Set the &ldquo;small data&rdquo; limit to <var>n</var> bytes. The default limit is 8 bytes.
  20877. See <a href="#MIPS-Small-Data">Controlling the use of small data accesses</a>.
  20878. </p>
  20879. <span id="index-_002dEB-option-_0028MIPS_0029"></span>
  20880. <span id="index-_002dEL-option-_0028MIPS_0029"></span>
  20881. <span id="index-MIPS-big_002dendian-output"></span>
  20882. <span id="index-MIPS-little_002dendian-output"></span>
  20883. <span id="index-big_002dendian-output_002c-MIPS"></span>
  20884. <span id="index-little_002dendian-output_002c-MIPS"></span>
  20885. </dd>
  20886. <dt><code>-EB</code></dt>
  20887. <dt><code>-EL</code></dt>
  20888. <dd><p>Any MIPS configuration of <code>as</code> can select big-endian or
  20889. little-endian output at run time (unlike the other <small>GNU</small> development
  20890. tools, which must be configured for one or the other). Use &lsquo;<samp>-EB</samp>&rsquo;
  20891. to select big-endian output, and &lsquo;<samp>-EL</samp>&rsquo; for little-endian.
  20892. </p>
  20893. </dd>
  20894. <dt><code>-KPIC</code></dt>
  20895. <dd><span id="index-PIC-selection_002c-MIPS"></span>
  20896. <span id="index-_002dKPIC-option_002c-MIPS"></span>
  20897. <p>Generate SVR4-style PIC. This option tells the assembler to generate
  20898. SVR4-style position-independent macro expansions. It also tells the
  20899. assembler to mark the output file as PIC.
  20900. </p>
  20901. </dd>
  20902. <dt><code>-mvxworks-pic</code></dt>
  20903. <dd><span id="index-_002dmvxworks_002dpic-option_002c-MIPS"></span>
  20904. <p>Generate VxWorks PIC. This option tells the assembler to generate
  20905. VxWorks-style position-independent macro expansions.
  20906. </p>
  20907. <span id="index-MIPS-architecture-options"></span>
  20908. </dd>
  20909. <dt><code>-mips1</code></dt>
  20910. <dt><code>-mips2</code></dt>
  20911. <dt><code>-mips3</code></dt>
  20912. <dt><code>-mips4</code></dt>
  20913. <dt><code>-mips5</code></dt>
  20914. <dt><code>-mips32</code></dt>
  20915. <dt><code>-mips32r2</code></dt>
  20916. <dt><code>-mips32r3</code></dt>
  20917. <dt><code>-mips32r5</code></dt>
  20918. <dt><code>-mips32r6</code></dt>
  20919. <dt><code>-mips64</code></dt>
  20920. <dt><code>-mips64r2</code></dt>
  20921. <dt><code>-mips64r3</code></dt>
  20922. <dt><code>-mips64r5</code></dt>
  20923. <dt><code>-mips64r6</code></dt>
  20924. <dd><p>Generate code for a particular MIPS Instruction Set Architecture level.
  20925. &lsquo;<samp>-mips1</samp>&rsquo; corresponds to the R2000 and R3000 processors,
  20926. &lsquo;<samp>-mips2</samp>&rsquo; to the R6000 processor, &lsquo;<samp>-mips3</samp>&rsquo; to the
  20927. R4000 processor, and &lsquo;<samp>-mips4</samp>&rsquo; to the R8000 and R10000 processors.
  20928. &lsquo;<samp>-mips5</samp>&rsquo;, &lsquo;<samp>-mips32</samp>&rsquo;, &lsquo;<samp>-mips32r2</samp>&rsquo;, &lsquo;<samp>-mips32r3</samp>&rsquo;,
  20929. &lsquo;<samp>-mips32r5</samp>&rsquo;, &lsquo;<samp>-mips32r6</samp>&rsquo;, &lsquo;<samp>-mips64</samp>&rsquo;, &lsquo;<samp>-mips64r2</samp>&rsquo;,
  20930. &lsquo;<samp>-mips64r3</samp>&rsquo;, &lsquo;<samp>-mips64r5</samp>&rsquo;, and &lsquo;<samp>-mips64r6</samp>&rsquo; correspond to
  20931. generic MIPS V, MIPS32, MIPS32 Release 2, MIPS32 Release 3, MIPS32
  20932. Release 5, MIPS32 Release 6, MIPS64, and MIPS64 Release 2, MIPS64
  20933. Release 3, MIPS64 Release 5, and MIPS64 Release 6 ISA processors,
  20934. respectively. You can also switch instruction sets during the assembly;
  20935. see <a href="#MIPS-ISA">Directives to override the ISA level</a>.
  20936. </p>
  20937. </dd>
  20938. <dt><code>-mgp32</code></dt>
  20939. <dt><code>-mfp32</code></dt>
  20940. <dd><p>Some macros have different expansions for 32-bit and 64-bit registers.
  20941. The register sizes are normally inferred from the ISA and ABI, but these
  20942. flags force a certain group of registers to be treated as 32 bits wide at
  20943. all times. &lsquo;<samp>-mgp32</samp>&rsquo; controls the size of general-purpose registers
  20944. and &lsquo;<samp>-mfp32</samp>&rsquo; controls the size of floating-point registers.
  20945. </p>
  20946. <p>The <code>.set gp=32</code> and <code>.set fp=32</code> directives allow the size
  20947. of registers to be changed for parts of an object. The default value is
  20948. restored by <code>.set gp=default</code> and <code>.set fp=default</code>.
  20949. </p>
  20950. <p>On some MIPS variants there is a 32-bit mode flag; when this flag is
  20951. set, 64-bit instructions generate a trap. Also, some 32-bit OSes only
  20952. save the 32-bit registers on a context switch, so it is essential never
  20953. to use the 64-bit registers.
  20954. </p>
  20955. </dd>
  20956. <dt><code>-mgp64</code></dt>
  20957. <dt><code>-mfp64</code></dt>
  20958. <dd><p>Assume that 64-bit registers are available. This is provided in the
  20959. interests of symmetry with &lsquo;<samp>-mgp32</samp>&rsquo; and &lsquo;<samp>-mfp32</samp>&rsquo;.
  20960. </p>
  20961. <p>The <code>.set gp=64</code> and <code>.set fp=64</code> directives allow the size
  20962. of registers to be changed for parts of an object. The default value is
  20963. restored by <code>.set gp=default</code> and <code>.set fp=default</code>.
  20964. </p>
  20965. </dd>
  20966. <dt><code>-mfpxx</code></dt>
  20967. <dd><p>Make no assumptions about whether 32-bit or 64-bit floating-point
  20968. registers are available. This is provided to support having modules
  20969. compatible with either &lsquo;<samp>-mfp32</samp>&rsquo; or &lsquo;<samp>-mfp64</samp>&rsquo;. This option can
  20970. only be used with MIPS II and above.
  20971. </p>
  20972. <p>The <code>.set fp=xx</code> directive allows a part of an object to be marked
  20973. as not making assumptions about 32-bit or 64-bit FP registers. The
  20974. default value is restored by <code>.set fp=default</code>.
  20975. </p>
  20976. </dd>
  20977. <dt><code>-modd-spreg</code></dt>
  20978. <dt><code>-mno-odd-spreg</code></dt>
  20979. <dd><p>Enable use of floating-point operations on odd-numbered single-precision
  20980. registers when supported by the ISA. &lsquo;<samp>-mfpxx</samp>&rsquo; implies
  20981. &lsquo;<samp>-mno-odd-spreg</samp>&rsquo;, otherwise the default is &lsquo;<samp>-modd-spreg</samp>&rsquo;
  20982. </p>
  20983. </dd>
  20984. <dt><code>-mips16</code></dt>
  20985. <dt><code>-no-mips16</code></dt>
  20986. <dd><p>Generate code for the MIPS 16 processor. This is equivalent to putting
  20987. <code>.module mips16</code> at the start of the assembly file. &lsquo;<samp>-no-mips16</samp>&rsquo;
  20988. turns off this option.
  20989. </p>
  20990. </dd>
  20991. <dt><code>-mmips16e2</code></dt>
  20992. <dt><code>-mno-mips16e2</code></dt>
  20993. <dd><p>Enable the use of MIPS16e2 instructions in MIPS16 mode. This is equivalent
  20994. to putting <code>.module mips16e2</code> at the start of the assembly file.
  20995. &lsquo;<samp>-mno-mips16e2</samp>&rsquo; turns off this option.
  20996. </p>
  20997. </dd>
  20998. <dt><code>-mmicromips</code></dt>
  20999. <dt><code>-mno-micromips</code></dt>
  21000. <dd><p>Generate code for the microMIPS processor. This is equivalent to putting
  21001. <code>.module micromips</code> at the start of the assembly file.
  21002. &lsquo;<samp>-mno-micromips</samp>&rsquo; turns off this option. This is equivalent to putting
  21003. <code>.module nomicromips</code> at the start of the assembly file.
  21004. </p>
  21005. </dd>
  21006. <dt><code>-msmartmips</code></dt>
  21007. <dt><code>-mno-smartmips</code></dt>
  21008. <dd><p>Enables the SmartMIPS extensions to the MIPS32 instruction set, which
  21009. provides a number of new instructions which target smartcard and
  21010. cryptographic applications. This is equivalent to putting
  21011. <code>.module smartmips</code> at the start of the assembly file.
  21012. &lsquo;<samp>-mno-smartmips</samp>&rsquo; turns off this option.
  21013. </p>
  21014. </dd>
  21015. <dt><code>-mips3d</code></dt>
  21016. <dt><code>-no-mips3d</code></dt>
  21017. <dd><p>Generate code for the MIPS-3D Application Specific Extension.
  21018. This tells the assembler to accept MIPS-3D instructions.
  21019. &lsquo;<samp>-no-mips3d</samp>&rsquo; turns off this option.
  21020. </p>
  21021. </dd>
  21022. <dt><code>-mdmx</code></dt>
  21023. <dt><code>-no-mdmx</code></dt>
  21024. <dd><p>Generate code for the MDMX Application Specific Extension.
  21025. This tells the assembler to accept MDMX instructions.
  21026. &lsquo;<samp>-no-mdmx</samp>&rsquo; turns off this option.
  21027. </p>
  21028. </dd>
  21029. <dt><code>-mdsp</code></dt>
  21030. <dt><code>-mno-dsp</code></dt>
  21031. <dd><p>Generate code for the DSP Release 1 Application Specific Extension.
  21032. This tells the assembler to accept DSP Release 1 instructions.
  21033. &lsquo;<samp>-mno-dsp</samp>&rsquo; turns off this option.
  21034. </p>
  21035. </dd>
  21036. <dt><code>-mdspr2</code></dt>
  21037. <dt><code>-mno-dspr2</code></dt>
  21038. <dd><p>Generate code for the DSP Release 2 Application Specific Extension.
  21039. This option implies &lsquo;<samp>-mdsp</samp>&rsquo;.
  21040. This tells the assembler to accept DSP Release 2 instructions.
  21041. &lsquo;<samp>-mno-dspr2</samp>&rsquo; turns off this option.
  21042. </p>
  21043. </dd>
  21044. <dt><code>-mdspr3</code></dt>
  21045. <dt><code>-mno-dspr3</code></dt>
  21046. <dd><p>Generate code for the DSP Release 3 Application Specific Extension.
  21047. This option implies &lsquo;<samp>-mdsp</samp>&rsquo; and &lsquo;<samp>-mdspr2</samp>&rsquo;.
  21048. This tells the assembler to accept DSP Release 3 instructions.
  21049. &lsquo;<samp>-mno-dspr3</samp>&rsquo; turns off this option.
  21050. </p>
  21051. </dd>
  21052. <dt><code>-mmt</code></dt>
  21053. <dt><code>-mno-mt</code></dt>
  21054. <dd><p>Generate code for the MT Application Specific Extension.
  21055. This tells the assembler to accept MT instructions.
  21056. &lsquo;<samp>-mno-mt</samp>&rsquo; turns off this option.
  21057. </p>
  21058. </dd>
  21059. <dt><code>-mmcu</code></dt>
  21060. <dt><code>-mno-mcu</code></dt>
  21061. <dd><p>Generate code for the MCU Application Specific Extension.
  21062. This tells the assembler to accept MCU instructions.
  21063. &lsquo;<samp>-mno-mcu</samp>&rsquo; turns off this option.
  21064. </p>
  21065. </dd>
  21066. <dt><code>-mmsa</code></dt>
  21067. <dt><code>-mno-msa</code></dt>
  21068. <dd><p>Generate code for the MIPS SIMD Architecture Extension.
  21069. This tells the assembler to accept MSA instructions.
  21070. &lsquo;<samp>-mno-msa</samp>&rsquo; turns off this option.
  21071. </p>
  21072. </dd>
  21073. <dt><code>-mxpa</code></dt>
  21074. <dt><code>-mno-xpa</code></dt>
  21075. <dd><p>Generate code for the MIPS eXtended Physical Address (XPA) Extension.
  21076. This tells the assembler to accept XPA instructions.
  21077. &lsquo;<samp>-mno-xpa</samp>&rsquo; turns off this option.
  21078. </p>
  21079. </dd>
  21080. <dt><code>-mvirt</code></dt>
  21081. <dt><code>-mno-virt</code></dt>
  21082. <dd><p>Generate code for the Virtualization Application Specific Extension.
  21083. This tells the assembler to accept Virtualization instructions.
  21084. &lsquo;<samp>-mno-virt</samp>&rsquo; turns off this option.
  21085. </p>
  21086. </dd>
  21087. <dt><code>-mcrc</code></dt>
  21088. <dt><code>-mno-crc</code></dt>
  21089. <dd><p>Generate code for the cyclic redundancy check (CRC) Application Specific
  21090. Extension. This tells the assembler to accept CRC instructions.
  21091. &lsquo;<samp>-mno-crc</samp>&rsquo; turns off this option.
  21092. </p>
  21093. </dd>
  21094. <dt><code>-mginv</code></dt>
  21095. <dt><code>-mno-ginv</code></dt>
  21096. <dd><p>Generate code for the Global INValidate (GINV) Application Specific
  21097. Extension. This tells the assembler to accept GINV instructions.
  21098. &lsquo;<samp>-mno-ginv</samp>&rsquo; turns off this option.
  21099. </p>
  21100. </dd>
  21101. <dt><code>-mloongson-mmi</code></dt>
  21102. <dt><code>-mno-loongson-mmi</code></dt>
  21103. <dd><p>Generate code for the Loongson MultiMedia extensions Instructions (MMI)
  21104. Application Specific Extension. This tells the assembler to accept MMI
  21105. instructions.
  21106. &lsquo;<samp>-mno-loongson-mmi</samp>&rsquo; turns off this option.
  21107. </p>
  21108. </dd>
  21109. <dt><code>-mloongson-cam</code></dt>
  21110. <dt><code>-mno-loongson-cam</code></dt>
  21111. <dd><p>Generate code for the Loongson Content Address Memory (CAM)
  21112. Application Specific Extension. This tells the assembler to accept CAM
  21113. instructions.
  21114. &lsquo;<samp>-mno-loongson-cam</samp>&rsquo; turns off this option.
  21115. </p>
  21116. </dd>
  21117. <dt><code>-mloongson-ext</code></dt>
  21118. <dt><code>-mno-loongson-ext</code></dt>
  21119. <dd><p>Generate code for the Loongson EXTensions (EXT) instructions
  21120. Application Specific Extension. This tells the assembler to accept EXT
  21121. instructions.
  21122. &lsquo;<samp>-mno-loongson-ext</samp>&rsquo; turns off this option.
  21123. </p>
  21124. </dd>
  21125. <dt><code>-mloongson-ext2</code></dt>
  21126. <dt><code>-mno-loongson-ext2</code></dt>
  21127. <dd><p>Generate code for the Loongson EXTensions R2 (EXT2) instructions
  21128. Application Specific Extension. This tells the assembler to accept EXT2
  21129. instructions.
  21130. &lsquo;<samp>-mno-loongson-ext2</samp>&rsquo; turns off this option.
  21131. </p>
  21132. </dd>
  21133. <dt><code>-minsn32</code></dt>
  21134. <dt><code>-mno-insn32</code></dt>
  21135. <dd><p>Only use 32-bit instruction encodings when generating code for the
  21136. microMIPS processor. This option inhibits the use of any 16-bit
  21137. instructions. This is equivalent to putting <code>.set insn32</code> at
  21138. the start of the assembly file. &lsquo;<samp>-mno-insn32</samp>&rsquo; turns off this
  21139. option. This is equivalent to putting <code>.set noinsn32</code> at the
  21140. start of the assembly file. By default &lsquo;<samp>-mno-insn32</samp>&rsquo; is
  21141. selected, allowing all instructions to be used.
  21142. </p>
  21143. </dd>
  21144. <dt><code>-mfix7000</code></dt>
  21145. <dt><code>-mno-fix7000</code></dt>
  21146. <dd><p>Cause nops to be inserted if the read of the destination register
  21147. of an mfhi or mflo instruction occurs in the following two instructions.
  21148. </p>
  21149. </dd>
  21150. <dt><code>-mfix-rm7000</code></dt>
  21151. <dt><code>-mno-fix-rm7000</code></dt>
  21152. <dd><p>Cause nops to be inserted if a dmult or dmultu instruction is
  21153. followed by a load instruction.
  21154. </p>
  21155. </dd>
  21156. <dt><code>-mfix-loongson2f-jump</code></dt>
  21157. <dt><code>-mno-fix-loongson2f-jump</code></dt>
  21158. <dd><p>Eliminate instruction fetch from outside 256M region to work around the
  21159. Loongson2F &lsquo;<samp>jump</samp>&rsquo; instructions. Without it, under extreme cases,
  21160. the kernel may crash. The issue has been solved in latest processor
  21161. batches, but this fix has no side effect to them.
  21162. </p>
  21163. </dd>
  21164. <dt><code>-mfix-loongson2f-nop</code></dt>
  21165. <dt><code>-mno-fix-loongson2f-nop</code></dt>
  21166. <dd><p>Replace nops by <code>or at,at,zero</code> to work around the Loongson2F
  21167. &lsquo;<samp>nop</samp>&rsquo; errata. Without it, under extreme cases, the CPU might
  21168. deadlock. The issue has been solved in later Loongson2F batches, but
  21169. this fix has no side effect to them.
  21170. </p>
  21171. </dd>
  21172. <dt><code>-mfix-loongson3-llsc</code></dt>
  21173. <dt><code>-mno-fix-loongson3-llsc</code></dt>
  21174. <dd><p>Insert &lsquo;<samp>sync</samp>&rsquo; before &lsquo;<samp>ll</samp>&rsquo; and &lsquo;<samp>lld</samp>&rsquo; to work around
  21175. Loongson3 LLSC errata. Without it, under extrame cases, the CPU might
  21176. deadlock. The default can be controlled by the
  21177. <samp>--enable-mips-fix-loongson3-llsc=[yes|no]</samp> configure option.
  21178. </p>
  21179. </dd>
  21180. <dt><code>-mfix-vr4120</code></dt>
  21181. <dt><code>-mno-fix-vr4120</code></dt>
  21182. <dd><p>Insert nops to work around certain VR4120 errata. This option is
  21183. intended to be used on GCC-generated code: it is not designed to catch
  21184. all problems in hand-written assembler code.
  21185. </p>
  21186. </dd>
  21187. <dt><code>-mfix-vr4130</code></dt>
  21188. <dt><code>-mno-fix-vr4130</code></dt>
  21189. <dd><p>Insert nops to work around the VR4130 &lsquo;<samp>mflo</samp>&rsquo;/&lsquo;<samp>mfhi</samp>&rsquo; errata.
  21190. </p>
  21191. </dd>
  21192. <dt><code>-mfix-24k</code></dt>
  21193. <dt><code>-mno-fix-24k</code></dt>
  21194. <dd><p>Insert nops to work around the 24K &lsquo;<samp>eret</samp>&rsquo;/&lsquo;<samp>deret</samp>&rsquo; errata.
  21195. </p>
  21196. </dd>
  21197. <dt><code>-mfix-cn63xxp1</code></dt>
  21198. <dt><code>-mno-fix-cn63xxp1</code></dt>
  21199. <dd><p>Replace <code>pref</code> hints 0 - 4 and 6 - 24 with hint 28 to work around
  21200. certain CN63XXP1 errata.
  21201. </p>
  21202. </dd>
  21203. <dt><code>-mfix-r5900</code></dt>
  21204. <dt><code>-mno-fix-r5900</code></dt>
  21205. <dd><p>Do not attempt to schedule the preceding instruction into the delay slot
  21206. of a branch instruction placed at the end of a short loop of six
  21207. instructions or fewer and always schedule a <code>nop</code> instruction there
  21208. instead. The short loop bug under certain conditions causes loops to
  21209. execute only once or twice, due to a hardware bug in the R5900 chip.
  21210. </p>
  21211. </dd>
  21212. <dt><code>-m4010</code></dt>
  21213. <dt><code>-no-m4010</code></dt>
  21214. <dd><p>Generate code for the LSI R4010 chip. This tells the assembler to
  21215. accept the R4010-specific instructions (&lsquo;<samp>addciu</samp>&rsquo;, &lsquo;<samp>ffc</samp>&rsquo;,
  21216. etc.), and to not schedule &lsquo;<samp>nop</samp>&rsquo; instructions around accesses to
  21217. the &lsquo;<samp>HI</samp>&rsquo; and &lsquo;<samp>LO</samp>&rsquo; registers. &lsquo;<samp>-no-m4010</samp>&rsquo; turns off this
  21218. option.
  21219. </p>
  21220. </dd>
  21221. <dt><code>-m4650</code></dt>
  21222. <dt><code>-no-m4650</code></dt>
  21223. <dd><p>Generate code for the MIPS R4650 chip. This tells the assembler to accept
  21224. the &lsquo;<samp>mad</samp>&rsquo; and &lsquo;<samp>madu</samp>&rsquo; instruction, and to not schedule &lsquo;<samp>nop</samp>&rsquo;
  21225. instructions around accesses to the &lsquo;<samp>HI</samp>&rsquo; and &lsquo;<samp>LO</samp>&rsquo; registers.
  21226. &lsquo;<samp>-no-m4650</samp>&rsquo; turns off this option.
  21227. </p>
  21228. </dd>
  21229. <dt><code>-m3900</code></dt>
  21230. <dt><code>-no-m3900</code></dt>
  21231. <dt><code>-m4100</code></dt>
  21232. <dt><code>-no-m4100</code></dt>
  21233. <dd><p>For each option &lsquo;<samp>-m<var>nnnn</var></samp>&rsquo;, generate code for the MIPS
  21234. R<var>nnnn</var> chip. This tells the assembler to accept instructions
  21235. specific to that chip, and to schedule for that chip&rsquo;s hazards.
  21236. </p>
  21237. </dd>
  21238. <dt><code>-march=<var>cpu</var></code></dt>
  21239. <dd><p>Generate code for a particular MIPS CPU. It is exactly equivalent to
  21240. &lsquo;<samp>-m<var>cpu</var></samp>&rsquo;, except that there are more value of <var>cpu</var>
  21241. understood. Valid <var>cpu</var> value are:
  21242. </p>
  21243. <blockquote>
  21244. <p>2000,
  21245. 3000,
  21246. 3900,
  21247. 4000,
  21248. 4010,
  21249. 4100,
  21250. 4111,
  21251. vr4120,
  21252. vr4130,
  21253. vr4181,
  21254. 4300,
  21255. 4400,
  21256. 4600,
  21257. 4650,
  21258. 5000,
  21259. rm5200,
  21260. rm5230,
  21261. rm5231,
  21262. rm5261,
  21263. rm5721,
  21264. vr5400,
  21265. vr5500,
  21266. 6000,
  21267. rm7000,
  21268. 8000,
  21269. rm9000,
  21270. 10000,
  21271. 12000,
  21272. 14000,
  21273. 16000,
  21274. 4kc,
  21275. 4km,
  21276. 4kp,
  21277. 4ksc,
  21278. 4kec,
  21279. 4kem,
  21280. 4kep,
  21281. 4ksd,
  21282. m4k,
  21283. m4kp,
  21284. m14k,
  21285. m14kc,
  21286. m14ke,
  21287. m14kec,
  21288. 24kc,
  21289. 24kf2_1,
  21290. 24kf,
  21291. 24kf1_1,
  21292. 24kec,
  21293. 24kef2_1,
  21294. 24kef,
  21295. 24kef1_1,
  21296. 34kc,
  21297. 34kf2_1,
  21298. 34kf,
  21299. 34kf1_1,
  21300. 34kn,
  21301. 74kc,
  21302. 74kf2_1,
  21303. 74kf,
  21304. 74kf1_1,
  21305. 74kf3_2,
  21306. 1004kc,
  21307. 1004kf2_1,
  21308. 1004kf,
  21309. 1004kf1_1,
  21310. interaptiv,
  21311. interaptiv-mr2,
  21312. m5100,
  21313. m5101,
  21314. p5600,
  21315. 5kc,
  21316. 5kf,
  21317. 20kc,
  21318. 25kf,
  21319. sb1,
  21320. sb1a,
  21321. i6400,
  21322. i6500,
  21323. p6600,
  21324. loongson2e,
  21325. loongson2f,
  21326. gs464,
  21327. gs464e,
  21328. gs264e,
  21329. octeon,
  21330. octeon+,
  21331. octeon2,
  21332. octeon3,
  21333. xlr,
  21334. xlp
  21335. </p></blockquote>
  21336. <p>For compatibility reasons, &lsquo;<samp><var>n</var>x</samp>&rsquo; and &lsquo;<samp><var>b</var>fx</samp>&rsquo; are
  21337. accepted as synonyms for &lsquo;<samp><var>n</var>f1_1</samp>&rsquo;. These values are
  21338. deprecated.
  21339. </p>
  21340. <p>In addition the special name &lsquo;<samp>from-abi</samp>&rsquo; can be used, in which
  21341. case the assembler will select an architecture suitable for whichever
  21342. ABI has been selected, either via the <samp>-mabi=</samp> command line
  21343. option or the built in default.
  21344. </p>
  21345. </dd>
  21346. <dt><code>-mtune=<var>cpu</var></code></dt>
  21347. <dd><p>Schedule and tune for a particular MIPS CPU. Valid <var>cpu</var> values are
  21348. identical to &lsquo;<samp>-march=<var>cpu</var></samp>&rsquo;.
  21349. </p>
  21350. </dd>
  21351. <dt><code>-mabi=<var>abi</var></code></dt>
  21352. <dd><p>Record which ABI the source code uses. The recognized arguments
  21353. are: &lsquo;<samp>32</samp>&rsquo;, &lsquo;<samp>n32</samp>&rsquo;, &lsquo;<samp>o64</samp>&rsquo;, &lsquo;<samp>64</samp>&rsquo; and &lsquo;<samp>eabi</samp>&rsquo;.
  21354. </p>
  21355. </dd>
  21356. <dt><code>-msym32</code></dt>
  21357. <dt><code>-mno-sym32</code></dt>
  21358. <dd><span id="index-_002dmsym32"></span>
  21359. <span id="index-_002dmno_002dsym32"></span>
  21360. <p>Equivalent to adding <code>.set sym32</code> or <code>.set nosym32</code> to
  21361. the beginning of the assembler input. See <a href="#MIPS-Symbol-Sizes">MIPS Symbol Sizes</a>.
  21362. </p>
  21363. <span id="index-_002dnocpp-ignored-_0028MIPS_0029"></span>
  21364. </dd>
  21365. <dt><code>-nocpp</code></dt>
  21366. <dd><p>This option is ignored. It is accepted for command-line compatibility with
  21367. other assemblers, which use it to turn off C style preprocessing. With
  21368. <small>GNU</small> <code>as</code>, there is no need for &lsquo;<samp>-nocpp</samp>&rsquo;, because the
  21369. <small>GNU</small> assembler itself never runs the C preprocessor.
  21370. </p>
  21371. </dd>
  21372. <dt><code>-msoft-float</code></dt>
  21373. <dt><code>-mhard-float</code></dt>
  21374. <dd><p>Disable or enable floating-point instructions. Note that by default
  21375. floating-point instructions are always allowed even with CPU targets
  21376. that don&rsquo;t have support for these instructions.
  21377. </p>
  21378. </dd>
  21379. <dt><code>-msingle-float</code></dt>
  21380. <dt><code>-mdouble-float</code></dt>
  21381. <dd><p>Disable or enable double-precision floating-point operations. Note
  21382. that by default double-precision floating-point operations are always
  21383. allowed even with CPU targets that don&rsquo;t have support for these
  21384. operations.
  21385. </p>
  21386. </dd>
  21387. <dt><code>--construct-floats</code></dt>
  21388. <dt><code>--no-construct-floats</code></dt>
  21389. <dd><p>The <code>--no-construct-floats</code> option disables the construction of
  21390. double width floating point constants by loading the two halves of the
  21391. value into the two single width floating point registers that make up
  21392. the double width register. This feature is useful if the processor
  21393. support the FR bit in its status register, and this bit is known (by
  21394. the programmer) to be set. This bit prevents the aliasing of the double
  21395. width register by the single width registers.
  21396. </p>
  21397. <p>By default <code>--construct-floats</code> is selected, allowing construction
  21398. of these floating point constants.
  21399. </p>
  21400. </dd>
  21401. <dt><code>--relax-branch</code></dt>
  21402. <dt><code>--no-relax-branch</code></dt>
  21403. <dd><p>The &lsquo;<samp>--relax-branch</samp>&rsquo; option enables the relaxation of out-of-range
  21404. branches. Any branches whose target cannot be reached directly are
  21405. converted to a small instruction sequence including an inverse-condition
  21406. branch to the physically next instruction, and a jump to the original
  21407. target is inserted between the two instructions. In PIC code the jump
  21408. will involve further instructions for address calculation.
  21409. </p>
  21410. <p>The <code>BC1ANY2F</code>, <code>BC1ANY2T</code>, <code>BC1ANY4F</code>, <code>BC1ANY4T</code>,
  21411. <code>BPOSGE32</code> and <code>BPOSGE64</code> instructions are excluded from
  21412. relaxation, because they have no complementing counterparts. They could
  21413. be relaxed with the use of a longer sequence involving another branch,
  21414. however this has not been implemented and if their target turns out of
  21415. reach, they produce an error even if branch relaxation is enabled.
  21416. </p>
  21417. <p>Also no MIPS16 branches are ever relaxed.
  21418. </p>
  21419. <p>By default &lsquo;<samp>--no-relax-branch</samp>&rsquo; is selected, causing any out-of-range
  21420. branches to produce an error.
  21421. </p>
  21422. </dd>
  21423. <dt><code>-mignore-branch-isa</code></dt>
  21424. <dt><code>-mno-ignore-branch-isa</code></dt>
  21425. <dd><p>Ignore branch checks for invalid transitions between ISA modes.
  21426. </p>
  21427. <p>The semantics of branches does not provide for an ISA mode switch, so in
  21428. most cases the ISA mode a branch has been encoded for has to be the same
  21429. as the ISA mode of the branch&rsquo;s target label. If the ISA modes do not
  21430. match, then such a branch, if taken, will cause the ISA mode to remain
  21431. unchanged and instructions that follow will be executed in the wrong ISA
  21432. mode causing the program to misbehave or crash.
  21433. </p>
  21434. <p>In the case of the <code>BAL</code> instruction it may be possible to relax
  21435. it to an equivalent <code>JALX</code> instruction so that the ISA mode is
  21436. switched at the run time as required. For other branches no relaxation
  21437. is possible and therefore GAS has checks implemented that verify in
  21438. branch assembly that the two ISA modes match, and report an error
  21439. otherwise so that the problem with code can be diagnosed at the assembly
  21440. time rather than at the run time.
  21441. </p>
  21442. <p>However some assembly code, including generated code produced by some
  21443. versions of GCC, may incorrectly include branches to data labels, which
  21444. appear to require a mode switch but are either dead or immediately
  21445. followed by valid instructions encoded for the same ISA the branch has
  21446. been encoded for. While not strictly correct at the source level such
  21447. code will execute as intended, so to help with these cases
  21448. &lsquo;<samp>-mignore-branch-isa</samp>&rsquo; is supported which disables ISA mode checks
  21449. for branches.
  21450. </p>
  21451. <p>By default &lsquo;<samp>-mno-ignore-branch-isa</samp>&rsquo; is selected, causing any invalid
  21452. branch requiring a transition between ISA modes to produce an error.
  21453. </p>
  21454. <span id="index-_002dmnan_003d-command_002dline-option_002c-MIPS"></span>
  21455. </dd>
  21456. <dt><code>-mnan=<var>encoding</var></code></dt>
  21457. <dd><p>This option indicates whether the source code uses the IEEE 2008
  21458. NaN encoding (<samp>-mnan=2008</samp>) or the original MIPS encoding
  21459. (<samp>-mnan=legacy</samp>). It is equivalent to adding a <code>.nan</code>
  21460. directive to the beginning of the source file. See <a href="#MIPS-NaN-Encodings">MIPS NaN Encodings</a>.
  21461. </p>
  21462. <p><samp>-mnan=legacy</samp> is the default if no <samp>-mnan</samp> option or
  21463. <code>.nan</code> directive is used.
  21464. </p>
  21465. </dd>
  21466. <dt><code>--trap</code></dt>
  21467. <dt><code>--no-break</code></dt>
  21468. <dd><p><code>as</code> automatically macro expands certain division and
  21469. multiplication instructions to check for overflow and division by zero. This
  21470. option causes <code>as</code> to generate code to take a trap exception
  21471. rather than a break exception when an error is detected. The trap instructions
  21472. are only supported at Instruction Set Architecture level 2 and higher.
  21473. </p>
  21474. </dd>
  21475. <dt><code>--break</code></dt>
  21476. <dt><code>--no-trap</code></dt>
  21477. <dd><p>Generate code to take a break exception rather than a trap exception when an
  21478. error is detected. This is the default.
  21479. </p>
  21480. </dd>
  21481. <dt><code>-mpdr</code></dt>
  21482. <dt><code>-mno-pdr</code></dt>
  21483. <dd><p>Control generation of <code>.pdr</code> sections. Off by default on IRIX, on
  21484. elsewhere.
  21485. </p>
  21486. </dd>
  21487. <dt><code>-mshared</code></dt>
  21488. <dt><code>-mno-shared</code></dt>
  21489. <dd><p>When generating code using the Unix calling conventions (selected by
  21490. &lsquo;<samp>-KPIC</samp>&rsquo; or &lsquo;<samp>-mcall_shared</samp>&rsquo;), gas will normally generate code
  21491. which can go into a shared library. The &lsquo;<samp>-mno-shared</samp>&rsquo; option
  21492. tells gas to generate code which uses the calling convention, but can
  21493. not go into a shared library. The resulting code is slightly more
  21494. efficient. This option only affects the handling of the
  21495. &lsquo;<samp>.cpload</samp>&rsquo; and &lsquo;<samp>.cpsetup</samp>&rsquo; pseudo-ops.
  21496. </p></dd>
  21497. </dl>
  21498. <hr>
  21499. <span id="MIPS-Macros"></span><div class="header">
  21500. <p>
  21501. Next: <a href="#MIPS-Symbol-Sizes" accesskey="n" rel="next">MIPS Symbol Sizes</a>, Previous: <a href="#MIPS-Options" accesskey="p" rel="prev">MIPS Options</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21502. </div>
  21503. <span id="High_002dlevel-assembly-macros"></span><h4 class="subsection">9.28.2 High-level assembly macros</h4>
  21504. <p>MIPS assemblers have traditionally provided a wider range of
  21505. instructions than the MIPS architecture itself. These extra
  21506. instructions are usually referred to as &ldquo;macro&rdquo; instructions
  21507. <a id="DOCF2" href="#FOOT2"><sup>2</sup></a>.
  21508. </p>
  21509. <p>Some MIPS macro instructions extend an underlying architectural instruction
  21510. while others are entirely new. An example of the former type is <code>and</code>,
  21511. which allows the third operand to be either a register or an arbitrary
  21512. immediate value. Examples of the latter type include <code>bgt</code>, which
  21513. branches to the third operand when the first operand is greater than
  21514. the second operand, and <code>ulh</code>, which implements an unaligned
  21515. 2-byte load.
  21516. </p>
  21517. <p>One of the most common extensions provided by macros is to expand
  21518. memory offsets to the full address range (32 or 64 bits) and to allow
  21519. symbolic offsets such as &lsquo;<samp>my_data + 4</samp>&rsquo; to be used in place of
  21520. integer constants. For example, the architectural instruction
  21521. <code>lbu</code> allows only a signed 16-bit offset, whereas the macro
  21522. <code>lbu</code> allows code such as &lsquo;<samp>lbu $4,array+32769($5)</samp>&rsquo;.
  21523. The implementation of these symbolic offsets depends on several factors,
  21524. such as whether the assembler is generating SVR4-style PIC (selected by
  21525. <samp>-KPIC</samp>, see <a href="#MIPS-Options">Assembler options</a>), the size of symbols
  21526. (see <a href="#MIPS-Symbol-Sizes">Directives to override the size of symbols</a>),
  21527. and the small data limit (see <a href="#MIPS-Small-Data">Controlling the use
  21528. of small data accesses</a>).
  21529. </p>
  21530. <span id="index-_002eset-macro"></span>
  21531. <span id="index-_002eset-nomacro"></span>
  21532. <p>Sometimes it is undesirable to have one assembly instruction expand
  21533. to several machine instructions. The directive <code>.set nomacro</code>
  21534. tells the assembler to warn when this happens. <code>.set macro</code>
  21535. restores the default behavior.
  21536. </p>
  21537. <span id="index-at-register_002c-MIPS"></span>
  21538. <span id="index-_002eset-at_003dreg"></span>
  21539. <p>Some macro instructions need a temporary register to store intermediate
  21540. results. This register is usually <code>$1</code>, also known as <code>$at</code>,
  21541. but it can be changed to any core register <var>reg</var> using
  21542. <code>.set at=<var>reg</var></code>. Note that <code>$at</code> always refers
  21543. to <code>$1</code> regardless of which register is being used as the
  21544. temporary register.
  21545. </p>
  21546. <span id="index-_002eset-at"></span>
  21547. <span id="index-_002eset-noat"></span>
  21548. <p>Implicit uses of the temporary register in macros could interfere with
  21549. explicit uses in the assembly code. The assembler therefore warns
  21550. whenever it sees an explicit use of the temporary register. The directive
  21551. <code>.set noat</code> silences this warning while <code>.set at</code> restores
  21552. the default behavior. It is safe to use <code>.set noat</code> while
  21553. <code>.set nomacro</code> is in effect since single-instruction macros
  21554. never need a temporary register.
  21555. </p>
  21556. <p>Note that while the <small>GNU</small> assembler provides these macros for compatibility,
  21557. it does not make any attempt to optimize them with the surrounding code.
  21558. </p>
  21559. <hr>
  21560. <span id="MIPS-Symbol-Sizes"></span><div class="header">
  21561. <p>
  21562. Next: <a href="#MIPS-Small-Data" accesskey="n" rel="next">MIPS Small Data</a>, Previous: <a href="#MIPS-Macros" accesskey="p" rel="prev">MIPS Macros</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21563. </div>
  21564. <span id="Directives-to-override-the-size-of-symbols"></span><h4 class="subsection">9.28.3 Directives to override the size of symbols</h4>
  21565. <span id="index-_002eset-sym32"></span>
  21566. <span id="index-_002eset-nosym32"></span>
  21567. <p>The n64 ABI allows symbols to have any 64-bit value. Although this
  21568. provides a great deal of flexibility, it means that some macros have
  21569. much longer expansions than their 32-bit counterparts. For example,
  21570. the non-PIC expansion of &lsquo;<samp>dla $4,sym</samp>&rsquo; is usually:
  21571. </p>
  21572. <div class="example">
  21573. <pre class="example">lui $4,%highest(sym)
  21574. lui $1,%hi(sym)
  21575. daddiu $4,$4,%higher(sym)
  21576. daddiu $1,$1,%lo(sym)
  21577. dsll32 $4,$4,0
  21578. daddu $4,$4,$1
  21579. </pre></div>
  21580. <p>whereas the 32-bit expansion is simply:
  21581. </p>
  21582. <div class="example">
  21583. <pre class="example">lui $4,%hi(sym)
  21584. daddiu $4,$4,%lo(sym)
  21585. </pre></div>
  21586. <p>n64 code is sometimes constructed in such a way that all symbolic
  21587. constants are known to have 32-bit values, and in such cases, it&rsquo;s
  21588. preferable to use the 32-bit expansion instead of the 64-bit
  21589. expansion.
  21590. </p>
  21591. <p>You can use the <code>.set sym32</code> directive to tell the assembler
  21592. that, from this point on, all expressions of the form
  21593. &lsquo;<samp><var>symbol</var></samp>&rsquo; or &lsquo;<samp><var>symbol</var> + <var>offset</var></samp>&rsquo;
  21594. have 32-bit values. For example:
  21595. </p>
  21596. <div class="example">
  21597. <pre class="example">.set sym32
  21598. dla $4,sym
  21599. lw $4,sym+16
  21600. sw $4,sym+0x8000($4)
  21601. </pre></div>
  21602. <p>will cause the assembler to treat &lsquo;<samp>sym</samp>&rsquo;, <code>sym+16</code> and
  21603. <code>sym+0x8000</code> as 32-bit values. The handling of non-symbolic
  21604. addresses is not affected.
  21605. </p>
  21606. <p>The directive <code>.set nosym32</code> ends a <code>.set sym32</code> block and
  21607. reverts to the normal behavior. It is also possible to change the
  21608. symbol size using the command-line options <samp>-msym32</samp> and
  21609. <samp>-mno-sym32</samp>.
  21610. </p>
  21611. <p>These options and directives are always accepted, but at present,
  21612. they have no effect for anything other than n64.
  21613. </p>
  21614. <hr>
  21615. <span id="MIPS-Small-Data"></span><div class="header">
  21616. <p>
  21617. Next: <a href="#MIPS-ISA" accesskey="n" rel="next">MIPS ISA</a>, Previous: <a href="#MIPS-Symbol-Sizes" accesskey="p" rel="prev">MIPS Symbol Sizes</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21618. </div>
  21619. <span id="Controlling-the-use-of-small-data-accesses"></span><h4 class="subsection">9.28.4 Controlling the use of small data accesses</h4>
  21620. <span id="index-small-data_002c-MIPS"></span>
  21621. <span id="index-gp-register_002c-MIPS"></span>
  21622. <p>It often takes several instructions to load the address of a symbol.
  21623. For example, when &lsquo;<samp>addr</samp>&rsquo; is a 32-bit symbol, the non-PIC expansion
  21624. of &lsquo;<samp>dla $4,addr</samp>&rsquo; is usually:
  21625. </p>
  21626. <div class="example">
  21627. <pre class="example">lui $4,%hi(addr)
  21628. daddiu $4,$4,%lo(addr)
  21629. </pre></div>
  21630. <p>The sequence is much longer when &lsquo;<samp>addr</samp>&rsquo; is a 64-bit symbol.
  21631. See <a href="#MIPS-Symbol-Sizes">Directives to override the size of symbols</a>.
  21632. </p>
  21633. <p>In order to cut down on this overhead, most embedded MIPS systems
  21634. set aside a 64-kilobyte &ldquo;small data&rdquo; area and guarantee that all
  21635. data of size <var>n</var> and smaller will be placed in that area.
  21636. The limit <var>n</var> is passed to both the assembler and the linker
  21637. using the command-line option <samp>-G <var>n</var></samp>, see <a href="#MIPS-Options">Assembler options</a>. Note that the same value of <var>n</var> must be used
  21638. when linking and when assembling all input files to the link; any
  21639. inconsistency could cause a relocation overflow error.
  21640. </p>
  21641. <p>The size of an object in the <code>.bss</code> section is set by the
  21642. <code>.comm</code> or <code>.lcomm</code> directive that defines it. The size of
  21643. an external object may be set with the <code>.extern</code> directive. For
  21644. example, &lsquo;<samp>.extern sym,4</samp>&rsquo; declares that the object at <code>sym</code>
  21645. is 4 bytes in length, while leaving <code>sym</code> otherwise undefined.
  21646. </p>
  21647. <p>When no <samp>-G</samp> option is given, the default limit is 8 bytes.
  21648. The option <samp>-G 0</samp> prevents any data from being automatically
  21649. classified as small.
  21650. </p>
  21651. <p>It is also possible to mark specific objects as small by putting them
  21652. in the special sections <code>.sdata</code> and <code>.sbss</code>, which are
  21653. &ldquo;small&rdquo; counterparts of <code>.data</code> and <code>.bss</code> respectively.
  21654. The toolchain will treat such data as small regardless of the
  21655. <samp>-G</samp> setting.
  21656. </p>
  21657. <p>On startup, systems that support a small data area are expected to
  21658. initialize register <code>$28</code>, also known as <code>$gp</code>, in such a
  21659. way that small data can be accessed using a 16-bit offset from that
  21660. register. For example, when &lsquo;<samp>addr</samp>&rsquo; is small data,
  21661. the &lsquo;<samp>dla $4,addr</samp>&rsquo; instruction above is equivalent to:
  21662. </p>
  21663. <div class="example">
  21664. <pre class="example">daddiu $4,$28,%gp_rel(addr)
  21665. </pre></div>
  21666. <p>Small data is not supported for SVR4-style PIC.
  21667. </p>
  21668. <hr>
  21669. <span id="MIPS-ISA"></span><div class="header">
  21670. <p>
  21671. Next: <a href="#MIPS-assembly-options" accesskey="n" rel="next">MIPS assembly options</a>, Previous: <a href="#MIPS-Small-Data" accesskey="p" rel="prev">MIPS Small Data</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21672. </div>
  21673. <span id="Directives-to-override-the-ISA-level"></span><h4 class="subsection">9.28.5 Directives to override the ISA level</h4>
  21674. <span id="index-MIPS-ISA-override"></span>
  21675. <span id="index-_002eset-mipsn"></span>
  21676. <p><small>GNU</small> <code>as</code> supports an additional directive to change
  21677. the MIPS Instruction Set Architecture level on the fly: <code>.set
  21678. mips<var>n</var></code>. <var>n</var> should be a number from 0 to 5, or 32, 32r2, 32r3,
  21679. 32r5, 32r6, 64, 64r2, 64r3, 64r5 or 64r6.
  21680. The values other than 0 make the assembler accept instructions
  21681. for the corresponding ISA level, from that point on in the
  21682. assembly. <code>.set mips<var>n</var></code> affects not only which instructions
  21683. are permitted, but also how certain macros are expanded. <code>.set
  21684. mips0</code> restores the ISA level to its original level: either the
  21685. level you selected with command-line options, or the default for your
  21686. configuration. You can use this feature to permit specific MIPS III
  21687. instructions while assembling in 32 bit mode. Use this directive with
  21688. care!
  21689. </p>
  21690. <span id="index-MIPS-CPU-override"></span>
  21691. <span id="index-_002eset-arch_003dcpu"></span>
  21692. <p>The <code>.set arch=<var>cpu</var></code> directive provides even finer control.
  21693. It changes the effective CPU target and allows the assembler to use
  21694. instructions specific to a particular CPU. All CPUs supported by the
  21695. &lsquo;<samp>-march</samp>&rsquo; command-line option are also selectable by this directive.
  21696. The original value is restored by <code>.set arch=default</code>.
  21697. </p>
  21698. <p>The directive <code>.set mips16</code> puts the assembler into MIPS 16 mode,
  21699. in which it will assemble instructions for the MIPS 16 processor. Use
  21700. <code>.set nomips16</code> to return to normal 32 bit mode.
  21701. </p>
  21702. <p>Traditional MIPS assemblers do not support this directive.
  21703. </p>
  21704. <p>The directive <code>.set micromips</code> puts the assembler into microMIPS mode,
  21705. in which it will assemble instructions for the microMIPS processor. Use
  21706. <code>.set nomicromips</code> to return to normal 32 bit mode.
  21707. </p>
  21708. <p>Traditional MIPS assemblers do not support this directive.
  21709. </p>
  21710. <hr>
  21711. <span id="MIPS-assembly-options"></span><div class="header">
  21712. <p>
  21713. Next: <a href="#MIPS-autoextend" accesskey="n" rel="next">MIPS autoextend</a>, Previous: <a href="#MIPS-ISA" accesskey="p" rel="prev">MIPS ISA</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21714. </div>
  21715. <span id="Directives-to-control-code-generation"></span><h4 class="subsection">9.28.6 Directives to control code generation</h4>
  21716. <span id="index-MIPS-directives-to-override-command_002dline-options"></span>
  21717. <span id="index-_002emodule"></span>
  21718. <p>The <code>.module</code> directive allows command-line options to be set directly
  21719. from assembly. The format of the directive matches the <code>.set</code>
  21720. directive but only those options which are relevant to a whole module are
  21721. supported. The effect of a <code>.module</code> directive is the same as the
  21722. corresponding command-line option. Where <code>.set</code> directives support
  21723. returning to a default then the <code>.module</code> directives do not as they
  21724. define the defaults.
  21725. </p>
  21726. <p>These module-level directives must appear first in assembly.
  21727. </p>
  21728. <p>Traditional MIPS assemblers do not support this directive.
  21729. </p>
  21730. <span id="index-MIPS-32_002dbit-microMIPS-instruction-generation-override"></span>
  21731. <span id="index-_002eset-insn32"></span>
  21732. <span id="index-_002eset-noinsn32"></span>
  21733. <p>The directive <code>.set insn32</code> makes the assembler only use 32-bit
  21734. instruction encodings when generating code for the microMIPS processor.
  21735. This directive inhibits the use of any 16-bit instructions from that
  21736. point on in the assembly. The <code>.set noinsn32</code> directive allows
  21737. 16-bit instructions to be accepted.
  21738. </p>
  21739. <p>Traditional MIPS assemblers do not support this directive.
  21740. </p>
  21741. <hr>
  21742. <span id="MIPS-autoextend"></span><div class="header">
  21743. <p>
  21744. Next: <a href="#MIPS-insn" accesskey="n" rel="next">MIPS insn</a>, Previous: <a href="#MIPS-assembly-options" accesskey="p" rel="prev">MIPS assembly options</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21745. </div>
  21746. <span id="Directives-for-extending-MIPS-16-bit-instructions"></span><h4 class="subsection">9.28.7 Directives for extending MIPS 16 bit instructions</h4>
  21747. <span id="index-_002eset-autoextend"></span>
  21748. <span id="index-_002eset-noautoextend"></span>
  21749. <p>By default, MIPS 16 instructions are automatically extended to 32 bits
  21750. when necessary. The directive <code>.set noautoextend</code> will turn this
  21751. off. When <code>.set noautoextend</code> is in effect, any 32 bit instruction
  21752. must be explicitly extended with the <code>.e</code> modifier (e.g.,
  21753. <code>li.e $4,1000</code>). The directive <code>.set autoextend</code> may be used
  21754. to once again automatically extend instructions when necessary.
  21755. </p>
  21756. <p>This directive is only meaningful when in MIPS 16 mode. Traditional
  21757. MIPS assemblers do not support this directive.
  21758. </p>
  21759. <hr>
  21760. <span id="MIPS-insn"></span><div class="header">
  21761. <p>
  21762. Next: <a href="#MIPS-FP-ABIs" accesskey="n" rel="next">MIPS FP ABIs</a>, Previous: <a href="#MIPS-autoextend" accesskey="p" rel="prev">MIPS autoextend</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21763. </div>
  21764. <span id="Directive-to-mark-data-as-an-instruction"></span><h4 class="subsection">9.28.8 Directive to mark data as an instruction</h4>
  21765. <span id="index-_002einsn"></span>
  21766. <p>The <code>.insn</code> directive tells <code>as</code> that the following
  21767. data is actually instructions. This makes a difference in MIPS 16 and
  21768. microMIPS modes: when loading the address of a label which precedes
  21769. instructions, <code>as</code> automatically adds 1 to the value, so
  21770. that jumping to the loaded address will do the right thing.
  21771. </p>
  21772. <span id="index-_002eglobal"></span>
  21773. <p>The <code>.global</code> and <code>.globl</code> directives supported by
  21774. <code>as</code> will by default mark the symbol as pointing to a
  21775. region of data not code. This means that, for example, any
  21776. instructions following such a symbol will not be disassembled by
  21777. <code>objdump</code> as it will regard them as data. To change this
  21778. behavior an optional section name can be placed after the symbol name
  21779. in the <code>.global</code> directive. If this section exists and is known
  21780. to be a code section, then the symbol will be marked as pointing at
  21781. code not data. Ie the syntax for the directive is:
  21782. </p>
  21783. <p><code>.global <var>symbol</var>[ <var>section</var>][, <var>symbol</var>[ <var>section</var>]] ...</code>,
  21784. </p>
  21785. <p>Here is a short example:
  21786. </p>
  21787. <div class="example">
  21788. <pre class="example"> .global foo .text, bar, baz .data
  21789. foo:
  21790. nop
  21791. bar:
  21792. .word 0x0
  21793. baz:
  21794. .word 0x1
  21795. </pre></div>
  21796. <hr>
  21797. <span id="MIPS-FP-ABIs"></span><div class="header">
  21798. <p>
  21799. Next: <a href="#MIPS-NaN-Encodings" accesskey="n" rel="next">MIPS NaN Encodings</a>, Previous: <a href="#MIPS-insn" accesskey="p" rel="prev">MIPS insn</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21800. </div>
  21801. <span id="Directives-to-control-the-FP-ABI"></span><h4 class="subsection">9.28.9 Directives to control the FP ABI</h4>
  21802. <table class="menu" border="0" cellspacing="0">
  21803. <tr><td align="left" valign="top">&bull; <a href="#MIPS-FP-ABI-History" accesskey="1">MIPS FP ABI History</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">History of FP ABIs
  21804. </td></tr>
  21805. <tr><td align="left" valign="top">&bull; <a href="#MIPS-FP-ABI-Variants" accesskey="2">MIPS FP ABI Variants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Supported FP ABIs
  21806. </td></tr>
  21807. <tr><td align="left" valign="top">&bull; <a href="#MIPS-FP-ABI-Selection" accesskey="3">MIPS FP ABI Selection</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Automatic selection of FP ABI
  21808. </td></tr>
  21809. <tr><td align="left" valign="top">&bull; <a href="#MIPS-FP-ABI-Compatibility" accesskey="4">MIPS FP ABI Compatibility</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Linking different FP ABI variants
  21810. </td></tr>
  21811. </table>
  21812. <hr>
  21813. <span id="MIPS-FP-ABI-History"></span><div class="header">
  21814. <p>
  21815. Next: <a href="#MIPS-FP-ABI-Variants" accesskey="n" rel="next">MIPS FP ABI Variants</a>, Up: <a href="#MIPS-FP-ABIs" accesskey="u" rel="up">MIPS FP ABIs</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21816. </div>
  21817. <span id="History-of-FP-ABIs"></span><h4 class="subsubsection">9.28.9.1 History of FP ABIs</h4>
  21818. <span id="index-_002egnu_005fattribute-4_002c-n-directive_002c-MIPS"></span>
  21819. <span id="index-_002egnu_005fattribute-Tag_005fGNU_005fMIPS_005fABI_005fFP_002c-n-directive_002c-MIPS"></span>
  21820. <p>The MIPS ABIs support a variety of different floating-point extensions
  21821. where calling-convention and register sizes vary for floating-point data.
  21822. The extensions exist to support a wide variety of optional architecture
  21823. features. The resulting ABI variants are generally incompatible with each
  21824. other and must be tracked carefully.
  21825. </p>
  21826. <p>Traditionally the use of an explicit <code>.gnu_attribute 4, <var>n</var></code>
  21827. directive is used to indicate which ABI is in use by a specific module.
  21828. It was then left to the user to ensure that command-line options and the
  21829. selected ABI were compatible with some potential for inconsistencies.
  21830. </p>
  21831. <hr>
  21832. <span id="MIPS-FP-ABI-Variants"></span><div class="header">
  21833. <p>
  21834. Next: <a href="#MIPS-FP-ABI-Selection" accesskey="n" rel="next">MIPS FP ABI Selection</a>, Previous: <a href="#MIPS-FP-ABI-History" accesskey="p" rel="prev">MIPS FP ABI History</a>, Up: <a href="#MIPS-FP-ABIs" accesskey="u" rel="up">MIPS FP ABIs</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21835. </div>
  21836. <span id="Supported-FP-ABIs"></span><h4 class="subsubsection">9.28.9.2 Supported FP ABIs</h4>
  21837. <p>The supported floating-point ABI variants are:
  21838. </p>
  21839. <dl compact="compact">
  21840. <dt><code>0 - No floating-point</code></dt>
  21841. <dd><p>This variant is used to indicate that floating-point is not used within
  21842. the module at all and therefore has no impact on the ABI. This is the
  21843. default.
  21844. </p>
  21845. </dd>
  21846. <dt><code>1 - Double-precision</code></dt>
  21847. <dd><p>This variant indicates that double-precision support is used. For 64-bit
  21848. ABIs this means that 64-bit wide floating-point registers are required.
  21849. For 32-bit ABIs this means that 32-bit wide floating-point registers are
  21850. required and double-precision operations use pairs of registers.
  21851. </p>
  21852. </dd>
  21853. <dt><code>2 - Single-precision</code></dt>
  21854. <dd><p>This variant indicates that single-precision support is used. Double
  21855. precision operations will be supported via soft-float routines.
  21856. </p>
  21857. </dd>
  21858. <dt><code>3 - Soft-float</code></dt>
  21859. <dd><p>This variant indicates that although floating-point support is used all
  21860. operations are emulated in software. This means the ABI is modified to
  21861. pass all floating-point data in general-purpose registers.
  21862. </p>
  21863. </dd>
  21864. <dt><code>4 - Deprecated</code></dt>
  21865. <dd><p>This variant existed as an initial attempt at supporting 64-bit wide
  21866. floating-point registers for O32 ABI on a MIPS32r2 CPU. This has been
  21867. superseded by 5, 6 and 7.
  21868. </p>
  21869. </dd>
  21870. <dt><code>5 - Double-precision 32-bit CPU, 32-bit or 64-bit FPU</code></dt>
  21871. <dd><p>This variant is used by 32-bit ABIs to indicate that the floating-point
  21872. code in the module has been designed to operate correctly with either
  21873. 32-bit wide or 64-bit wide floating-point registers. Double-precision
  21874. support is used. Only O32 currently supports this variant and requires
  21875. a minimum architecture of MIPS II.
  21876. </p>
  21877. </dd>
  21878. <dt><code>6 - Double-precision 32-bit FPU, 64-bit FPU</code></dt>
  21879. <dd><p>This variant is used by 32-bit ABIs to indicate that the floating-point
  21880. code in the module requires 64-bit wide floating-point registers.
  21881. Double-precision support is used. Only O32 currently supports this
  21882. variant and requires a minimum architecture of MIPS32r2.
  21883. </p>
  21884. </dd>
  21885. <dt><code>7 - Double-precision compat 32-bit FPU, 64-bit FPU</code></dt>
  21886. <dd><p>This variant is used by 32-bit ABIs to indicate that the floating-point
  21887. code in the module requires 64-bit wide floating-point registers.
  21888. Double-precision support is used. This differs from the previous ABI
  21889. as it restricts use of odd-numbered single-precision registers. Only
  21890. O32 currently supports this variant and requires a minimum architecture
  21891. of MIPS32r2.
  21892. </p></dd>
  21893. </dl>
  21894. <hr>
  21895. <span id="MIPS-FP-ABI-Selection"></span><div class="header">
  21896. <p>
  21897. Next: <a href="#MIPS-FP-ABI-Compatibility" accesskey="n" rel="next">MIPS FP ABI Compatibility</a>, Previous: <a href="#MIPS-FP-ABI-Variants" accesskey="p" rel="prev">MIPS FP ABI Variants</a>, Up: <a href="#MIPS-FP-ABIs" accesskey="u" rel="up">MIPS FP ABIs</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21898. </div>
  21899. <span id="Automatic-selection-of-FP-ABI"></span><h4 class="subsubsection">9.28.9.3 Automatic selection of FP ABI</h4>
  21900. <span id="index-_002emodule-fp_003dnn-directive_002c-MIPS"></span>
  21901. <p>In order to simplify and add safety to the process of selecting the
  21902. correct floating-point ABI, the assembler will automatically infer the
  21903. correct <code>.gnu_attribute 4, <var>n</var></code> directive based on command-line
  21904. options and <code>.module</code> overrides. Where an explicit
  21905. <code>.gnu_attribute 4, <var>n</var></code> directive has been seen then a warning
  21906. will be raised if it does not match an inferred setting.
  21907. </p>
  21908. <p>The floating-point ABI is inferred as follows. If &lsquo;<samp>-msoft-float</samp>&rsquo;
  21909. has been used the module will be marked as soft-float. If
  21910. &lsquo;<samp>-msingle-float</samp>&rsquo; has been used then the module will be marked as
  21911. single-precision. The remaining ABIs are then selected based
  21912. on the FP register width. Double-precision is selected if the width
  21913. of GP and FP registers match and the special double-precision variants
  21914. for 32-bit ABIs are then selected depending on &lsquo;<samp>-mfpxx</samp>&rsquo;,
  21915. &lsquo;<samp>-mfp64</samp>&rsquo; and &lsquo;<samp>-mno-odd-spreg</samp>&rsquo;.
  21916. </p>
  21917. <hr>
  21918. <span id="MIPS-FP-ABI-Compatibility"></span><div class="header">
  21919. <p>
  21920. Previous: <a href="#MIPS-FP-ABI-Selection" accesskey="p" rel="prev">MIPS FP ABI Selection</a>, Up: <a href="#MIPS-FP-ABIs" accesskey="u" rel="up">MIPS FP ABIs</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21921. </div>
  21922. <span id="Linking-different-FP-ABI-variants"></span><h4 class="subsubsection">9.28.9.4 Linking different FP ABI variants</h4>
  21923. <p>Modules using the default FP ABI (no floating-point) can be linked with
  21924. any other (singular) FP ABI variant.
  21925. </p>
  21926. <p>Special compatibility support exists for O32 with the four
  21927. double-precision FP ABI variants. The &lsquo;<samp>-mfpxx</samp>&rsquo; FP ABI is specifically
  21928. designed to be compatible with the standard double-precision ABI and the
  21929. &lsquo;<samp>-mfp64</samp>&rsquo; FP ABIs. This makes it desirable for O32 modules to be
  21930. built as &lsquo;<samp>-mfpxx</samp>&rsquo; to ensure the maximum compatibility with other
  21931. modules produced for more specific needs. The only FP ABIs which cannot
  21932. be linked together are the standard double-precision ABI and the full
  21933. &lsquo;<samp>-mfp64</samp>&rsquo; ABI with &lsquo;<samp>-modd-spreg</samp>&rsquo;.
  21934. </p>
  21935. <hr>
  21936. <span id="MIPS-NaN-Encodings"></span><div class="header">
  21937. <p>
  21938. Next: <a href="#MIPS-Option-Stack" accesskey="n" rel="next">MIPS Option Stack</a>, Previous: <a href="#MIPS-FP-ABIs" accesskey="p" rel="prev">MIPS FP ABIs</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21939. </div>
  21940. <span id="Directives-to-record-which-NaN-encoding-is-being-used"></span><h4 class="subsection">9.28.10 Directives to record which NaN encoding is being used</h4>
  21941. <span id="index-MIPS-IEEE-754-NaN-data-encoding-selection"></span>
  21942. <span id="index-_002enan-directive_002c-MIPS"></span>
  21943. <p>The IEEE 754 floating-point standard defines two types of not-a-number
  21944. (NaN) data: &ldquo;signalling&rdquo; NaNs and &ldquo;quiet&rdquo; NaNs. The original version
  21945. of the standard did not specify how these two types should be
  21946. distinguished. Most implementations followed the i387 model, in which
  21947. the first bit of the significand is set for quiet NaNs and clear for
  21948. signalling NaNs. However, the original MIPS implementation assigned the
  21949. opposite meaning to the bit, so that it was set for signalling NaNs and
  21950. clear for quiet NaNs.
  21951. </p>
  21952. <p>The 2008 revision of the standard formally suggested the i387 choice
  21953. and as from Sep 2012 the current release of the MIPS architecture
  21954. therefore optionally supports that form. Code that uses one NaN encoding
  21955. would usually be incompatible with code that uses the other NaN encoding,
  21956. so MIPS ELF objects have a flag (<code>EF_MIPS_NAN2008</code>) to record which
  21957. encoding is being used.
  21958. </p>
  21959. <p>Assembly files can use the <code>.nan</code> directive to select between the
  21960. two encodings. &lsquo;<samp>.nan 2008</samp>&rsquo; says that the assembly file uses the
  21961. IEEE 754-2008 encoding while &lsquo;<samp>.nan legacy</samp>&rsquo; says that the file uses
  21962. the original MIPS encoding. If several <code>.nan</code> directives are given,
  21963. the final setting is the one that is used.
  21964. </p>
  21965. <p>The command-line options <samp>-mnan=legacy</samp> and <samp>-mnan=2008</samp>
  21966. can be used instead of &lsquo;<samp>.nan legacy</samp>&rsquo; and &lsquo;<samp>.nan 2008</samp>&rsquo;
  21967. respectively. However, any <code>.nan</code> directive overrides the
  21968. command-line setting.
  21969. </p>
  21970. <p>&lsquo;<samp>.nan legacy</samp>&rsquo; is the default if no <code>.nan</code> directive or
  21971. <samp>-mnan</samp> option is given.
  21972. </p>
  21973. <p>Note that <small>GNU</small> <code>as</code> does not produce NaNs itself and
  21974. therefore these directives do not affect code generation. They simply
  21975. control the setting of the <code>EF_MIPS_NAN2008</code> flag.
  21976. </p>
  21977. <p>Traditional MIPS assemblers do not support these directives.
  21978. </p>
  21979. <hr>
  21980. <span id="MIPS-Option-Stack"></span><div class="header">
  21981. <p>
  21982. Next: <a href="#MIPS-ASE-Instruction-Generation-Overrides" accesskey="n" rel="next">MIPS ASE Instruction Generation Overrides</a>, Previous: <a href="#MIPS-NaN-Encodings" accesskey="p" rel="prev">MIPS NaN Encodings</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  21983. </div>
  21984. <span id="Directives-to-save-and-restore-options"></span><h4 class="subsection">9.28.11 Directives to save and restore options</h4>
  21985. <span id="index-MIPS-option-stack"></span>
  21986. <span id="index-_002eset-push"></span>
  21987. <span id="index-_002eset-pop"></span>
  21988. <p>The directives <code>.set push</code> and <code>.set pop</code> may be used to save
  21989. and restore the current settings for all the options which are
  21990. controlled by <code>.set</code>. The <code>.set push</code> directive saves the
  21991. current settings on a stack. The <code>.set pop</code> directive pops the
  21992. stack and restores the settings.
  21993. </p>
  21994. <p>These directives can be useful inside an macro which must change an
  21995. option such as the ISA level or instruction reordering but does not want
  21996. to change the state of the code which invoked the macro.
  21997. </p>
  21998. <p>Traditional MIPS assemblers do not support these directives.
  21999. </p>
  22000. <hr>
  22001. <span id="MIPS-ASE-Instruction-Generation-Overrides"></span><div class="header">
  22002. <p>
  22003. Next: <a href="#MIPS-Floating_002dPoint" accesskey="n" rel="next">MIPS Floating-Point</a>, Previous: <a href="#MIPS-Option-Stack" accesskey="p" rel="prev">MIPS Option Stack</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22004. </div>
  22005. <span id="Directives-to-control-generation-of-MIPS-ASE-instructions"></span><h4 class="subsection">9.28.12 Directives to control generation of MIPS ASE instructions</h4>
  22006. <span id="index-MIPS-MIPS_002d3D-instruction-generation-override"></span>
  22007. <span id="index-_002eset-mips3d"></span>
  22008. <span id="index-_002eset-nomips3d"></span>
  22009. <p>The directive <code>.set mips3d</code> makes the assembler accept instructions
  22010. from the MIPS-3D Application Specific Extension from that point on
  22011. in the assembly. The <code>.set nomips3d</code> directive prevents MIPS-3D
  22012. instructions from being accepted.
  22013. </p>
  22014. <span id="index-SmartMIPS-instruction-generation-override"></span>
  22015. <span id="index-_002eset-smartmips"></span>
  22016. <span id="index-_002eset-nosmartmips"></span>
  22017. <p>The directive <code>.set smartmips</code> makes the assembler accept
  22018. instructions from the SmartMIPS Application Specific Extension to the
  22019. MIPS32 ISA from that point on in the assembly. The
  22020. <code>.set nosmartmips</code> directive prevents SmartMIPS instructions from
  22021. being accepted.
  22022. </p>
  22023. <span id="index-MIPS-MDMX-instruction-generation-override"></span>
  22024. <span id="index-_002eset-mdmx"></span>
  22025. <span id="index-_002eset-nomdmx"></span>
  22026. <p>The directive <code>.set mdmx</code> makes the assembler accept instructions
  22027. from the MDMX Application Specific Extension from that point on
  22028. in the assembly. The <code>.set nomdmx</code> directive prevents MDMX
  22029. instructions from being accepted.
  22030. </p>
  22031. <span id="index-MIPS-DSP-Release-1-instruction-generation-override"></span>
  22032. <span id="index-_002eset-dsp"></span>
  22033. <span id="index-_002eset-nodsp"></span>
  22034. <p>The directive <code>.set dsp</code> makes the assembler accept instructions
  22035. from the DSP Release 1 Application Specific Extension from that point
  22036. on in the assembly. The <code>.set nodsp</code> directive prevents DSP
  22037. Release 1 instructions from being accepted.
  22038. </p>
  22039. <span id="index-MIPS-DSP-Release-2-instruction-generation-override"></span>
  22040. <span id="index-_002eset-dspr2"></span>
  22041. <span id="index-_002eset-nodspr2"></span>
  22042. <p>The directive <code>.set dspr2</code> makes the assembler accept instructions
  22043. from the DSP Release 2 Application Specific Extension from that point
  22044. on in the assembly. This directive implies <code>.set dsp</code>. The
  22045. <code>.set nodspr2</code> directive prevents DSP Release 2 instructions from
  22046. being accepted.
  22047. </p>
  22048. <span id="index-MIPS-DSP-Release-3-instruction-generation-override"></span>
  22049. <span id="index-_002eset-dspr3"></span>
  22050. <span id="index-_002eset-nodspr3"></span>
  22051. <p>The directive <code>.set dspr3</code> makes the assembler accept instructions
  22052. from the DSP Release 3 Application Specific Extension from that point
  22053. on in the assembly. This directive implies <code>.set dsp</code> and
  22054. <code>.set dspr2</code>. The <code>.set nodspr3</code> directive prevents DSP
  22055. Release 3 instructions from being accepted.
  22056. </p>
  22057. <span id="index-MIPS-MT-instruction-generation-override"></span>
  22058. <span id="index-_002eset-mt"></span>
  22059. <span id="index-_002eset-nomt"></span>
  22060. <p>The directive <code>.set mt</code> makes the assembler accept instructions
  22061. from the MT Application Specific Extension from that point on
  22062. in the assembly. The <code>.set nomt</code> directive prevents MT
  22063. instructions from being accepted.
  22064. </p>
  22065. <span id="index-MIPS-MCU-instruction-generation-override"></span>
  22066. <span id="index-_002eset-mcu"></span>
  22067. <span id="index-_002eset-nomcu"></span>
  22068. <p>The directive <code>.set mcu</code> makes the assembler accept instructions
  22069. from the MCU Application Specific Extension from that point on
  22070. in the assembly. The <code>.set nomcu</code> directive prevents MCU
  22071. instructions from being accepted.
  22072. </p>
  22073. <span id="index-MIPS-SIMD-Architecture-instruction-generation-override"></span>
  22074. <span id="index-_002eset-msa"></span>
  22075. <span id="index-_002eset-nomsa"></span>
  22076. <p>The directive <code>.set msa</code> makes the assembler accept instructions
  22077. from the MIPS SIMD Architecture Extension from that point on
  22078. in the assembly. The <code>.set nomsa</code> directive prevents MSA
  22079. instructions from being accepted.
  22080. </p>
  22081. <span id="index-Virtualization-instruction-generation-override"></span>
  22082. <span id="index-_002eset-virt"></span>
  22083. <span id="index-_002eset-novirt"></span>
  22084. <p>The directive <code>.set virt</code> makes the assembler accept instructions
  22085. from the Virtualization Application Specific Extension from that point
  22086. on in the assembly. The <code>.set novirt</code> directive prevents Virtualization
  22087. instructions from being accepted.
  22088. </p>
  22089. <span id="index-MIPS-eXtended-Physical-Address-_0028XPA_0029-instruction-generation-override"></span>
  22090. <span id="index-_002eset-xpa"></span>
  22091. <span id="index-_002eset-noxpa"></span>
  22092. <p>The directive <code>.set xpa</code> makes the assembler accept instructions
  22093. from the XPA Extension from that point on in the assembly. The
  22094. <code>.set noxpa</code> directive prevents XPA instructions from being accepted.
  22095. </p>
  22096. <span id="index-MIPS16e2-instruction-generation-override"></span>
  22097. <span id="index-_002eset-mips16e2"></span>
  22098. <span id="index-_002eset-nomips16e2"></span>
  22099. <p>The directive <code>.set mips16e2</code> makes the assembler accept instructions
  22100. from the MIPS16e2 Application Specific Extension from that point on in the
  22101. assembly, whenever in MIPS16 mode. The <code>.set nomips16e2</code> directive
  22102. prevents MIPS16e2 instructions from being accepted, in MIPS16 mode. Neither
  22103. directive affects the state of MIPS16 mode being active itself which has
  22104. separate controls.
  22105. </p>
  22106. <span id="index-MIPS-cyclic-redundancy-check-_0028CRC_0029-instruction-generation-override"></span>
  22107. <span id="index-_002eset-crc"></span>
  22108. <span id="index-_002eset-nocrc"></span>
  22109. <p>The directive <code>.set crc</code> makes the assembler accept instructions
  22110. from the CRC Extension from that point on in the assembly. The
  22111. <code>.set nocrc</code> directive prevents CRC instructions from being accepted.
  22112. </p>
  22113. <span id="index-MIPS-Global-INValidate-_0028GINV_0029-instruction-generation-override"></span>
  22114. <span id="index-_002eset-ginv"></span>
  22115. <span id="index-_002eset-noginv"></span>
  22116. <p>The directive <code>.set ginv</code> makes the assembler accept instructions
  22117. from the GINV Extension from that point on in the assembly. The
  22118. <code>.set noginv</code> directive prevents GINV instructions from being accepted.
  22119. </p>
  22120. <span id="index-Loongson-MultiMedia-extensions-Instructions-_0028MMI_0029-generation-override"></span>
  22121. <span id="index-_002eset-loongson_002dmmi"></span>
  22122. <span id="index-_002eset-noloongson_002dmmi"></span>
  22123. <p>The directive <code>.set loongson-mmi</code> makes the assembler accept
  22124. instructions from the MMI Extension from that point on in the assembly.
  22125. The <code>.set noloongson-mmi</code> directive prevents MMI instructions from
  22126. being accepted.
  22127. </p>
  22128. <span id="index-Loongson-Content-Address-Memory-_0028CAM_0029-generation-override"></span>
  22129. <span id="index-_002eset-loongson_002dcam"></span>
  22130. <span id="index-_002eset-noloongson_002dcam"></span>
  22131. <p>The directive <code>.set loongson-cam</code> makes the assembler accept
  22132. instructions from the Loongson CAM from that point on in the assembly.
  22133. The <code>.set noloongson-cam</code> directive prevents Loongson CAM instructions
  22134. from being accepted.
  22135. </p>
  22136. <span id="index-Loongson-EXTensions-_0028EXT_0029-instructions-generation-override"></span>
  22137. <span id="index-_002eset-loongson_002dext"></span>
  22138. <span id="index-_002eset-noloongson_002dext"></span>
  22139. <p>The directive <code>.set loongson-ext</code> makes the assembler accept
  22140. instructions from the Loongson EXT from that point on in the assembly.
  22141. The <code>.set noloongson-ext</code> directive prevents Loongson EXT instructions
  22142. from being accepted.
  22143. </p>
  22144. <span id="index-Loongson-EXTensions-R2-_0028EXT2_0029-instructions-generation-override"></span>
  22145. <span id="index-_002eset-loongson_002dext2"></span>
  22146. <span id="index-_002eset-noloongson_002dext2"></span>
  22147. <p>The directive <code>.set loongson-ext2</code> makes the assembler accept
  22148. instructions from the Loongson EXT2 from that point on in the assembly.
  22149. This directive implies <code>.set loognson-ext</code>.
  22150. The <code>.set noloongson-ext2</code> directive prevents Loongson EXT2 instructions
  22151. from being accepted.
  22152. </p>
  22153. <p>Traditional MIPS assemblers do not support these directives.
  22154. </p>
  22155. <hr>
  22156. <span id="MIPS-Floating_002dPoint"></span><div class="header">
  22157. <p>
  22158. Next: <a href="#MIPS-Syntax" accesskey="n" rel="next">MIPS Syntax</a>, Previous: <a href="#MIPS-ASE-Instruction-Generation-Overrides" accesskey="p" rel="prev">MIPS ASE Instruction Generation Overrides</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22159. </div>
  22160. <span id="Directives-to-override-floating_002dpoint-options"></span><h4 class="subsection">9.28.13 Directives to override floating-point options</h4>
  22161. <span id="index-Disable-floating_002dpoint-instructions"></span>
  22162. <span id="index-_002eset-softfloat"></span>
  22163. <span id="index-_002eset-hardfloat"></span>
  22164. <p>The directives <code>.set softfloat</code> and <code>.set hardfloat</code> provide
  22165. finer control of disabling and enabling float-point instructions.
  22166. These directives always override the default (that hard-float
  22167. instructions are accepted) or the command-line options
  22168. (&lsquo;<samp>-msoft-float</samp>&rsquo; and &lsquo;<samp>-mhard-float</samp>&rsquo;).
  22169. </p>
  22170. <span id="index-Disable-single_002dprecision-floating_002dpoint-operations"></span>
  22171. <span id="index-_002eset-singlefloat"></span>
  22172. <span id="index-_002eset-doublefloat"></span>
  22173. <p>The directives <code>.set singlefloat</code> and <code>.set doublefloat</code>
  22174. provide finer control of disabling and enabling double-precision
  22175. float-point operations. These directives always override the default
  22176. (that double-precision operations are accepted) or the command-line
  22177. options (&lsquo;<samp>-msingle-float</samp>&rsquo; and &lsquo;<samp>-mdouble-float</samp>&rsquo;).
  22178. </p>
  22179. <p>Traditional MIPS assemblers do not support these directives.
  22180. </p>
  22181. <hr>
  22182. <span id="MIPS-Syntax"></span><div class="header">
  22183. <p>
  22184. Previous: <a href="#MIPS-Floating_002dPoint" accesskey="p" rel="prev">MIPS Floating-Point</a>, Up: <a href="#MIPS_002dDependent" accesskey="u" rel="up">MIPS-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22185. </div>
  22186. <span id="Syntactical-considerations-for-the-MIPS-assembler"></span><h4 class="subsection">9.28.14 Syntactical considerations for the MIPS assembler</h4>
  22187. <table class="menu" border="0" cellspacing="0">
  22188. <tr><td align="left" valign="top">&bull; <a href="#MIPS_002dChars" accesskey="1">MIPS-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  22189. </td></tr>
  22190. </table>
  22191. <hr>
  22192. <span id="MIPS_002dChars"></span><div class="header">
  22193. <p>
  22194. Up: <a href="#MIPS-Syntax" accesskey="u" rel="up">MIPS Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22195. </div>
  22196. <span id="Special-Characters-19"></span><h4 class="subsubsection">9.28.14.1 Special Characters</h4>
  22197. <span id="index-line-comment-character_002c-MIPS"></span>
  22198. <span id="index-MIPS-line-comment-character"></span>
  22199. <p>The presence of a &lsquo;<samp>#</samp>&rsquo; on a line indicates the start of a comment
  22200. that extends to the end of the current line.
  22201. </p>
  22202. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line, the whole line
  22203. is treated as a comment, but in this case the line can also be a
  22204. logical line number directive (see <a href="#Comments">Comments</a>) or a
  22205. preprocessor control command (see <a href="#Preprocessing">Preprocessing</a>).
  22206. </p>
  22207. <span id="index-line-separator_002c-MIPS"></span>
  22208. <span id="index-statement-separator_002c-MIPS"></span>
  22209. <span id="index-MIPS-line-separator"></span>
  22210. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used to separate statements on the same
  22211. line.
  22212. </p>
  22213. <hr>
  22214. <span id="MMIX_002dDependent"></span><div class="header">
  22215. <p>
  22216. Next: <a href="#MSP430_002dDependent" accesskey="n" rel="next">MSP430-Dependent</a>, Previous: <a href="#MIPS_002dDependent" accesskey="p" rel="prev">MIPS-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22217. </div>
  22218. <span id="MMIX-Dependent-Features"></span><h3 class="section">9.29 MMIX Dependent Features</h3>
  22219. <span id="index-MMIX-support"></span>
  22220. <table class="menu" border="0" cellspacing="0">
  22221. <tr><td align="left" valign="top">&bull; <a href="#MMIX_002dOpts" accesskey="1">MMIX-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command-line Options
  22222. </td></tr>
  22223. <tr><td align="left" valign="top">&bull; <a href="#MMIX_002dExpand" accesskey="2">MMIX-Expand</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Instruction expansion
  22224. </td></tr>
  22225. <tr><td align="left" valign="top">&bull; <a href="#MMIX_002dSyntax" accesskey="3">MMIX-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  22226. </td></tr>
  22227. <tr><td align="left" valign="top">&bull; <a href="#MMIX_002dmmixal" accesskey="4">MMIX-mmixal</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Differences to <code>mmixal</code> syntax and semantics
  22228. </td></tr>
  22229. </table>
  22230. <hr>
  22231. <span id="MMIX_002dOpts"></span><div class="header">
  22232. <p>
  22233. Next: <a href="#MMIX_002dExpand" accesskey="n" rel="next">MMIX-Expand</a>, Up: <a href="#MMIX_002dDependent" accesskey="u" rel="up">MMIX-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22234. </div>
  22235. <span id="Command_002dline-Options-1"></span><h4 class="subsection">9.29.1 Command-line Options</h4>
  22236. <span id="index-options_002c-MMIX"></span>
  22237. <span id="index-MMIX-options"></span>
  22238. <p>The MMIX version of <code>as</code> has some machine-dependent options.
  22239. </p>
  22240. <span id="index-_002d_002dfixed_002dspecial_002dregister_002dnames-command_002dline-option_002c-MMIX"></span>
  22241. <p>When &lsquo;<samp>--fixed-special-register-names</samp>&rsquo; is specified, only the register
  22242. names specified in <a href="#MMIX_002dRegs">MMIX-Regs</a> are recognized in the instructions
  22243. <code>PUT</code> and <code>GET</code>.
  22244. </p>
  22245. <span id="index-_002d_002dglobalize_002dsymbols-command_002dline-option_002c-MMIX"></span>
  22246. <p>You can use the &lsquo;<samp>--globalize-symbols</samp>&rsquo; to make all symbols global.
  22247. This option is useful when splitting up a <code>mmixal</code> program into
  22248. several files.
  22249. </p>
  22250. <span id="index-_002d_002dgnu_002dsyntax-command_002dline-option_002c-MMIX"></span>
  22251. <p>The &lsquo;<samp>--gnu-syntax</samp>&rsquo; turns off most syntax compatibility with
  22252. <code>mmixal</code>. Its usability is currently doubtful.
  22253. </p>
  22254. <span id="index-_002d_002drelax-command_002dline-option_002c-MMIX"></span>
  22255. <p>The &lsquo;<samp>--relax</samp>&rsquo; option is not fully supported, but will eventually make
  22256. the object file prepared for linker relaxation.
  22257. </p>
  22258. <span id="index-_002d_002dno_002dpredefined_002dsyms-command_002dline-option_002c-MMIX"></span>
  22259. <p>If you want to avoid inadvertently calling a predefined symbol and would
  22260. rather get an error, for example when using <code>as</code> with a
  22261. compiler or other machine-generated code, specify
  22262. &lsquo;<samp>--no-predefined-syms</samp>&rsquo;. This turns off built-in predefined
  22263. definitions of all such symbols, including rounding-mode symbols, segment
  22264. symbols, &lsquo;<samp>BIT</samp>&rsquo; symbols, and <code>TRAP</code> symbols used in <code>mmix</code>
  22265. &ldquo;system calls&rdquo;. It also turns off predefined special-register names,
  22266. except when used in <code>PUT</code> and <code>GET</code> instructions.
  22267. </p>
  22268. <span id="index-_002d_002dno_002dexpand-command_002dline-option_002c-MMIX"></span>
  22269. <p>By default, some instructions are expanded to fit the size of the operand
  22270. or an external symbol (see <a href="#MMIX_002dExpand">MMIX-Expand</a>). By passing
  22271. &lsquo;<samp>--no-expand</samp>&rsquo;, no such expansion will be done, instead causing errors
  22272. at link time if the operand does not fit.
  22273. </p>
  22274. <span id="index-_002d_002dno_002dmerge_002dgregs-command_002dline-option_002c-MMIX"></span>
  22275. <p>The <code>mmixal</code> documentation (see <a href="#mmixsite">mmixsite</a>) specifies that global
  22276. registers allocated with the &lsquo;<samp>GREG</samp>&rsquo; directive (see <a href="#MMIX_002dgreg">MMIX-greg</a>) and
  22277. initialized to the same non-zero value, will refer to the same global
  22278. register. This isn&rsquo;t strictly enforceable in <code>as</code> since the
  22279. final addresses aren&rsquo;t known until link-time, but it will do an effort
  22280. unless the &lsquo;<samp>--no-merge-gregs</samp>&rsquo; option is specified. (Register merging
  22281. isn&rsquo;t yet implemented in <code>ld</code>.)
  22282. </p>
  22283. <span id="index-_002dx-command_002dline-option_002c-MMIX"></span>
  22284. <p><code>as</code> will warn every time it expands an instruction to fit an
  22285. operand unless the option &lsquo;<samp>-x</samp>&rsquo; is specified. It is believed that
  22286. this behaviour is more useful than just mimicking <code>mmixal</code>&rsquo;s
  22287. behaviour, in which instructions are only expanded if the &lsquo;<samp>-x</samp>&rsquo; option
  22288. is specified, and assembly fails otherwise, when an instruction needs to
  22289. be expanded. It needs to be kept in mind that <code>mmixal</code> is both an
  22290. assembler and linker, while <code>as</code> will expand instructions
  22291. that at link stage can be contracted. (Though linker relaxation isn&rsquo;t yet
  22292. implemented in <code>ld</code>.) The option &lsquo;<samp>-x</samp>&rsquo; also implies
  22293. &lsquo;<samp>--linker-allocated-gregs</samp>&rsquo;.
  22294. </p>
  22295. <span id="index-_002d_002dno_002dpushj_002dstubs-command_002dline-option_002c-MMIX"></span>
  22296. <span id="index-_002d_002dno_002dstubs-command_002dline-option_002c-MMIX"></span>
  22297. <p>If instruction expansion is enabled, <code>as</code> can expand a
  22298. &lsquo;<samp>PUSHJ</samp>&rsquo; instruction into a series of instructions. The shortest
  22299. expansion is to not expand it, but just mark the call as redirectable to a
  22300. stub, which <code>ld</code> creates at link-time, but only if the
  22301. original &lsquo;<samp>PUSHJ</samp>&rsquo; instruction is found not to reach the target. The
  22302. stub consists of the necessary instructions to form a jump to the target.
  22303. This happens if <code>as</code> can assert that the &lsquo;<samp>PUSHJ</samp>&rsquo;
  22304. instruction can reach such a stub. The option &lsquo;<samp>--no-pushj-stubs</samp>&rsquo;
  22305. disables this shorter expansion, and the longer series of instructions is
  22306. then created at assembly-time. The option &lsquo;<samp>--no-stubs</samp>&rsquo; is a synonym,
  22307. intended for compatibility with future releases, where generation of stubs
  22308. for other instructions may be implemented.
  22309. </p>
  22310. <span id="index-_002d_002dlinker_002dallocated_002dgregs-command_002dline-option_002c-MMIX"></span>
  22311. <p>Usually a two-operand-expression (see <a href="#GREG_002dbase">GREG-base</a>) without a matching
  22312. &lsquo;<samp>GREG</samp>&rsquo; directive is treated as an error by <code>as</code>. When
  22313. the option &lsquo;<samp>--linker-allocated-gregs</samp>&rsquo; is in effect, they are instead
  22314. passed through to the linker, which will allocate as many global registers
  22315. as is needed.
  22316. </p>
  22317. <hr>
  22318. <span id="MMIX_002dExpand"></span><div class="header">
  22319. <p>
  22320. Next: <a href="#MMIX_002dSyntax" accesskey="n" rel="next">MMIX-Syntax</a>, Previous: <a href="#MMIX_002dOpts" accesskey="p" rel="prev">MMIX-Opts</a>, Up: <a href="#MMIX_002dDependent" accesskey="u" rel="up">MMIX-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22321. </div>
  22322. <span id="Instruction-expansion-1"></span><h4 class="subsection">9.29.2 Instruction expansion</h4>
  22323. <span id="index-instruction-expansion_002c-MMIX"></span>
  22324. <p>When <code>as</code> encounters an instruction with an operand that is
  22325. either not known or does not fit the operand size of the instruction,
  22326. <code>as</code> (and <code>ld</code>) will expand the instruction into
  22327. a sequence of instructions semantically equivalent to the operand fitting
  22328. the instruction. Expansion will take place for the following
  22329. instructions:
  22330. </p>
  22331. <dl compact="compact">
  22332. <dt>&lsquo;<samp>GETA</samp>&rsquo;</dt>
  22333. <dd><p>Expands to a sequence of four instructions: <code>SETL</code>, <code>INCML</code>,
  22334. <code>INCMH</code> and <code>INCH</code>. The operand must be a multiple of four.
  22335. </p></dd>
  22336. <dt>Conditional branches</dt>
  22337. <dd><p>A branch instruction is turned into a branch with the complemented
  22338. condition and prediction bit over five instructions; four instructions
  22339. setting <code>$255</code> to the operand value, which like with <code>GETA</code> must
  22340. be a multiple of four, and a final <code>GO $255,$255,0</code>.
  22341. </p></dd>
  22342. <dt>&lsquo;<samp>PUSHJ</samp>&rsquo;</dt>
  22343. <dd><p>Similar to expansion for conditional branches; four instructions set
  22344. <code>$255</code> to the operand value, followed by a <code>PUSHGO $255,$255,0</code>.
  22345. </p></dd>
  22346. <dt>&lsquo;<samp>JMP</samp>&rsquo;</dt>
  22347. <dd><p>Similar to conditional branches and <code>PUSHJ</code>. The final instruction
  22348. is <code>GO $255,$255,0</code>.
  22349. </p></dd>
  22350. </dl>
  22351. <p>The linker <code>ld</code> is expected to shrink these expansions for
  22352. code assembled with &lsquo;<samp>--relax</samp>&rsquo; (though not currently implemented).
  22353. </p>
  22354. <hr>
  22355. <span id="MMIX_002dSyntax"></span><div class="header">
  22356. <p>
  22357. Next: <a href="#MMIX_002dmmixal" accesskey="n" rel="next">MMIX-mmixal</a>, Previous: <a href="#MMIX_002dExpand" accesskey="p" rel="prev">MMIX-Expand</a>, Up: <a href="#MMIX_002dDependent" accesskey="u" rel="up">MMIX-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22358. </div>
  22359. <span id="Syntax-20"></span><h4 class="subsection">9.29.3 Syntax</h4>
  22360. <p>The assembly syntax is supposed to be upward compatible with that
  22361. described in Sections 1.3 and 1.4 of &lsquo;<samp>The Art of Computer
  22362. Programming, Volume 1</samp>&rsquo;. Draft versions of those chapters as well as other
  22363. MMIX information is located at
  22364. <span id="mmixsite"></span><a href="http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html">http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html</a>.
  22365. Most code examples from the mmixal package located there should work
  22366. unmodified when assembled and linked as single files, with a few
  22367. noteworthy exceptions (see <a href="#MMIX_002dmmixal">MMIX-mmixal</a>).
  22368. </p>
  22369. <p>Before an instruction is emitted, the current location is aligned to the
  22370. next four-byte boundary. If a label is defined at the beginning of the
  22371. line, its value will be the aligned value.
  22372. </p>
  22373. <p>In addition to the traditional hex-prefix &lsquo;<samp>0x</samp>&rsquo;, a hexadecimal number
  22374. can also be specified by the prefix character &lsquo;<samp>#</samp>&rsquo;.
  22375. </p>
  22376. <p>After all operands to an MMIX instruction or directive have been
  22377. specified, the rest of the line is ignored, treated as a comment.
  22378. </p>
  22379. <table class="menu" border="0" cellspacing="0">
  22380. <tr><td align="left" valign="top">&bull; <a href="#MMIX_002dChars" accesskey="1">MMIX-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  22381. </td></tr>
  22382. <tr><td align="left" valign="top">&bull; <a href="#MMIX_002dSymbols" accesskey="2">MMIX-Symbols</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbols
  22383. </td></tr>
  22384. <tr><td align="left" valign="top">&bull; <a href="#MMIX_002dRegs" accesskey="3">MMIX-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  22385. </td></tr>
  22386. <tr><td align="left" valign="top">&bull; <a href="#MMIX_002dPseudos" accesskey="4">MMIX-Pseudos</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Directives
  22387. </td></tr>
  22388. </table>
  22389. <hr>
  22390. <span id="MMIX_002dChars"></span><div class="header">
  22391. <p>
  22392. Next: <a href="#MMIX_002dSymbols" accesskey="n" rel="next">MMIX-Symbols</a>, Up: <a href="#MMIX_002dSyntax" accesskey="u" rel="up">MMIX-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22393. </div>
  22394. <span id="Special-Characters-20"></span><h4 class="subsubsection">9.29.3.1 Special Characters</h4>
  22395. <span id="index-line-comment-characters_002c-MMIX"></span>
  22396. <span id="index-MMIX-line-comment-characters"></span>
  22397. <p>The characters &lsquo;<samp>*</samp>&rsquo; and &lsquo;<samp>#</samp>&rsquo; are line comment characters; each
  22398. start a comment at the beginning of a line, but only at the beginning of a
  22399. line. A &lsquo;<samp>#</samp>&rsquo; prefixes a hexadecimal number if found elsewhere on a
  22400. line. If a &lsquo;<samp>#</samp>&rsquo; appears at the start of a line the whole line is
  22401. treated as a comment, but the line can also act as a logical line
  22402. number directive (see <a href="#Comments">Comments</a>) or a preprocessor control command
  22403. (see <a href="#Preprocessing">Preprocessing</a>).
  22404. </p>
  22405. <p>Two other characters, &lsquo;<samp>%</samp>&rsquo; and &lsquo;<samp>!</samp>&rsquo;, each start a comment anywhere
  22406. on the line. Thus you can&rsquo;t use the &lsquo;<samp>modulus</samp>&rsquo; and &lsquo;<samp>not</samp>&rsquo;
  22407. operators in expressions normally associated with these two characters.
  22408. </p>
  22409. <p>A &lsquo;<samp>;</samp>&rsquo; is a line separator, treated as a new-line, so separate
  22410. instructions can be specified on a single line.
  22411. </p>
  22412. <hr>
  22413. <span id="MMIX_002dSymbols"></span><div class="header">
  22414. <p>
  22415. Next: <a href="#MMIX_002dRegs" accesskey="n" rel="next">MMIX-Regs</a>, Previous: <a href="#MMIX_002dChars" accesskey="p" rel="prev">MMIX-Chars</a>, Up: <a href="#MMIX_002dSyntax" accesskey="u" rel="up">MMIX-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22416. </div>
  22417. <span id="Symbols-4"></span><h4 class="subsubsection">9.29.3.2 Symbols</h4>
  22418. <p>The character &lsquo;<samp>:</samp>&rsquo; is permitted in identifiers. There are two
  22419. exceptions to it being treated as any other symbol character: if a symbol
  22420. begins with &lsquo;<samp>:</samp>&rsquo;, it means that the symbol is in the global namespace
  22421. and that the current prefix should not be prepended to that symbol
  22422. (see <a href="#MMIX_002dprefix">MMIX-prefix</a>). The &lsquo;<samp>:</samp>&rsquo; is then not considered part of the
  22423. symbol. For a symbol in the label position (first on a line), a &lsquo;<samp>:</samp>&rsquo;
  22424. at the end of a symbol is silently stripped off. A label is permitted,
  22425. but not required, to be followed by a &lsquo;<samp>:</samp>&rsquo;, as with many other
  22426. assembly formats.
  22427. </p>
  22428. <p>The character &lsquo;<samp>@</samp>&rsquo; in an expression, is a synonym for &lsquo;<samp>.</samp>&rsquo;, the
  22429. current location.
  22430. </p>
  22431. <p>In addition to the common forward and backward local symbol formats
  22432. (see <a href="#Symbol-Names">Symbol Names</a>), they can be specified with upper-case &lsquo;<samp>B</samp>&rsquo; and
  22433. &lsquo;<samp>F</samp>&rsquo;, as in &lsquo;<samp>8B</samp>&rsquo; and &lsquo;<samp>9F</samp>&rsquo;. A local label defined for the
  22434. current position is written with a &lsquo;<samp>H</samp>&rsquo; appended to the number:
  22435. </p><div class="example">
  22436. <pre class="example">3H LDB $0,$1,2
  22437. </pre></div>
  22438. <p>This and traditional local-label formats cannot be mixed: a label must be
  22439. defined and referred to using the same format.
  22440. </p>
  22441. <p>There&rsquo;s a minor caveat: just as for the ordinary local symbols, the local
  22442. symbols are translated into ordinary symbols using control characters are
  22443. to hide the ordinal number of the symbol. Unfortunately, these symbols
  22444. are not translated back in error messages. Thus you may see confusing
  22445. error messages when local symbols are used. Control characters
  22446. &lsquo;<samp>\003</samp>&rsquo; (control-C) and &lsquo;<samp>\004</samp>&rsquo; (control-D) are used for the
  22447. MMIX-specific local-symbol syntax.
  22448. </p>
  22449. <p>The symbol &lsquo;<samp>Main</samp>&rsquo; is handled specially; it is always global.
  22450. </p>
  22451. <p>By defining the symbols &lsquo;<samp>__.MMIX.start..text</samp>&rsquo; and
  22452. &lsquo;<samp>__.MMIX.start..data</samp>&rsquo;, the address of respectively the &lsquo;<samp>.text</samp>&rsquo;
  22453. and &lsquo;<samp>.data</samp>&rsquo; segments of the final program can be defined, though when
  22454. linking more than one object file, the code or data in the object file
  22455. containing the symbol is not guaranteed to be start at that position; just
  22456. the final executable. See <a href="#MMIX_002dloc">MMIX-loc</a>.
  22457. </p>
  22458. <hr>
  22459. <span id="MMIX_002dRegs"></span><div class="header">
  22460. <p>
  22461. Next: <a href="#MMIX_002dPseudos" accesskey="n" rel="next">MMIX-Pseudos</a>, Previous: <a href="#MMIX_002dSymbols" accesskey="p" rel="prev">MMIX-Symbols</a>, Up: <a href="#MMIX_002dSyntax" accesskey="u" rel="up">MMIX-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22462. </div>
  22463. <span id="Register-names-1"></span><h4 class="subsubsection">9.29.3.3 Register names</h4>
  22464. <span id="index-register-names_002c-MMIX"></span>
  22465. <span id="index-MMIX-register-names"></span>
  22466. <p>Local and global registers are specified as &lsquo;<samp>$0</samp>&rsquo; to &lsquo;<samp>$255</samp>&rsquo;.
  22467. The recognized special register names are &lsquo;<samp>rJ</samp>&rsquo;, &lsquo;<samp>rA</samp>&rsquo;, &lsquo;<samp>rB</samp>&rsquo;,
  22468. &lsquo;<samp>rC</samp>&rsquo;, &lsquo;<samp>rD</samp>&rsquo;, &lsquo;<samp>rE</samp>&rsquo;, &lsquo;<samp>rF</samp>&rsquo;, &lsquo;<samp>rG</samp>&rsquo;, &lsquo;<samp>rH</samp>&rsquo;,
  22469. &lsquo;<samp>rI</samp>&rsquo;, &lsquo;<samp>rK</samp>&rsquo;, &lsquo;<samp>rL</samp>&rsquo;, &lsquo;<samp>rM</samp>&rsquo;, &lsquo;<samp>rN</samp>&rsquo;, &lsquo;<samp>rO</samp>&rsquo;,
  22470. &lsquo;<samp>rP</samp>&rsquo;, &lsquo;<samp>rQ</samp>&rsquo;, &lsquo;<samp>rR</samp>&rsquo;, &lsquo;<samp>rS</samp>&rsquo;, &lsquo;<samp>rT</samp>&rsquo;, &lsquo;<samp>rU</samp>&rsquo;,
  22471. &lsquo;<samp>rV</samp>&rsquo;, &lsquo;<samp>rW</samp>&rsquo;, &lsquo;<samp>rX</samp>&rsquo;, &lsquo;<samp>rY</samp>&rsquo;, &lsquo;<samp>rZ</samp>&rsquo;, &lsquo;<samp>rBB</samp>&rsquo;,
  22472. &lsquo;<samp>rTT</samp>&rsquo;, &lsquo;<samp>rWW</samp>&rsquo;, &lsquo;<samp>rXX</samp>&rsquo;, &lsquo;<samp>rYY</samp>&rsquo; and &lsquo;<samp>rZZ</samp>&rsquo;. A leading
  22473. &lsquo;<samp>:</samp>&rsquo; is optional for special register names.
  22474. </p>
  22475. <p>Local and global symbols can be equated to register names and used in
  22476. place of ordinary registers.
  22477. </p>
  22478. <p>Similarly for special registers, local and global symbols can be used.
  22479. Also, symbols equated from numbers and constant expressions are allowed in
  22480. place of a special register, except when either of the options
  22481. <code>--no-predefined-syms</code> and <code>--fixed-special-register-names</code> are
  22482. specified. Then only the special register names above are allowed for the
  22483. instructions having a special register operand; <code>GET</code> and <code>PUT</code>.
  22484. </p>
  22485. <hr>
  22486. <span id="MMIX_002dPseudos"></span><div class="header">
  22487. <p>
  22488. Previous: <a href="#MMIX_002dRegs" accesskey="p" rel="prev">MMIX-Regs</a>, Up: <a href="#MMIX_002dSyntax" accesskey="u" rel="up">MMIX-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22489. </div>
  22490. <span id="Assembler-Directives-3"></span><h4 class="subsubsection">9.29.3.4 Assembler Directives</h4>
  22491. <span id="index-assembler-directives_002c-MMIX"></span>
  22492. <span id="index-pseudo_002dops_002c-MMIX"></span>
  22493. <span id="index-MMIX-assembler-directives"></span>
  22494. <span id="index-MMIX-pseudo_002dops"></span>
  22495. <dl compact="compact">
  22496. <dt><code>LOC</code></dt>
  22497. <dd><span id="index-assembler-directive-LOC_002c-MMIX"></span>
  22498. <span id="index-pseudo_002dop-LOC_002c-MMIX"></span>
  22499. <span id="index-MMIX-assembler-directive-LOC"></span>
  22500. <span id="index-MMIX-pseudo_002dop-LOC"></span>
  22501. <span id="MMIX_002dloc"></span><p>The <code>LOC</code> directive sets the current location to the value of the
  22502. operand field, which may include changing sections. If the operand is a
  22503. constant, the section is set to either <code>.data</code> if the value is
  22504. <code>0x2000000000000000</code> or larger, else it is set to <code>.text</code>.
  22505. Within a section, the current location may only be changed to
  22506. monotonically higher addresses. A LOC expression must be a previously
  22507. defined symbol or a &ldquo;pure&rdquo; constant.
  22508. </p>
  22509. <p>An example, which sets the label <var>prev</var> to the current location, and
  22510. updates the current location to eight bytes forward:
  22511. </p><div class="example">
  22512. <pre class="example">prev LOC @+8
  22513. </pre></div>
  22514. <p>When a LOC has a constant as its operand, a symbol
  22515. <code>__.MMIX.start..text</code> or <code>__.MMIX.start..data</code> is defined
  22516. depending on the address as mentioned above. Each such symbol is
  22517. interpreted as special by the linker, locating the section at that
  22518. address. Note that if multiple files are linked, the first object file
  22519. with that section will be mapped to that address (not necessarily the file
  22520. with the LOC definition).
  22521. </p>
  22522. </dd>
  22523. <dt><code>LOCAL</code></dt>
  22524. <dd><span id="index-assembler-directive-LOCAL_002c-MMIX"></span>
  22525. <span id="index-pseudo_002dop-LOCAL_002c-MMIX"></span>
  22526. <span id="index-MMIX-assembler-directive-LOCAL"></span>
  22527. <span id="index-MMIX-pseudo_002dop-LOCAL"></span>
  22528. <span id="MMIX_002dlocal"></span><p>Example:
  22529. </p><div class="example">
  22530. <pre class="example"> LOCAL external_symbol
  22531. LOCAL 42
  22532. .local asymbol
  22533. </pre></div>
  22534. <p>This directive-operation generates a link-time assertion that the operand
  22535. does not correspond to a global register. The operand is an expression
  22536. that at link-time resolves to a register symbol or a number. A number is
  22537. treated as the register having that number. There is one restriction on
  22538. the use of this directive: the pseudo-directive must be placed in a
  22539. section with contents, code or data.
  22540. </p>
  22541. </dd>
  22542. <dt><code>IS</code></dt>
  22543. <dd><span id="index-assembler-directive-IS_002c-MMIX"></span>
  22544. <span id="index-pseudo_002dop-IS_002c-MMIX"></span>
  22545. <span id="index-MMIX-assembler-directive-IS"></span>
  22546. <span id="index-MMIX-pseudo_002dop-IS"></span>
  22547. <span id="MMIX_002dis"></span><p>The <code>IS</code> directive:
  22548. </p><div class="example">
  22549. <pre class="example">asymbol IS an_expression
  22550. </pre></div>
  22551. <p>sets the symbol &lsquo;<samp>asymbol</samp>&rsquo; to &lsquo;<samp>an_expression</samp>&rsquo;. A symbol may not
  22552. be set more than once using this directive. Local labels may be set using
  22553. this directive, for example:
  22554. </p><div class="example">
  22555. <pre class="example">5H IS @+4
  22556. </pre></div>
  22557. </dd>
  22558. <dt><code>GREG</code></dt>
  22559. <dd><span id="index-assembler-directive-GREG_002c-MMIX"></span>
  22560. <span id="index-pseudo_002dop-GREG_002c-MMIX"></span>
  22561. <span id="index-MMIX-assembler-directive-GREG"></span>
  22562. <span id="index-MMIX-pseudo_002dop-GREG"></span>
  22563. <span id="MMIX_002dgreg"></span><p>This directive reserves a global register, gives it an initial value and
  22564. optionally gives it a symbolic name. Some examples:
  22565. </p>
  22566. <div class="example">
  22567. <pre class="example">areg GREG
  22568. breg GREG data_value
  22569. GREG data_buffer
  22570. .greg creg, another_data_value
  22571. </pre></div>
  22572. <p>The symbolic register name can be used in place of a (non-special)
  22573. register. If a value isn&rsquo;t provided, it defaults to zero. Unless the
  22574. option &lsquo;<samp>--no-merge-gregs</samp>&rsquo; is specified, non-zero registers allocated
  22575. with this directive may be eliminated by <code>as</code>; another
  22576. register with the same value used in its place.
  22577. Any of the instructions
  22578. &lsquo;<samp>CSWAP</samp>&rsquo;,
  22579. &lsquo;<samp>GO</samp>&rsquo;,
  22580. &lsquo;<samp>LDA</samp>&rsquo;,
  22581. &lsquo;<samp>LDBU</samp>&rsquo;,
  22582. &lsquo;<samp>LDB</samp>&rsquo;,
  22583. &lsquo;<samp>LDHT</samp>&rsquo;,
  22584. &lsquo;<samp>LDOU</samp>&rsquo;,
  22585. &lsquo;<samp>LDO</samp>&rsquo;,
  22586. &lsquo;<samp>LDSF</samp>&rsquo;,
  22587. &lsquo;<samp>LDTU</samp>&rsquo;,
  22588. &lsquo;<samp>LDT</samp>&rsquo;,
  22589. &lsquo;<samp>LDUNC</samp>&rsquo;,
  22590. &lsquo;<samp>LDVTS</samp>&rsquo;,
  22591. &lsquo;<samp>LDWU</samp>&rsquo;,
  22592. &lsquo;<samp>LDW</samp>&rsquo;,
  22593. &lsquo;<samp>PREGO</samp>&rsquo;,
  22594. &lsquo;<samp>PRELD</samp>&rsquo;,
  22595. &lsquo;<samp>PREST</samp>&rsquo;,
  22596. &lsquo;<samp>PUSHGO</samp>&rsquo;,
  22597. &lsquo;<samp>STBU</samp>&rsquo;,
  22598. &lsquo;<samp>STB</samp>&rsquo;,
  22599. &lsquo;<samp>STCO</samp>&rsquo;,
  22600. &lsquo;<samp>STHT</samp>&rsquo;,
  22601. &lsquo;<samp>STOU</samp>&rsquo;,
  22602. &lsquo;<samp>STSF</samp>&rsquo;,
  22603. &lsquo;<samp>STTU</samp>&rsquo;,
  22604. &lsquo;<samp>STT</samp>&rsquo;,
  22605. &lsquo;<samp>STUNC</samp>&rsquo;,
  22606. &lsquo;<samp>SYNCD</samp>&rsquo;,
  22607. &lsquo;<samp>SYNCID</samp>&rsquo;,
  22608. can have a value nearby <span id="GREG_002dbase"></span>an initial value in place of its
  22609. second and third operands. Here, &ldquo;nearby&rdquo; is defined as within the
  22610. range 0&hellip;255 from the initial value of such an allocated register.
  22611. </p>
  22612. <div class="example">
  22613. <pre class="example">buffer1 BYTE 0,0,0,0,0
  22614. buffer2 BYTE 0,0,0,0,0
  22615. &hellip;
  22616. GREG buffer1
  22617. LDOU $42,buffer2
  22618. </pre></div>
  22619. <p>In the example above, the &lsquo;<samp>Y</samp>&rsquo; field of the <code>LDOUI</code> instruction
  22620. (LDOU with a constant Z) will be replaced with the global register
  22621. allocated for &lsquo;<samp>buffer1</samp>&rsquo;, and the &lsquo;<samp>Z</samp>&rsquo; field will have the value
  22622. 5, the offset from &lsquo;<samp>buffer1</samp>&rsquo; to &lsquo;<samp>buffer2</samp>&rsquo;. The result is
  22623. equivalent to this code:
  22624. </p><div class="example">
  22625. <pre class="example">buffer1 BYTE 0,0,0,0,0
  22626. buffer2 BYTE 0,0,0,0,0
  22627. &hellip;
  22628. tmpreg GREG buffer1
  22629. LDOU $42,tmpreg,(buffer2-buffer1)
  22630. </pre></div>
  22631. <p>Global registers allocated with this directive are allocated in order
  22632. higher-to-lower within a file. Other than that, the exact order of
  22633. register allocation and elimination is undefined. For example, the order
  22634. is undefined when more than one file with such directives are linked
  22635. together. With the options &lsquo;<samp>-x</samp>&rsquo; and &lsquo;<samp>--linker-allocated-gregs</samp>&rsquo;,
  22636. &lsquo;<samp>GREG</samp>&rsquo; directives for two-operand cases like the one mentioned above
  22637. can be omitted. Sufficient global registers will then be allocated by the
  22638. linker.
  22639. </p>
  22640. </dd>
  22641. <dt><code>BYTE</code></dt>
  22642. <dd><span id="index-assembler-directive-BYTE_002c-MMIX"></span>
  22643. <span id="index-pseudo_002dop-BYTE_002c-MMIX"></span>
  22644. <span id="index-MMIX-assembler-directive-BYTE"></span>
  22645. <span id="index-MMIX-pseudo_002dop-BYTE"></span>
  22646. <span id="MMIX_002dbyte"></span><p>The &lsquo;<samp>BYTE</samp>&rsquo; directive takes a series of operands separated by a comma.
  22647. If an operand is a string (see <a href="#Strings">Strings</a>), each character of that string
  22648. is emitted as a byte. Other operands must be constant expressions without
  22649. forward references, in the range 0&hellip;255. If you need operands having
  22650. expressions with forward references, use &lsquo;<samp>.byte</samp>&rsquo; (see <a href="#Byte">Byte</a>). An
  22651. operand can be omitted, defaulting to a zero value.
  22652. </p>
  22653. </dd>
  22654. <dt><code>WYDE</code></dt>
  22655. <dt><code>TETRA</code></dt>
  22656. <dt><code>OCTA</code></dt>
  22657. <dd><span id="index-assembler-directive-WYDE_002c-MMIX"></span>
  22658. <span id="index-pseudo_002dop-WYDE_002c-MMIX"></span>
  22659. <span id="index-MMIX-assembler-directive-WYDE"></span>
  22660. <span id="index-MMIX-pseudo_002dop-WYDE"></span>
  22661. <span id="index-assembler-directive-TETRA_002c-MMIX"></span>
  22662. <span id="index-pseudo_002dop-TETRA_002c-MMIX"></span>
  22663. <span id="index-MMIX-assembler-directive-TETRA"></span>
  22664. <span id="index-MMIX-pseudo_002dop-TETRA"></span>
  22665. <span id="index-assembler-directive-OCTA_002c-MMIX"></span>
  22666. <span id="index-pseudo_002dop-OCTA_002c-MMIX"></span>
  22667. <span id="index-MMIX-assembler-directive-OCTA"></span>
  22668. <span id="index-MMIX-pseudo_002dop-OCTA"></span>
  22669. <span id="MMIX_002dconstants"></span><p>The directives &lsquo;<samp>WYDE</samp>&rsquo;, &lsquo;<samp>TETRA</samp>&rsquo; and &lsquo;<samp>OCTA</samp>&rsquo; emit constants of
  22670. two, four and eight bytes size respectively. Before anything else happens
  22671. for the directive, the current location is aligned to the respective
  22672. constant-size boundary. If a label is defined at the beginning of the
  22673. line, its value will be that after the alignment. A single operand can be
  22674. omitted, defaulting to a zero value emitted for the directive. Operands
  22675. can be expressed as strings (see <a href="#Strings">Strings</a>), in which case each
  22676. character in the string is emitted as a separate constant of the size
  22677. indicated by the directive.
  22678. </p>
  22679. </dd>
  22680. <dt><code>PREFIX</code></dt>
  22681. <dd><span id="index-assembler-directive-PREFIX_002c-MMIX"></span>
  22682. <span id="index-pseudo_002dop-PREFIX_002c-MMIX"></span>
  22683. <span id="index-MMIX-assembler-directive-PREFIX"></span>
  22684. <span id="index-MMIX-pseudo_002dop-PREFIX"></span>
  22685. <span id="MMIX_002dprefix"></span><p>The &lsquo;<samp>PREFIX</samp>&rsquo; directive sets a symbol name prefix to be prepended to
  22686. all symbols (except local symbols, see <a href="#MMIX_002dSymbols">MMIX-Symbols</a>), that are not
  22687. prefixed with &lsquo;<samp>:</samp>&rsquo;, until the next &lsquo;<samp>PREFIX</samp>&rsquo; directive. Such
  22688. prefixes accumulate. For example,
  22689. </p><div class="example">
  22690. <pre class="example"> PREFIX a
  22691. PREFIX b
  22692. c IS 0
  22693. </pre></div>
  22694. <p>defines a symbol &lsquo;<samp>abc</samp>&rsquo; with the value 0.
  22695. </p>
  22696. </dd>
  22697. <dt><code>BSPEC</code></dt>
  22698. <dt><code>ESPEC</code></dt>
  22699. <dd><span id="index-assembler-directive-BSPEC_002c-MMIX"></span>
  22700. <span id="index-pseudo_002dop-BSPEC_002c-MMIX"></span>
  22701. <span id="index-MMIX-assembler-directive-BSPEC"></span>
  22702. <span id="index-MMIX-pseudo_002dop-BSPEC"></span>
  22703. <span id="index-assembler-directive-ESPEC_002c-MMIX"></span>
  22704. <span id="index-pseudo_002dop-ESPEC_002c-MMIX"></span>
  22705. <span id="index-MMIX-assembler-directive-ESPEC"></span>
  22706. <span id="index-MMIX-pseudo_002dop-ESPEC"></span>
  22707. <span id="MMIX_002dspec"></span><p>A pair of &lsquo;<samp>BSPEC</samp>&rsquo; and &lsquo;<samp>ESPEC</samp>&rsquo; directives delimit a section of
  22708. special contents (without specified semantics). Example:
  22709. </p><div class="example">
  22710. <pre class="example"> BSPEC 42
  22711. TETRA 1,2,3
  22712. ESPEC
  22713. </pre></div>
  22714. <p>The single operand to &lsquo;<samp>BSPEC</samp>&rsquo; must be number in the range
  22715. 0&hellip;255. The &lsquo;<samp>BSPEC</samp>&rsquo; number 80 is used by the GNU binutils
  22716. implementation.
  22717. </p></dd>
  22718. </dl>
  22719. <hr>
  22720. <span id="MMIX_002dmmixal"></span><div class="header">
  22721. <p>
  22722. Previous: <a href="#MMIX_002dSyntax" accesskey="p" rel="prev">MMIX-Syntax</a>, Up: <a href="#MMIX_002dDependent" accesskey="u" rel="up">MMIX-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22723. </div>
  22724. <span id="Differences-to-mmixal"></span><h4 class="subsection">9.29.4 Differences to <code>mmixal</code></h4>
  22725. <span id="index-mmixal-differences"></span>
  22726. <span id="index-differences_002c-mmixal"></span>
  22727. <p>The binutils <code>as</code> and <code>ld</code> combination has a few
  22728. differences in function compared to <code>mmixal</code> (see <a href="#mmixsite">mmixsite</a>).
  22729. </p>
  22730. <p>The replacement of a symbol with a GREG-allocated register
  22731. (see <a href="#GREG_002dbase">GREG-base</a>) is not handled the exactly same way in
  22732. <code>as</code> as in <code>mmixal</code>. This is apparent in the
  22733. <code>mmixal</code> example file <code>inout.mms</code>, where different registers
  22734. with different offsets, eventually yielding the same address, are used in
  22735. the first instruction. This type of difference should however not affect
  22736. the function of any program unless it has specific assumptions about the
  22737. allocated register number.
  22738. </p>
  22739. <p>Line numbers (in the &lsquo;<samp>mmo</samp>&rsquo; object format) are currently not
  22740. supported.
  22741. </p>
  22742. <p>Expression operator precedence is not that of mmixal: operator precedence
  22743. is that of the C programming language. It&rsquo;s recommended to use
  22744. parentheses to explicitly specify wanted operator precedence whenever more
  22745. than one type of operators are used.
  22746. </p>
  22747. <p>The serialize unary operator <code>&amp;</code>, the fractional division operator
  22748. &lsquo;<samp>//</samp>&rsquo;, the logical not operator <code>!</code> and the modulus operator
  22749. &lsquo;<samp>%</samp>&rsquo; are not available.
  22750. </p>
  22751. <p>Symbols are not global by default, unless the option
  22752. &lsquo;<samp>--globalize-symbols</samp>&rsquo; is passed. Use the &lsquo;<samp>.global</samp>&rsquo; directive to
  22753. globalize symbols (see <a href="#Global">Global</a>).
  22754. </p>
  22755. <p>Operand syntax is a bit stricter with <code>as</code> than
  22756. <code>mmixal</code>. For example, you can&rsquo;t say <code>addu 1,2,3</code>, instead you
  22757. must write <code>addu $1,$2,3</code>.
  22758. </p>
  22759. <p>You can&rsquo;t LOC to a lower address than those already visited
  22760. (i.e., &ldquo;backwards&rdquo;).
  22761. </p>
  22762. <p>A LOC directive must come before any emitted code.
  22763. </p>
  22764. <p>Predefined symbols are visible as file-local symbols after use. (In the
  22765. ELF file, that is&mdash;the linked mmo file has no notion of a file-local
  22766. symbol.)
  22767. </p>
  22768. <p>Some mapping of constant expressions to sections in LOC expressions is
  22769. attempted, but that functionality is easily confused and should be avoided
  22770. unless compatibility with <code>mmixal</code> is required. A LOC expression to
  22771. &lsquo;<samp>0x2000000000000000</samp>&rsquo; or higher, maps to the &lsquo;<samp>.data</samp>&rsquo; section and
  22772. lower addresses map to the &lsquo;<samp>.text</samp>&rsquo; section (see <a href="#MMIX_002dloc">MMIX-loc</a>).
  22773. </p>
  22774. <p>The code and data areas are each contiguous. Sparse programs with
  22775. far-away LOC directives will take up the same amount of space as a
  22776. contiguous program with zeros filled in the gaps between the LOC
  22777. directives. If you need sparse programs, you might try and get the wanted
  22778. effect with a linker script and splitting up the code parts into sections
  22779. (see <a href="#Section">Section</a>). Assembly code for this, to be compatible with
  22780. <code>mmixal</code>, would look something like:
  22781. </p><div class="example">
  22782. <pre class="example"> .if 0
  22783. LOC away_expression
  22784. .else
  22785. .section away,&quot;ax&quot;
  22786. .fi
  22787. </pre></div>
  22788. <p><code>as</code> will not execute the LOC directive and <code>mmixal</code>
  22789. ignores the lines with <code>.</code>. This construct can be used generally to
  22790. help compatibility.
  22791. </p>
  22792. <p>Symbols can&rsquo;t be defined twice&ndash;not even to the same value.
  22793. </p>
  22794. <p>Instruction mnemonics are recognized case-insensitive, though the
  22795. &lsquo;<samp>IS</samp>&rsquo; and &lsquo;<samp>GREG</samp>&rsquo; pseudo-operations must be specified in
  22796. upper-case characters.
  22797. </p>
  22798. <p>There&rsquo;s no unicode support.
  22799. </p>
  22800. <p>The following is a list of programs in &lsquo;<samp>mmix.tar.gz</samp>&rsquo;, available at
  22801. <a href="http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html">http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html</a>, last
  22802. checked with the version dated 2001-08-25 (md5sum
  22803. c393470cfc86fac040487d22d2bf0172) that assemble with <code>mmixal</code> but do
  22804. not assemble with <code>as</code>:
  22805. </p>
  22806. <dl compact="compact">
  22807. <dt><code>silly.mms</code></dt>
  22808. <dd><p>LOC to a previous address.
  22809. </p></dd>
  22810. <dt><code>sim.mms</code></dt>
  22811. <dd><p>Redefines symbol &lsquo;<samp>Done</samp>&rsquo;.
  22812. </p></dd>
  22813. <dt><code>test.mms</code></dt>
  22814. <dd><p>Uses the serial operator &lsquo;<samp>&amp;</samp>&rsquo;.
  22815. </p></dd>
  22816. </dl>
  22817. <hr>
  22818. <span id="MSP430_002dDependent"></span><div class="header">
  22819. <p>
  22820. Next: <a href="#NDS32_002dDependent" accesskey="n" rel="next">NDS32-Dependent</a>, Previous: <a href="#MMIX_002dDependent" accesskey="p" rel="prev">MMIX-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22821. </div>
  22822. <span id="MSP-430-Dependent-Features"></span><h3 class="section">9.30 MSP 430 Dependent Features</h3>
  22823. <span id="index-MSP-430-support"></span>
  22824. <span id="index-430-support"></span>
  22825. <table class="menu" border="0" cellspacing="0">
  22826. <tr><td align="left" valign="top">&bull; <a href="#MSP430-Options" accesskey="1">MSP430 Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  22827. </td></tr>
  22828. <tr><td align="left" valign="top">&bull; <a href="#MSP430-Syntax" accesskey="2">MSP430 Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  22829. </td></tr>
  22830. <tr><td align="left" valign="top">&bull; <a href="#MSP430-Floating-Point" accesskey="3">MSP430 Floating Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  22831. </td></tr>
  22832. <tr><td align="left" valign="top">&bull; <a href="#MSP430-Directives" accesskey="4">MSP430 Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">MSP 430 Machine Directives
  22833. </td></tr>
  22834. <tr><td align="left" valign="top">&bull; <a href="#MSP430-Opcodes" accesskey="5">MSP430 Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  22835. </td></tr>
  22836. <tr><td align="left" valign="top">&bull; <a href="#MSP430-Profiling-Capability" accesskey="6">MSP430 Profiling Capability</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Profiling Capability
  22837. </td></tr>
  22838. </table>
  22839. <hr>
  22840. <span id="MSP430-Options"></span><div class="header">
  22841. <p>
  22842. Next: <a href="#MSP430-Syntax" accesskey="n" rel="next">MSP430 Syntax</a>, Up: <a href="#MSP430_002dDependent" accesskey="u" rel="up">MSP430-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22843. </div>
  22844. <span id="Options-16"></span><h4 class="subsection">9.30.1 Options</h4>
  22845. <span id="index-MSP-430-options-_0028none_0029"></span>
  22846. <span id="index-options-for-MSP430-_0028none_0029"></span>
  22847. <dl compact="compact">
  22848. <dt><code>-mmcu</code></dt>
  22849. <dd><p>selects the mcu architecture. If the architecture is 430Xv2 then this
  22850. also enables NOP generation unless the <samp>-mN</samp> is also specified.
  22851. </p>
  22852. </dd>
  22853. <dt><code>-mcpu</code></dt>
  22854. <dd><p>selects the cpu architecture. If the architecture is 430Xv2 then this
  22855. also enables NOP generation unless the <samp>-mN</samp> is also specified.
  22856. </p>
  22857. </dd>
  22858. <dt><code>-msilicon-errata=<var>name</var>[,<var>name</var>&hellip;]</code></dt>
  22859. <dd><p>Implements a fixup for named silicon errata. Multiple silicon errata
  22860. can be specified by multiple uses of the <samp>-msilicon-errata</samp>
  22861. option and/or by including the errata names, separated by commas, on
  22862. an individual <samp>-msilicon-errata</samp> option. Errata names
  22863. currently recognised by the assembler are:
  22864. </p>
  22865. <dl compact="compact">
  22866. <dt><code>cpu4</code></dt>
  22867. <dd><p><code>PUSH #4</code> and <samp>PUSH #8</samp> need longer encodings on the
  22868. MSP430. This option is enabled by default, and cannot be disabled.
  22869. </p></dd>
  22870. <dt><code>cpu8</code></dt>
  22871. <dd><p>Do not set the <code>SP</code> to an odd value.
  22872. </p></dd>
  22873. <dt><code>cpu11</code></dt>
  22874. <dd><p>Do not update the <code>SR</code> and the <code>PC</code> in the same instruction.
  22875. </p></dd>
  22876. <dt><code>cpu12</code></dt>
  22877. <dd><p>Do not use the <code>PC</code> in a <code>CMP</code> or <code>BIT</code> instruction.
  22878. </p></dd>
  22879. <dt><code>cpu13</code></dt>
  22880. <dd><p>Do not use an arithmetic instruction to modify the <code>SR</code>.
  22881. </p></dd>
  22882. <dt><code>cpu19</code></dt>
  22883. <dd><p>Insert <code>NOP</code> after <code>CPUOFF</code>.
  22884. </p></dd>
  22885. </dl>
  22886. </dd>
  22887. <dt><code>-msilicon-errata-warn=<var>name</var>[,<var>name</var>&hellip;]</code></dt>
  22888. <dd><p>Like the <samp>-msilicon-errata</samp> option except that instead of
  22889. fixing the specified errata, a warning message is issued instead.
  22890. This option can be used alongside <samp>-msilicon-errata</samp> to
  22891. generate messages whenever a problem is fixed, or on its own in order
  22892. to inspect code for potential problems.
  22893. </p>
  22894. </dd>
  22895. <dt><code>-mP</code></dt>
  22896. <dd><p>enables polymorph instructions handler.
  22897. </p>
  22898. </dd>
  22899. <dt><code>-mQ</code></dt>
  22900. <dd><p>enables relaxation at assembly time. DANGEROUS!
  22901. </p>
  22902. </dd>
  22903. <dt><code>-ml</code></dt>
  22904. <dd><p>indicates that the input uses the large code model.
  22905. </p>
  22906. </dd>
  22907. <dt><code>-mn</code></dt>
  22908. <dd><p>enables the generation of a NOP instruction following any instruction
  22909. that might change the interrupts enabled/disabled state. The
  22910. pipelined nature of the MSP430 core means that any instruction that
  22911. changes the interrupt state (<code>EINT</code>, <code>DINT</code>, <code>BIC #8,
  22912. SR</code>, <code>BIS #8, SR</code> or <code>MOV.W &lt;&gt;, SR</code>) must be
  22913. followed by a NOP instruction in order to ensure the correct
  22914. processing of interrupts. By default it is up to the programmer to
  22915. supply these NOP instructions, but this command-line option enables
  22916. the automatic insertion by the assembler, if they are missing.
  22917. </p>
  22918. </dd>
  22919. <dt><code>-mN</code></dt>
  22920. <dd><p>disables the generation of a NOP instruction following any instruction
  22921. that might change the interrupts enabled/disabled state. This is the
  22922. default behaviour.
  22923. </p>
  22924. </dd>
  22925. <dt><code>-my</code></dt>
  22926. <dd><p>tells the assembler to generate a warning message if a NOP does not
  22927. immediately follow an instruction that enables or disables
  22928. interrupts. This is the default.
  22929. </p>
  22930. <p>Note that this option can be stacked with the <samp>-mn</samp> option so
  22931. that the assembler will both warn about missing NOP instructions and
  22932. then insert them automatically.
  22933. </p>
  22934. </dd>
  22935. <dt><code>-mY</code></dt>
  22936. <dd><p>disables warnings about missing NOP instructions.
  22937. </p>
  22938. </dd>
  22939. <dt><code>-md</code></dt>
  22940. <dd><p>mark the object file as one that requires data to copied from ROM to
  22941. RAM at execution startup. Disabled by default.
  22942. </p>
  22943. </dd>
  22944. <dt><code>-mdata-region=<var>region</var></code></dt>
  22945. <dd><p>Select the region data will be placed in.
  22946. Region placement is performed by the compiler and linker. The only effect this
  22947. option will have on the assembler is that if <var>upper</var> or <var>either</var> is
  22948. selected, then the symbols to initialise high data and bss will be defined.
  22949. Valid <var>region</var> values are:
  22950. </p><dl compact="compact">
  22951. <dt><code>none</code></dt>
  22952. <dt><code>lower</code></dt>
  22953. <dt><code>upper</code></dt>
  22954. <dt><code>either</code></dt>
  22955. </dl>
  22956. </dd>
  22957. </dl>
  22958. <hr>
  22959. <span id="MSP430-Syntax"></span><div class="header">
  22960. <p>
  22961. Next: <a href="#MSP430-Floating-Point" accesskey="n" rel="next">MSP430 Floating Point</a>, Previous: <a href="#MSP430-Options" accesskey="p" rel="prev">MSP430 Options</a>, Up: <a href="#MSP430_002dDependent" accesskey="u" rel="up">MSP430-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22962. </div>
  22963. <span id="Syntax-21"></span><h4 class="subsection">9.30.2 Syntax</h4>
  22964. <table class="menu" border="0" cellspacing="0">
  22965. <tr><td align="left" valign="top">&bull; <a href="#MSP430_002dMacros" accesskey="1">MSP430-Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macros
  22966. </td></tr>
  22967. <tr><td align="left" valign="top">&bull; <a href="#MSP430_002dChars" accesskey="2">MSP430-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  22968. </td></tr>
  22969. <tr><td align="left" valign="top">&bull; <a href="#MSP430_002dRegs" accesskey="3">MSP430-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  22970. </td></tr>
  22971. <tr><td align="left" valign="top">&bull; <a href="#MSP430_002dExt" accesskey="4">MSP430-Ext</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Extensions
  22972. </td></tr>
  22973. </table>
  22974. <hr>
  22975. <span id="MSP430_002dMacros"></span><div class="header">
  22976. <p>
  22977. Next: <a href="#MSP430_002dChars" accesskey="n" rel="next">MSP430-Chars</a>, Up: <a href="#MSP430-Syntax" accesskey="u" rel="up">MSP430 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  22978. </div>
  22979. <span id="Macros"></span><h4 class="subsubsection">9.30.2.1 Macros</h4>
  22980. <span id="index-Macros_002c-MSP-430"></span>
  22981. <span id="index-MSP-430-macros"></span>
  22982. <p>The macro syntax used on the MSP 430 is like that described in the MSP
  22983. 430 Family Assembler Specification. Normal <code>as</code>
  22984. macros should still work.
  22985. </p>
  22986. <p>Additional built-in macros are:
  22987. </p>
  22988. <dl compact="compact">
  22989. <dt><code>llo(exp)</code></dt>
  22990. <dd><p>Extracts least significant word from 32-bit expression &rsquo;exp&rsquo;.
  22991. </p>
  22992. </dd>
  22993. <dt><code>lhi(exp)</code></dt>
  22994. <dd><p>Extracts most significant word from 32-bit expression &rsquo;exp&rsquo;.
  22995. </p>
  22996. </dd>
  22997. <dt><code>hlo(exp)</code></dt>
  22998. <dd><p>Extracts 3rd word from 64-bit expression &rsquo;exp&rsquo;.
  22999. </p>
  23000. </dd>
  23001. <dt><code>hhi(exp)</code></dt>
  23002. <dd><p>Extracts 4th word from 64-bit expression &rsquo;exp&rsquo;.
  23003. </p>
  23004. </dd>
  23005. </dl>
  23006. <p>They normally being used as an immediate source operand.
  23007. </p><div class="example">
  23008. <pre class="example"> mov #llo(1), r10 ; == mov #1, r10
  23009. mov #lhi(1), r10 ; == mov #0, r10
  23010. </pre></div>
  23011. <hr>
  23012. <span id="MSP430_002dChars"></span><div class="header">
  23013. <p>
  23014. Next: <a href="#MSP430_002dRegs" accesskey="n" rel="next">MSP430-Regs</a>, Previous: <a href="#MSP430_002dMacros" accesskey="p" rel="prev">MSP430-Macros</a>, Up: <a href="#MSP430-Syntax" accesskey="u" rel="up">MSP430 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23015. </div>
  23016. <span id="Special-Characters-21"></span><h4 class="subsubsection">9.30.2.2 Special Characters</h4>
  23017. <span id="index-line-comment-character_002c-MSP-430"></span>
  23018. <span id="index-MSP-430-line-comment-character"></span>
  23019. <p>A semicolon (&lsquo;<samp>;</samp>&rsquo;) appearing anywhere on a line starts a comment
  23020. that extends to the end of that line.
  23021. </p>
  23022. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  23023. line is treated as a comment, but it can also be a logical line number
  23024. directive (see <a href="#Comments">Comments</a>) or a preprocessor control command
  23025. (see <a href="#Preprocessing">Preprocessing</a>).
  23026. </p>
  23027. <span id="index-line-separator_002c-MSP-430"></span>
  23028. <span id="index-statement-separator_002c-MSP-430"></span>
  23029. <span id="index-MSP-430-line-separator"></span>
  23030. <p>Multiple statements can appear on the same line provided that they are
  23031. separated by the &lsquo;<samp>{</samp>&rsquo; character.
  23032. </p>
  23033. <span id="index-identifiers_002c-MSP-430"></span>
  23034. <span id="index-MSP-430-identifiers"></span>
  23035. <p>The character &lsquo;<samp>$</samp>&rsquo; in jump instructions indicates current location and
  23036. implemented only for TI syntax compatibility.
  23037. </p>
  23038. <hr>
  23039. <span id="MSP430_002dRegs"></span><div class="header">
  23040. <p>
  23041. Next: <a href="#MSP430_002dExt" accesskey="n" rel="next">MSP430-Ext</a>, Previous: <a href="#MSP430_002dChars" accesskey="p" rel="prev">MSP430-Chars</a>, Up: <a href="#MSP430-Syntax" accesskey="u" rel="up">MSP430 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23042. </div>
  23043. <span id="Register-Names-11"></span><h4 class="subsubsection">9.30.2.3 Register Names</h4>
  23044. <span id="index-MSP-430-register-names"></span>
  23045. <span id="index-register-names_002c-MSP-430"></span>
  23046. <p>General-purpose registers are represented by predefined symbols of the
  23047. form &lsquo;<samp>r<var>N</var></samp>&rsquo; (for global registers), where <var>N</var> represents
  23048. a number between <code>0</code> and <code>15</code>. The leading
  23049. letters may be in either upper or lower case; for example, &lsquo;<samp>r13</samp>&rsquo;
  23050. and &lsquo;<samp>R7</samp>&rsquo; are both valid register names.
  23051. </p>
  23052. <span id="index-special-purpose-registers_002c-MSP-430"></span>
  23053. <p>Register names &lsquo;<samp>PC</samp>&rsquo;, &lsquo;<samp>SP</samp>&rsquo; and &lsquo;<samp>SR</samp>&rsquo; cannot be used as register names
  23054. and will be treated as variables. Use &lsquo;<samp>r0</samp>&rsquo;, &lsquo;<samp>r1</samp>&rsquo;, and &lsquo;<samp>r2</samp>&rsquo; instead.
  23055. </p>
  23056. <hr>
  23057. <span id="MSP430_002dExt"></span><div class="header">
  23058. <p>
  23059. Previous: <a href="#MSP430_002dRegs" accesskey="p" rel="prev">MSP430-Regs</a>, Up: <a href="#MSP430-Syntax" accesskey="u" rel="up">MSP430 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23060. </div>
  23061. <span id="Assembler-Extensions"></span><h4 class="subsubsection">9.30.2.4 Assembler Extensions</h4>
  23062. <span id="index-MSP430-Assembler-Extensions"></span>
  23063. <dl compact="compact">
  23064. <dt><code>@rN</code></dt>
  23065. <dd><p>As destination operand being treated as &lsquo;<samp>0(rn)</samp>&rsquo;
  23066. </p>
  23067. </dd>
  23068. <dt><code>0(rN)</code></dt>
  23069. <dd><p>As source operand being treated as &lsquo;<samp>@rn</samp>&rsquo;
  23070. </p>
  23071. </dd>
  23072. <dt><code>jCOND +N</code></dt>
  23073. <dd><p>Skips next N bytes followed by jump instruction and equivalent to
  23074. &lsquo;<samp>jCOND $+N+2</samp>&rsquo;
  23075. </p>
  23076. </dd>
  23077. </dl>
  23078. <p>Also, there are some instructions, which cannot be found in other assemblers.
  23079. These are branch instructions, which has different opcodes upon jump distance.
  23080. They all got PC relative addressing mode.
  23081. </p>
  23082. <dl compact="compact">
  23083. <dt><code>beq label</code></dt>
  23084. <dd><p>A polymorph instruction which is &lsquo;<samp>jeq label</samp>&rsquo; in case if jump distance
  23085. within allowed range for cpu&rsquo;s jump instruction. If not, this unrolls into
  23086. a sequence of
  23087. </p><div class="example">
  23088. <pre class="example"> jne $+6
  23089. br label
  23090. </pre></div>
  23091. </dd>
  23092. <dt><code>bne label</code></dt>
  23093. <dd><p>A polymorph instruction which is &lsquo;<samp>jne label</samp>&rsquo; or &lsquo;<samp>jeq +4; br label</samp>&rsquo;
  23094. </p>
  23095. </dd>
  23096. <dt><code>blt label</code></dt>
  23097. <dd><p>A polymorph instruction which is &lsquo;<samp>jl label</samp>&rsquo; or &lsquo;<samp>jge +4; br label</samp>&rsquo;
  23098. </p>
  23099. </dd>
  23100. <dt><code>bltn label</code></dt>
  23101. <dd><p>A polymorph instruction which is &lsquo;<samp>jn label</samp>&rsquo; or &lsquo;<samp>jn +2; jmp +4; br label</samp>&rsquo;
  23102. </p>
  23103. </dd>
  23104. <dt><code>bltu label</code></dt>
  23105. <dd><p>A polymorph instruction which is &lsquo;<samp>jlo label</samp>&rsquo; or &lsquo;<samp>jhs +2; br label</samp>&rsquo;
  23106. </p>
  23107. </dd>
  23108. <dt><code>bge label</code></dt>
  23109. <dd><p>A polymorph instruction which is &lsquo;<samp>jge label</samp>&rsquo; or &lsquo;<samp>jl +4; br label</samp>&rsquo;
  23110. </p>
  23111. </dd>
  23112. <dt><code>bgeu label</code></dt>
  23113. <dd><p>A polymorph instruction which is &lsquo;<samp>jhs label</samp>&rsquo; or &lsquo;<samp>jlo +4; br label</samp>&rsquo;
  23114. </p>
  23115. </dd>
  23116. <dt><code>bgt label</code></dt>
  23117. <dd><p>A polymorph instruction which is &lsquo;<samp>jeq +2; jge label</samp>&rsquo; or &lsquo;<samp>jeq +6; jl +4; br label</samp>&rsquo;
  23118. </p>
  23119. </dd>
  23120. <dt><code>bgtu label</code></dt>
  23121. <dd><p>A polymorph instruction which is &lsquo;<samp>jeq +2; jhs label</samp>&rsquo; or &lsquo;<samp>jeq +6; jlo +4; br label</samp>&rsquo;
  23122. </p>
  23123. </dd>
  23124. <dt><code>bleu label</code></dt>
  23125. <dd><p>A polymorph instruction which is &lsquo;<samp>jeq label; jlo label</samp>&rsquo; or &lsquo;<samp>jeq +2; jhs +4; br label</samp>&rsquo;
  23126. </p>
  23127. </dd>
  23128. <dt><code>ble label</code></dt>
  23129. <dd><p>A polymorph instruction which is &lsquo;<samp>jeq label; jl label</samp>&rsquo; or &lsquo;<samp>jeq +2; jge +4; br label</samp>&rsquo;
  23130. </p>
  23131. </dd>
  23132. <dt><code>jump label</code></dt>
  23133. <dd><p>A polymorph instruction which is &lsquo;<samp>jmp label</samp>&rsquo; or &lsquo;<samp>br label</samp>&rsquo;
  23134. </p></dd>
  23135. </dl>
  23136. <hr>
  23137. <span id="MSP430-Floating-Point"></span><div class="header">
  23138. <p>
  23139. Next: <a href="#MSP430-Directives" accesskey="n" rel="next">MSP430 Directives</a>, Previous: <a href="#MSP430-Syntax" accesskey="p" rel="prev">MSP430 Syntax</a>, Up: <a href="#MSP430_002dDependent" accesskey="u" rel="up">MSP430-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23140. </div>
  23141. <span id="Floating-Point-10"></span><h4 class="subsection">9.30.3 Floating Point</h4>
  23142. <span id="index-floating-point_002c-MSP-430-_0028IEEE_0029"></span>
  23143. <span id="index-MSP-430-floating-point-_0028IEEE_0029"></span>
  23144. <p>The MSP 430 family uses <small>IEEE</small> 32-bit floating-point numbers.
  23145. </p>
  23146. <hr>
  23147. <span id="MSP430-Directives"></span><div class="header">
  23148. <p>
  23149. Next: <a href="#MSP430-Opcodes" accesskey="n" rel="next">MSP430 Opcodes</a>, Previous: <a href="#MSP430-Floating-Point" accesskey="p" rel="prev">MSP430 Floating Point</a>, Up: <a href="#MSP430_002dDependent" accesskey="u" rel="up">MSP430-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23150. </div>
  23151. <span id="MSP-430-Machine-Directives"></span><h4 class="subsection">9.30.4 MSP 430 Machine Directives</h4>
  23152. <span id="index-machine-directives_002c-MSP-430"></span>
  23153. <span id="index-MSP-430-machine-directives"></span>
  23154. <dl compact="compact">
  23155. <dd><span id="index-file-directive_002c-MSP-430"></span>
  23156. </dd>
  23157. <dt><code>.file</code></dt>
  23158. <dd><p>This directive is ignored; it is accepted for compatibility with other
  23159. MSP 430 assemblers.
  23160. </p>
  23161. <blockquote>
  23162. <p><em>Warning:</em> in other versions of the <small>GNU</small> assembler, <code>.file</code> is
  23163. used for the directive called <code>.app-file</code> in the MSP 430 support.
  23164. </p></blockquote>
  23165. <span id="index-line-directive_002c-MSP-430"></span>
  23166. </dd>
  23167. <dt><code>.line</code></dt>
  23168. <dd><p>This directive is ignored; it is accepted for compatibility with other
  23169. MSP 430 assemblers.
  23170. </p>
  23171. <span id="index-arch-directive_002c-MSP-430"></span>
  23172. </dd>
  23173. <dt><code>.arch</code></dt>
  23174. <dd><p>Sets the target microcontroller in the same way as the <samp>-mmcu</samp>
  23175. command-line option.
  23176. </p>
  23177. <span id="index-cpu-directive_002c-MSP-430"></span>
  23178. </dd>
  23179. <dt><code>.cpu</code></dt>
  23180. <dd><p>Sets the target architecture in the same way as the <samp>-mcpu</samp>
  23181. command-line option.
  23182. </p>
  23183. <span id="index-profiler-directive_002c-MSP-430"></span>
  23184. </dd>
  23185. <dt><code>.profiler</code></dt>
  23186. <dd><p>This directive instructs assembler to add new profile entry to the object file.
  23187. </p>
  23188. <span id="index-refsym-directive_002c-MSP-430"></span>
  23189. </dd>
  23190. <dt><code>.refsym</code></dt>
  23191. <dd><p>This directive instructs assembler to add an undefined reference to
  23192. the symbol following the directive. The maximum symbol name length is
  23193. 1023 characters. No relocation is created for this symbol; it will
  23194. exist purely for pulling in object files from archives. Note that
  23195. this reloc is not sufficient to prevent garbage collection; use a
  23196. KEEP() directive in the linker file to preserve such objects.
  23197. </p>
  23198. <span id="index-mspabi_005fattribute-directive_002c-MSP430"></span>
  23199. </dd>
  23200. <dt><code>.mspabi_attribute</code></dt>
  23201. <dd><p>This directive tells the assembler what the MSPABI build attributes for this
  23202. file are. This is used for validating the command line options passed to
  23203. the assembler against the options the original source file was compiled with.
  23204. The expected format is:
  23205. &lsquo;<samp>.mspabi_attribute tag_name, tag_value</samp>&rsquo;
  23206. For example, to set the tag <code>OFBA_MSPABI_Tag_ISA</code> to <code>MSP430X</code>:
  23207. &lsquo;<samp>.mspabi_attribute 4, 2</samp>&rsquo;
  23208. </p>
  23209. <p>See the <cite>MSP430 EABI, document slaa534</cite> for the details on tag names and
  23210. values.
  23211. </p></dd>
  23212. </dl>
  23213. <hr>
  23214. <span id="MSP430-Opcodes"></span><div class="header">
  23215. <p>
  23216. Next: <a href="#MSP430-Profiling-Capability" accesskey="n" rel="next">MSP430 Profiling Capability</a>, Previous: <a href="#MSP430-Directives" accesskey="p" rel="prev">MSP430 Directives</a>, Up: <a href="#MSP430_002dDependent" accesskey="u" rel="up">MSP430-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23217. </div>
  23218. <span id="Opcodes-13"></span><h4 class="subsection">9.30.5 Opcodes</h4>
  23219. <span id="index-MSP-430-opcodes"></span>
  23220. <span id="index-opcodes-for-MSP-430"></span>
  23221. <p><code>as</code> implements all the standard MSP 430 opcodes. No
  23222. additional pseudo-instructions are needed on this family.
  23223. </p>
  23224. <p>For information on the 430 machine instruction set, see <cite>MSP430
  23225. User&rsquo;s Manual, document slau049d</cite>, Texas Instrument, Inc.
  23226. </p>
  23227. <hr>
  23228. <span id="MSP430-Profiling-Capability"></span><div class="header">
  23229. <p>
  23230. Previous: <a href="#MSP430-Opcodes" accesskey="p" rel="prev">MSP430 Opcodes</a>, Up: <a href="#MSP430_002dDependent" accesskey="u" rel="up">MSP430-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23231. </div>
  23232. <span id="Profiling-Capability"></span><h4 class="subsection">9.30.6 Profiling Capability</h4>
  23233. <span id="index-MSP-430-profiling-capability"></span>
  23234. <span id="index-profiling-capability-for-MSP-430"></span>
  23235. <p>It is a performance hit to use gcc&rsquo;s profiling approach for this tiny target.
  23236. Even more &ndash; jtag hardware facility does not perform any profiling functions.
  23237. However we&rsquo;ve got gdb&rsquo;s built-in simulator where we can do anything.
  23238. </p>
  23239. <p>We define new section &lsquo;<samp>.profiler</samp>&rsquo; which holds all profiling information.
  23240. We define new pseudo operation &lsquo;<samp>.profiler</samp>&rsquo; which will instruct assembler to
  23241. add new profile entry to the object file. Profile should take place at the
  23242. present address.
  23243. </p>
  23244. <p>Pseudo operation format:
  23245. </p>
  23246. <p>&lsquo;<samp>.profiler flags,function_to_profile [, cycle_corrector, extra]</samp>&rsquo;
  23247. </p>
  23248. <p>where:
  23249. </p>
  23250. <dl compact="compact">
  23251. <dd>
  23252. <dl compact="compact">
  23253. <dd>
  23254. <p>&lsquo;<samp>flags</samp>&rsquo; is a combination of the following characters:
  23255. </p>
  23256. </dd>
  23257. <dt><code>s</code></dt>
  23258. <dd><p>function entry
  23259. </p></dd>
  23260. <dt><code>x</code></dt>
  23261. <dd><p>function exit
  23262. </p></dd>
  23263. <dt><code>i</code></dt>
  23264. <dd><p>function is in init section
  23265. </p></dd>
  23266. <dt><code>f</code></dt>
  23267. <dd><p>function is in fini section
  23268. </p></dd>
  23269. <dt><code>l</code></dt>
  23270. <dd><p>library call
  23271. </p></dd>
  23272. <dt><code>c</code></dt>
  23273. <dd><p>libc standard call
  23274. </p></dd>
  23275. <dt><code>d</code></dt>
  23276. <dd><p>stack value demand
  23277. </p></dd>
  23278. <dt><code>I</code></dt>
  23279. <dd><p>interrupt service routine
  23280. </p></dd>
  23281. <dt><code>P</code></dt>
  23282. <dd><p>prologue start
  23283. </p></dd>
  23284. <dt><code>p</code></dt>
  23285. <dd><p>prologue end
  23286. </p></dd>
  23287. <dt><code>E</code></dt>
  23288. <dd><p>epilogue start
  23289. </p></dd>
  23290. <dt><code>e</code></dt>
  23291. <dd><p>epilogue end
  23292. </p></dd>
  23293. <dt><code>j</code></dt>
  23294. <dd><p>long jump / sjlj unwind
  23295. </p></dd>
  23296. <dt><code>a</code></dt>
  23297. <dd><p>an arbitrary code fragment
  23298. </p></dd>
  23299. <dt><code>t</code></dt>
  23300. <dd><p>extra parameter saved (a constant value like frame size)
  23301. </p></dd>
  23302. </dl>
  23303. </dd>
  23304. <dt><code>function_to_profile</code></dt>
  23305. <dd><p>a function address
  23306. </p></dd>
  23307. <dt><code>cycle_corrector</code></dt>
  23308. <dd><p>a value which should be added to the cycle counter, zero if omitted.
  23309. </p></dd>
  23310. <dt><code>extra</code></dt>
  23311. <dd><p>any extra parameter, zero if omitted.
  23312. </p>
  23313. </dd>
  23314. </dl>
  23315. <p>For example:
  23316. </p><div class="example">
  23317. <pre class="example">.global fxx
  23318. .type fxx,@function
  23319. fxx:
  23320. .LFrameOffset_fxx=0x08
  23321. .profiler &quot;scdP&quot;, fxx ; function entry.
  23322. ; we also demand stack value to be saved
  23323. push r11
  23324. push r10
  23325. push r9
  23326. push r8
  23327. .profiler &quot;cdpt&quot;,fxx,0, .LFrameOffset_fxx ; check stack value at this point
  23328. ; (this is a prologue end)
  23329. ; note, that spare var filled with
  23330. ; the farme size
  23331. mov r15,r8
  23332. ...
  23333. .profiler cdE,fxx ; check stack
  23334. pop r8
  23335. pop r9
  23336. pop r10
  23337. pop r11
  23338. .profiler xcde,fxx,3 ; exit adds 3 to the cycle counter
  23339. ret ; cause 'ret' insn takes 3 cycles
  23340. </pre></div>
  23341. <hr>
  23342. <span id="NDS32_002dDependent"></span><div class="header">
  23343. <p>
  23344. Next: <a href="#NiosII_002dDependent" accesskey="n" rel="next">NiosII-Dependent</a>, Previous: <a href="#MSP430_002dDependent" accesskey="p" rel="prev">MSP430-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23345. </div>
  23346. <span id="NDS32-Dependent-Features"></span><h3 class="section">9.31 NDS32 Dependent Features</h3>
  23347. <span id="index-NDS32-processor"></span>
  23348. <p>The NDS32 processors family includes high-performance and low-power 32-bit
  23349. processors for high-end to low-end. <small>GNU</small> <code>as</code> for NDS32
  23350. architectures supports NDS32 ISA version 3. For detail about NDS32
  23351. instruction set, please see the AndeStar ISA User Manual which is available
  23352. at http://www.andestech.com/en/index/index.htm
  23353. </p>
  23354. <table class="menu" border="0" cellspacing="0">
  23355. <tr><td align="left" valign="top">&bull; <a href="#NDS32-Options" accesskey="1">NDS32 Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler options
  23356. </td></tr>
  23357. <tr><td align="left" valign="top">&bull; <a href="#NDS32-Syntax" accesskey="2">NDS32 Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">High-level assembly macros
  23358. </td></tr>
  23359. </table>
  23360. <hr>
  23361. <span id="NDS32-Options"></span><div class="header">
  23362. <p>
  23363. Next: <a href="#NDS32-Syntax" accesskey="n" rel="next">NDS32 Syntax</a>, Up: <a href="#NDS32_002dDependent" accesskey="u" rel="up">NDS32-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23364. </div>
  23365. <span id="NDS32-Options-1"></span><h4 class="subsection">9.31.1 NDS32 Options</h4>
  23366. <span id="index-NDS32-options"></span>
  23367. <span id="index-options-for-NDS32"></span>
  23368. <p>The NDS32 configurations of <small>GNU</small> <code>as</code> support these
  23369. special options:
  23370. </p>
  23371. <dl compact="compact">
  23372. <dt><code>-O1</code></dt>
  23373. <dd><p>Optimize for performance.
  23374. </p>
  23375. </dd>
  23376. <dt><code>-Os</code></dt>
  23377. <dd><p>Optimize for space.
  23378. </p>
  23379. </dd>
  23380. <dt><code>-EL</code></dt>
  23381. <dd><p>Produce little endian data output.
  23382. </p>
  23383. </dd>
  23384. <dt><code>-EB</code></dt>
  23385. <dd><p>Produce little endian data output.
  23386. </p>
  23387. </dd>
  23388. <dt><code>-mpic</code></dt>
  23389. <dd><p>Generate PIC.
  23390. </p>
  23391. </dd>
  23392. <dt><code>-mno-fp-as-gp-relax</code></dt>
  23393. <dd><p>Suppress fp-as-gp relaxation for this file.
  23394. </p>
  23395. </dd>
  23396. <dt><code>-mb2bb-relax</code></dt>
  23397. <dd><p>Back-to-back branch optimization.
  23398. </p>
  23399. </dd>
  23400. <dt><code>-mno-all-relax</code></dt>
  23401. <dd><p>Suppress all relaxation for this file.
  23402. </p>
  23403. </dd>
  23404. <dt><code>-march=&lt;arch name&gt;</code></dt>
  23405. <dd><p>Assemble for architecture &lt;arch name&gt; which could be v3, v3j, v3m, v3f,
  23406. v3s, v2, v2j, v2f, v2s.
  23407. </p>
  23408. </dd>
  23409. <dt><code>-mbaseline=&lt;baseline&gt;</code></dt>
  23410. <dd><p>Assemble for baseline &lt;baseline&gt; which could be v2, v3, v3m.
  23411. </p>
  23412. </dd>
  23413. <dt><code>-mfpu-freg=<var>FREG</var></code></dt>
  23414. <dd><p>Specify a FPU configuration.
  23415. </p><dl compact="compact">
  23416. <dt><code>0 8 SP / 4 DP registers</code></dt>
  23417. <dt><code>1 16 SP / 8 DP registers</code></dt>
  23418. <dt><code>2 32 SP / 16 DP registers</code></dt>
  23419. <dt><code>3 32 SP / 32 DP registers</code></dt>
  23420. </dl>
  23421. </dd>
  23422. <dt><code>-mabi=<var>abi</var></code></dt>
  23423. <dd><p>Specify a abi version &lt;abi&gt; could be v1, v2, v2fp, v2fpp.
  23424. </p>
  23425. </dd>
  23426. <dt><code>-m[no-]mac</code></dt>
  23427. <dd><p>Enable/Disable Multiply instructions support.
  23428. </p>
  23429. </dd>
  23430. <dt><code>-m[no-]div</code></dt>
  23431. <dd><p>Enable/Disable Divide instructions support.
  23432. </p>
  23433. </dd>
  23434. <dt><code>-m[no-]16bit-ext</code></dt>
  23435. <dd><p>Enable/Disable 16-bit extension
  23436. </p>
  23437. </dd>
  23438. <dt><code>-m[no-]dx-regs</code></dt>
  23439. <dd><p>Enable/Disable d0/d1 registers
  23440. </p>
  23441. </dd>
  23442. <dt><code>-m[no-]perf-ext</code></dt>
  23443. <dd><p>Enable/Disable Performance extension
  23444. </p>
  23445. </dd>
  23446. <dt><code>-m[no-]perf2-ext</code></dt>
  23447. <dd><p>Enable/Disable Performance extension 2
  23448. </p>
  23449. </dd>
  23450. <dt><code>-m[no-]string-ext</code></dt>
  23451. <dd><p>Enable/Disable String extension
  23452. </p>
  23453. </dd>
  23454. <dt><code>-m[no-]reduced-regs</code></dt>
  23455. <dd><p>Enable/Disable Reduced Register configuration (GPR16) option
  23456. </p>
  23457. </dd>
  23458. <dt><code>-m[no-]audio-isa-ext</code></dt>
  23459. <dd><p>Enable/Disable AUDIO ISA extension
  23460. </p>
  23461. </dd>
  23462. <dt><code>-m[no-]fpu-sp-ext</code></dt>
  23463. <dd><p>Enable/Disable FPU SP extension
  23464. </p>
  23465. </dd>
  23466. <dt><code>-m[no-]fpu-dp-ext</code></dt>
  23467. <dd><p>Enable/Disable FPU DP extension
  23468. </p>
  23469. </dd>
  23470. <dt><code>-m[no-]fpu-fma</code></dt>
  23471. <dd><p>Enable/Disable FPU fused-multiply-add instructions
  23472. </p>
  23473. </dd>
  23474. <dt><code>-mall-ext</code></dt>
  23475. <dd><p>Turn on all extensions and instructions support
  23476. </p></dd>
  23477. </dl>
  23478. <hr>
  23479. <span id="NDS32-Syntax"></span><div class="header">
  23480. <p>
  23481. Previous: <a href="#NDS32-Options" accesskey="p" rel="prev">NDS32 Options</a>, Up: <a href="#NDS32_002dDependent" accesskey="u" rel="up">NDS32-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23482. </div>
  23483. <span id="Syntax-22"></span><h4 class="subsection">9.31.2 Syntax</h4>
  23484. <table class="menu" border="0" cellspacing="0">
  23485. <tr><td align="left" valign="top">&bull; <a href="#NDS32_002dChars" accesskey="1">NDS32-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  23486. </td></tr>
  23487. <tr><td align="left" valign="top">&bull; <a href="#NDS32_002dRegs" accesskey="2">NDS32-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  23488. </td></tr>
  23489. <tr><td align="left" valign="top">&bull; <a href="#NDS32_002dOps" accesskey="3">NDS32-Ops</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Pseudo Instructions
  23490. </td></tr>
  23491. </table>
  23492. <hr>
  23493. <span id="NDS32_002dChars"></span><div class="header">
  23494. <p>
  23495. Next: <a href="#NDS32_002dRegs" accesskey="n" rel="next">NDS32-Regs</a>, Up: <a href="#NDS32-Syntax" accesskey="u" rel="up">NDS32 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23496. </div>
  23497. <span id="Special-Characters-22"></span><h4 class="subsubsection">9.31.2.1 Special Characters</h4>
  23498. <p>Use &lsquo;<samp>#</samp>&rsquo; at column 1 and &lsquo;<samp>!</samp>&rsquo; anywhere in the line except inside
  23499. quotes.
  23500. </p>
  23501. <p>Multiple instructions in a line are allowed though not recommended and
  23502. should be separated by &lsquo;<samp>;</samp>&rsquo;.
  23503. </p>
  23504. <p>Assembler is not case-sensitive in general except user defined label.
  23505. For example, &lsquo;<samp>jral F1</samp>&rsquo; is different from &lsquo;<samp>jral f1</samp>&rsquo; while it is
  23506. the same as &lsquo;<samp>JRAL F1</samp>&rsquo;.
  23507. </p>
  23508. <hr>
  23509. <span id="NDS32_002dRegs"></span><div class="header">
  23510. <p>
  23511. Next: <a href="#NDS32_002dOps" accesskey="n" rel="next">NDS32-Ops</a>, Previous: <a href="#NDS32_002dChars" accesskey="p" rel="prev">NDS32-Chars</a>, Up: <a href="#NDS32-Syntax" accesskey="u" rel="up">NDS32 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23512. </div>
  23513. <span id="Register-Names-12"></span><h4 class="subsubsection">9.31.2.2 Register Names</h4>
  23514. <dl compact="compact">
  23515. <dt><code>General purpose registers (GPR)</code></dt>
  23516. <dd><p>There are 32 32-bit general purpose registers $r0 to $r31.
  23517. </p>
  23518. </dd>
  23519. <dt><code>Accumulators d0 and d1</code></dt>
  23520. <dd><p>64-bit accumulators: $d0.hi, $d0.lo, $d1.hi, and $d1.lo.
  23521. </p>
  23522. </dd>
  23523. <dt><code>Assembler reserved register $ta</code></dt>
  23524. <dd><p>Register $ta ($r15) is reserved for assembler using.
  23525. </p>
  23526. </dd>
  23527. <dt><code>Operating system reserved registers $p0 and $p1</code></dt>
  23528. <dd><p>Registers $p0 ($r26) and $p1 ($r27) are used by operating system as scratch
  23529. registers.
  23530. </p>
  23531. </dd>
  23532. <dt><code>Frame pointer $fp</code></dt>
  23533. <dd><p>Register $r28 is regarded as the frame pointer.
  23534. </p>
  23535. </dd>
  23536. <dt><code>Global pointer</code></dt>
  23537. <dd><p>Register $r29 is regarded as the global pointer.
  23538. </p>
  23539. </dd>
  23540. <dt><code>Link pointer</code></dt>
  23541. <dd><p>Register $r30 is regarded as the link pointer.
  23542. </p>
  23543. </dd>
  23544. <dt><code>Stack pointer</code></dt>
  23545. <dd><p>Register $r31 is regarded as the stack pointer.
  23546. </p></dd>
  23547. </dl>
  23548. <hr>
  23549. <span id="NDS32_002dOps"></span><div class="header">
  23550. <p>
  23551. Previous: <a href="#NDS32_002dRegs" accesskey="p" rel="prev">NDS32-Regs</a>, Up: <a href="#NDS32-Syntax" accesskey="u" rel="up">NDS32 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23552. </div>
  23553. <span id="Pseudo-Instructions-1"></span><h4 class="subsubsection">9.31.2.3 Pseudo Instructions</h4>
  23554. <dl compact="compact">
  23555. <dt><code>li rt5,imm32</code></dt>
  23556. <dd><p>load 32-bit integer into register rt5. &lsquo;<samp>sethi rt5,hi20(imm32)</samp>&rsquo; and then
  23557. &lsquo;<samp>ori rt5,reg,lo12(imm32)</samp>&rsquo;.
  23558. </p>
  23559. </dd>
  23560. <dt><code>la rt5,var</code></dt>
  23561. <dd><p>Load 32-bit address of var into register rt5. &lsquo;<samp>sethi rt5,hi20(var)</samp>&rsquo; and
  23562. then &lsquo;<samp>ori reg,rt5,lo12(var)</samp>&rsquo;
  23563. </p>
  23564. </dd>
  23565. <dt><code>l.[bhw] rt5,var</code></dt>
  23566. <dd><p>Load value of var into register rt5. &lsquo;<samp>sethi $ta,hi20(var)</samp>&rsquo; and then
  23567. &lsquo;<samp>l[bhw]i rt5,[$ta+lo12(var)]</samp>&rsquo;
  23568. </p>
  23569. </dd>
  23570. <dt><code>l.[bh]s rt5,var</code></dt>
  23571. <dd><p>Load value of var into register rt5. &lsquo;<samp>sethi $ta,hi20(var)</samp>&rsquo; and then
  23572. &lsquo;<samp>l[bh]si rt5,[$ta+lo12(var)]</samp>&rsquo;
  23573. </p>
  23574. </dd>
  23575. <dt><code>l.[bhw]p rt5,var,inc</code></dt>
  23576. <dd><p>Load value of var into register rt5 and increment $ta by amount inc.
  23577. &lsquo;<samp>la $ta,var</samp>&rsquo; and then &lsquo;<samp>l[bhw]i.bi rt5,[$ta],inc</samp>&rsquo;
  23578. </p>
  23579. </dd>
  23580. <dt><code>l.[bhw]pc rt5,inc</code></dt>
  23581. <dd><p>Continue loading value of var into register rt5 and increment $ta by amount inc.
  23582. &lsquo;<samp>l[bhw]i.bi rt5,[$ta],inc.</samp>&rsquo;
  23583. </p>
  23584. </dd>
  23585. <dt><code>l.[bh]sp rt5,var,inc</code></dt>
  23586. <dd><p>Load value of var into register rt5 and increment $ta by amount inc.
  23587. &lsquo;<samp>la $ta,var</samp>&rsquo; and then &lsquo;<samp>l[bh]si.bi rt5,[$ta],inc</samp>&rsquo;
  23588. </p>
  23589. </dd>
  23590. <dt><code>l.[bh]spc rt5,inc</code></dt>
  23591. <dd><p>Continue loading value of var into register rt5 and increment $ta by amount inc.
  23592. &lsquo;<samp>l[bh]si.bi rt5,[$ta],inc.</samp>&rsquo;
  23593. </p>
  23594. </dd>
  23595. <dt><code>s.[bhw] rt5,var</code></dt>
  23596. <dd><p>Store register rt5 to var.
  23597. &lsquo;<samp>sethi $ta,hi20(var)</samp>&rsquo; and then &lsquo;<samp>s[bhw]i rt5,[$ta+lo12(var)]</samp>&rsquo;
  23598. </p>
  23599. </dd>
  23600. <dt><code>s.[bhw]p rt5,var,inc</code></dt>
  23601. <dd><p>Store register rt5 to var and increment $ta by amount inc.
  23602. &lsquo;<samp>la $ta,var</samp>&rsquo; and then &lsquo;<samp>s[bhw]i.bi rt5,[$ta],inc</samp>&rsquo;
  23603. </p>
  23604. </dd>
  23605. <dt><code>s.[bhw]pc rt5,inc</code></dt>
  23606. <dd><p>Continue storing register rt5 to var and increment $ta by amount inc.
  23607. &lsquo;<samp>s[bhw]i.bi rt5,[$ta],inc.</samp>&rsquo;
  23608. </p>
  23609. </dd>
  23610. <dt><code>not rt5,ra5</code></dt>
  23611. <dd><p>Alias of &lsquo;<samp>nor rt5,ra5,ra5</samp>&rsquo;.
  23612. </p>
  23613. </dd>
  23614. <dt><code>neg rt5,ra5</code></dt>
  23615. <dd><p>Alias of &lsquo;<samp>subri rt5,ra5,0</samp>&rsquo;.
  23616. </p>
  23617. </dd>
  23618. <dt><code>br rb5</code></dt>
  23619. <dd><p>Depending on how it is assembled, it is translated into &lsquo;<samp>r5 rb5</samp>&rsquo;
  23620. or &lsquo;<samp>jr rb5</samp>&rsquo;.
  23621. </p>
  23622. </dd>
  23623. <dt><code>b label</code></dt>
  23624. <dd><p>Branch to label depending on how it is assembled, it is translated into
  23625. &lsquo;<samp>j8 label</samp>&rsquo;, &lsquo;<samp>j label</samp>&rsquo;, or &quot;&lsquo;<samp>la $ta,label</samp>&rsquo; &lsquo;<samp>br $ta</samp>&rsquo;&quot;.
  23626. </p>
  23627. </dd>
  23628. <dt><code>bral rb5</code></dt>
  23629. <dd><p>Alias of jral br5 depending on how it is assembled, it is translated
  23630. into &lsquo;<samp>jral5 rb5</samp>&rsquo; or &lsquo;<samp>jral rb5</samp>&rsquo;.
  23631. </p>
  23632. </dd>
  23633. <dt><code>bal fname</code></dt>
  23634. <dd><p>Alias of jal fname depending on how it is assembled, it is translated into
  23635. &lsquo;<samp>jal fname</samp>&rsquo; or &quot;&lsquo;<samp>la $ta,fname</samp>&rsquo; &lsquo;<samp>bral $ta</samp>&rsquo;&quot;.
  23636. </p>
  23637. </dd>
  23638. <dt><code>call fname</code></dt>
  23639. <dd><p>Call function fname same as &lsquo;<samp>jal fname</samp>&rsquo;.
  23640. </p>
  23641. </dd>
  23642. <dt><code>move rt5,ra5</code></dt>
  23643. <dd><p>For 16-bit, this is &lsquo;<samp>mov55 rt5,ra5</samp>&rsquo;.
  23644. For no 16-bit, this is &lsquo;<samp>ori rt5,ra5,0</samp>&rsquo;.
  23645. </p>
  23646. </dd>
  23647. <dt><code>move rt5,var</code></dt>
  23648. <dd><p>This is the same as &lsquo;<samp>l.w rt5,var</samp>&rsquo;.
  23649. </p>
  23650. </dd>
  23651. <dt><code>move rt5,imm32</code></dt>
  23652. <dd><p>This is the same as &lsquo;<samp>li rt5,imm32</samp>&rsquo;.
  23653. </p>
  23654. </dd>
  23655. <dt><code>pushm ra5,rb5</code></dt>
  23656. <dd><p>Push contents of registers from ra5 to rb5 into stack.
  23657. </p>
  23658. </dd>
  23659. <dt><code>push ra5</code></dt>
  23660. <dd><p>Push content of register ra5 into stack. (same &lsquo;<samp>pushm ra5,ra5</samp>&rsquo;).
  23661. </p>
  23662. </dd>
  23663. <dt><code>push.d var</code></dt>
  23664. <dd><p>Push value of double-word variable var into stack.
  23665. </p>
  23666. </dd>
  23667. <dt><code>push.w var</code></dt>
  23668. <dd><p>Push value of word variable var into stack.
  23669. </p>
  23670. </dd>
  23671. <dt><code>push.h var</code></dt>
  23672. <dd><p>Push value of half-word variable var into stack.
  23673. </p>
  23674. </dd>
  23675. <dt><code>push.b var</code></dt>
  23676. <dd><p>Push value of byte variable var into stack.
  23677. </p>
  23678. </dd>
  23679. <dt><code>pusha var</code></dt>
  23680. <dd><p>Push 32-bit address of variable var into stack.
  23681. </p>
  23682. </dd>
  23683. <dt><code>pushi imm32</code></dt>
  23684. <dd><p>Push 32-bit immediate value into stack.
  23685. </p>
  23686. </dd>
  23687. <dt><code>popm ra5,rb5</code></dt>
  23688. <dd><p>Pop top of stack values into registers ra5 to rb5.
  23689. </p>
  23690. </dd>
  23691. <dt><code>pop rt5</code></dt>
  23692. <dd><p>Pop top of stack value into register. (same as &lsquo;<samp>popm rt5,rt5</samp>&rsquo;.)
  23693. </p>
  23694. </dd>
  23695. <dt><code>pop.d var,ra5</code></dt>
  23696. <dd><p>Pop value of double-word variable var from stack using register ra5
  23697. as 2nd scratch register. (1st is $ta)
  23698. </p>
  23699. </dd>
  23700. <dt><code>pop.w var,ra5</code></dt>
  23701. <dd><p>Pop value of word variable var from stack using register ra5.
  23702. </p>
  23703. </dd>
  23704. <dt><code>pop.h var,ra5</code></dt>
  23705. <dd><p>Pop value of half-word variable var from stack using register ra5.
  23706. </p>
  23707. </dd>
  23708. <dt><code>pop.b var,ra5</code></dt>
  23709. <dd><p>Pop value of byte variable var from stack using register ra5.
  23710. </p>
  23711. </dd>
  23712. </dl>
  23713. <hr>
  23714. <span id="NiosII_002dDependent"></span><div class="header">
  23715. <p>
  23716. Next: <a href="#NS32K_002dDependent" accesskey="n" rel="next">NS32K-Dependent</a>, Previous: <a href="#NDS32_002dDependent" accesskey="p" rel="prev">NDS32-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23717. </div>
  23718. <span id="Nios-II-Dependent-Features"></span><h3 class="section">9.32 Nios II Dependent Features</h3>
  23719. <span id="index-Altera-Nios-II-support"></span>
  23720. <span id="index-Nios-support"></span>
  23721. <span id="index-Nios-II-support"></span>
  23722. <table class="menu" border="0" cellspacing="0">
  23723. <tr><td align="left" valign="top">&bull; <a href="#Nios-II-Options" accesskey="1">Nios II Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  23724. </td></tr>
  23725. <tr><td align="left" valign="top">&bull; <a href="#Nios-II-Syntax" accesskey="2">Nios II Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  23726. </td></tr>
  23727. <tr><td align="left" valign="top">&bull; <a href="#Nios-II-Relocations" accesskey="3">Nios II Relocations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relocations
  23728. </td></tr>
  23729. <tr><td align="left" valign="top">&bull; <a href="#Nios-II-Directives" accesskey="4">Nios II Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Nios II Machine Directives
  23730. </td></tr>
  23731. <tr><td align="left" valign="top">&bull; <a href="#Nios-II-Opcodes" accesskey="5">Nios II Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  23732. </td></tr>
  23733. </table>
  23734. <hr>
  23735. <span id="Nios-II-Options"></span><div class="header">
  23736. <p>
  23737. Next: <a href="#Nios-II-Syntax" accesskey="n" rel="next">Nios II Syntax</a>, Up: <a href="#NiosII_002dDependent" accesskey="u" rel="up">NiosII-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23738. </div>
  23739. <span id="Options-17"></span><h4 class="subsection">9.32.1 Options</h4>
  23740. <span id="index-Nios-II-options"></span>
  23741. <span id="index-options-for-Nios-II"></span>
  23742. <dl compact="compact">
  23743. <dd>
  23744. <span id="index-relax_002dsection-command_002dline-option_002c-Nios-II"></span>
  23745. </dd>
  23746. <dt><code>-relax-section</code></dt>
  23747. <dd><p>Replace identified out-of-range branches with PC-relative <code>jmp</code>
  23748. sequences when possible. The generated code sequences are suitable
  23749. for use in position-independent code, but there is a practical limit
  23750. on the extended branch range because of the length of the sequences.
  23751. This option is the default.
  23752. </p>
  23753. <span id="index-relax_002dall-command_002dline-option_002c-Nios-II"></span>
  23754. </dd>
  23755. <dt><code>-relax-all</code></dt>
  23756. <dd><p>Replace branch instructions not determinable to be in range
  23757. and all call instructions with <code>jmp</code> and <code>callr</code> sequences
  23758. (respectively). This option generates absolute relocations against the
  23759. target symbols and is not appropriate for position-independent code.
  23760. </p>
  23761. <span id="index-no_002drelax-command_002dline-option_002c-Nios-II"></span>
  23762. </dd>
  23763. <dt><code>-no-relax</code></dt>
  23764. <dd><p>Do not replace any branches or calls.
  23765. </p>
  23766. <span id="index-EB-command_002dline-option_002c-Nios-II"></span>
  23767. </dd>
  23768. <dt><code>-EB</code></dt>
  23769. <dd><p>Generate big-endian output.
  23770. </p>
  23771. <span id="index-EL-command_002dline-option_002c-Nios-II"></span>
  23772. </dd>
  23773. <dt><code>-EL</code></dt>
  23774. <dd><p>Generate little-endian output. This is the default.
  23775. </p>
  23776. <span id="index-march-command_002dline-option_002c-Nios-II"></span>
  23777. </dd>
  23778. <dt><code>-march=<var>architecture</var></code></dt>
  23779. <dd><p>This option specifies the target architecture. The assembler issues
  23780. an error message if an attempt is made to assemble an instruction which
  23781. will not execute on the target architecture. The following architecture
  23782. names are recognized:
  23783. <code>r1</code>,
  23784. <code>r2</code>.
  23785. The default is <code>r1</code>.
  23786. </p>
  23787. </dd>
  23788. </dl>
  23789. <hr>
  23790. <span id="Nios-II-Syntax"></span><div class="header">
  23791. <p>
  23792. Next: <a href="#Nios-II-Relocations" accesskey="n" rel="next">Nios II Relocations</a>, Previous: <a href="#Nios-II-Options" accesskey="p" rel="prev">Nios II Options</a>, Up: <a href="#NiosII_002dDependent" accesskey="u" rel="up">NiosII-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23793. </div>
  23794. <span id="Syntax-23"></span><h4 class="subsection">9.32.2 Syntax</h4>
  23795. <table class="menu" border="0" cellspacing="0">
  23796. <tr><td align="left" valign="top">&bull; <a href="#Nios-II-Chars" accesskey="1">Nios II Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  23797. </td></tr>
  23798. </table>
  23799. <hr>
  23800. <span id="Nios-II-Chars"></span><div class="header">
  23801. <p>
  23802. Up: <a href="#Nios-II-Syntax" accesskey="u" rel="up">Nios II Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23803. </div>
  23804. <span id="Special-Characters-23"></span><h4 class="subsubsection">9.32.2.1 Special Characters</h4>
  23805. <span id="index-line-comment-character_002c-Nios-II"></span>
  23806. <span id="index-Nios-II-line-comment-character"></span>
  23807. <span id="index-line-separator-character_002c-Nios-II"></span>
  23808. <span id="index-Nios-II-line-separator-character"></span>
  23809. <p>&lsquo;<samp>#</samp>&rsquo; is the line comment character.
  23810. &lsquo;<samp>;</samp>&rsquo; is the line separator character.
  23811. </p>
  23812. <hr>
  23813. <span id="Nios-II-Relocations"></span><div class="header">
  23814. <p>
  23815. Next: <a href="#Nios-II-Directives" accesskey="n" rel="next">Nios II Directives</a>, Previous: <a href="#Nios-II-Syntax" accesskey="p" rel="prev">Nios II Syntax</a>, Up: <a href="#NiosII_002dDependent" accesskey="u" rel="up">NiosII-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23816. </div>
  23817. <span id="Nios-II-Machine-Relocations"></span><h4 class="subsection">9.32.3 Nios II Machine Relocations</h4>
  23818. <span id="index-machine-relocations_002c-Nios-II"></span>
  23819. <span id="index-Nios-II-machine-relocations"></span>
  23820. <dl compact="compact">
  23821. <dd><span id="index-hiadj-directive_002c-Nios-II"></span>
  23822. </dd>
  23823. <dt><code>%hiadj(<var>expression</var>)</code></dt>
  23824. <dd><p>Extract the upper 16 bits of <var>expression</var> and add
  23825. one if the 15th bit is set.
  23826. </p>
  23827. <p>The value of <code>%hiadj(<var>expression</var>)</code> is:
  23828. </p><div class="example">
  23829. <pre class="example">((<var>expression</var> &gt;&gt; 16) &amp; 0xffff) + ((<var>expression</var> &gt;&gt; 15) &amp; 0x01)
  23830. </pre></div>
  23831. <p>The <code>%hiadj</code> relocation is intended to be used with
  23832. the <code>addi</code>, <code>ld</code> or <code>st</code> instructions
  23833. along with a <code>%lo</code>, in order to load a 32-bit constant.
  23834. </p>
  23835. <div class="example">
  23836. <pre class="example">movhi r2, %hiadj(symbol)
  23837. addi r2, r2, %lo(symbol)
  23838. </pre></div>
  23839. <span id="index-hi-directive_002c-Nios-II"></span>
  23840. </dd>
  23841. <dt><code>%hi(<var>expression</var>)</code></dt>
  23842. <dd><p>Extract the upper 16 bits of <var>expression</var>.
  23843. </p>
  23844. <span id="index-lo-directive_002c-Nios-II"></span>
  23845. </dd>
  23846. <dt><code>%lo(<var>expression</var>)</code></dt>
  23847. <dd><p>Extract the lower 16 bits of <var>expression</var>.
  23848. </p>
  23849. <span id="index-gprel-directive_002c-Nios-II"></span>
  23850. </dd>
  23851. <dt><code>%gprel(<var>expression</var>)</code></dt>
  23852. <dd><p>Subtract the value of the symbol <code>_gp</code> from
  23853. <var>expression</var>.
  23854. </p>
  23855. <p>The intention of the <code>%gprel</code> relocation is
  23856. to have a fast small area of memory which only
  23857. takes a 16-bit immediate to access.
  23858. </p>
  23859. <div class="example">
  23860. <pre class="example"> .section .sdata
  23861. fastint:
  23862. .int 123
  23863. .section .text
  23864. ldw r4, %gprel(fastint)(gp)
  23865. </pre></div>
  23866. <span id="index-call-directive_002c-Nios-II"></span>
  23867. <span id="index-call_005flo-directive_002c-Nios-II"></span>
  23868. <span id="index-call_005fhiadj-directive_002c-Nios-II"></span>
  23869. <span id="index-got-directive_002c-Nios-II"></span>
  23870. <span id="index-got_005flo-directive_002c-Nios-II"></span>
  23871. <span id="index-got_005fhiadj-directive_002c-Nios-II"></span>
  23872. <span id="index-gotoff-directive_002c-Nios-II"></span>
  23873. <span id="index-gotoff_005flo-directive_002c-Nios-II"></span>
  23874. <span id="index-gotoff_005fhiadj-directive_002c-Nios-II"></span>
  23875. <span id="index-tls_005fgd-directive_002c-Nios-II"></span>
  23876. <span id="index-tls_005fie-directive_002c-Nios-II"></span>
  23877. <span id="index-tls_005fle-directive_002c-Nios-II"></span>
  23878. <span id="index-tls_005fldm-directive_002c-Nios-II"></span>
  23879. <span id="index-tls_005fldo-directive_002c-Nios-II"></span>
  23880. </dd>
  23881. <dt><code>%call(<var>expression</var>)</code></dt>
  23882. <dt><code>%call_lo(<var>expression</var>)</code></dt>
  23883. <dt><code>%call_hiadj(<var>expression</var>)</code></dt>
  23884. <dt><code>%got(<var>expression</var>)</code></dt>
  23885. <dt><code>%got_lo(<var>expression</var>)</code></dt>
  23886. <dt><code>%got_hiadj(<var>expression</var>)</code></dt>
  23887. <dt><code>%gotoff(<var>expression</var>)</code></dt>
  23888. <dt><code>%gotoff_lo(<var>expression</var>)</code></dt>
  23889. <dt><code>%gotoff_hiadj(<var>expression</var>)</code></dt>
  23890. <dt><code>%tls_gd(<var>expression</var>)</code></dt>
  23891. <dt><code>%tls_ie(<var>expression</var>)</code></dt>
  23892. <dt><code>%tls_le(<var>expression</var>)</code></dt>
  23893. <dt><code>%tls_ldm(<var>expression</var>)</code></dt>
  23894. <dt><code>%tls_ldo(<var>expression</var>)</code></dt>
  23895. <dd>
  23896. <p>These relocations support the ABI for Linux Systems documented in the
  23897. <cite>Nios II Processor Reference Handbook</cite>.
  23898. </p></dd>
  23899. </dl>
  23900. <hr>
  23901. <span id="Nios-II-Directives"></span><div class="header">
  23902. <p>
  23903. Next: <a href="#Nios-II-Opcodes" accesskey="n" rel="next">Nios II Opcodes</a>, Previous: <a href="#Nios-II-Relocations" accesskey="p" rel="prev">Nios II Relocations</a>, Up: <a href="#NiosII_002dDependent" accesskey="u" rel="up">NiosII-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  23904. </div>
  23905. <span id="Nios-II-Machine-Directives"></span><h4 class="subsection">9.32.4 Nios II Machine Directives</h4>
  23906. <span id="index-machine-directives_002c-Nios-II"></span>
  23907. <span id="index-Nios-II-machine-directives"></span>
  23908. <dl compact="compact">
  23909. <dd>
  23910. <span id="index-align-directive_002c-Nios-II"></span>
  23911. </dd>
  23912. <dt><code>.align <var>expression</var> [, <var>expression</var>]</code></dt>
  23913. <dd><p>This is the generic <code>.align</code> directive, however
  23914. this aligns to a power of two.
  23915. </p>
  23916. <span id="index-half-directive_002c-Nios-II"></span>
  23917. </dd>
  23918. <dt><code>.half <var>expression</var></code></dt>
  23919. <dd><p>Create an aligned constant 2 bytes in size.
  23920. </p>
  23921. <span id="index-word-directive_002c-Nios-II"></span>
  23922. </dd>
  23923. <dt><code>.word <var>expression</var></code></dt>
  23924. <dd><p>Create an aligned constant 4 bytes in size.
  23925. </p>
  23926. <span id="index-dword-directive_002c-Nios-II"></span>
  23927. </dd>
  23928. <dt><code>.dword <var>expression</var></code></dt>
  23929. <dd><p>Create an aligned constant 8 bytes in size.
  23930. </p>
  23931. <span id="index-2byte-directive_002c-Nios-II"></span>
  23932. </dd>
  23933. <dt><code>.2byte <var>expression</var></code></dt>
  23934. <dd><p>Create an unaligned constant 2 bytes in size.
  23935. </p>
  23936. <span id="index-4byte-directive_002c-Nios-II"></span>
  23937. </dd>
  23938. <dt><code>.4byte <var>expression</var></code></dt>
  23939. <dd><p>Create an unaligned constant 4 bytes in size.
  23940. </p>
  23941. <span id="index-8byte-directive_002c-Nios-II"></span>
  23942. </dd>
  23943. <dt><code>.8byte <var>expression</var></code></dt>
  23944. <dd><p>Create an unaligned constant 8 bytes in size.
  23945. </p>
  23946. <span id="index-16byte-directive_002c-Nios-II"></span>
  23947. </dd>
  23948. <dt><code>.16byte <var>expression</var></code></dt>
  23949. <dd><p>Create an unaligned constant 16 bytes in size.
  23950. </p>
  23951. <span id="index-set-noat-directive_002c-Nios-II"></span>
  23952. </dd>
  23953. <dt><code>.set noat</code></dt>
  23954. <dd><p>Allows assembly code to use <code>at</code> register without
  23955. warning. Macro or relaxation expansions
  23956. generate warnings.
  23957. </p>
  23958. <span id="index-set-at-directive_002c-Nios-II"></span>
  23959. </dd>
  23960. <dt><code>.set at</code></dt>
  23961. <dd><p>Assembly code using <code>at</code> register generates
  23962. warnings, and macro expansion and relaxation are
  23963. enabled.
  23964. </p>
  23965. <span id="index-set-nobreak-directive_002c-Nios-II"></span>
  23966. </dd>
  23967. <dt><code>.set nobreak</code></dt>
  23968. <dd><p>Allows assembly code to use <code>ba</code> and <code>bt</code>
  23969. registers without warning.
  23970. </p>
  23971. <span id="index-set-break-directive_002c-Nios-II"></span>
  23972. </dd>
  23973. <dt><code>.set break</code></dt>
  23974. <dd><p>Turns warnings back on for using <code>ba</code> and <code>bt</code>
  23975. registers.
  23976. </p>
  23977. <span id="index-set-norelax-directive_002c-Nios-II"></span>
  23978. </dd>
  23979. <dt><code>.set norelax</code></dt>
  23980. <dd><p>Do not replace any branches or calls.
  23981. </p>
  23982. <span id="index-set-relaxsection-directive_002c-Nios-II"></span>
  23983. </dd>
  23984. <dt><code>.set relaxsection</code></dt>
  23985. <dd><p>Replace identified out-of-range branches with
  23986. <code>jmp</code> sequences (default).
  23987. </p>
  23988. <span id="index-set-relaxall-directive_002c-Nios-II"></span>
  23989. </dd>
  23990. <dt><code>.set relaxsection</code></dt>
  23991. <dd><p>Replace all branch and call instructions with
  23992. <code>jmp</code> and <code>callr</code> sequences.
  23993. </p>
  23994. <span id="index-set-directive_002c-Nios-II"></span>
  23995. </dd>
  23996. <dt><code>.set &hellip;</code></dt>
  23997. <dd><p>All other <code>.set</code> are the normal use.
  23998. </p>
  23999. </dd>
  24000. </dl>
  24001. <hr>
  24002. <span id="Nios-II-Opcodes"></span><div class="header">
  24003. <p>
  24004. Previous: <a href="#Nios-II-Directives" accesskey="p" rel="prev">Nios II Directives</a>, Up: <a href="#NiosII_002dDependent" accesskey="u" rel="up">NiosII-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24005. </div>
  24006. <span id="Opcodes-14"></span><h4 class="subsection">9.32.5 Opcodes</h4>
  24007. <span id="index-Nios-II-opcodes"></span>
  24008. <span id="index-opcodes-for-Nios-II"></span>
  24009. <p><code>as</code> implements all the standard Nios II opcodes documented in the
  24010. <cite>Nios II Processor Reference Handbook</cite>, including the assembler
  24011. pseudo-instructions.
  24012. </p>
  24013. <hr>
  24014. <span id="NS32K_002dDependent"></span><div class="header">
  24015. <p>
  24016. Next: <a href="#OpenRISC_002dDependent" accesskey="n" rel="next">OpenRISC-Dependent</a>, Previous: <a href="#NiosII_002dDependent" accesskey="p" rel="prev">NiosII-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24017. </div>
  24018. <span id="NS32K-Dependent-Features"></span><h3 class="section">9.33 NS32K Dependent Features</h3>
  24019. <span id="index-N32K-support"></span>
  24020. <table class="menu" border="0" cellspacing="0">
  24021. <tr><td align="left" valign="top">&bull; <a href="#NS32K-Syntax" accesskey="1">NS32K Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  24022. </td></tr>
  24023. </table>
  24024. <hr>
  24025. <span id="NS32K-Syntax"></span><div class="header">
  24026. <p>
  24027. Up: <a href="#NS32K_002dDependent" accesskey="u" rel="up">NS32K-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24028. </div>
  24029. <span id="Syntax-24"></span><h4 class="subsection">9.33.1 Syntax</h4>
  24030. <table class="menu" border="0" cellspacing="0">
  24031. <tr><td align="left" valign="top">&bull; <a href="#NS32K_002dChars" accesskey="1">NS32K-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  24032. </td></tr>
  24033. </table>
  24034. <hr>
  24035. <span id="NS32K_002dChars"></span><div class="header">
  24036. <p>
  24037. Up: <a href="#NS32K-Syntax" accesskey="u" rel="up">NS32K Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24038. </div>
  24039. <span id="Special-Characters-24"></span><h4 class="subsubsection">9.33.1.1 Special Characters</h4>
  24040. <span id="index-line-comment-character_002c-NS32K"></span>
  24041. <span id="index-NS32K-line-comment-character"></span>
  24042. <p>The presence of a &lsquo;<samp>#</samp>&rsquo; appearing anywhere on a line indicates the
  24043. start of a comment that extends to the end of that line.
  24044. </p>
  24045. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  24046. line is treated as a comment, but in this case the line can also be a
  24047. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  24048. control command (see <a href="#Preprocessing">Preprocessing</a>).
  24049. </p>
  24050. <p>If Sequent compatibility has been configured into the assembler then
  24051. the &lsquo;<samp>|</samp>&rsquo; character appearing as the first character on a line will
  24052. also indicate the start of a line comment.
  24053. </p>
  24054. <span id="index-line-separator_002c-NS32K"></span>
  24055. <span id="index-statement-separator_002c-NS32K"></span>
  24056. <span id="index-NS32K-line-separator"></span>
  24057. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used to separate statements on the same
  24058. line.
  24059. </p>
  24060. <hr>
  24061. <span id="OpenRISC_002dDependent"></span><div class="header">
  24062. <p>
  24063. Next: <a href="#PDP_002d11_002dDependent" accesskey="n" rel="next">PDP-11-Dependent</a>, Previous: <a href="#NS32K_002dDependent" accesskey="p" rel="prev">NS32K-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24064. </div>
  24065. <span id="OPENRISC-Dependent-Features"></span><h3 class="section">9.34 OPENRISC Dependent Features</h3>
  24066. <span id="index-OPENRISC-support"></span>
  24067. <table class="menu" border="0" cellspacing="0">
  24068. <tr><td align="left" valign="top">&bull; <a href="#OpenRISC_002dSyntax" accesskey="1">OpenRISC-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  24069. </td></tr>
  24070. <tr><td align="left" valign="top">&bull; <a href="#OpenRISC_002dFloat" accesskey="2">OpenRISC-Float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  24071. </td></tr>
  24072. <tr><td align="left" valign="top">&bull; <a href="#OpenRISC_002dDirectives" accesskey="3">OpenRISC-Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">OpenRISC Machine Directives
  24073. </td></tr>
  24074. <tr><td align="left" valign="top">&bull; <a href="#OpenRISC_002dOpcodes" accesskey="4">OpenRISC-Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  24075. </td></tr>
  24076. </table>
  24077. <span id="index-OPENRISC-syntax"></span>
  24078. <span id="index-syntax_002c-OPENRISC"></span>
  24079. <hr>
  24080. <span id="OpenRISC_002dSyntax"></span><div class="header">
  24081. <p>
  24082. Next: <a href="#OpenRISC_002dFloat" accesskey="n" rel="next">OpenRISC-Float</a>, Up: <a href="#OpenRISC_002dDependent" accesskey="u" rel="up">OpenRISC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24083. </div>
  24084. <span id="OpenRISC-Syntax"></span><h4 class="subsection">9.34.1 OpenRISC Syntax</h4>
  24085. <p>The assembler syntax follows the OpenRISC 1000 Architecture Manual.
  24086. </p>
  24087. <table class="menu" border="0" cellspacing="0">
  24088. <tr><td align="left" valign="top">&bull; <a href="#OpenRISC_002dChars" accesskey="1">OpenRISC-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  24089. </td></tr>
  24090. <tr><td align="left" valign="top">&bull; <a href="#OpenRISC_002dRegs" accesskey="2">OpenRISC-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  24091. </td></tr>
  24092. <tr><td align="left" valign="top">&bull; <a href="#OpenRISC_002dRelocs" accesskey="3">OpenRISC-Relocs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relocations
  24093. </td></tr>
  24094. </table>
  24095. <hr>
  24096. <span id="OpenRISC_002dChars"></span><div class="header">
  24097. <p>
  24098. Next: <a href="#OpenRISC_002dRegs" accesskey="n" rel="next">OpenRISC-Regs</a>, Up: <a href="#OpenRISC_002dSyntax" accesskey="u" rel="up">OpenRISC-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24099. </div>
  24100. <span id="Special-Characters-25"></span><h4 class="subsubsection">9.34.1.1 Special Characters</h4>
  24101. <span id="index-line-comment-character_002c-OpenRISC"></span>
  24102. <span id="index-OpenRISC-line-comment-character"></span>
  24103. <p>A &lsquo;<samp>#</samp>&rsquo; character appearing anywhere on a line indicates the start
  24104. of a comment that extends to the end of that line.
  24105. </p>
  24106. <span id="index-line-separator_002c-OpenRISC"></span>
  24107. <span id="index-statement-separator_002c-OpenRISC"></span>
  24108. <span id="index-OpenRISC-line-separator"></span>
  24109. <p>&lsquo;<samp>;</samp>&rsquo; can be used instead of a newline to separate statements.
  24110. </p>
  24111. <hr>
  24112. <span id="OpenRISC_002dRegs"></span><div class="header">
  24113. <p>
  24114. Next: <a href="#OpenRISC_002dRelocs" accesskey="n" rel="next">OpenRISC-Relocs</a>, Previous: <a href="#OpenRISC_002dChars" accesskey="p" rel="prev">OpenRISC-Chars</a>, Up: <a href="#OpenRISC_002dSyntax" accesskey="u" rel="up">OpenRISC-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24115. </div>
  24116. <span id="Register-Names-13"></span><h4 class="subsubsection">9.34.1.2 Register Names</h4>
  24117. <span id="index-OpenRISC-registers"></span>
  24118. <span id="index-register-names_002c-OpenRISC"></span>
  24119. <p>The OpenRISC register file contains 32 general purpose registers.
  24120. </p>
  24121. <ul>
  24122. <li> The 32 general purpose registers are referred to as &lsquo;<samp>r<var>n</var></samp>&rsquo;.
  24123. </li><li> The stack pointer register &lsquo;<samp>r1</samp>&rsquo; can be referenced using the alias
  24124. &lsquo;<samp>sp</samp>&rsquo;.
  24125. </li><li> The frame pointer register &lsquo;<samp>r2</samp>&rsquo; can be referenced using the alias
  24126. &lsquo;<samp>fp</samp>&rsquo;.
  24127. </li><li> The link register &lsquo;<samp>r9</samp>&rsquo; can be referenced using the alias &lsquo;<samp>lr</samp>&rsquo;.
  24128. </li></ul>
  24129. <p>Floating point operations use the same general purpose registers. The
  24130. instructions <code>lf.itof.s</code> (single precision) and <code>lf.itof.d</code> (double
  24131. precision) can be used to convert integer values to floating point.
  24132. Likewise, instructions <code>lf.ftoi.s</code> (single precision) and
  24133. <code>lf.ftoi.d</code> (double precision) can be used to convert floating point to
  24134. integer.
  24135. </p>
  24136. <p>OpenRISC also contains privileged special purpose registers (SPRs). The
  24137. SPRs are accessed using the <code>l.mfspr</code> and <code>l.mtspr</code> instructions.
  24138. </p>
  24139. <hr>
  24140. <span id="OpenRISC_002dRelocs"></span><div class="header">
  24141. <p>
  24142. Previous: <a href="#OpenRISC_002dRegs" accesskey="p" rel="prev">OpenRISC-Regs</a>, Up: <a href="#OpenRISC_002dSyntax" accesskey="u" rel="up">OpenRISC-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24143. </div>
  24144. <span id="Relocations-3"></span><h4 class="subsubsection">9.34.1.3 Relocations</h4>
  24145. <span id="index-OpenRISC-relocations"></span>
  24146. <span id="index-relocations_002c-OpenRISC"></span>
  24147. <p>ELF relocations are available as defined in the OpenRISC architecture
  24148. specification.
  24149. </p>
  24150. <p><code>R_OR1K_HI_16_IN_INSN</code> is obtained using &lsquo;<samp>hi</samp>&rsquo; and
  24151. <code>R_OR1K_LO_16_IN_INSN</code> and <code>R_OR1K_SLO16</code> are obtained using
  24152. &lsquo;<samp>lo</samp>&rsquo;. For signed offsets <code>R_OR1K_AHI16</code> is obtained from
  24153. &lsquo;<samp>ha</samp>&rsquo;. For example:
  24154. </p>
  24155. <div class="example">
  24156. <pre class="example">l.movhi r5, hi(symbol)
  24157. l.ori r5, r5, lo(symbol)
  24158. l.movhi r5, ha(symbol)
  24159. l.addi r5, r5, lo(symbol)
  24160. </pre></div>
  24161. <p>These &ldquo;high&rdquo; mnemonics extract bits 31:16 of their operand,
  24162. and the &ldquo;low&rdquo; mnemonics extract bits 15:0 of their operand.
  24163. </p>
  24164. <p>The PC relative relocation <code>R_OR1K_GOTPC_HI16</code> can be obtained by
  24165. enclosing an operand inside of &lsquo;<samp>gotpchi</samp>&rsquo;. Likewise, the
  24166. <code>R_OR1K_GOTPC_LO16</code> relocation can be obtained using &lsquo;<samp>gotpclo</samp>&rsquo;.
  24167. These are mostly used when assembling PIC code. For example, the
  24168. standard PIC sequence on OpenRISC to get the base of the global offset
  24169. table, PC relative, into a register, can be performed as:
  24170. </p>
  24171. <div class="example">
  24172. <pre class="example">l.jal 0x8
  24173. l.movhi r17, gotpchi(_GLOBAL_OFFSET_TABLE_-4)
  24174. l.ori r17, r17, gotpclo(_GLOBAL_OFFSET_TABLE_+0)
  24175. l.add r17, r17, r9
  24176. </pre></div>
  24177. <p>Several relocations exist to allow the link editor to perform GOT data
  24178. references. The <code>R_OR1K_GOT16</code> relocation can obtained by enclosing an
  24179. operand inside of &lsquo;<samp>got</samp>&rsquo;. For example, assuming the GOT base is in
  24180. register <code>r17</code>.
  24181. </p>
  24182. <div class="example">
  24183. <pre class="example">l.lwz r19, got(a)(r17)
  24184. l.lwz r21, 0(r19)
  24185. </pre></div>
  24186. <p>Also, several relocations exist for local GOT references. The
  24187. <code>R_OR1K_GOTOFF_AHI16</code> relocation can obtained by enclosing an operand
  24188. inside of &lsquo;<samp>gotoffha</samp>&rsquo;. Likewise, <code>R_OR1K_GOTOFF_LO16</code> and
  24189. <code>R_OR1K_GOTOFF_SLO16</code> can be obtained by enclosing an operand inside of
  24190. &lsquo;<samp>gotofflo</samp>&rsquo;. For example, assuming the GOT base is in register
  24191. <code>rl7</code>:
  24192. </p>
  24193. <div class="example">
  24194. <pre class="example">l.movhi r19, gotoffha(symbol)
  24195. l.add r19, r19, r17
  24196. l.lwz r19, gotofflo(symbol)(r19)
  24197. </pre></div>
  24198. <p>The above PC relative relocations use a <code>l.jal</code> (jump) instruction
  24199. and reading of the link register to load the PC. OpenRISC also supports
  24200. page offset PC relative locations without a jump instruction using the
  24201. <code>l.adrp</code> instruction. By default the <code>l.adrp</code> instruction will
  24202. create an <code>R_OR1K_PCREL_PG21</code> relocation.
  24203. Likewise, <code>BFD_RELOC_OR1K_LO13</code> and <code>BFD_RELOC_OR1K_SLO13</code> can
  24204. be obtained by enclosing an operand inside of &lsquo;<samp>po</samp>&rsquo;. For example:
  24205. </p>
  24206. <div class="example">
  24207. <pre class="example">l.adrp r3, symbol
  24208. l.ori r4, r3, po(symbol)
  24209. l.lbz r5, po(symbol)(r3)
  24210. l.sb po(symbol)(r3), r6
  24211. </pre></div>
  24212. <p>Likewise the page offset relocations can be used with GOT references. The
  24213. relocation <code>R_OR1K_GOT_PG21</code> can be obtained by enclosing an
  24214. <code>l.adrp</code> immediate operand inside of &lsquo;<samp>got</samp>&rsquo;. Likewise,
  24215. <code>R_OR1K_GOT_LO13</code> can be obtained by enclosing an operand inside of
  24216. &lsquo;<samp>gotpo</samp>&rsquo;. For example to load the value of a GOT symbol into register
  24217. &lsquo;<samp>r5</samp>&rsquo; we can do:
  24218. </p>
  24219. <div class="example">
  24220. <pre class="example">l.adrp r17, got(_GLOBAL_OFFSET_TABLE_)
  24221. l.lwz r5, gotpo(symbol)(r17)
  24222. </pre></div>
  24223. <p>There are many relocations that can be requested for access to
  24224. thread local storage variables. All of the OpenRISC TLS mnemonics
  24225. are supported:
  24226. </p>
  24227. <ul>
  24228. <li> <code>R_OR1K_TLS_GD_HI16</code> is requested using &lsquo;<samp>tlsgdhi</samp>&rsquo;.
  24229. </li><li> <code>R_OR1K_TLS_GD_LO16</code> is requested using &lsquo;<samp>tlsgdlo</samp>&rsquo;.
  24230. </li><li> <code>R_OR1K_TLS_GD_PG21</code> is requested using &lsquo;<samp>tldgd</samp>&rsquo;.
  24231. </li><li> <code>R_OR1K_TLS_GD_LO13</code> is requested using &lsquo;<samp>tlsgdpo</samp>&rsquo;.
  24232. </li><li> <code>R_OR1K_TLS_LDM_HI16</code> is requested using &lsquo;<samp>tlsldmhi</samp>&rsquo;.
  24233. </li><li> <code>R_OR1K_TLS_LDM_LO16</code> is requested using &lsquo;<samp>tlsldmlo</samp>&rsquo;.
  24234. </li><li> <code>R_OR1K_TLS_LDM_PG21</code> is requested using &lsquo;<samp>tldldm</samp>&rsquo;.
  24235. </li><li> <code>R_OR1K_TLS_LDM_LO13</code> is requested using &lsquo;<samp>tlsldmpo</samp>&rsquo;.
  24236. </li><li> <code>R_OR1K_TLS_LDO_HI16</code> is requested using &lsquo;<samp>dtpoffhi</samp>&rsquo;.
  24237. </li><li> <code>R_OR1K_TLS_LDO_LO16</code> is requested using &lsquo;<samp>dtpofflo</samp>&rsquo;.
  24238. </li><li> <code>R_OR1K_TLS_IE_HI16</code> is requested using &lsquo;<samp>gottpoffhi</samp>&rsquo;.
  24239. </li><li> <code>R_OR1K_TLS_IE_AHI16</code> is requested using &lsquo;<samp>gottpoffha</samp>&rsquo;.
  24240. </li><li> <code>R_OR1K_TLS_IE_LO16</code> is requested using &lsquo;<samp>gottpofflo</samp>&rsquo;.
  24241. </li><li> <code>R_OR1K_TLS_IE_PG21</code> is requested using &lsquo;<samp>gottp</samp>&rsquo;.
  24242. </li><li> <code>R_OR1K_TLS_IE_LO13</code> is requested using &lsquo;<samp>gottppo</samp>&rsquo;.
  24243. </li><li> <code>R_OR1K_TLS_LE_HI16</code> is requested using &lsquo;<samp>tpoffhi</samp>&rsquo;.
  24244. </li><li> <code>R_OR1K_TLS_LE_AHI16</code> is requested using &lsquo;<samp>tpoffha</samp>&rsquo;.
  24245. </li><li> <code>R_OR1K_TLS_LE_LO16</code> is requested using &lsquo;<samp>tpofflo</samp>&rsquo;.
  24246. </li><li> <code>R_OR1K_TLS_LE_SLO16</code> also is requested using &lsquo;<samp>tpofflo</samp>&rsquo;
  24247. depending on the instruction format.
  24248. </li></ul>
  24249. <p>Here are some example TLS model sequences.
  24250. </p>
  24251. <p>First, General Dynamic:
  24252. </p>
  24253. <div class="example">
  24254. <pre class="example">l.movhi r17, tlsgdhi(symbol)
  24255. l.ori r17, r17, tlsgdlo(symbol)
  24256. l.add r17, r17, r16
  24257. l.or r3, r17, r17
  24258. l.jal plt(__tls_get_addr)
  24259. l.nop
  24260. </pre></div>
  24261. <p>Initial Exec:
  24262. </p>
  24263. <div class="example">
  24264. <pre class="example">l.movhi r17, gottpoffhi(symbol)
  24265. l.add r17, r17, r16
  24266. l.lwz r17, gottpofflo(symbol)(r17)
  24267. l.add r17, r17, r10
  24268. l.lbs r17, 0(r17)
  24269. </pre></div>
  24270. <p>And finally, Local Exec:
  24271. </p>
  24272. <div class="example">
  24273. <pre class="example">l.movhi r17, tpoffha(symbol)
  24274. l.add r17, r17, r10
  24275. l.addi r17, r17, tpofflo(symbol)
  24276. l.lbs r17, 0(r17)
  24277. </pre></div>
  24278. <hr>
  24279. <span id="OpenRISC_002dFloat"></span><div class="header">
  24280. <p>
  24281. Next: <a href="#OpenRISC_002dDirectives" accesskey="n" rel="next">OpenRISC-Directives</a>, Previous: <a href="#OpenRISC_002dSyntax" accesskey="p" rel="prev">OpenRISC-Syntax</a>, Up: <a href="#OpenRISC_002dDependent" accesskey="u" rel="up">OpenRISC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24282. </div>
  24283. <span id="Floating-Point-11"></span><h4 class="subsection">9.34.2 Floating Point</h4>
  24284. <span id="index-floating-point_002c-OPENRISC-_0028IEEE_0029"></span>
  24285. <span id="index-OPENRISC-floating-point-_0028IEEE_0029"></span>
  24286. <p>OpenRISC uses <small>IEEE</small> floating-point numbers.
  24287. </p>
  24288. <hr>
  24289. <span id="OpenRISC_002dDirectives"></span><div class="header">
  24290. <p>
  24291. Next: <a href="#OpenRISC_002dOpcodes" accesskey="n" rel="next">OpenRISC-Opcodes</a>, Previous: <a href="#OpenRISC_002dFloat" accesskey="p" rel="prev">OpenRISC-Float</a>, Up: <a href="#OpenRISC_002dDependent" accesskey="u" rel="up">OpenRISC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24292. </div>
  24293. <span id="OpenRISC-Machine-Directives"></span><h4 class="subsection">9.34.3 OpenRISC Machine Directives</h4>
  24294. <span id="index-OPENRISC-machine-directives"></span>
  24295. <span id="index-machine-directives_002c-OPENRISC"></span>
  24296. <p>The OpenRISC version of <code>as</code> supports the following additional
  24297. machine directives:
  24298. </p>
  24299. <dl compact="compact">
  24300. <dd><span id="index-align-directive_002c-OpenRISC"></span>
  24301. </dd>
  24302. <dt><code>.align</code></dt>
  24303. <dd><p>This must be followed by the desired alignment in bytes.
  24304. </p>
  24305. <span id="index-word-directive_002c-OpenRISC"></span>
  24306. </dd>
  24307. <dt><code>.word</code></dt>
  24308. <dd><p>On the OpenRISC, the <code>.word</code> directive produces a 32 bit value.
  24309. </p>
  24310. <span id="index-nodelay-directive_002c-OpenRISC"></span>
  24311. </dd>
  24312. <dt><code>.nodelay</code></dt>
  24313. <dd><p>On the OpenRISC, the <code>.nodelay</code> directive sets a flag in elf binaries
  24314. indicating that the binary is generated catering for no delay slots.
  24315. </p>
  24316. <span id="index-proc-directive_002c-OpenRISC"></span>
  24317. </dd>
  24318. <dt><code>.proc</code></dt>
  24319. <dd><p>This directive is ignored. Any text following it on the same
  24320. line is also ignored.
  24321. </p>
  24322. <span id="index-endproc-directive_002c-OpenRISC"></span>
  24323. </dd>
  24324. <dt><code>.endproc</code></dt>
  24325. <dd><p>This directive is ignored. Any text following it on the same
  24326. line is also ignored.
  24327. </p></dd>
  24328. </dl>
  24329. <hr>
  24330. <span id="OpenRISC_002dOpcodes"></span><div class="header">
  24331. <p>
  24332. Previous: <a href="#OpenRISC_002dDirectives" accesskey="p" rel="prev">OpenRISC-Directives</a>, Up: <a href="#OpenRISC_002dDependent" accesskey="u" rel="up">OpenRISC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24333. </div>
  24334. <span id="Opcodes-15"></span><h4 class="subsection">9.34.4 Opcodes</h4>
  24335. <span id="index-OpenRISC-opcode-summary"></span>
  24336. <span id="index-opcode-summary_002c-OpenRISC"></span>
  24337. <span id="index-mnemonics_002c-OpenRISC"></span>
  24338. <span id="index-instruction-summary_002c-LM32-1"></span>
  24339. <p>For detailed information on the OpenRISC machine instruction set, see
  24340. <a href="http://www.openrisc.io/architecture/">http://www.openrisc.io/architecture/</a>.
  24341. </p>
  24342. <p><code>as</code> implements all the standard OpenRISC opcodes.
  24343. </p>
  24344. <hr>
  24345. <span id="PDP_002d11_002dDependent"></span><div class="header">
  24346. <p>
  24347. Next: <a href="#PJ_002dDependent" accesskey="n" rel="next">PJ-Dependent</a>, Previous: <a href="#OpenRISC_002dDependent" accesskey="p" rel="prev">OpenRISC-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24348. </div>
  24349. <span id="PDP_002d11-Dependent-Features"></span><h3 class="section">9.35 PDP-11 Dependent Features</h3>
  24350. <span id="index-PDP_002d11-support"></span>
  24351. <table class="menu" border="0" cellspacing="0">
  24352. <tr><td align="left" valign="top">&bull; <a href="#PDP_002d11_002dOptions" accesskey="1">PDP-11-Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  24353. </td></tr>
  24354. <tr><td align="left" valign="top">&bull; <a href="#PDP_002d11_002dPseudos" accesskey="2">PDP-11-Pseudos</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Directives
  24355. </td></tr>
  24356. <tr><td align="left" valign="top">&bull; <a href="#PDP_002d11_002dSyntax" accesskey="3">PDP-11-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">DEC Syntax versus BSD Syntax
  24357. </td></tr>
  24358. <tr><td align="left" valign="top">&bull; <a href="#PDP_002d11_002dMnemonics" accesskey="4">PDP-11-Mnemonics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Instruction Naming
  24359. </td></tr>
  24360. <tr><td align="left" valign="top">&bull; <a href="#PDP_002d11_002dSynthetic" accesskey="5">PDP-11-Synthetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Synthetic Instructions
  24361. </td></tr>
  24362. </table>
  24363. <hr>
  24364. <span id="PDP_002d11_002dOptions"></span><div class="header">
  24365. <p>
  24366. Next: <a href="#PDP_002d11_002dPseudos" accesskey="n" rel="next">PDP-11-Pseudos</a>, Up: <a href="#PDP_002d11_002dDependent" accesskey="u" rel="up">PDP-11-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24367. </div>
  24368. <span id="Options-18"></span><h4 class="subsection">9.35.1 Options</h4>
  24369. <span id="index-options-for-PDP_002d11"></span>
  24370. <p>The PDP-11 version of <code>as</code> has a rich set of machine
  24371. dependent options.
  24372. </p>
  24373. <span id="Code-Generation-Options"></span><h4 class="subsubsection">9.35.1.1 Code Generation Options</h4>
  24374. <dl compact="compact">
  24375. <dd><span id="index-_002dmpic"></span>
  24376. <span id="index-_002dmno_002dpic"></span>
  24377. </dd>
  24378. <dt><code>-mpic | -mno-pic</code></dt>
  24379. <dd><p>Generate position-independent (or position-dependent) code.
  24380. </p>
  24381. <p>The default is to generate position-independent code.
  24382. </p></dd>
  24383. </dl>
  24384. <span id="Instruction-Set-Extension-Options"></span><h4 class="subsubsection">9.35.1.2 Instruction Set Extension Options</h4>
  24385. <p>These options enables or disables the use of extensions over the base
  24386. line instruction set as introduced by the first PDP-11 CPU: the KA11.
  24387. Most options come in two variants: a <code>-m</code><var>extension</var> that
  24388. enables <var>extension</var>, and a <code>-mno-</code><var>extension</var> that disables
  24389. <var>extension</var>.
  24390. </p>
  24391. <p>The default is to enable all extensions.
  24392. </p>
  24393. <dl compact="compact">
  24394. <dd><span id="index-_002dmall"></span>
  24395. <span id="index-_002dmall_002dextensions"></span>
  24396. </dd>
  24397. <dt><code>-mall | -mall-extensions</code></dt>
  24398. <dd><p>Enable all instruction set extensions.
  24399. </p>
  24400. <span id="index-_002dmno_002dextensions"></span>
  24401. </dd>
  24402. <dt><code>-mno-extensions</code></dt>
  24403. <dd><p>Disable all instruction set extensions.
  24404. </p>
  24405. <span id="index-_002dmcis"></span>
  24406. <span id="index-_002dmno_002dcis"></span>
  24407. </dd>
  24408. <dt><code>-mcis | -mno-cis</code></dt>
  24409. <dd><p>Enable (or disable) the use of the commercial instruction set, which
  24410. consists of these instructions: <code>ADDNI</code>, <code>ADDN</code>, <code>ADDPI</code>,
  24411. <code>ADDP</code>, <code>ASHNI</code>, <code>ASHN</code>, <code>ASHPI</code>, <code>ASHP</code>,
  24412. <code>CMPCI</code>, <code>CMPC</code>, <code>CMPNI</code>, <code>CMPN</code>, <code>CMPPI</code>,
  24413. <code>CMPP</code>, <code>CVTLNI</code>, <code>CVTLN</code>, <code>CVTLPI</code>, <code>CVTLP</code>,
  24414. <code>CVTNLI</code>, <code>CVTNL</code>, <code>CVTNPI</code>, <code>CVTNP</code>, <code>CVTPLI</code>,
  24415. <code>CVTPL</code>, <code>CVTPNI</code>, <code>CVTPN</code>, <code>DIVPI</code>, <code>DIVP</code>,
  24416. <code>L2DR</code>, <code>L3DR</code>, <code>LOCCI</code>, <code>LOCC</code>, <code>MATCI</code>,
  24417. <code>MATC</code>, <code>MOVCI</code>, <code>MOVC</code>, <code>MOVRCI</code>, <code>MOVRC</code>,
  24418. <code>MOVTCI</code>, <code>MOVTC</code>, <code>MULPI</code>, <code>MULP</code>, <code>SCANCI</code>,
  24419. <code>SCANC</code>, <code>SKPCI</code>, <code>SKPC</code>, <code>SPANCI</code>, <code>SPANC</code>,
  24420. <code>SUBNI</code>, <code>SUBN</code>, <code>SUBPI</code>, and <code>SUBP</code>.
  24421. </p>
  24422. <span id="index-_002dmcsm"></span>
  24423. <span id="index-_002dmno_002dcsm"></span>
  24424. </dd>
  24425. <dt><code>-mcsm | -mno-csm</code></dt>
  24426. <dd><p>Enable (or disable) the use of the <code>CSM</code> instruction.
  24427. </p>
  24428. <span id="index-_002dmeis"></span>
  24429. <span id="index-_002dmno_002deis"></span>
  24430. </dd>
  24431. <dt><code>-meis | -mno-eis</code></dt>
  24432. <dd><p>Enable (or disable) the use of the extended instruction set, which
  24433. consists of these instructions: <code>ASHC</code>, <code>ASH</code>, <code>DIV</code>,
  24434. <code>MARK</code>, <code>MUL</code>, <code>RTT</code>, <code>SOB</code> <code>SXT</code>, and
  24435. <code>XOR</code>.
  24436. </p>
  24437. <span id="index-_002dmfis"></span>
  24438. <span id="index-_002dmno_002dfis"></span>
  24439. <span id="index-_002dmkev11"></span>
  24440. <span id="index-_002dmkev11-1"></span>
  24441. <span id="index-_002dmno_002dkev11"></span>
  24442. </dd>
  24443. <dt><code>-mfis | -mkev11</code></dt>
  24444. <dt><code>-mno-fis | -mno-kev11</code></dt>
  24445. <dd><p>Enable (or disable) the use of the KEV11 floating-point instructions:
  24446. <code>FADD</code>, <code>FDIV</code>, <code>FMUL</code>, and <code>FSUB</code>.
  24447. </p>
  24448. <span id="index-_002dmfpp"></span>
  24449. <span id="index-_002dmno_002dfpp"></span>
  24450. <span id="index-_002dmfpu"></span>
  24451. <span id="index-_002dmno_002dfpu"></span>
  24452. <span id="index-_002dmfp_002d11"></span>
  24453. <span id="index-_002dmno_002dfp_002d11"></span>
  24454. </dd>
  24455. <dt><code>-mfpp | -mfpu | -mfp-11</code></dt>
  24456. <dt><code>-mno-fpp | -mno-fpu | -mno-fp-11</code></dt>
  24457. <dd><p>Enable (or disable) the use of FP-11 floating-point instructions:
  24458. <code>ABSF</code>, <code>ADDF</code>, <code>CFCC</code>, <code>CLRF</code>, <code>CMPF</code>,
  24459. <code>DIVF</code>, <code>LDCFF</code>, <code>LDCIF</code>, <code>LDEXP</code>, <code>LDF</code>,
  24460. <code>LDFPS</code>, <code>MODF</code>, <code>MULF</code>, <code>NEGF</code>, <code>SETD</code>,
  24461. <code>SETF</code>, <code>SETI</code>, <code>SETL</code>, <code>STCFF</code>, <code>STCFI</code>,
  24462. <code>STEXP</code>, <code>STF</code>, <code>STFPS</code>, <code>STST</code>, <code>SUBF</code>, and
  24463. <code>TSTF</code>.
  24464. </p>
  24465. <span id="index-_002dmlimited_002deis"></span>
  24466. <span id="index-_002dmno_002dlimited_002deis"></span>
  24467. </dd>
  24468. <dt><code>-mlimited-eis | -mno-limited-eis</code></dt>
  24469. <dd><p>Enable (or disable) the use of the limited extended instruction set:
  24470. <code>MARK</code>, <code>RTT</code>, <code>SOB</code>, <code>SXT</code>, and <code>XOR</code>.
  24471. </p>
  24472. <p>The -mno-limited-eis options also implies -mno-eis.
  24473. </p>
  24474. <span id="index-_002dmmfpt"></span>
  24475. <span id="index-_002dmno_002dmfpt"></span>
  24476. </dd>
  24477. <dt><code>-mmfpt | -mno-mfpt</code></dt>
  24478. <dd><p>Enable (or disable) the use of the <code>MFPT</code> instruction.
  24479. </p>
  24480. <span id="index-_002dmmutiproc"></span>
  24481. <span id="index-_002dmno_002dmutiproc"></span>
  24482. </dd>
  24483. <dt><code>-mmultiproc | -mno-multiproc</code></dt>
  24484. <dd><p>Enable (or disable) the use of multiprocessor instructions: <code>TSTSET</code> and
  24485. <code>WRTLCK</code>.
  24486. </p>
  24487. <span id="index-_002dmmxps"></span>
  24488. <span id="index-_002dmno_002dmxps"></span>
  24489. </dd>
  24490. <dt><code>-mmxps | -mno-mxps</code></dt>
  24491. <dd><p>Enable (or disable) the use of the <code>MFPS</code> and <code>MTPS</code> instructions.
  24492. </p>
  24493. <span id="index-_002dmspl"></span>
  24494. <span id="index-_002dmno_002dspl"></span>
  24495. </dd>
  24496. <dt><code>-mspl | -mno-spl</code></dt>
  24497. <dd><p>Enable (or disable) the use of the <code>SPL</code> instruction.
  24498. </p>
  24499. <span id="index-_002dmmicrocode"></span>
  24500. <span id="index-_002dmno_002dmicrocode"></span>
  24501. <p>Enable (or disable) the use of the microcode instructions: <code>LDUB</code>,
  24502. <code>MED</code>, and <code>XFC</code>.
  24503. </p></dd>
  24504. </dl>
  24505. <span id="CPU-Model-Options"></span><h4 class="subsubsection">9.35.1.3 CPU Model Options</h4>
  24506. <p>These options enable the instruction set extensions supported by a
  24507. particular CPU, and disables all other extensions.
  24508. </p>
  24509. <dl compact="compact">
  24510. <dd><span id="index-_002dmka11"></span>
  24511. </dd>
  24512. <dt><code>-mka11</code></dt>
  24513. <dd><p>KA11 CPU. Base line instruction set only.
  24514. </p>
  24515. <span id="index-_002dmkb11"></span>
  24516. </dd>
  24517. <dt><code>-mkb11</code></dt>
  24518. <dd><p>KB11 CPU. Enable extended instruction set and <code>SPL</code>.
  24519. </p>
  24520. <span id="index-_002dmkd11a"></span>
  24521. </dd>
  24522. <dt><code>-mkd11a</code></dt>
  24523. <dd><p>KD11-A CPU. Enable limited extended instruction set.
  24524. </p>
  24525. <span id="index-_002dmkd11b"></span>
  24526. </dd>
  24527. <dt><code>-mkd11b</code></dt>
  24528. <dd><p>KD11-B CPU. Base line instruction set only.
  24529. </p>
  24530. <span id="index-_002dmkd11d"></span>
  24531. </dd>
  24532. <dt><code>-mkd11d</code></dt>
  24533. <dd><p>KD11-D CPU. Base line instruction set only.
  24534. </p>
  24535. <span id="index-_002dmkd11e"></span>
  24536. </dd>
  24537. <dt><code>-mkd11e</code></dt>
  24538. <dd><p>KD11-E CPU. Enable extended instruction set, <code>MFPS</code>, and <code>MTPS</code>.
  24539. </p>
  24540. <span id="index-_002dmkd11f"></span>
  24541. <span id="index-_002dmkd11h"></span>
  24542. <span id="index-_002dmkd11q"></span>
  24543. </dd>
  24544. <dt><code>-mkd11f | -mkd11h | -mkd11q</code></dt>
  24545. <dd><p>KD11-F, KD11-H, or KD11-Q CPU. Enable limited extended instruction set,
  24546. <code>MFPS</code>, and <code>MTPS</code>.
  24547. </p>
  24548. <span id="index-_002dmkd11k"></span>
  24549. </dd>
  24550. <dt><code>-mkd11k</code></dt>
  24551. <dd><p>KD11-K CPU. Enable extended instruction set, <code>LDUB</code>, <code>MED</code>,
  24552. <code>MFPS</code>, <code>MFPT</code>, <code>MTPS</code>, and <code>XFC</code>.
  24553. </p>
  24554. <span id="index-_002dmkd11z"></span>
  24555. </dd>
  24556. <dt><code>-mkd11z</code></dt>
  24557. <dd><p>KD11-Z CPU. Enable extended instruction set, <code>CSM</code>, <code>MFPS</code>,
  24558. <code>MFPT</code>, <code>MTPS</code>, and <code>SPL</code>.
  24559. </p>
  24560. <span id="index-_002dmf11"></span>
  24561. </dd>
  24562. <dt><code>-mf11</code></dt>
  24563. <dd><p>F11 CPU. Enable extended instruction set, <code>MFPS</code>, <code>MFPT</code>, and
  24564. <code>MTPS</code>.
  24565. </p>
  24566. <span id="index-_002dmj11"></span>
  24567. </dd>
  24568. <dt><code>-mj11</code></dt>
  24569. <dd><p>J11 CPU. Enable extended instruction set, <code>CSM</code>, <code>MFPS</code>,
  24570. <code>MFPT</code>, <code>MTPS</code>, <code>SPL</code>, <code>TSTSET</code>, and <code>WRTLCK</code>.
  24571. </p>
  24572. <span id="index-_002dmt11"></span>
  24573. </dd>
  24574. <dt><code>-mt11</code></dt>
  24575. <dd><p>T11 CPU. Enable limited extended instruction set, <code>MFPS</code>, and
  24576. <code>MTPS</code>.
  24577. </p></dd>
  24578. </dl>
  24579. <span id="Machine-Model-Options"></span><h4 class="subsubsection">9.35.1.4 Machine Model Options</h4>
  24580. <p>These options enable the instruction set extensions supported by a
  24581. particular machine model, and disables all other extensions.
  24582. </p>
  24583. <dl compact="compact">
  24584. <dd><span id="index-_002dm11_002f03"></span>
  24585. </dd>
  24586. <dt><code>-m11/03</code></dt>
  24587. <dd><p>Same as <code>-mkd11f</code>.
  24588. </p>
  24589. <span id="index-_002dm11_002f04"></span>
  24590. </dd>
  24591. <dt><code>-m11/04</code></dt>
  24592. <dd><p>Same as <code>-mkd11d</code>.
  24593. </p>
  24594. <span id="index-_002dm11_002f05"></span>
  24595. <span id="index-_002dm11_002f10"></span>
  24596. </dd>
  24597. <dt><code>-m11/05 | -m11/10</code></dt>
  24598. <dd><p>Same as <code>-mkd11b</code>.
  24599. </p>
  24600. <span id="index-_002dm11_002f15"></span>
  24601. <span id="index-_002dm11_002f20"></span>
  24602. </dd>
  24603. <dt><code>-m11/15 | -m11/20</code></dt>
  24604. <dd><p>Same as <code>-mka11</code>.
  24605. </p>
  24606. <span id="index-_002dm11_002f21"></span>
  24607. </dd>
  24608. <dt><code>-m11/21</code></dt>
  24609. <dd><p>Same as <code>-mt11</code>.
  24610. </p>
  24611. <span id="index-_002dm11_002f23"></span>
  24612. <span id="index-_002dm11_002f24"></span>
  24613. </dd>
  24614. <dt><code>-m11/23 | -m11/24</code></dt>
  24615. <dd><p>Same as <code>-mf11</code>.
  24616. </p>
  24617. <span id="index-_002dm11_002f34"></span>
  24618. </dd>
  24619. <dt><code>-m11/34</code></dt>
  24620. <dd><p>Same as <code>-mkd11e</code>.
  24621. </p>
  24622. <span id="index-_002dm11_002f34a"></span>
  24623. </dd>
  24624. <dt><code>-m11/34a</code></dt>
  24625. <dd><p>Ame as <code>-mkd11e</code> <code>-mfpp</code>.
  24626. </p>
  24627. <span id="index-_002dm11_002f35"></span>
  24628. <span id="index-_002dm11_002f40"></span>
  24629. </dd>
  24630. <dt><code>-m11/35 | -m11/40</code></dt>
  24631. <dd><p>Same as <code>-mkd11a</code>.
  24632. </p>
  24633. <span id="index-_002dm11_002f44"></span>
  24634. </dd>
  24635. <dt><code>-m11/44</code></dt>
  24636. <dd><p>Same as <code>-mkd11z</code>.
  24637. </p>
  24638. <span id="index-_002dm11_002f45"></span>
  24639. <span id="index-_002dm11_002f50"></span>
  24640. <span id="index-_002dm11_002f55"></span>
  24641. <span id="index-_002dm11_002f70"></span>
  24642. </dd>
  24643. <dt><code>-m11/45 | -m11/50 | -m11/55 | -m11/70</code></dt>
  24644. <dd><p>Same as <code>-mkb11</code>.
  24645. </p>
  24646. <span id="index-_002dm11_002f53"></span>
  24647. <span id="index-_002dm11_002f73"></span>
  24648. <span id="index-_002dm11_002f83"></span>
  24649. <span id="index-_002dm11_002f84"></span>
  24650. <span id="index-_002dm11_002f93"></span>
  24651. <span id="index-_002dm11_002f94"></span>
  24652. </dd>
  24653. <dt><code>-m11/53 | -m11/73 | -m11/83 | -m11/84 | -m11/93 | -m11/94</code></dt>
  24654. <dd><p>Same as <code>-mj11</code>.
  24655. </p>
  24656. <span id="index-_002dm11_002f60"></span>
  24657. </dd>
  24658. <dt><code>-m11/60</code></dt>
  24659. <dd><p>Same as <code>-mkd11k</code>.
  24660. </p></dd>
  24661. </dl>
  24662. <hr>
  24663. <span id="PDP_002d11_002dPseudos"></span><div class="header">
  24664. <p>
  24665. Next: <a href="#PDP_002d11_002dSyntax" accesskey="n" rel="next">PDP-11-Syntax</a>, Previous: <a href="#PDP_002d11_002dOptions" accesskey="p" rel="prev">PDP-11-Options</a>, Up: <a href="#PDP_002d11_002dDependent" accesskey="u" rel="up">PDP-11-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24666. </div>
  24667. <span id="Assembler-Directives-4"></span><h4 class="subsection">9.35.2 Assembler Directives</h4>
  24668. <p>The PDP-11 version of <code>as</code> has a few machine
  24669. dependent assembler directives.
  24670. </p>
  24671. <dl compact="compact">
  24672. <dt><code>.bss</code></dt>
  24673. <dd><p>Switch to the <code>bss</code> section.
  24674. </p>
  24675. </dd>
  24676. <dt><code>.even</code></dt>
  24677. <dd><p>Align the location counter to an even number.
  24678. </p></dd>
  24679. </dl>
  24680. <hr>
  24681. <span id="PDP_002d11_002dSyntax"></span><div class="header">
  24682. <p>
  24683. Next: <a href="#PDP_002d11_002dMnemonics" accesskey="n" rel="next">PDP-11-Mnemonics</a>, Previous: <a href="#PDP_002d11_002dPseudos" accesskey="p" rel="prev">PDP-11-Pseudos</a>, Up: <a href="#PDP_002d11_002dDependent" accesskey="u" rel="up">PDP-11-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24684. </div>
  24685. <span id="PDP_002d11-Assembly-Language-Syntax"></span><h4 class="subsection">9.35.3 PDP-11 Assembly Language Syntax</h4>
  24686. <span id="index-PDP_002d11-syntax"></span>
  24687. <span id="index-DEC-syntax"></span>
  24688. <span id="index-BSD-syntax"></span>
  24689. <p><code>as</code> supports both DEC syntax and BSD syntax. The only
  24690. difference is that in DEC syntax, a <code>#</code> character is used to denote
  24691. an immediate constants, while in BSD syntax the character for this
  24692. purpose is <code>$</code>.
  24693. </p>
  24694. <span id="index-PDP_002d11-general_002dpurpose-register-syntax"></span>
  24695. <p>general-purpose registers are named <code>r0</code> through <code>r7</code>.
  24696. Mnemonic alternatives for <code>r6</code> and <code>r7</code> are <code>sp</code> and
  24697. <code>pc</code>, respectively.
  24698. </p>
  24699. <span id="index-PDP_002d11-floating_002dpoint-register-syntax"></span>
  24700. <p>Floating-point registers are named <code>ac0</code> through <code>ac3</code>, or
  24701. alternatively <code>fr0</code> through <code>fr3</code>.
  24702. </p>
  24703. <span id="index-PDP_002d11-comments"></span>
  24704. <p>Comments are started with a <code>#</code> or a <code>/</code> character, and extend
  24705. to the end of the line. (FIXME: clash with immediates?)
  24706. </p>
  24707. <span id="index-PDP_002d11-line-separator"></span>
  24708. <p>Multiple statements on the same line can be separated by the &lsquo;<samp>;</samp>&rsquo; character.
  24709. </p>
  24710. <hr>
  24711. <span id="PDP_002d11_002dMnemonics"></span><div class="header">
  24712. <p>
  24713. Next: <a href="#PDP_002d11_002dSynthetic" accesskey="n" rel="next">PDP-11-Synthetic</a>, Previous: <a href="#PDP_002d11_002dSyntax" accesskey="p" rel="prev">PDP-11-Syntax</a>, Up: <a href="#PDP_002d11_002dDependent" accesskey="u" rel="up">PDP-11-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24714. </div>
  24715. <span id="Instruction-Naming-1"></span><h4 class="subsection">9.35.4 Instruction Naming</h4>
  24716. <span id="index-PDP_002d11-instruction-naming"></span>
  24717. <p>Some instructions have alternative names.
  24718. </p>
  24719. <dl compact="compact">
  24720. <dt><code>BCC</code></dt>
  24721. <dd><p><code>BHIS</code>
  24722. </p>
  24723. </dd>
  24724. <dt><code>BCS</code></dt>
  24725. <dd><p><code>BLO</code>
  24726. </p>
  24727. </dd>
  24728. <dt><code>L2DR</code></dt>
  24729. <dd><p><code>L2D</code>
  24730. </p>
  24731. </dd>
  24732. <dt><code>L3DR</code></dt>
  24733. <dd><p><code>L3D</code>
  24734. </p>
  24735. </dd>
  24736. <dt><code>SYS</code></dt>
  24737. <dd><p><code>TRAP</code>
  24738. </p></dd>
  24739. </dl>
  24740. <hr>
  24741. <span id="PDP_002d11_002dSynthetic"></span><div class="header">
  24742. <p>
  24743. Previous: <a href="#PDP_002d11_002dMnemonics" accesskey="p" rel="prev">PDP-11-Mnemonics</a>, Up: <a href="#PDP_002d11_002dDependent" accesskey="u" rel="up">PDP-11-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24744. </div>
  24745. <span id="Synthetic-Instructions"></span><h4 class="subsection">9.35.5 Synthetic Instructions</h4>
  24746. <p>The <code>JBR</code> and <code>J</code><var>CC</var> synthetic instructions are not
  24747. supported yet.
  24748. </p>
  24749. <hr>
  24750. <span id="PJ_002dDependent"></span><div class="header">
  24751. <p>
  24752. Next: <a href="#PPC_002dDependent" accesskey="n" rel="next">PPC-Dependent</a>, Previous: <a href="#PDP_002d11_002dDependent" accesskey="p" rel="prev">PDP-11-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24753. </div>
  24754. <span id="picoJava-Dependent-Features"></span><h3 class="section">9.36 picoJava Dependent Features</h3>
  24755. <span id="index-PJ-support"></span>
  24756. <table class="menu" border="0" cellspacing="0">
  24757. <tr><td align="left" valign="top">&bull; <a href="#PJ-Options" accesskey="1">PJ Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  24758. </td></tr>
  24759. <tr><td align="left" valign="top">&bull; <a href="#PJ-Syntax" accesskey="2">PJ Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">PJ Syntax
  24760. </td></tr>
  24761. </table>
  24762. <hr>
  24763. <span id="PJ-Options"></span><div class="header">
  24764. <p>
  24765. Next: <a href="#PJ-Syntax" accesskey="n" rel="next">PJ Syntax</a>, Up: <a href="#PJ_002dDependent" accesskey="u" rel="up">PJ-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24766. </div>
  24767. <span id="Options-19"></span><h4 class="subsection">9.36.1 Options</h4>
  24768. <span id="index-PJ-options"></span>
  24769. <span id="index-options_002c-PJ"></span>
  24770. <p><code>as</code> has two additional command-line options for the picoJava
  24771. architecture.
  24772. </p><dl compact="compact">
  24773. <dt><code>-ml</code></dt>
  24774. <dd><p>This option selects little endian data output.
  24775. </p>
  24776. </dd>
  24777. <dt><code>-mb</code></dt>
  24778. <dd><p>This option selects big endian data output.
  24779. </p></dd>
  24780. </dl>
  24781. <hr>
  24782. <span id="PJ-Syntax"></span><div class="header">
  24783. <p>
  24784. Previous: <a href="#PJ-Options" accesskey="p" rel="prev">PJ Options</a>, Up: <a href="#PJ_002dDependent" accesskey="u" rel="up">PJ-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24785. </div>
  24786. <span id="PJ-Syntax-1"></span><h4 class="subsection">9.36.2 PJ Syntax</h4>
  24787. <table class="menu" border="0" cellspacing="0">
  24788. <tr><td align="left" valign="top">&bull; <a href="#PJ_002dChars" accesskey="1">PJ-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  24789. </td></tr>
  24790. </table>
  24791. <hr>
  24792. <span id="PJ_002dChars"></span><div class="header">
  24793. <p>
  24794. Up: <a href="#PJ-Syntax" accesskey="u" rel="up">PJ Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24795. </div>
  24796. <span id="Special-Characters-26"></span><h4 class="subsubsection">9.36.2.1 Special Characters</h4>
  24797. <span id="index-line-comment-character_002c-PJ"></span>
  24798. <span id="index-PJ-line-comment-character"></span>
  24799. <p>The presence of a &lsquo;<samp>!</samp>&rsquo; or &lsquo;<samp>/</samp>&rsquo; on a line indicates the start
  24800. of a comment that extends to the end of the current line.
  24801. </p>
  24802. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  24803. line is treated as a comment, but in this case the line could also be
  24804. a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  24805. control command (see <a href="#Preprocessing">Preprocessing</a>).
  24806. </p>
  24807. <span id="index-line-separator_002c-PJ"></span>
  24808. <span id="index-statement-separator_002c-PJ"></span>
  24809. <span id="index-PJ-line-separator"></span>
  24810. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used to separate statements on the same
  24811. line.
  24812. </p>
  24813. <hr>
  24814. <span id="PPC_002dDependent"></span><div class="header">
  24815. <p>
  24816. Next: <a href="#PRU_002dDependent" accesskey="n" rel="next">PRU-Dependent</a>, Previous: <a href="#PJ_002dDependent" accesskey="p" rel="prev">PJ-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24817. </div>
  24818. <span id="PowerPC-Dependent-Features"></span><h3 class="section">9.37 PowerPC Dependent Features</h3>
  24819. <span id="index-PowerPC-support"></span>
  24820. <table class="menu" border="0" cellspacing="0">
  24821. <tr><td align="left" valign="top">&bull; <a href="#PowerPC_002dOpts" accesskey="1">PowerPC-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  24822. </td></tr>
  24823. <tr><td align="left" valign="top">&bull; <a href="#PowerPC_002dPseudo" accesskey="2">PowerPC-Pseudo</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">PowerPC Assembler Directives
  24824. </td></tr>
  24825. <tr><td align="left" valign="top">&bull; <a href="#PowerPC_002dSyntax" accesskey="3">PowerPC-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">PowerPC Syntax
  24826. </td></tr>
  24827. </table>
  24828. <hr>
  24829. <span id="PowerPC_002dOpts"></span><div class="header">
  24830. <p>
  24831. Next: <a href="#PowerPC_002dPseudo" accesskey="n" rel="next">PowerPC-Pseudo</a>, Up: <a href="#PPC_002dDependent" accesskey="u" rel="up">PPC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  24832. </div>
  24833. <span id="Options-20"></span><h4 class="subsection">9.37.1 Options</h4>
  24834. <span id="index-options-for-PowerPC"></span>
  24835. <span id="index-PowerPC-options"></span>
  24836. <span id="index-architectures_002c-PowerPC"></span>
  24837. <span id="index-PowerPC-architectures"></span>
  24838. <p>The PowerPC chip family includes several successive levels, using the same
  24839. core instruction set, but including a few additional instructions at
  24840. each level. There are exceptions to this however. For details on what
  24841. instructions each variant supports, please see the chip&rsquo;s architecture
  24842. reference manual.
  24843. </p>
  24844. <p>The following table lists all available PowerPC options.
  24845. </p>
  24846. <dl compact="compact">
  24847. <dt><code>-a32</code></dt>
  24848. <dd><p>Generate ELF32 or XCOFF32.
  24849. </p>
  24850. </dd>
  24851. <dt><code>-a64</code></dt>
  24852. <dd><p>Generate ELF64 or XCOFF64.
  24853. </p>
  24854. </dd>
  24855. <dt><code>-K PIC</code></dt>
  24856. <dd><p>Set EF_PPC_RELOCATABLE_LIB in ELF flags.
  24857. </p>
  24858. </dd>
  24859. <dt><code>-mpwrx | -mpwr2</code></dt>
  24860. <dd><p>Generate code for POWER/2 (RIOS2).
  24861. </p>
  24862. </dd>
  24863. <dt><code>-mpwr</code></dt>
  24864. <dd><p>Generate code for POWER (RIOS1)
  24865. </p>
  24866. </dd>
  24867. <dt><code>-m601</code></dt>
  24868. <dd><p>Generate code for PowerPC 601.
  24869. </p>
  24870. </dd>
  24871. <dt><code>-mppc, -mppc32, -m603, -m604</code></dt>
  24872. <dd><p>Generate code for PowerPC 603/604.
  24873. </p>
  24874. </dd>
  24875. <dt><code>-m403, -m405</code></dt>
  24876. <dd><p>Generate code for PowerPC 403/405.
  24877. </p>
  24878. </dd>
  24879. <dt><code>-m440</code></dt>
  24880. <dd><p>Generate code for PowerPC 440. BookE and some 405 instructions.
  24881. </p>
  24882. </dd>
  24883. <dt><code>-m464</code></dt>
  24884. <dd><p>Generate code for PowerPC 464.
  24885. </p>
  24886. </dd>
  24887. <dt><code>-m476</code></dt>
  24888. <dd><p>Generate code for PowerPC 476.
  24889. </p>
  24890. </dd>
  24891. <dt><code>-m7400, -m7410, -m7450, -m7455</code></dt>
  24892. <dd><p>Generate code for PowerPC 7400/7410/7450/7455.
  24893. </p>
  24894. </dd>
  24895. <dt><code>-m750cl, -mgekko, -mbroadway</code></dt>
  24896. <dd><p>Generate code for PowerPC 750CL/Gekko/Broadway.
  24897. </p>
  24898. </dd>
  24899. <dt><code>-m821, -m850, -m860</code></dt>
  24900. <dd><p>Generate code for PowerPC 821/850/860.
  24901. </p>
  24902. </dd>
  24903. <dt><code>-mppc64, -m620</code></dt>
  24904. <dd><p>Generate code for PowerPC 620/625/630.
  24905. </p>
  24906. </dd>
  24907. <dt><code>-me200z2, -me200z4</code></dt>
  24908. <dd><p>Generate code for e200 variants, e200z2 with LSP, e200z4 with SPE.
  24909. </p>
  24910. </dd>
  24911. <dt><code>-me300</code></dt>
  24912. <dd><p>Generate code for PowerPC e300 family.
  24913. </p>
  24914. </dd>
  24915. <dt><code>-me500, -me500x2</code></dt>
  24916. <dd><p>Generate code for Motorola e500 core complex.
  24917. </p>
  24918. </dd>
  24919. <dt><code>-me500mc</code></dt>
  24920. <dd><p>Generate code for Freescale e500mc core complex.
  24921. </p>
  24922. </dd>
  24923. <dt><code>-me500mc64</code></dt>
  24924. <dd><p>Generate code for Freescale e500mc64 core complex.
  24925. </p>
  24926. </dd>
  24927. <dt><code>-me5500</code></dt>
  24928. <dd><p>Generate code for Freescale e5500 core complex.
  24929. </p>
  24930. </dd>
  24931. <dt><code>-me6500</code></dt>
  24932. <dd><p>Generate code for Freescale e6500 core complex.
  24933. </p>
  24934. </dd>
  24935. <dt><code>-mlsp</code></dt>
  24936. <dd><p>Enable LSP instructions. (Disables SPE and SPE2.)
  24937. </p>
  24938. </dd>
  24939. <dt><code>-mspe</code></dt>
  24940. <dd><p>Generate code for Motorola SPE instructions. (Disables LSP.)
  24941. </p>
  24942. </dd>
  24943. <dt><code>-mspe2</code></dt>
  24944. <dd><p>Generate code for Freescale SPE2 instructions. (Disables LSP.)
  24945. </p>
  24946. </dd>
  24947. <dt><code>-mtitan</code></dt>
  24948. <dd><p>Generate code for AppliedMicro Titan core complex.
  24949. </p>
  24950. </dd>
  24951. <dt><code>-mppc64bridge</code></dt>
  24952. <dd><p>Generate code for PowerPC 64, including bridge insns.
  24953. </p>
  24954. </dd>
  24955. <dt><code>-mbooke</code></dt>
  24956. <dd><p>Generate code for 32-bit BookE.
  24957. </p>
  24958. </dd>
  24959. <dt><code>-ma2</code></dt>
  24960. <dd><p>Generate code for A2 architecture.
  24961. </p>
  24962. </dd>
  24963. <dt><code>-maltivec</code></dt>
  24964. <dd><p>Generate code for processors with AltiVec instructions.
  24965. </p>
  24966. </dd>
  24967. <dt><code>-mvle</code></dt>
  24968. <dd><p>Generate code for Freescale PowerPC VLE instructions.
  24969. </p>
  24970. </dd>
  24971. <dt><code>-mvsx</code></dt>
  24972. <dd><p>Generate code for processors with Vector-Scalar (VSX) instructions.
  24973. </p>
  24974. </dd>
  24975. <dt><code>-mhtm</code></dt>
  24976. <dd><p>Generate code for processors with Hardware Transactional Memory instructions.
  24977. </p>
  24978. </dd>
  24979. <dt><code>-mpower4, -mpwr4</code></dt>
  24980. <dd><p>Generate code for Power4 architecture.
  24981. </p>
  24982. </dd>
  24983. <dt><code>-mpower5, -mpwr5, -mpwr5x</code></dt>
  24984. <dd><p>Generate code for Power5 architecture.
  24985. </p>
  24986. </dd>
  24987. <dt><code>-mpower6, -mpwr6</code></dt>
  24988. <dd><p>Generate code for Power6 architecture.
  24989. </p>
  24990. </dd>
  24991. <dt><code>-mpower7, -mpwr7</code></dt>
  24992. <dd><p>Generate code for Power7 architecture.
  24993. </p>
  24994. </dd>
  24995. <dt><code>-mpower8, -mpwr8</code></dt>
  24996. <dd><p>Generate code for Power8 architecture.
  24997. </p>
  24998. </dd>
  24999. <dt><code>-mpower9, -mpwr9</code></dt>
  25000. <dd><p>Generate code for Power9 architecture.
  25001. </p>
  25002. </dd>
  25003. <dt><code>-mpower10, -mpwr10</code></dt>
  25004. <dd><p>Generate code for Power10 architecture.
  25005. </p>
  25006. </dd>
  25007. <dt><code>-mpower11, -mpwr11</code></dt>
  25008. <dd><p>Generate code for Power11 architecture.
  25009. </p>
  25010. </dd>
  25011. <dt><code>-mfuture</code></dt>
  25012. <dd><p>Generate code for &rsquo;future&rsquo; architecture.
  25013. </p>
  25014. </dd>
  25015. <dt><code>-mcell</code></dt>
  25016. <dt><code>-mcell</code></dt>
  25017. <dd><p>Generate code for Cell Broadband Engine architecture.
  25018. </p>
  25019. </dd>
  25020. <dt><code>-mcom</code></dt>
  25021. <dd><p>Generate code Power/PowerPC common instructions.
  25022. </p>
  25023. </dd>
  25024. <dt><code>-many</code></dt>
  25025. <dd><p>Generate code for any architecture (PWR/PWRX/PPC).
  25026. </p>
  25027. </dd>
  25028. <dt><code>-mregnames</code></dt>
  25029. <dd><p>Allow symbolic names for registers.
  25030. </p>
  25031. </dd>
  25032. <dt><code>-mno-regnames</code></dt>
  25033. <dd><p>Do not allow symbolic names for registers.
  25034. </p>
  25035. </dd>
  25036. <dt><code>-mrelocatable</code></dt>
  25037. <dd><p>Support for GCC&rsquo;s -mrelocatable option.
  25038. </p>
  25039. </dd>
  25040. <dt><code>-mrelocatable-lib</code></dt>
  25041. <dd><p>Support for GCC&rsquo;s -mrelocatable-lib option.
  25042. </p>
  25043. </dd>
  25044. <dt><code>-memb</code></dt>
  25045. <dd><p>Set PPC_EMB bit in ELF flags.
  25046. </p>
  25047. </dd>
  25048. <dt><code>-mlittle, -mlittle-endian, -le</code></dt>
  25049. <dd><p>Generate code for a little endian machine.
  25050. </p>
  25051. </dd>
  25052. <dt><code>-mbig, -mbig-endian, -be</code></dt>
  25053. <dd><p>Generate code for a big endian machine.
  25054. </p>
  25055. </dd>
  25056. <dt><code>-msolaris</code></dt>
  25057. <dd><p>Generate code for Solaris.
  25058. </p>
  25059. </dd>
  25060. <dt><code>-mno-solaris</code></dt>
  25061. <dd><p>Do not generate code for Solaris.
  25062. </p>
  25063. </dd>
  25064. <dt><code>-nops=<var>count</var></code></dt>
  25065. <dd><p>If an alignment directive inserts more than <var>count</var> nops, put a
  25066. branch at the beginning to skip execution of the nops.
  25067. </p></dd>
  25068. </dl>
  25069. <hr>
  25070. <span id="PowerPC_002dPseudo"></span><div class="header">
  25071. <p>
  25072. Next: <a href="#PowerPC_002dSyntax" accesskey="n" rel="next">PowerPC-Syntax</a>, Previous: <a href="#PowerPC_002dOpts" accesskey="p" rel="prev">PowerPC-Opts</a>, Up: <a href="#PPC_002dDependent" accesskey="u" rel="up">PPC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25073. </div>
  25074. <span id="PowerPC-Assembler-Directives"></span><h4 class="subsection">9.37.2 PowerPC Assembler Directives</h4>
  25075. <span id="index-directives-for-PowerPC"></span>
  25076. <span id="index-PowerPC-directives"></span>
  25077. <p>A number of assembler directives are available for PowerPC. The
  25078. following table is far from complete.
  25079. </p>
  25080. <dl compact="compact">
  25081. <dt><code>.machine &quot;string&quot;</code></dt>
  25082. <dd><p>This directive allows you to change the machine for which code is
  25083. generated. <code>&quot;string&quot;</code> may be any of the -m cpu selection options
  25084. (without the -m) enclosed in double quotes, <code>&quot;push&quot;</code>, or
  25085. <code>&quot;pop&quot;</code>. <code>.machine &quot;push&quot;</code> saves the currently selected
  25086. cpu, which may be restored with <code>.machine &quot;pop&quot;</code>.
  25087. </p></dd>
  25088. </dl>
  25089. <hr>
  25090. <span id="PowerPC_002dSyntax"></span><div class="header">
  25091. <p>
  25092. Previous: <a href="#PowerPC_002dPseudo" accesskey="p" rel="prev">PowerPC-Pseudo</a>, Up: <a href="#PPC_002dDependent" accesskey="u" rel="up">PPC-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25093. </div>
  25094. <span id="PowerPC-Syntax"></span><h4 class="subsection">9.37.3 PowerPC Syntax</h4>
  25095. <table class="menu" border="0" cellspacing="0">
  25096. <tr><td align="left" valign="top">&bull; <a href="#PowerPC_002dChars" accesskey="1">PowerPC-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  25097. </td></tr>
  25098. </table>
  25099. <hr>
  25100. <span id="PowerPC_002dChars"></span><div class="header">
  25101. <p>
  25102. Up: <a href="#PowerPC_002dSyntax" accesskey="u" rel="up">PowerPC-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25103. </div>
  25104. <span id="Special-Characters-27"></span><h4 class="subsubsection">9.37.3.1 Special Characters</h4>
  25105. <span id="index-line-comment-character_002c-PowerPC"></span>
  25106. <span id="index-PowerPC-line-comment-character"></span>
  25107. <p>The presence of a &lsquo;<samp>#</samp>&rsquo; on a line indicates the start of a comment
  25108. that extends to the end of the current line.
  25109. </p>
  25110. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  25111. line is treated as a comment, but in this case the line could also be
  25112. a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  25113. control command (see <a href="#Preprocessing">Preprocessing</a>).
  25114. </p>
  25115. <p>If the assembler has been configured for the ppc-*-solaris* target
  25116. then the &lsquo;<samp>!</samp>&rsquo; character also acts as a line comment character.
  25117. This can be disabled via the <samp>-mno-solaris</samp> command-line
  25118. option.
  25119. </p>
  25120. <span id="index-line-separator_002c-PowerPC"></span>
  25121. <span id="index-statement-separator_002c-PowerPC"></span>
  25122. <span id="index-PowerPC-line-separator"></span>
  25123. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used to separate statements on the same
  25124. line.
  25125. </p>
  25126. <hr>
  25127. <span id="PRU_002dDependent"></span><div class="header">
  25128. <p>
  25129. Next: <a href="#RISC_002dV_002dDependent" accesskey="n" rel="next">RISC-V-Dependent</a>, Previous: <a href="#PPC_002dDependent" accesskey="p" rel="prev">PPC-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25130. </div>
  25131. <span id="PRU-Dependent-Features"></span><h3 class="section">9.38 PRU Dependent Features</h3>
  25132. <span id="index-PRU-support"></span>
  25133. <table class="menu" border="0" cellspacing="0">
  25134. <tr><td align="left" valign="top">&bull; <a href="#PRU-Options" accesskey="1">PRU Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  25135. </td></tr>
  25136. <tr><td align="left" valign="top">&bull; <a href="#PRU-Syntax" accesskey="2">PRU Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  25137. </td></tr>
  25138. <tr><td align="left" valign="top">&bull; <a href="#PRU-Relocations" accesskey="3">PRU Relocations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relocations
  25139. </td></tr>
  25140. <tr><td align="left" valign="top">&bull; <a href="#PRU-Directives" accesskey="4">PRU Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">PRU Machine Directives
  25141. </td></tr>
  25142. <tr><td align="left" valign="top">&bull; <a href="#PRU-Opcodes" accesskey="5">PRU Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  25143. </td></tr>
  25144. </table>
  25145. <hr>
  25146. <span id="PRU-Options"></span><div class="header">
  25147. <p>
  25148. Next: <a href="#PRU-Syntax" accesskey="n" rel="next">PRU Syntax</a>, Up: <a href="#PRU_002dDependent" accesskey="u" rel="up">PRU-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25149. </div>
  25150. <span id="Options-21"></span><h4 class="subsection">9.38.1 Options</h4>
  25151. <span id="index-PRU-options"></span>
  25152. <span id="index-options-for-PRU"></span>
  25153. <dl compact="compact">
  25154. <dd>
  25155. <span id="index-mlink_002drelax-command_002dline-option_002c-PRU"></span>
  25156. </dd>
  25157. <dt><code>-mlink-relax</code></dt>
  25158. <dd><p>Assume that LD would optimize LDI32 instructions by checking the upper
  25159. 16 bits of the <var>expression</var>. If they are all zeros, then LD would
  25160. shorten the LDI32 instruction to a single LDI. In such case <code>as</code>
  25161. will output DIFF relocations for diff expressions.
  25162. </p>
  25163. <span id="index-mno_002dlink_002drelax-command_002dline-option_002c-PRU"></span>
  25164. </dd>
  25165. <dt><code>-mno-link-relax</code></dt>
  25166. <dd><p>Assume that LD would not optimize LDI32 instructions. As a consequence,
  25167. DIFF relocations will not be emitted.
  25168. </p>
  25169. <span id="index-mno_002dwarn_002dregname_002dlabel-command_002dline-option_002c-PRU"></span>
  25170. </dd>
  25171. <dt><code>-mno-warn-regname-label</code></dt>
  25172. <dd><p>Do not warn if a label name matches a register name. Usually assembler
  25173. programmers will want this warning to be emitted. C compilers may want
  25174. to turn this off.
  25175. </p>
  25176. </dd>
  25177. </dl>
  25178. <hr>
  25179. <span id="PRU-Syntax"></span><div class="header">
  25180. <p>
  25181. Next: <a href="#PRU-Relocations" accesskey="n" rel="next">PRU Relocations</a>, Previous: <a href="#PRU-Options" accesskey="p" rel="prev">PRU Options</a>, Up: <a href="#PRU_002dDependent" accesskey="u" rel="up">PRU-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25182. </div>
  25183. <span id="Syntax-25"></span><h4 class="subsection">9.38.2 Syntax</h4>
  25184. <table class="menu" border="0" cellspacing="0">
  25185. <tr><td align="left" valign="top">&bull; <a href="#PRU-Chars" accesskey="1">PRU Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  25186. </td></tr>
  25187. </table>
  25188. <hr>
  25189. <span id="PRU-Chars"></span><div class="header">
  25190. <p>
  25191. Up: <a href="#PRU-Syntax" accesskey="u" rel="up">PRU Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25192. </div>
  25193. <span id="Special-Characters-28"></span><h4 class="subsubsection">9.38.2.1 Special Characters</h4>
  25194. <span id="index-line-comment-character_002c-PRU"></span>
  25195. <span id="index-PRU-line-comment-character"></span>
  25196. <p>&lsquo;<samp>#</samp>&rsquo; and &lsquo;<samp>;</samp>&rsquo; are the line comment characters.
  25197. </p>
  25198. <hr>
  25199. <span id="PRU-Relocations"></span><div class="header">
  25200. <p>
  25201. Next: <a href="#PRU-Directives" accesskey="n" rel="next">PRU Directives</a>, Previous: <a href="#PRU-Syntax" accesskey="p" rel="prev">PRU Syntax</a>, Up: <a href="#PRU_002dDependent" accesskey="u" rel="up">PRU-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25202. </div>
  25203. <span id="PRU-Machine-Relocations"></span><h4 class="subsection">9.38.3 PRU Machine Relocations</h4>
  25204. <span id="index-machine-relocations_002c-PRU"></span>
  25205. <span id="index-PRU-machine-relocations"></span>
  25206. <dl compact="compact">
  25207. <dd>
  25208. <span id="index-pmem-directive_002c-PRU"></span>
  25209. </dd>
  25210. <dt><code>%pmem(<var>expression</var>)</code></dt>
  25211. <dd><p>Convert <var>expression</var> from byte-address to a
  25212. word-address. In other words, shift right by two.
  25213. </p>
  25214. </dd>
  25215. <dt><code>%label(<var>expression</var>)</code></dt>
  25216. <dd><p>Mark the given operand as a label. This is useful if you need to jump to
  25217. a label that matches a register name.
  25218. </p>
  25219. <div class="example">
  25220. <pre class="example">r1:
  25221. jmp r1 ; Will jump to register R1
  25222. jmp %label(r1) ; Will jump to label r1
  25223. </pre></div>
  25224. </dd>
  25225. </dl>
  25226. <hr>
  25227. <span id="PRU-Directives"></span><div class="header">
  25228. <p>
  25229. Next: <a href="#PRU-Opcodes" accesskey="n" rel="next">PRU Opcodes</a>, Previous: <a href="#PRU-Relocations" accesskey="p" rel="prev">PRU Relocations</a>, Up: <a href="#PRU_002dDependent" accesskey="u" rel="up">PRU-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25230. </div>
  25231. <span id="PRU-Machine-Directives"></span><h4 class="subsection">9.38.4 PRU Machine Directives</h4>
  25232. <span id="index-machine-directives_002c-PRU"></span>
  25233. <span id="index-PRU-machine-directives"></span>
  25234. <dl compact="compact">
  25235. <dd>
  25236. <span id="index-align-directive_002c-PRU"></span>
  25237. </dd>
  25238. <dt><code>.align <var>expression</var> [, <var>expression</var>]</code></dt>
  25239. <dd><p>This is the generic <code>.align</code> directive, however
  25240. this aligns to a power of two.
  25241. </p>
  25242. <span id="index-word-directive_002c-PRU"></span>
  25243. </dd>
  25244. <dt><code>.word <var>expression</var></code></dt>
  25245. <dd><p>Create an aligned constant 4 bytes in size.
  25246. </p>
  25247. <span id="index-dword-directive_002c-PRU"></span>
  25248. </dd>
  25249. <dt><code>.dword <var>expression</var></code></dt>
  25250. <dd><p>Create an aligned constant 8 bytes in size.
  25251. </p>
  25252. <span id="index-2byte-directive_002c-PRU"></span>
  25253. </dd>
  25254. <dt><code>.2byte <var>expression</var></code></dt>
  25255. <dd><p>Create an unaligned constant 2 bytes in size.
  25256. </p>
  25257. <span id="index-4byte-directive_002c-PRU"></span>
  25258. </dd>
  25259. <dt><code>.4byte <var>expression</var></code></dt>
  25260. <dd><p>Create an unaligned constant 4 bytes in size.
  25261. </p>
  25262. <span id="index-8byte-directive_002c-PRU"></span>
  25263. </dd>
  25264. <dt><code>.8byte <var>expression</var></code></dt>
  25265. <dd><p>Create an unaligned constant 8 bytes in size.
  25266. </p>
  25267. <span id="index-16byte-directive_002c-PRU"></span>
  25268. </dd>
  25269. <dt><code>.16byte <var>expression</var></code></dt>
  25270. <dd><p>Create an unaligned constant 16 bytes in size.
  25271. </p>
  25272. <span id="index-set-no_005fwarn_005fregname_005flabel-directive_002c-PRU"></span>
  25273. </dd>
  25274. <dt><code>.set no_warn_regname_label</code></dt>
  25275. <dd><p>Do not output warnings when a label name matches a register name. Equivalent
  25276. to passing the <code>-mno-warn-regname-label</code> command-line option.
  25277. </p>
  25278. </dd>
  25279. </dl>
  25280. <hr>
  25281. <span id="PRU-Opcodes"></span><div class="header">
  25282. <p>
  25283. Previous: <a href="#PRU-Directives" accesskey="p" rel="prev">PRU Directives</a>, Up: <a href="#PRU_002dDependent" accesskey="u" rel="up">PRU-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25284. </div>
  25285. <span id="Opcodes-16"></span><h4 class="subsection">9.38.5 Opcodes</h4>
  25286. <span id="index-PRU-opcodes"></span>
  25287. <span id="index-opcodes-for-PRU"></span>
  25288. <p><code>as</code> implements all the standard PRU core V3 opcodes in the
  25289. original pasm assembler. Older cores are not supported by <code>as</code>.
  25290. </p>
  25291. <p>GAS also implements the LDI32 pseudo instruction for loading a 32-bit
  25292. immediate value into a register.
  25293. </p>
  25294. <div class="example">
  25295. <pre class="example"> ldi32 sp, __stack_top
  25296. ldi32 r14, 0x12345678
  25297. </pre></div>
  25298. <hr>
  25299. <span id="RISC_002dV_002dDependent"></span><div class="header">
  25300. <p>
  25301. Next: <a href="#RL78_002dDependent" accesskey="n" rel="next">RL78-Dependent</a>, Previous: <a href="#PRU_002dDependent" accesskey="p" rel="prev">PRU-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25302. </div>
  25303. <span id="RISC_002dV-Dependent-Features"></span><h3 class="section">9.39 RISC-V Dependent Features</h3>
  25304. <span id="index-RISC_002dV-support"></span>
  25305. <table class="menu" border="0" cellspacing="0">
  25306. <tr><td align="left" valign="top">&bull; <a href="#RISC_002dV_002dOptions" accesskey="1">RISC-V-Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RISC-V Options
  25307. </td></tr>
  25308. <tr><td align="left" valign="top">&bull; <a href="#RISC_002dV_002dDirectives" accesskey="2">RISC-V-Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RISC-V Directives
  25309. </td></tr>
  25310. <tr><td align="left" valign="top">&bull; <a href="#RISC_002dV_002dModifiers" accesskey="3">RISC-V-Modifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RISC-V Assembler Modifiers
  25311. </td></tr>
  25312. <tr><td align="left" valign="top">&bull; <a href="#RISC_002dV_002dFloating_002dPoint" accesskey="4">RISC-V-Floating-Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RISC-V Floating Point
  25313. </td></tr>
  25314. <tr><td align="left" valign="top">&bull; <a href="#RISC_002dV_002dFormats" accesskey="5">RISC-V-Formats</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RISC-V Instruction Formats
  25315. </td></tr>
  25316. <tr><td align="left" valign="top">&bull; <a href="#RISC_002dV_002dATTRIBUTE" accesskey="6">RISC-V-ATTRIBUTE</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RISC-V Object Attribute
  25317. </td></tr>
  25318. <tr><td align="left" valign="top">&bull; <a href="#RISC_002dV_002dCustomExts" accesskey="7">RISC-V-CustomExts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RISC-V Custom (Vendor-Defined) Extensions
  25319. </td></tr>
  25320. </table>
  25321. <hr>
  25322. <span id="RISC_002dV_002dOptions"></span><div class="header">
  25323. <p>
  25324. Next: <a href="#RISC_002dV_002dDirectives" accesskey="n" rel="next">RISC-V-Directives</a>, Up: <a href="#RISC_002dV_002dDependent" accesskey="u" rel="up">RISC-V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25325. </div>
  25326. <span id="RISC_002dV-Options"></span><h4 class="subsection">9.39.1 RISC-V Options</h4>
  25327. <p>The following table lists all available RISC-V specific options.
  25328. </p>
  25329. <dl compact="compact">
  25330. <dd>
  25331. <span id="index-_002dfpic-option_002c-RISC_002dV"></span>
  25332. </dd>
  25333. <dt><code>-fpic</code></dt>
  25334. <dt><code>-fPIC</code></dt>
  25335. <dd><p>Generate position-independent code
  25336. </p>
  25337. <span id="index-_002dfno_002dpic-option_002c-RISC_002dV"></span>
  25338. </dd>
  25339. <dt><code>-fno-pic</code></dt>
  25340. <dd><p>Don&rsquo;t generate position-independent code (default)
  25341. </p>
  25342. <span id="index-_002dmarch_003dISA-option_002c-RISC_002dV"></span>
  25343. </dd>
  25344. <dt><code>-march=ISA</code></dt>
  25345. <dd><p>Select the base isa, as specified by ISA. For example -march=rv32ima.
  25346. If this option and the architecture attributes aren&rsquo;t set, then assembler
  25347. will check the default configure setting &ndash;with-arch=ISA.
  25348. </p>
  25349. <span id="index-_002dmisa_002dspec_003dISAspec-option_002c-RISC_002dV"></span>
  25350. </dd>
  25351. <dt><code>-misa-spec=ISAspec</code></dt>
  25352. <dd><p>Select the default isa spec version. If the version of ISA isn&rsquo;t set
  25353. by -march, then assembler helps to set the version according to
  25354. the default chosen spec. If this option isn&rsquo;t set, then assembler will
  25355. check the default configure setting &ndash;with-isa-spec=ISAspec.
  25356. </p>
  25357. <span id="index-_002dmpriv_002dspec_003dPRIVspec-option_002c-RISC_002dV"></span>
  25358. </dd>
  25359. <dt><code>-mpriv-spec=PRIVspec</code></dt>
  25360. <dd><p>Select the privileged spec version. We can decide whether the CSR is valid or
  25361. not according to the chosen spec. If this option and the privilege attributes
  25362. aren&rsquo;t set, then assembler will check the default configure setting
  25363. &ndash;with-priv-spec=PRIVspec.
  25364. </p>
  25365. <span id="index-_002dmabi_003dABI-option_002c-RISC_002dV"></span>
  25366. </dd>
  25367. <dt><code>-mabi=ABI</code></dt>
  25368. <dd><p>Selects the ABI, which is either &quot;ilp32&quot; or &quot;lp64&quot;, optionally followed
  25369. by &quot;f&quot;, &quot;d&quot;, or &quot;q&quot; to indicate single-precision, double-precision, or
  25370. quad-precision floating-point calling convention, or none or &quot;e&quot; to indicate
  25371. the soft-float calling convention (&quot;e&quot; indicates a soft-float RVE ABI).
  25372. </p>
  25373. <span id="index-_002dmrelax-option_002c-RISC_002dV"></span>
  25374. </dd>
  25375. <dt><code>-mrelax</code></dt>
  25376. <dd><p>Take advantage of linker relaxations to reduce the number of instructions
  25377. required to materialize symbol addresses. (default)
  25378. </p>
  25379. <span id="index-_002dmno_002drelax-option_002c-RISC_002dV"></span>
  25380. </dd>
  25381. <dt><code>-mno-relax</code></dt>
  25382. <dd><p>Don&rsquo;t do linker relaxations.
  25383. </p>
  25384. <span id="index-_002dmarch_002dattr-option_002c-RISC_002dV"></span>
  25385. </dd>
  25386. <dt><code>-march-attr</code></dt>
  25387. <dd><p>Generate the default contents for the riscv elf attribute section if the
  25388. .attribute directives are not set. This section is used to record the
  25389. information that a linker or runtime loader needs to check compatibility.
  25390. This information includes ISA string, stack alignment requirement, unaligned
  25391. memory accesses, and the major, minor and revision version of privileged
  25392. specification.
  25393. </p>
  25394. <span id="index-_002dmno_002darch_002dattr-option_002c-RISC_002dV"></span>
  25395. </dd>
  25396. <dt><code>-mno-arch-attr</code></dt>
  25397. <dd><p>Don&rsquo;t generate the default riscv elf attribute section if the .attribute
  25398. directives are not set.
  25399. </p>
  25400. <span id="index-_002dmcsr_002dcheck-option_002c-RISC_002dV"></span>
  25401. </dd>
  25402. <dt><code>-mcsr-check</code></dt>
  25403. <dd><p>Enable the CSR checking for the ISA-dependent CRS and the read-only CSR.
  25404. The ISA-dependent CSR are only valid when the specific ISA is set. The
  25405. read-only CSR can not be written by the CSR instructions.
  25406. </p>
  25407. <span id="index-_002dmno_002dcsr_002dcheck-option_002c-RISC_002dV"></span>
  25408. </dd>
  25409. <dt><code>-mno-csr-check</code></dt>
  25410. <dd><p>Don&rsquo;t do CSR checking.
  25411. </p>
  25412. <span id="index-_002dmlittle_002dendian-option_002c-RISC_002dV"></span>
  25413. </dd>
  25414. <dt><code>-mlittle-endian</code></dt>
  25415. <dd><p>Generate code for a little endian machine.
  25416. </p>
  25417. <span id="index-_002dmbig_002dendian-option_002c-RISC_002dV"></span>
  25418. </dd>
  25419. <dt><code>-mbig-endian</code></dt>
  25420. <dd><p>Generate code for a big endian machine.
  25421. </p></dd>
  25422. </dl>
  25423. <hr>
  25424. <span id="RISC_002dV_002dDirectives"></span><div class="header">
  25425. <p>
  25426. Next: <a href="#RISC_002dV_002dModifiers" accesskey="n" rel="next">RISC-V-Modifiers</a>, Previous: <a href="#RISC_002dV_002dOptions" accesskey="p" rel="prev">RISC-V-Options</a>, Up: <a href="#RISC_002dV_002dDependent" accesskey="u" rel="up">RISC-V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25427. </div>
  25428. <span id="RISC_002dV-Directives"></span><h4 class="subsection">9.39.2 RISC-V Directives</h4>
  25429. <span id="index-machine-directives_002c-RISC_002dV"></span>
  25430. <span id="index-RISC_002dV-machine-directives"></span>
  25431. <p>The following table lists all available RISC-V specific directives.
  25432. </p>
  25433. <dl compact="compact">
  25434. <dd>
  25435. <span id="index-align-directive-1"></span>
  25436. </dd>
  25437. <dt><code>.align <var>size-log-2</var></code></dt>
  25438. <dd><p>Align to the given boundary, with the size given as log2 the number of bytes to
  25439. align to.
  25440. </p>
  25441. <span id="index-Data-directives"></span>
  25442. </dd>
  25443. <dt><code>.half <var>value</var></code></dt>
  25444. <dt><code>.word <var>value</var></code></dt>
  25445. <dt><code>.dword <var>value</var></code></dt>
  25446. <dd><p>Emits a half-word, word, or double-word value at the current position.
  25447. </p>
  25448. <span id="index-DTP_002drelative-data-directives"></span>
  25449. </dd>
  25450. <dt><code>.dtprelword <var>value</var></code></dt>
  25451. <dt><code>.dtpreldword <var>value</var></code></dt>
  25452. <dd><p>Emits a DTP-relative word (or double-word) at the current position. This is
  25453. meant to be used by the compiler in shared libraries for DWARF debug info for
  25454. thread local variables.
  25455. </p>
  25456. <span id="index-LEB128-directives"></span>
  25457. </dd>
  25458. <dt><code>.uleb128 <var>value</var></code></dt>
  25459. <dt><code>.sleb128 <var>value</var></code></dt>
  25460. <dd><p>Emits a signed or unsigned LEB128 value at the current position. This only
  25461. accepts constant expressions, because symbol addresses can change with
  25462. relaxation, and we don&rsquo;t support relocations to modify LEB128 values at link
  25463. time.
  25464. </p>
  25465. <span id="index-Option-directive"></span>
  25466. <span id="index-option-directive"></span>
  25467. </dd>
  25468. <dt><code>.option <var>argument</var></code></dt>
  25469. <dd><p>Modifies RISC-V specific assembler options inline with the assembly code.
  25470. This is used when particular instruction sequences must be assembled with a
  25471. specific set of options. For example, since we relax addressing sequences to
  25472. shorter GP-relative sequences when possible the initial load of GP must not be
  25473. relaxed and should be emitted as something like
  25474. </p>
  25475. <div class="example">
  25476. <pre class="example"> .option push
  25477. .option norelax
  25478. la gp, __global_pointer$
  25479. .option pop
  25480. </pre></div>
  25481. <p>in order to produce after linker relaxation the expected
  25482. </p>
  25483. <div class="example">
  25484. <pre class="example"> auipc gp, %pcrel_hi(__global_pointer$)
  25485. addi gp, gp, %pcrel_lo(__global_pointer$)
  25486. </pre></div>
  25487. <p>instead of just
  25488. </p>
  25489. <div class="example">
  25490. <pre class="example"> addi gp, gp, 0
  25491. </pre></div>
  25492. <p>It&rsquo;s not expected that options are changed in this manner during regular use,
  25493. but there are a handful of esoteric cases like the one above where users need
  25494. to disable particular features of the assembler for particular code sequences.
  25495. The complete list of option arguments is shown below:
  25496. </p>
  25497. <dl compact="compact">
  25498. <dt><code>push</code></dt>
  25499. <dt><code>pop</code></dt>
  25500. <dd><p>Pushes or pops the current option stack. These should be used whenever
  25501. changing an option in line with assembly code in order to ensure the user&rsquo;s
  25502. command-line options are respected for the bulk of the file being assembled.
  25503. </p>
  25504. </dd>
  25505. <dt><code>rvc</code></dt>
  25506. <dt><code>norvc</code></dt>
  25507. <dd><p>Enables or disables the generation of compressed instructions. Instructions
  25508. are opportunistically compressed by the RISC-V assembler when possible, but
  25509. sometimes this behavior is not desirable, especially when handling alignments.
  25510. </p>
  25511. </dd>
  25512. <dt><code>pic</code></dt>
  25513. <dt><code>nopic</code></dt>
  25514. <dd><p>Enables or disables position-independent code generation. Unless you really
  25515. know what you&rsquo;re doing, this should only be at the top of a file.
  25516. </p>
  25517. </dd>
  25518. <dt><code>relax</code></dt>
  25519. <dt><code>norelax</code></dt>
  25520. <dd><p>Enables or disables relaxation. The RISC-V assembler and linker
  25521. opportunistically relax some code sequences, but sometimes this behavior is not
  25522. desirable.
  25523. </p>
  25524. </dd>
  25525. <dt><code>csr-check</code></dt>
  25526. <dt><code>no-csr-check</code></dt>
  25527. <dd><p>Enables or disables the CSR checking.
  25528. </p>
  25529. </dd>
  25530. <dt><code>arch, <var>+extension[version]</var> [,...,<var>+extension_n[version_n]</var>]</code></dt>
  25531. <dt><code>arch, <var>-extension</var> [,...,<var>-extension_n</var>]</code></dt>
  25532. <dt><code>arch, <var>=ISA</var></code></dt>
  25533. <dd><p>Enables or disables the extensions for specific code region. For example,
  25534. &lsquo;<samp>.option arch, +m2p0</samp>&rsquo; means add m extension with version 2.0, and
  25535. &lsquo;<samp>.option arch, -f, -d</samp>&rsquo; means remove extensions, f and d, from the
  25536. architecture string. Note that, &lsquo;<samp>.option arch, +c, -c</samp>&rsquo; have the same
  25537. behavior as &lsquo;<samp>.option rvc, norvc</samp>&rsquo;. However, they are also undesirable
  25538. sometimes. Besides, &lsquo;<samp>.option arch, -i</samp>&rsquo; is illegal, since we cannot
  25539. remove the base i extension anytime. If you want to reset the whole ISA
  25540. string, you can also use &lsquo;<samp>.option arch, =rv32imac</samp>&rsquo; to overwrite the
  25541. previous settings.
  25542. </p></dd>
  25543. </dl>
  25544. <span id="index-INSN-directives"></span>
  25545. </dd>
  25546. <dt><code>.insn <var>type</var>, <var>operand</var> [,...,<var>operand_n</var>]</code></dt>
  25547. <dt><code>.insn <var>insn_length</var>, <var>value</var></code></dt>
  25548. <dt><code>.insn <var>value</var></code></dt>
  25549. <dd><p>This directive permits the numeric representation of an instructions
  25550. and makes the assembler insert the operands according to one of the
  25551. instruction formats for &lsquo;<samp>.insn</samp>&rsquo; (<a href="#RISC_002dV_002dFormats">RISC-V-Formats</a>).
  25552. For example, the instruction &lsquo;<samp>add a0, a1, a2</samp>&rsquo; could be written as
  25553. &lsquo;<samp>.insn r 0x33, 0, 0, a0, a1, a2</samp>&rsquo;. But in fact, the instruction
  25554. formats are difficult to use for some users, so most of them are using
  25555. &lsquo;<samp>.word</samp>&rsquo; to encode the instruction directly, rather than using
  25556. &lsquo;<samp>.insn</samp>&rsquo;. It is fine for now, but will be wrong when the mapping
  25557. symbols are supported, since &lsquo;<samp>.word</samp>&rsquo; will not be shown as an
  25558. instruction, it should be shown as data. Therefore, we also support
  25559. two more formats of the &lsquo;<samp>.insn</samp>&rsquo;, the instruction &lsquo;<samp>add a0, a1, a2</samp>&rsquo;
  25560. could also be written as &lsquo;<samp>.insn 0x4, 0xc58533</samp>&rsquo; or &lsquo;<samp>.insn 0xc58533</samp>&rsquo;.
  25561. When the <var>insn_length</var> is set, then assembler will check if the
  25562. <var>value</var> is a valid <var>insn_length</var> bytes instruction.
  25563. </p>
  25564. <span id="index-_002eattribute-directive_002c-RISC_002dV"></span>
  25565. </dd>
  25566. <dt><code>.attribute <var>tag</var>, <var>value</var></code></dt>
  25567. <dd><p>Set the object attribute <var>tag</var> to <var>value</var>.
  25568. </p>
  25569. <p>The <var>tag</var> is either an attribute number, or one of the following:
  25570. <code>Tag_RISCV_arch</code>, <code>Tag_RISCV_stack_align</code>,
  25571. <code>Tag_RISCV_unaligned_access</code>, <code>Tag_RISCV_priv_spec</code>,
  25572. <code>Tag_RISCV_priv_spec_minor</code>, <code>Tag_RISCV_priv_spec_revision</code>.
  25573. </p>
  25574. </dd>
  25575. </dl>
  25576. <hr>
  25577. <span id="RISC_002dV_002dModifiers"></span><div class="header">
  25578. <p>
  25579. Next: <a href="#RISC_002dV_002dFloating_002dPoint" accesskey="n" rel="next">RISC-V-Floating-Point</a>, Previous: <a href="#RISC_002dV_002dDirectives" accesskey="p" rel="prev">RISC-V-Directives</a>, Up: <a href="#RISC_002dV_002dDependent" accesskey="u" rel="up">RISC-V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25580. </div>
  25581. <span id="RISC_002dV-Assembler-Modifiers"></span><h4 class="subsection">9.39.3 RISC-V Assembler Modifiers</h4>
  25582. <p>The RISC-V assembler supports following modifiers for relocatable addresses
  25583. used in RISC-V instruction operands. However, we also support some pseudo
  25584. instructions that are easier to use than these modifiers.
  25585. </p>
  25586. <dl compact="compact">
  25587. <dt><code>%lo(<var>symbol</var>)</code></dt>
  25588. <dd><p>The low 12 bits of absolute address for <var>symbol</var>.
  25589. </p>
  25590. </dd>
  25591. <dt><code>%hi(<var>symbol</var>)</code></dt>
  25592. <dd><p>The high 20 bits of absolute address for <var>symbol</var>. This is usually
  25593. used with the %lo modifier to represent a 32-bit absolute address.
  25594. </p>
  25595. <div class="example">
  25596. <pre class="example"> lui a0, %hi(<var>symbol</var>) // R_RISCV_HI20
  25597. addi a0, a0, %lo(<var>symbol</var>) // R_RISCV_LO12_I
  25598. lui a0, %hi(<var>symbol</var>) // R_RISCV_HI20
  25599. load/store a0, %lo(<var>symbol</var>)(a0) // R_RISCV_LO12_I/S
  25600. </pre></div>
  25601. </dd>
  25602. <dt><code>%pcrel_lo(<var>label</var>)</code></dt>
  25603. <dd><p>The low 12 bits of relative address between pc and <var>symbol</var>.
  25604. The <var>symbol</var> is related to the high part instruction which is marked
  25605. by <var>label</var>.
  25606. </p>
  25607. </dd>
  25608. <dt><code>%pcrel_hi(<var>symbol</var>)</code></dt>
  25609. <dd><p>The high 20 bits of relative address between pc and <var>symbol</var>.
  25610. This is usually used with the %pcrel_lo modifier to represent a +/-2GB
  25611. pc-relative range.
  25612. </p>
  25613. <div class="example">
  25614. <pre class="example"><var>label</var>:
  25615. auipc a0, %pcrel_hi(<var>symbol</var>) // R_RISCV_PCREL_HI20
  25616. addi a0, a0, %pcrel_lo(<var>label</var>) // R_RISCV_PCREL_LO12_I
  25617. <var>label</var>:
  25618. auipc a0, %pcrel_hi(<var>symbol</var>) // R_RISCV_PCREL_HI20
  25619. load/store a0, %pcrel_lo(<var>label</var>)(a0) // R_RISCV_PCREL_LO12_I/S
  25620. </pre></div>
  25621. <p>Or you can use the pseudo lla/lw/sw/... instruction to do this.
  25622. </p>
  25623. <div class="example">
  25624. <pre class="example"> lla a0, <var>symbol</var>
  25625. </pre></div>
  25626. </dd>
  25627. <dt><code>%got_pcrel_hi(<var>symbol</var>)</code></dt>
  25628. <dd><p>The high 20 bits of relative address between pc and the GOT entry of
  25629. <var>symbol</var>. This is usually used with the %pcrel_lo modifier to access
  25630. the GOT entry.
  25631. </p>
  25632. <div class="example">
  25633. <pre class="example"><var>label</var>:
  25634. auipc a0, %got_pcrel_hi(<var>symbol</var>) // R_RISCV_GOT_HI20
  25635. addi a0, a0, %pcrel_lo(<var>label</var>) // R_RISCV_PCREL_LO12_I
  25636. <var>label</var>:
  25637. auipc a0, %got_pcrel_hi(<var>symbol</var>) // R_RISCV_GOT_HI20
  25638. load/store a0, %pcrel_lo(<var>label</var>)(a0) // R_RISCV_PCREL_LO12_I/S
  25639. </pre></div>
  25640. <p>Also, the pseudo la instruction with PIC has similar behavior.
  25641. </p>
  25642. </dd>
  25643. <dt><code>%tprel_add(<var>symbol</var>)</code></dt>
  25644. <dd><p>This is used purely to associate the R_RISCV_TPREL_ADD relocation for
  25645. TLS relaxation. This one is only valid as the fourth operand to the normally
  25646. 3 operand add instruction.
  25647. </p>
  25648. </dd>
  25649. <dt><code>%tprel_lo(<var>symbol</var>)</code></dt>
  25650. <dd><p>The low 12 bits of relative address between tp and <var>symbol</var>.
  25651. </p>
  25652. </dd>
  25653. <dt><code>%tprel_hi(<var>symbol</var>)</code></dt>
  25654. <dd><p>The high 20 bits of relative address between tp and <var>symbol</var>. This is
  25655. usually used with the %tprel_lo and %tprel_add modifiers to access the thread
  25656. local variable <var>symbol</var> in TLS Local Exec.
  25657. </p>
  25658. <div class="example">
  25659. <pre class="example"> lui a5, %tprel_hi(<var>symbol</var>) // R_RISCV_TPREL_HI20
  25660. add a5, a5, tp, %tprel_add(<var>symbol</var>) // R_RISCV_TPREL_ADD
  25661. load/store t0, %tprel_lo(<var>symbol</var>)(a5) // R_RISCV_TPREL_LO12_I/S
  25662. </pre></div>
  25663. </dd>
  25664. <dt><code>%tls_ie_pcrel_hi(<var>symbol</var>)</code></dt>
  25665. <dd><p>The high 20 bits of relative address between pc and GOT entry. It is
  25666. usually used with the %pcrel_lo modifier to access the thread local
  25667. variable <var>symbol</var> in TLS Initial Exec.
  25668. </p>
  25669. <div class="example">
  25670. <pre class="example"> la.tls.ie a5, <var>symbol</var>
  25671. add a5, a5, tp
  25672. load/store t0, 0(a5)
  25673. </pre></div>
  25674. <p>The pseudo la.tls.ie instruction can be expended to
  25675. </p>
  25676. <div class="example">
  25677. <pre class="example"><var>label</var>:
  25678. auipc a5, %tls_ie_pcrel_hi(<var>symbol</var>) // R_RISCV_TLS_GOT_HI20
  25679. load a5, %pcrel_lo(<var>label</var>)(a5) // R_RISCV_PCREL_LO12_I
  25680. </pre></div>
  25681. </dd>
  25682. <dt><code>%tls_gd_pcrel_hi(<var>symbol</var>)</code></dt>
  25683. <dd><p>The high 20 bits of relative address between pc and GOT entry. It is
  25684. usually used with the %pcrel_lo modifier to access the thread local variable
  25685. <var>symbol</var> in TLS Global Dynamic.
  25686. </p>
  25687. <div class="example">
  25688. <pre class="example"> la.tls.gd a0, <var>symbol</var>
  25689. call __tls_get_addr@plt
  25690. mv a5, a0
  25691. load/store t0, 0(a5)
  25692. </pre></div>
  25693. <p>The pseudo la.tls.gd instruction can be expended to
  25694. </p>
  25695. <div class="example">
  25696. <pre class="example"><var>label</var>:
  25697. auipc a0, %tls_gd_pcrel_hi(<var>symbol</var>) // R_RISCV_TLS_GD_HI20
  25698. addi a0, a0, %pcrel_lo(<var>label</var>) // R_RISCV_PCREL_LO12_I
  25699. </pre></div>
  25700. </dd>
  25701. </dl>
  25702. <hr>
  25703. <span id="RISC_002dV_002dFloating_002dPoint"></span><div class="header">
  25704. <p>
  25705. Next: <a href="#RISC_002dV_002dFormats" accesskey="n" rel="next">RISC-V-Formats</a>, Previous: <a href="#RISC_002dV_002dModifiers" accesskey="p" rel="prev">RISC-V-Modifiers</a>, Up: <a href="#RISC_002dV_002dDependent" accesskey="u" rel="up">RISC-V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25706. </div>
  25707. <span id="RISC_002dV-Floating-Point"></span><h4 class="subsection">9.39.4 RISC-V Floating Point</h4>
  25708. <span id="index-floating-point_002c-risc_002dv-_0028IEEE_0029"></span>
  25709. <span id="index-RISC_002dV-floating-point-_0028IEEE_0029"></span>
  25710. <p>The RISC-V architecture uses <small>IEEE</small> floating-point numbers.
  25711. </p>
  25712. <p>The RISC-V Zfa extension includes a load-immediate instruction
  25713. for floating-point registers, which allows specifying the immediate
  25714. (from a pool of 32 predefined values defined in the specification)
  25715. as operand.
  25716. E.g. to load the value <code>0.0625</code> as single-precision FP value into
  25717. the FP register <code>ft1</code> one of the following instructions can be used:
  25718. </p>
  25719. <p>fli.s ft1, 0.0625 # dec floating-point literal
  25720. fli.s ft1, 0x1p-4 # hex floating-point literal
  25721. fli.s ft1, 0x0.8p-3
  25722. fli.s ft1, 0x1.0p-4
  25723. fli.s ft1, 0x2p-5
  25724. fli.s ft1, 0x4p-6
  25725. ...
  25726. </p>
  25727. <p>As can be seen, many valid ways exist to express a floating-point value.
  25728. This is realized by parsing the value operand using strtof() and
  25729. comparing the parsed value against built-in float-constants that
  25730. are written as hex floating-point literals.
  25731. </p>
  25732. <p>This approach works on all machines that use IEEE 754.
  25733. However, there is a chance that this fails on other machines
  25734. with the following error message:
  25735. </p>
  25736. <p>Error: improper fli value operand
  25737. Error: illegal operands &lsquo;fli.s ft1,0.0625
  25738. </p>
  25739. <p>The error indicates that parsing &lsquo;<samp>0x1p-4</samp>&rsquo; and &lsquo;<samp>0.0625</samp>&rsquo;
  25740. to single-precision floating point numbers will not result
  25741. in two equal values on that machine.
  25742. </p>
  25743. <p>If you encounter this problem, then please report it.
  25744. </p>
  25745. <hr>
  25746. <span id="RISC_002dV_002dFormats"></span><div class="header">
  25747. <p>
  25748. Next: <a href="#RISC_002dV_002dATTRIBUTE" accesskey="n" rel="next">RISC-V-ATTRIBUTE</a>, Previous: <a href="#RISC_002dV_002dFloating_002dPoint" accesskey="p" rel="prev">RISC-V-Floating-Point</a>, Up: <a href="#RISC_002dV_002dDependent" accesskey="u" rel="up">RISC-V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  25749. </div>
  25750. <span id="RISC_002dV-Instruction-Formats"></span><h4 class="subsection">9.39.5 RISC-V Instruction Formats</h4>
  25751. <span id="index-instruction-formats_002c-risc_002dv"></span>
  25752. <span id="index-RISC_002dV-instruction-formats"></span>
  25753. <p>The RISC-V Instruction Set Manual Volume I: User-Level ISA lists 15
  25754. instruction formats where some of the formats have multiple variants.
  25755. For the &lsquo;<samp>.insn</samp>&rsquo; pseudo directive the assembler recognizes some
  25756. of the formats.
  25757. Typically, the most general variant of the instruction format is used
  25758. by the &lsquo;<samp>.insn</samp>&rsquo; directive.
  25759. </p>
  25760. <p>The following table lists the abbreviations used in the table of
  25761. instruction formats:
  25762. </p>
  25763. <div class="display">
  25764. <table>
  25765. <tr><td width="15%"><pre class="display">opcode</pre></td><td width="40%"><pre class="display">Unsigned immediate or opcode name for 7-bits opcode.</pre></td></tr>
  25766. <tr><td width="15%"><pre class="display">opcode2</pre></td><td width="40%"><pre class="display">Unsigned immediate or opcode name for 2-bits opcode.</pre></td></tr>
  25767. <tr><td width="15%"><pre class="display">func7</pre></td><td width="40%"><pre class="display">Unsigned immediate for 7-bits function code.</pre></td></tr>
  25768. <tr><td width="15%"><pre class="display">func6</pre></td><td width="40%"><pre class="display">Unsigned immediate for 6-bits function code.</pre></td></tr>
  25769. <tr><td width="15%"><pre class="display">func4</pre></td><td width="40%"><pre class="display">Unsigned immediate for 4-bits function code.</pre></td></tr>
  25770. <tr><td width="15%"><pre class="display">func3</pre></td><td width="40%"><pre class="display">Unsigned immediate for 3-bits function code.</pre></td></tr>
  25771. <tr><td width="15%"><pre class="display">func2</pre></td><td width="40%"><pre class="display">Unsigned immediate for 2-bits function code.</pre></td></tr>
  25772. <tr><td width="15%"><pre class="display">rd</pre></td><td width="40%"><pre class="display">Destination register number for operand x, can be GPR or FPR.</pre></td></tr>
  25773. <tr><td width="15%"><pre class="display">rd&rsquo;</pre></td><td width="40%"><pre class="display">Destination register number for operand x,
  25774. only accept s0-s1, a0-a5, fs0-fs1 and fa0-fa5.</pre></td></tr>
  25775. <tr><td width="15%"><pre class="display">rs1</pre></td><td width="40%"><pre class="display">First source register number for operand x, can be GPR or FPR.</pre></td></tr>
  25776. <tr><td width="15%"><pre class="display">rs1&rsquo;</pre></td><td width="40%"><pre class="display">First source register number for operand x,
  25777. only accept s0-s1, a0-a5, fs0-fs1 and fa0-fa5.</pre></td></tr>
  25778. <tr><td width="15%"><pre class="display">rs2</pre></td><td width="40%"><pre class="display">Second source register number for operand x, can be GPR or FPR.</pre></td></tr>
  25779. <tr><td width="15%"><pre class="display">rs2&rsquo;</pre></td><td width="40%"><pre class="display">Second source register number for operand x,
  25780. only accept s0-s1, a0-a5, fs0-fs1 and fa0-fa5.</pre></td></tr>
  25781. <tr><td width="15%"><pre class="display">simm12</pre></td><td width="40%"><pre class="display">Sign-extended 12-bit immediate for operand x.</pre></td></tr>
  25782. <tr><td width="15%"><pre class="display">simm20</pre></td><td width="40%"><pre class="display">Sign-extended 20-bit immediate for operand x.</pre></td></tr>
  25783. <tr><td width="15%"><pre class="display">simm6</pre></td><td width="40%"><pre class="display">Sign-extended 6-bit immediate for operand x.</pre></td></tr>
  25784. <tr><td width="15%"><pre class="display">uimm5</pre></td><td width="40%"><pre class="display">Unsigned 5-bit immediate for operand x.</pre></td></tr>
  25785. <tr><td width="15%"><pre class="display">uimm6</pre></td><td width="40%"><pre class="display">Unsigned 6-bit immediate for operand x.</pre></td></tr>
  25786. <tr><td width="15%"><pre class="display">uimm8</pre></td><td width="40%"><pre class="display">Unsigned 8-bit immediate for operand x.</pre></td></tr>
  25787. <tr><td width="15%"><pre class="display">symbol</pre></td><td width="40%"><pre class="display">Symbol or label reference for operand x.</pre></td></tr>
  25788. </table>
  25789. </div>
  25790. <p>The following table lists all available opcode name:
  25791. </p>
  25792. <dl compact="compact">
  25793. <dt><code>C0</code></dt>
  25794. <dt><code>C1</code></dt>
  25795. <dt><code>C2</code></dt>
  25796. <dd><p>Opcode space for compressed instructions.
  25797. </p>
  25798. </dd>
  25799. <dt><code>LOAD</code></dt>
  25800. <dd><p>Opcode space for load instructions.
  25801. </p>
  25802. </dd>
  25803. <dt><code>LOAD_FP</code></dt>
  25804. <dd><p>Opcode space for floating-point load instructions.
  25805. </p>
  25806. </dd>
  25807. <dt><code>STORE</code></dt>
  25808. <dd><p>Opcode space for store instructions.
  25809. </p>
  25810. </dd>
  25811. <dt><code>STORE_FP</code></dt>
  25812. <dd><p>Opcode space for floating-point store instructions.
  25813. </p>
  25814. </dd>
  25815. <dt><code>AUIPC</code></dt>
  25816. <dd><p>Opcode space for auipc instruction.
  25817. </p>
  25818. </dd>
  25819. <dt><code>LUI</code></dt>
  25820. <dd><p>Opcode space for lui instruction.
  25821. </p>
  25822. </dd>
  25823. <dt><code>BRANCH</code></dt>
  25824. <dd><p>Opcode space for branch instructions.
  25825. </p>
  25826. </dd>
  25827. <dt><code>JAL</code></dt>
  25828. <dd><p>Opcode space for jal instruction.
  25829. </p>
  25830. </dd>
  25831. <dt><code>JALR</code></dt>
  25832. <dd><p>Opcode space for jalr instruction.
  25833. </p>
  25834. </dd>
  25835. <dt><code>OP</code></dt>
  25836. <dd><p>Opcode space for ALU instructions.
  25837. </p>
  25838. </dd>
  25839. <dt><code>OP_32</code></dt>
  25840. <dd><p>Opcode space for 32-bits ALU instructions.
  25841. </p>
  25842. </dd>
  25843. <dt><code>OP_IMM</code></dt>
  25844. <dd><p>Opcode space for ALU with immediate instructions.
  25845. </p>
  25846. </dd>
  25847. <dt><code>OP_IMM_32</code></dt>
  25848. <dd><p>Opcode space for 32-bits ALU with immediate instructions.
  25849. </p>
  25850. </dd>
  25851. <dt><code>OP_FP</code></dt>
  25852. <dd><p>Opcode space for floating-point operation instructions.
  25853. </p>
  25854. </dd>
  25855. <dt><code>MADD</code></dt>
  25856. <dd><p>Opcode space for madd instruction.
  25857. </p>
  25858. </dd>
  25859. <dt><code>MSUB</code></dt>
  25860. <dd><p>Opcode space for msub instruction.
  25861. </p>
  25862. </dd>
  25863. <dt><code>NMADD</code></dt>
  25864. <dd><p>Opcode space for nmadd instruction.
  25865. </p>
  25866. </dd>
  25867. <dt><code>NMSUB</code></dt>
  25868. <dd><p>Opcode space for msub instruction.
  25869. </p>
  25870. </dd>
  25871. <dt><code>AMO</code></dt>
  25872. <dd><p>Opcode space for atomic memory operation instructions.
  25873. </p>
  25874. </dd>
  25875. <dt><code>MISC_MEM</code></dt>
  25876. <dd><p>Opcode space for misc instructions.
  25877. </p>
  25878. </dd>
  25879. <dt><code>SYSTEM</code></dt>
  25880. <dd><p>Opcode space for system instructions.
  25881. </p>
  25882. </dd>
  25883. <dt><code>CUSTOM_0</code></dt>
  25884. <dt><code>CUSTOM_1</code></dt>
  25885. <dt><code>CUSTOM_2</code></dt>
  25886. <dt><code>CUSTOM_3</code></dt>
  25887. <dd><p>Opcode space for customize instructions.
  25888. </p>
  25889. </dd>
  25890. </dl>
  25891. <p>An instruction is two or four bytes in length and must be aligned
  25892. on a 2 byte boundary. The first two bits of the instruction specify the
  25893. length of the instruction, 00, 01 and 10 indicates a two byte instruction,
  25894. 11 indicates a four byte instruction.
  25895. </p>
  25896. <p>The following table lists the RISC-V instruction formats that are available
  25897. with the &lsquo;<samp>.insn</samp>&rsquo; pseudo directive:
  25898. </p>
  25899. <dl compact="compact">
  25900. <dt><code>R type: .insn r opcode6, func3, func7, rd, rs1, rs2</code></dt>
  25901. <dd><pre class="verbatim">+-------+-----+-----+-------+----+---------+
  25902. | func7 | rs2 | rs1 | func3 | rd | opcode6 |
  25903. +-------+-----+-----+-------+----+---------+
  25904. 31 25 20 15 12 7 0
  25905. </pre>
  25906. </dd>
  25907. <dt><code>R type with 4 register operands: .insn r opcode6, func3, func2, rd, rs1, rs2, rs3</code></dt>
  25908. <dt><code>R4 type: .insn r4 opcode6, func3, func2, rd, rs1, rs2, rs3</code></dt>
  25909. <dd><pre class="verbatim">+-----+-------+-----+-----+-------+----+---------+
  25910. | rs3 | func2 | rs2 | rs1 | func3 | rd | opcode6 |
  25911. +-----+-------+-----+-----+-------+----+---------+
  25912. 31 27 25 20 15 12 7 0
  25913. </pre>
  25914. </dd>
  25915. <dt><code>I type: .insn i opcode6, func3, rd, rs1, simm12</code></dt>
  25916. <dt><code>I type: .insn i opcode6, func3, rd, simm12(rs1)</code></dt>
  25917. <dd><pre class="verbatim">+--------------+-----+-------+----+---------+
  25918. | simm12[11:0] | rs1 | func3 | rd | opcode6 |
  25919. +--------------+-----+-------+----+---------+
  25920. 31 20 15 12 7 0
  25921. </pre>
  25922. </dd>
  25923. <dt><code>S type: .insn s opcode6, func3, rs2, simm12(rs1)</code></dt>
  25924. <dd><pre class="verbatim">+--------------+-----+-----+-------+-------------+---------+
  25925. | simm12[11:5] | rs2 | rs1 | func3 | simm12[4:0] | opcode6 |
  25926. +--------------+-----+-----+-------+-------------+---------+
  25927. 31 25 20 15 12 7 0
  25928. </pre>
  25929. </dd>
  25930. <dt><code>B type: .insn s opcode6, func3, rs1, rs2, symbol</code></dt>
  25931. <dt><code>SB type: .insn sb opcode6, func3, rs1, rs2, symbol</code></dt>
  25932. <dd><pre class="verbatim">+-----------------+-----+-----+-------+----------------+---------+
  25933. | simm12[12|10:5] | rs2 | rs1 | func3 | simm12[4:1|11] | opcode6 |
  25934. +-----------------+-----+-----+-------+----------------+---------+
  25935. 31 25 20 15 12 7 0
  25936. </pre>
  25937. </dd>
  25938. <dt><code>U type: .insn u opcode6, rd, simm20</code></dt>
  25939. <dd><pre class="verbatim">+--------------------------+----+---------+
  25940. | simm20[20|10:1|11|19:12] | rd | opcode6 |
  25941. +--------------------------+----+---------+
  25942. 31 12 7 0
  25943. </pre>
  25944. </dd>
  25945. <dt><code>J type: .insn j opcode6, rd, symbol</code></dt>
  25946. <dt><code>UJ type: .insn uj opcode6, rd, symbol</code></dt>
  25947. <dd><pre class="verbatim">+------------+--------------+------------+---------------+----+---------+
  25948. | simm20[20] | simm20[10:1] | simm20[11] | simm20[19:12] | rd | opcode6 |
  25949. +------------+--------------+------------+---------------+----+---------+
  25950. 31 30 21 20 12 7 0
  25951. </pre>
  25952. </dd>
  25953. <dt><code>CR type: .insn cr opcode2, func4, rd, rs2</code></dt>
  25954. <dd><pre class="verbatim">+-------+--------+-----+---------+
  25955. | func4 | rd/rs1 | rs2 | opcode2 |
  25956. +-------+--------+-----+---------+
  25957. 15 12 7 2 0
  25958. </pre>
  25959. </dd>
  25960. <dt><code>CI type: .insn ci opcode2, func3, rd, simm6</code></dt>
  25961. <dd><pre class="verbatim">+-------+----------+--------+------------+---------+
  25962. | func3 | simm6[5] | rd/rs1 | simm6[4:0] | opcode2 |
  25963. +-------+----------+--------+------------+---------+
  25964. 15 13 12 7 2 0
  25965. </pre>
  25966. </dd>
  25967. <dt><code>CIW type: .insn ciw opcode2, func3, rd', uimm8</code></dt>
  25968. <dd><pre class="verbatim">+-------+------------+-----+---------+
  25969. | func3 | uimm8[7:0] | rd' | opcode2 |
  25970. +-------+-------- ---+-----+---------+
  25971. 15 13 5 2 0
  25972. </pre>
  25973. </dd>
  25974. <dt><code>CSS type: .insn css opcode2, func3, rd, uimm6</code></dt>
  25975. <dd><pre class="verbatim">+-------+------------+----+---------+
  25976. | func3 | uimm6[5:0] | rd | opcode2 |
  25977. +-------+------------+----+---------+
  25978. 15 13 7 2 0
  25979. </pre>
  25980. </dd>
  25981. <dt><code>CL type: .insn cl opcode2, func3, rd', uimm5(rs1')</code></dt>
  25982. <dd><pre class="verbatim">+-------+------------+------+------------+------+---------+
  25983. | func3 | uimm5[4:2] | rs1' | uimm5[1:0] | rd' | opcode2 |
  25984. +-------+------------+------+------------+------+---------+
  25985. 15 13 10 7 5 2 0
  25986. </pre>
  25987. </dd>
  25988. <dt><code>CS type: .insn cs opcode2, func3, rs2', uimm5(rs1')</code></dt>
  25989. <dd><pre class="verbatim">+-------+------------+------+------------+------+---------+
  25990. | func3 | uimm5[4:2] | rs1' | uimm5[1:0] | rs2' | opcode2 |
  25991. +-------+------------+------+------------+------+---------+
  25992. 15 13 10 7 5 2 0
  25993. </pre>
  25994. </dd>
  25995. <dt><code>CA type: .insn ca opcode2, func6, func2, rd', rs2'</code></dt>
  25996. <dd><pre class="verbatim">+-- ----+----------+-------+------+---------+
  25997. | func6 | rd'/rs1' | func2 | rs2' | opcode2 |
  25998. +-------+----------+-------+------+---------+
  25999. 15 10 7 5 2 0
  26000. </pre>
  26001. </dd>
  26002. <dt><code>CB type: .insn cb opcode2, func3, rs1', symbol</code></dt>
  26003. <dd><pre class="verbatim">+-------+--------------+------+------------------+---------+
  26004. | func3 | simm8[8|4:3] | rs1' | simm8[7:6|2:1|5] | opcode2 |
  26005. +-------+--------------+------+------------------+---------+
  26006. 15 13 10 7 2 0
  26007. </pre>
  26008. </dd>
  26009. <dt><code>CJ type: .insn cj opcode2, symbol</code></dt>
  26010. <dd><pre class="verbatim">+-------+-------------------------------+---------+
  26011. | func3 | simm11[11|4|9:8|10|6|7|3:1|5] | opcode2 |
  26012. +-------+-------------------------------+---------+
  26013. 15 13 2 0
  26014. </pre>
  26015. </dd>
  26016. </dl>
  26017. <p>For the complete list of all instruction format variants see
  26018. The RISC-V Instruction Set Manual Volume I: User-Level ISA.
  26019. </p>
  26020. <hr>
  26021. <span id="RISC_002dV_002dATTRIBUTE"></span><div class="header">
  26022. <p>
  26023. Next: <a href="#RISC_002dV_002dCustomExts" accesskey="n" rel="next">RISC-V-CustomExts</a>, Previous: <a href="#RISC_002dV_002dFormats" accesskey="p" rel="prev">RISC-V-Formats</a>, Up: <a href="#RISC_002dV_002dDependent" accesskey="u" rel="up">RISC-V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26024. </div>
  26025. <span id="RISC_002dV-Object-Attribute"></span><h4 class="subsection">9.39.6 RISC-V Object Attribute</h4>
  26026. <span id="index-Object-Attribute_002c-RISC_002dV"></span>
  26027. <p>RISC-V attributes have a string value if the tag number is odd and an integer
  26028. value if the tag number is even.
  26029. </p>
  26030. <dl compact="compact">
  26031. <dt><span class="roman">Tag_RISCV_stack_align (4)</span></dt>
  26032. <dd><p>Tag_RISCV_strict_align records the N-byte stack alignment for this object. The
  26033. default value is 16 for RV32I or RV64I, and 4 for RV32E.
  26034. </p>
  26035. <p>The smallest value will be used if object files with different
  26036. Tag_RISCV_stack_align values are merged.
  26037. </p>
  26038. </dd>
  26039. <dt><span class="roman">Tag_RISCV_arch (5)</span></dt>
  26040. <dd><p>Tag_RISCV_arch contains a string for the target architecture taken from the
  26041. option <samp>-march</samp>. Different architectures will be integrated into a
  26042. superset when object files are merged.
  26043. </p>
  26044. <p>Note that the version information of the target architecture must be presented
  26045. explicitly in the attribute and abbreviations must be expanded. The version
  26046. information, if not given by <samp>-march</samp>, must be in accordance with the
  26047. default specified by the tool. For example, the architecture <code>RV32I</code> has
  26048. to be recorded in the attribute as <code>RV32I2P0</code> in which <code>2P0</code> stands
  26049. for the default version of its base ISA. On the other hand, the architecture
  26050. <code>RV32G</code> has to be presented as <code>RV32I2P0_M2P0_A2P0_F2P0_D2P0</code> in
  26051. which the abbreviation <code>G</code> is expanded to the <code>IMAFD</code> combination
  26052. with default versions of the standard extensions.
  26053. </p>
  26054. </dd>
  26055. <dt><span class="roman">Tag_RISCV_unaligned_access (6)</span></dt>
  26056. <dd><p>Tag_RISCV_unaligned_access is 0 for files that do not allow any unaligned
  26057. memory accesses, and 1 for files that do allow unaligned memory accesses.
  26058. </p>
  26059. </dd>
  26060. <dt><span class="roman">Tag_RISCV_priv_spec (8)</span></dt>
  26061. <dt><span class="roman">Tag_RISCV_priv_spec_minor (10)</span></dt>
  26062. <dt><span class="roman">Tag_RISCV_priv_spec_revision (12)</span></dt>
  26063. <dd><p>Tag_RISCV_priv_spec contains the major/minor/revision version information of
  26064. the privileged specification. It will report errors if object files of
  26065. different privileged specification versions are merged.
  26066. </p>
  26067. </dd>
  26068. </dl>
  26069. <hr>
  26070. <span id="RISC_002dV_002dCustomExts"></span><div class="header">
  26071. <p>
  26072. Previous: <a href="#RISC_002dV_002dATTRIBUTE" accesskey="p" rel="prev">RISC-V-ATTRIBUTE</a>, Up: <a href="#RISC_002dV_002dDependent" accesskey="u" rel="up">RISC-V-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26073. </div>
  26074. <span id="RISC_002dV-Custom-_0028Vendor_002dDefined_0029-Extensions"></span><h4 class="subsection">9.39.7 RISC-V Custom (Vendor-Defined) Extensions</h4>
  26075. <span id="index-custom-_0028vendor_002ddefined_0029-extensions_002c-RISC_002dV"></span>
  26076. <span id="index-RISC_002dV-custom-_0028vendor_002ddefined_0029-extensions"></span>
  26077. <p>The following table lists the custom (vendor-defined) RISC-V
  26078. extensions supported and provides the location of their
  26079. publicly-released documentation:
  26080. </p>
  26081. <dl compact="compact">
  26082. <dt><span class="roman">Xcvmac</span></dt>
  26083. <dd><p>The Xcvmac extension provides instructions for multiply-accumulate operations.
  26084. </p>
  26085. <p>It is documented in <a href="https://docs.openhwgroup.org/projects/cv32e40p-user-manual/en/latest/instruction_set_extensions.html">https://docs.openhwgroup.org/projects/cv32e40p-user-manual/en/latest/instruction_set_extensions.html</a>
  26086. </p>
  26087. </dd>
  26088. <dt><span class="roman">Xcvalu</span></dt>
  26089. <dd><p>The Xcvalu extension provides instructions for general ALU operations.
  26090. </p>
  26091. <p>It is documented in <a href="https://docs.openhwgroup.org/projects/cv32e40p-user-manual/en/latest/instruction_set_extensions.html">https://docs.openhwgroup.org/projects/cv32e40p-user-manual/en/latest/instruction_set_extensions.html</a>
  26092. </p>
  26093. </dd>
  26094. <dt><span class="roman">XTheadBa</span></dt>
  26095. <dd><p>The XTheadBa extension provides instructions for address calculations.
  26096. </p>
  26097. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf</a>.
  26098. </p>
  26099. </dd>
  26100. <dt><span class="roman">XTheadBb</span></dt>
  26101. <dd><p>The XTheadBb extension provides instructions for basic bit-manipulation
  26102. </p>
  26103. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf</a>.
  26104. </p>
  26105. </dd>
  26106. <dt><span class="roman">XTheadBs</span></dt>
  26107. <dd><p>The XTheadBs extension provides single-bit instructions.
  26108. </p>
  26109. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf</a>.
  26110. </p>
  26111. </dd>
  26112. <dt><span class="roman">XTheadCmo</span></dt>
  26113. <dd><p>The XTheadCmo extension provides instructions for cache management.
  26114. </p>
  26115. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf</a>.
  26116. </p>
  26117. </dd>
  26118. <dt><span class="roman">XTheadCondMov</span></dt>
  26119. <dd><p>The XTheadCondMov extension provides instructions for conditional moves.
  26120. </p>
  26121. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf</a>.
  26122. </p>
  26123. </dd>
  26124. <dt><span class="roman">XTheadFMemIdx</span></dt>
  26125. <dd><p>The XTheadFMemIdx extension provides floating-point memory operations.
  26126. </p>
  26127. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf</a>.
  26128. </p>
  26129. </dd>
  26130. <dt><span class="roman">XTheadFmv</span></dt>
  26131. <dd><p>The XTheadFmv extension provides access to the upper 32 bits of a doulbe-precision floating point register.
  26132. </p>
  26133. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.1.0/xthead-2022-11-07-2.1.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.1.0/xthead-2022-11-07-2.1.0.pdf</a>.
  26134. </p>
  26135. </dd>
  26136. <dt><span class="roman">XTheadInt</span></dt>
  26137. <dd><p>The XTheadInt extension provides access to ISR stack management instructions.
  26138. </p>
  26139. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.1.0/xthead-2022-11-07-2.1.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.1.0/xthead-2022-11-07-2.1.0.pdf</a>.
  26140. </p>
  26141. </dd>
  26142. <dt><span class="roman">XTheadMac</span></dt>
  26143. <dd><p>The XTheadMac extension provides multiply-accumulate instructions.
  26144. </p>
  26145. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf</a>.
  26146. </p>
  26147. </dd>
  26148. <dt><span class="roman">XTheadMemIdx</span></dt>
  26149. <dd><p>The XTheadMemIdx extension provides GPR memory operations.
  26150. </p>
  26151. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf</a>.
  26152. </p>
  26153. </dd>
  26154. <dt><span class="roman">XTheadMemPair</span></dt>
  26155. <dd><p>The XTheadMemPair extension provides two-GP-register memory operations.
  26156. </p>
  26157. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf</a>.
  26158. </p>
  26159. </dd>
  26160. <dt><span class="roman">XTheadSync</span></dt>
  26161. <dd><p>The XTheadSync extension provides instructions for multi-processor synchronization.
  26162. </p>
  26163. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf</a>.
  26164. </p>
  26165. </dd>
  26166. <dt><span class="roman">XTheadVector</span></dt>
  26167. <dd><p>The XTheadVector extension provides instructions for thead vector.
  26168. </p>
  26169. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.3.0/xthead-2023-11-10-2.3.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.3.0/xthead-2023-11-10-2.3.0.pdf</a>.
  26170. </p>
  26171. </dd>
  26172. <dt><span class="roman">XTheadZvamo</span></dt>
  26173. <dd><p>The XTheadZvamo extension is a subextension of the XTheadVector extension,
  26174. and it provides AMO instructions for the T-Head VECTOR vendor extension.
  26175. </p>
  26176. <p>It is documented in <a href="https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.3.0/xthead-2023-11-10-2.3.0.pdf">https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.3.0/xthead-2023-11-10-2.3.0.pdf</a>.
  26177. </p>
  26178. </dd>
  26179. <dt><span class="roman">XVentanaCondOps</span></dt>
  26180. <dd><p>XVentanaCondOps extension provides instructions for branchless
  26181. sequences that perform conditional arithmetic, conditional
  26182. bitwise-logic, and conditional select operations.
  26183. </p>
  26184. <p>It is documented in <a href="https://github.com/ventanamicro/ventana-custom-extensions/releases/download/v1.0.0/ventana-custom-extensions-v1.0.0.pdf">https://github.com/ventanamicro/ventana-custom-extensions/releases/download/v1.0.0/ventana-custom-extensions-v1.0.0.pdf</a>.
  26185. </p>
  26186. </dd>
  26187. <dt><span class="roman">XSfVcp</span></dt>
  26188. <dd><p>The XSfVcp (VCIX) extension provides flexible instructions for extending
  26189. vector coprocessor. To accelerate performance, system designers may use
  26190. VCIX as a low-latency, high-throughput interface to a coprocessor.
  26191. </p>
  26192. <p>It is documented in <a href="https://sifive.cdn.prismic.io/sifive/c3829e36-8552-41f0-a841-79945784241b_vcix-spec-software.pdf">https://sifive.cdn.prismic.io/sifive/c3829e36-8552-41f0-a841-79945784241b_vcix-spec-software.pdf</a>.
  26193. </p>
  26194. </dd>
  26195. </dl>
  26196. <hr>
  26197. <span id="RL78_002dDependent"></span><div class="header">
  26198. <p>
  26199. Next: <a href="#RX_002dDependent" accesskey="n" rel="next">RX-Dependent</a>, Previous: <a href="#RISC_002dV_002dDependent" accesskey="p" rel="prev">RISC-V-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26200. </div>
  26201. <span id="RL78-Dependent-Features"></span><h3 class="section">9.40 RL78 Dependent Features</h3>
  26202. <span id="index-RL78-support"></span>
  26203. <table class="menu" border="0" cellspacing="0">
  26204. <tr><td align="left" valign="top">&bull; <a href="#RL78_002dOpts" accesskey="1">RL78-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RL78 Assembler Command-line Options
  26205. </td></tr>
  26206. <tr><td align="left" valign="top">&bull; <a href="#RL78_002dModifiers" accesskey="2">RL78-Modifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbolic Operand Modifiers
  26207. </td></tr>
  26208. <tr><td align="left" valign="top">&bull; <a href="#RL78_002dDirectives" accesskey="3">RL78-Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Directives
  26209. </td></tr>
  26210. <tr><td align="left" valign="top">&bull; <a href="#RL78_002dSyntax" accesskey="4">RL78-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  26211. </td></tr>
  26212. </table>
  26213. <hr>
  26214. <span id="RL78_002dOpts"></span><div class="header">
  26215. <p>
  26216. Next: <a href="#RL78_002dModifiers" accesskey="n" rel="next">RL78-Modifiers</a>, Up: <a href="#RL78_002dDependent" accesskey="u" rel="up">RL78-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26217. </div>
  26218. <span id="RL78-Options"></span><h4 class="subsection">9.40.1 RL78 Options</h4>
  26219. <span id="index-options_002c-RL78"></span>
  26220. <span id="index-RL78-options"></span>
  26221. <dl compact="compact">
  26222. <dt><code>relax</code></dt>
  26223. <dd><p>Enable support for link-time relaxation.
  26224. </p>
  26225. </dd>
  26226. <dt><code>norelax</code></dt>
  26227. <dd><p>Disable support for link-time relaxation (default).
  26228. </p>
  26229. </dd>
  26230. <dt><code>mg10</code></dt>
  26231. <dd><p>Mark the generated binary as targeting the G10 variant of the RL78
  26232. architecture.
  26233. </p>
  26234. </dd>
  26235. <dt><code>mg13</code></dt>
  26236. <dd><p>Mark the generated binary as targeting the G13 variant of the RL78
  26237. architecture.
  26238. </p>
  26239. </dd>
  26240. <dt><code>mg14</code></dt>
  26241. <dt><code>mrl78</code></dt>
  26242. <dd><p>Mark the generated binary as targeting the G14 variant of the RL78
  26243. architecture. This is the default.
  26244. </p>
  26245. </dd>
  26246. <dt><code>m32bit-doubles</code></dt>
  26247. <dd><p>Mark the generated binary as one that uses 32-bits to hold the
  26248. <code>double</code> floating point type. This is the default.
  26249. </p>
  26250. </dd>
  26251. <dt><code>m64bit-doubles</code></dt>
  26252. <dd><p>Mark the generated binary as one that uses 64-bits to hold the
  26253. <code>double</code> floating point type.
  26254. </p>
  26255. </dd>
  26256. </dl>
  26257. <hr>
  26258. <span id="RL78_002dModifiers"></span><div class="header">
  26259. <p>
  26260. Next: <a href="#RL78_002dDirectives" accesskey="n" rel="next">RL78-Directives</a>, Previous: <a href="#RL78_002dOpts" accesskey="p" rel="prev">RL78-Opts</a>, Up: <a href="#RL78_002dDependent" accesskey="u" rel="up">RL78-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26261. </div>
  26262. <span id="Symbolic-Operand-Modifiers-2"></span><h4 class="subsection">9.40.2 Symbolic Operand Modifiers</h4>
  26263. <span id="index-RL78-modifiers"></span>
  26264. <span id="index-syntax_002c-RL78"></span>
  26265. <p>The RL78 has three modifiers that adjust the relocations used by the
  26266. linker:
  26267. </p>
  26268. <dl compact="compact">
  26269. <dt><code>%lo16()</code></dt>
  26270. <dd>
  26271. <p>When loading a 20-bit (or wider) address into registers, this modifier
  26272. selects the 16 least significant bits.
  26273. </p>
  26274. <div class="example">
  26275. <pre class="example"> movw ax,#%lo16(_sym)
  26276. </pre></div>
  26277. </dd>
  26278. <dt><code>%hi16()</code></dt>
  26279. <dd>
  26280. <p>When loading a 20-bit (or wider) address into registers, this modifier
  26281. selects the 16 most significant bits.
  26282. </p>
  26283. <div class="example">
  26284. <pre class="example"> movw ax,#%hi16(_sym)
  26285. </pre></div>
  26286. </dd>
  26287. <dt><code>%hi8()</code></dt>
  26288. <dd>
  26289. <p>When loading a 20-bit (or wider) address into registers, this modifier
  26290. selects the 8 bits that would go into CS or ES (i.e. bits 23..16).
  26291. </p>
  26292. <div class="example">
  26293. <pre class="example"> mov es, #%hi8(_sym)
  26294. </pre></div>
  26295. </dd>
  26296. </dl>
  26297. <hr>
  26298. <span id="RL78_002dDirectives"></span><div class="header">
  26299. <p>
  26300. Next: <a href="#RL78_002dSyntax" accesskey="n" rel="next">RL78-Syntax</a>, Previous: <a href="#RL78_002dModifiers" accesskey="p" rel="prev">RL78-Modifiers</a>, Up: <a href="#RL78_002dDependent" accesskey="u" rel="up">RL78-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26301. </div>
  26302. <span id="Assembler-Directives-5"></span><h4 class="subsection">9.40.3 Assembler Directives</h4>
  26303. <span id="index-assembler-directives_002c-RL78"></span>
  26304. <span id="index-RL78-assembler-directives"></span>
  26305. <p>In addition to the common directives, the RL78 adds these:
  26306. </p>
  26307. <dl compact="compact">
  26308. <dt><code>.double</code></dt>
  26309. <dd><p>Output a constant in &ldquo;double&rdquo; format, which is either a 32-bit
  26310. or a 64-bit floating point value, depending upon the setting of the
  26311. <samp>-m32bit-doubles</samp>|<samp>-m64bit-doubles</samp> command-line
  26312. option.
  26313. </p>
  26314. </dd>
  26315. <dt><code>.bss</code></dt>
  26316. <dd><p>Select the BSS section.
  26317. </p>
  26318. </dd>
  26319. <dt><code>.3byte</code></dt>
  26320. <dd><p>Output a constant value in a three byte format.
  26321. </p>
  26322. </dd>
  26323. <dt><code>.int</code></dt>
  26324. <dt><code>.word</code></dt>
  26325. <dd><p>Output a constant value in a four byte format.
  26326. </p>
  26327. </dd>
  26328. </dl>
  26329. <hr>
  26330. <span id="RL78_002dSyntax"></span><div class="header">
  26331. <p>
  26332. Previous: <a href="#RL78_002dDirectives" accesskey="p" rel="prev">RL78-Directives</a>, Up: <a href="#RL78_002dDependent" accesskey="u" rel="up">RL78-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26333. </div>
  26334. <span id="Syntax-for-the-RL78"></span><h4 class="subsection">9.40.4 Syntax for the RL78</h4>
  26335. <table class="menu" border="0" cellspacing="0">
  26336. <tr><td align="left" valign="top">&bull; <a href="#RL78_002dChars" accesskey="1">RL78-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  26337. </td></tr>
  26338. </table>
  26339. <hr>
  26340. <span id="RL78_002dChars"></span><div class="header">
  26341. <p>
  26342. Up: <a href="#RL78_002dSyntax" accesskey="u" rel="up">RL78-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26343. </div>
  26344. <span id="Special-Characters-29"></span><h4 class="subsubsection">9.40.4.1 Special Characters</h4>
  26345. <span id="index-line-comment-character_002c-RL78"></span>
  26346. <span id="index-RL78-line-comment-character"></span>
  26347. <p>The presence of a &lsquo;<samp>;</samp>&rsquo; appearing anywhere on a line indicates the
  26348. start of a comment that extends to the end of that line.
  26349. </p>
  26350. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  26351. line is treated as a comment, but in this case the line can also be a
  26352. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  26353. control command (see <a href="#Preprocessing">Preprocessing</a>).
  26354. </p>
  26355. <span id="index-line-separator_002c-RL78"></span>
  26356. <span id="index-statement-separator_002c-RL78"></span>
  26357. <span id="index-RL78-line-separator"></span>
  26358. <p>The &lsquo;<samp>|</samp>&rsquo; character can be used to separate statements on the same
  26359. line.
  26360. </p>
  26361. <hr>
  26362. <span id="RX_002dDependent"></span><div class="header">
  26363. <p>
  26364. Next: <a href="#S_002f390_002dDependent" accesskey="n" rel="next">S/390-Dependent</a>, Previous: <a href="#RL78_002dDependent" accesskey="p" rel="prev">RL78-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26365. </div>
  26366. <span id="RX-Dependent-Features"></span><h3 class="section">9.41 RX Dependent Features</h3>
  26367. <span id="index-RX-support"></span>
  26368. <table class="menu" border="0" cellspacing="0">
  26369. <tr><td align="left" valign="top">&bull; <a href="#RX_002dOpts" accesskey="1">RX-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">RX Assembler Command-line Options
  26370. </td></tr>
  26371. <tr><td align="left" valign="top">&bull; <a href="#RX_002dModifiers" accesskey="2">RX-Modifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbolic Operand Modifiers
  26372. </td></tr>
  26373. <tr><td align="left" valign="top">&bull; <a href="#RX_002dDirectives" accesskey="3">RX-Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Directives
  26374. </td></tr>
  26375. <tr><td align="left" valign="top">&bull; <a href="#RX_002dFloat" accesskey="4">RX-Float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  26376. </td></tr>
  26377. <tr><td align="left" valign="top">&bull; <a href="#RX_002dSyntax" accesskey="5">RX-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  26378. </td></tr>
  26379. </table>
  26380. <hr>
  26381. <span id="RX_002dOpts"></span><div class="header">
  26382. <p>
  26383. Next: <a href="#RX_002dModifiers" accesskey="n" rel="next">RX-Modifiers</a>, Up: <a href="#RX_002dDependent" accesskey="u" rel="up">RX-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26384. </div>
  26385. <span id="RX-Options"></span><h4 class="subsection">9.41.1 RX Options</h4>
  26386. <span id="index-options_002c-RX"></span>
  26387. <span id="index-RX-options"></span>
  26388. <p>The Renesas RX port of <code>as</code> has a few target specific
  26389. command-line options:
  26390. </p>
  26391. <dl compact="compact">
  26392. <dd>
  26393. <span id="index-_002dm32bit_002ddoubles"></span>
  26394. </dd>
  26395. <dt><code>-m32bit-doubles</code></dt>
  26396. <dd><p>This option controls the ABI and indicates to use a 32-bit float ABI.
  26397. It has no effect on the assembled instructions, but it does influence
  26398. the behaviour of the &lsquo;<samp>.double</samp>&rsquo; pseudo-op.
  26399. This is the default.
  26400. </p>
  26401. <span id="index-_002dm64bit_002ddoubles"></span>
  26402. </dd>
  26403. <dt><code>-m64bit-doubles</code></dt>
  26404. <dd><p>This option controls the ABI and indicates to use a 64-bit float ABI.
  26405. It has no effect on the assembled instructions, but it does influence
  26406. the behaviour of the &lsquo;<samp>.double</samp>&rsquo; pseudo-op.
  26407. </p>
  26408. <span id="index-_002dmbig_002dendian"></span>
  26409. </dd>
  26410. <dt><code>-mbig-endian</code></dt>
  26411. <dd><p>This option controls the ABI and indicates to use a big-endian data
  26412. ABI. It has no effect on the assembled instructions, but it does
  26413. influence the behaviour of the &lsquo;<samp>.short</samp>&rsquo;, &lsquo;<samp>.hword</samp>&rsquo;, &lsquo;<samp>.int</samp>&rsquo;,
  26414. &lsquo;<samp>.word</samp>&rsquo;, &lsquo;<samp>.long</samp>&rsquo;, &lsquo;<samp>.quad</samp>&rsquo; and &lsquo;<samp>.octa</samp>&rsquo; pseudo-ops.
  26415. </p>
  26416. <span id="index-_002dmlittle_002dendian"></span>
  26417. </dd>
  26418. <dt><code>-mlittle-endian</code></dt>
  26419. <dd><p>This option controls the ABI and indicates to use a little-endian data
  26420. ABI. It has no effect on the assembled instructions, but it does
  26421. influence the behaviour of the &lsquo;<samp>.short</samp>&rsquo;, &lsquo;<samp>.hword</samp>&rsquo;, &lsquo;<samp>.int</samp>&rsquo;,
  26422. &lsquo;<samp>.word</samp>&rsquo;, &lsquo;<samp>.long</samp>&rsquo;, &lsquo;<samp>.quad</samp>&rsquo; and &lsquo;<samp>.octa</samp>&rsquo; pseudo-ops.
  26423. This is the default.
  26424. </p>
  26425. <span id="index-_002dmuse_002dconventional_002dsection_002dnames"></span>
  26426. </dd>
  26427. <dt><code>-muse-conventional-section-names</code></dt>
  26428. <dd><p>This option controls the default names given to the code (.text),
  26429. initialised data (.data) and uninitialised data sections (.bss).
  26430. </p>
  26431. <span id="index-_002dmuse_002drenesas_002dsection_002dnames"></span>
  26432. </dd>
  26433. <dt><code>-muse-renesas-section-names</code></dt>
  26434. <dd><p>This option controls the default names given to the code (P),
  26435. initialised data (D_1) and uninitialised data sections (B_1).
  26436. This is the default.
  26437. </p>
  26438. <span id="index-_002dmsmall_002ddata_002dlimit"></span>
  26439. </dd>
  26440. <dt><code>-msmall-data-limit</code></dt>
  26441. <dd><p>This option tells the assembler that the small data limit feature of
  26442. the RX port of GCC is being used. This results in the assembler
  26443. generating an undefined reference to a symbol called <code>__gp</code> for
  26444. use by the relocations that are needed to support the small data limit
  26445. feature. This option is not enabled by default as it would otherwise
  26446. pollute the symbol table.
  26447. </p>
  26448. <span id="index-_002dmpid"></span>
  26449. </dd>
  26450. <dt><code>-mpid</code></dt>
  26451. <dd><p>This option tells the assembler that the position independent data of the
  26452. RX port of GCC is being used. This results in the assembler
  26453. generating an undefined reference to a symbol called <code>__pid_base</code>,
  26454. and also setting the RX_PID flag bit in the e_flags field of the ELF
  26455. header of the object file.
  26456. </p>
  26457. <span id="index-_002dmint_002dregister"></span>
  26458. </dd>
  26459. <dt><code>-mint-register=<var>num</var></code></dt>
  26460. <dd><p>This option tells the assembler how many registers have been reserved
  26461. for use by interrupt handlers. This is needed in order to compute the
  26462. correct values for the <code>%gpreg</code> and <code>%pidreg</code> meta registers.
  26463. </p>
  26464. <span id="index-_002dmgcc_002dabi"></span>
  26465. </dd>
  26466. <dt><code>-mgcc-abi</code></dt>
  26467. <dd><p>This option tells the assembler that the old GCC ABI is being used by
  26468. the assembled code. With this version of the ABI function arguments
  26469. that are passed on the stack are aligned to a 32-bit boundary.
  26470. </p>
  26471. <span id="index-_002dmrx_002dabi"></span>
  26472. </dd>
  26473. <dt><code>-mrx-abi</code></dt>
  26474. <dd><p>This option tells the assembler that the official RX ABI is being used
  26475. by the assembled code. With this version of the ABI function
  26476. arguments that are passed on the stack are aligned to their natural
  26477. alignments. This option is the default.
  26478. </p>
  26479. <span id="index-_002dmcpu_003d"></span>
  26480. </dd>
  26481. <dt><code>-mcpu=<var>name</var></code></dt>
  26482. <dd><p>This option tells the assembler the target CPU type. Currently the
  26483. <code>rx100</code>, <code>rx200</code>, <code>rx600</code>, <code>rx610</code>, <code>rxv2</code>,
  26484. <code>rxv3</code> and <code>rxv3-dfpu</code> are recognised as valid cpu names.
  26485. Attempting to assemble an instructionnot supported by the indicated
  26486. cpu type will result in an error message being generated.
  26487. </p>
  26488. <span id="index-_002dmno_002dallow_002dstring_002dinsns"></span>
  26489. </dd>
  26490. <dt><code>-mno-allow-string-insns</code></dt>
  26491. <dd><p>This option tells the assembler to mark the object file that it is
  26492. building as one that does not use the string instructions
  26493. <code>SMOVF</code>, <code>SCMPU</code>, <code>SMOVB</code>, <code>SMOVU</code>, <code>SUNTIL</code>
  26494. <code>SWHILE</code> or the <code>RMPA</code> instruction. In addition the mark
  26495. tells the linker to complain if an attempt is made to link the binary
  26496. with another one that does use any of these instructions.
  26497. </p>
  26498. <p>Note - the inverse of this option, <code>-mallow-string-insns</code>, is
  26499. not needed. The assembler automatically detects the use of the
  26500. the instructions in the source code and labels the resulting
  26501. object file appropriately. If no string instructions are detected
  26502. then the object file is labelled as being one that can be linked with
  26503. either string-using or string-banned object files.
  26504. </p></dd>
  26505. </dl>
  26506. <hr>
  26507. <span id="RX_002dModifiers"></span><div class="header">
  26508. <p>
  26509. Next: <a href="#RX_002dDirectives" accesskey="n" rel="next">RX-Directives</a>, Previous: <a href="#RX_002dOpts" accesskey="p" rel="prev">RX-Opts</a>, Up: <a href="#RX_002dDependent" accesskey="u" rel="up">RX-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26510. </div>
  26511. <span id="Symbolic-Operand-Modifiers-3"></span><h4 class="subsection">9.41.2 Symbolic Operand Modifiers</h4>
  26512. <span id="index-RX-modifiers"></span>
  26513. <span id="index-syntax_002c-RX"></span>
  26514. <span id="index-_0025gp"></span>
  26515. <p>The assembler supports one modifier when using symbol addresses
  26516. in RX instruction operands. The general syntax is the following:
  26517. </p>
  26518. <div class="example">
  26519. <pre class="example">%gp(symbol)
  26520. </pre></div>
  26521. <p>The modifier returns the offset from the <var>__gp</var> symbol to the
  26522. specified symbol as a 16-bit value. The intent is that this offset
  26523. should be used in a register+offset move instruction when generating
  26524. references to small data. Ie, like this:
  26525. </p>
  26526. <div class="example">
  26527. <pre class="example"> mov.W %gp(_foo)[%gpreg], r1
  26528. </pre></div>
  26529. <p>The assembler also supports two meta register names which can be used
  26530. to refer to registers whose values may not be known to the
  26531. programmer. These meta register names are:
  26532. </p>
  26533. <dl compact="compact">
  26534. <dd>
  26535. <span id="index-_0025gpreg"></span>
  26536. </dd>
  26537. <dt><code>%gpreg</code></dt>
  26538. <dd><p>The small data address register.
  26539. </p>
  26540. <span id="index-_0025pidreg"></span>
  26541. </dd>
  26542. <dt><code>%pidreg</code></dt>
  26543. <dd><p>The PID base address register.
  26544. </p>
  26545. </dd>
  26546. </dl>
  26547. <p>Both registers normally have the value r13, but this can change if
  26548. some registers have been reserved for use by interrupt handlers or if
  26549. both the small data limit and position independent data features are
  26550. being used at the same time.
  26551. </p>
  26552. <hr>
  26553. <span id="RX_002dDirectives"></span><div class="header">
  26554. <p>
  26555. Next: <a href="#RX_002dFloat" accesskey="n" rel="next">RX-Float</a>, Previous: <a href="#RX_002dModifiers" accesskey="p" rel="prev">RX-Modifiers</a>, Up: <a href="#RX_002dDependent" accesskey="u" rel="up">RX-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26556. </div>
  26557. <span id="Assembler-Directives-6"></span><h4 class="subsection">9.41.3 Assembler Directives</h4>
  26558. <span id="index-assembler-directives_002c-RX"></span>
  26559. <span id="index-RX-assembler-directives"></span>
  26560. <p>The RX version of <code>as</code> has the following specific
  26561. assembler directives:
  26562. </p>
  26563. <dl compact="compact">
  26564. <dt><code>.3byte</code></dt>
  26565. <dd><span id="index-assembler-directive-_002e3byte_002c-RX"></span>
  26566. <span id="index-RX-assembler-directive-_002e3byte"></span>
  26567. <p>Inserts a 3-byte value into the output file at the current location.
  26568. </p>
  26569. </dd>
  26570. <dt><code>.fetchalign</code></dt>
  26571. <dd><span id="index-assembler-directive-_002efetchalign_002c-RX"></span>
  26572. <span id="index-RX-assembler-directive-_002efetchalign"></span>
  26573. <p>If the next opcode following this directive spans a fetch line
  26574. boundary (8 byte boundary), the opcode is aligned to that boundary.
  26575. If the next opcode does not span a fetch line, this directive has no
  26576. effect. Note that one or more labels may be between this directive
  26577. and the opcode; those labels are aligned as well. Any inserted bytes
  26578. due to alignment will form a NOP opcode.
  26579. </p>
  26580. </dd>
  26581. </dl>
  26582. <hr>
  26583. <span id="RX_002dFloat"></span><div class="header">
  26584. <p>
  26585. Next: <a href="#RX_002dSyntax" accesskey="n" rel="next">RX-Syntax</a>, Previous: <a href="#RX_002dDirectives" accesskey="p" rel="prev">RX-Directives</a>, Up: <a href="#RX_002dDependent" accesskey="u" rel="up">RX-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26586. </div>
  26587. <span id="Floating-Point-12"></span><h4 class="subsection">9.41.4 Floating Point</h4>
  26588. <span id="index-floating-point_002c-RX"></span>
  26589. <span id="index-RX-floating-point"></span>
  26590. <p>The floating point formats generated by directives are these.
  26591. </p>
  26592. <dl compact="compact">
  26593. <dd><span id="index-float-directive_002c-RX"></span>
  26594. </dd>
  26595. <dt><code>.float</code></dt>
  26596. <dd><p><code>Single</code> precision (32-bit) floating point constants.
  26597. </p>
  26598. <span id="index-double-directive_002c-RX"></span>
  26599. </dd>
  26600. <dt><code>.double</code></dt>
  26601. <dd><p>If the <samp>-m64bit-doubles</samp> command-line option has been specified
  26602. then then <code>double</code> directive generates <code>double</code> precision
  26603. (64-bit) floating point constants, otherwise it generates
  26604. <code>single</code> precision (32-bit) floating point constants. To force
  26605. the generation of 64-bit floating point constants used the <code>dc.d</code>
  26606. directive instead.
  26607. </p>
  26608. </dd>
  26609. </dl>
  26610. <hr>
  26611. <span id="RX_002dSyntax"></span><div class="header">
  26612. <p>
  26613. Previous: <a href="#RX_002dFloat" accesskey="p" rel="prev">RX-Float</a>, Up: <a href="#RX_002dDependent" accesskey="u" rel="up">RX-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26614. </div>
  26615. <span id="Syntax-for-the-RX"></span><h4 class="subsection">9.41.5 Syntax for the RX</h4>
  26616. <table class="menu" border="0" cellspacing="0">
  26617. <tr><td align="left" valign="top">&bull; <a href="#RX_002dChars" accesskey="1">RX-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  26618. </td></tr>
  26619. </table>
  26620. <hr>
  26621. <span id="RX_002dChars"></span><div class="header">
  26622. <p>
  26623. Up: <a href="#RX_002dSyntax" accesskey="u" rel="up">RX-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26624. </div>
  26625. <span id="Special-Characters-30"></span><h4 class="subsubsection">9.41.5.1 Special Characters</h4>
  26626. <span id="index-line-comment-character_002c-RX"></span>
  26627. <span id="index-RX-line-comment-character"></span>
  26628. <p>The presence of a &lsquo;<samp>;</samp>&rsquo; appearing anywhere on a line indicates the
  26629. start of a comment that extends to the end of that line.
  26630. </p>
  26631. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  26632. line is treated as a comment, but in this case the line can also be a
  26633. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  26634. control command (see <a href="#Preprocessing">Preprocessing</a>).
  26635. </p>
  26636. <span id="index-line-separator_002c-RX"></span>
  26637. <span id="index-statement-separator_002c-RX"></span>
  26638. <span id="index-RX-line-separator"></span>
  26639. <p>The &lsquo;<samp>!</samp>&rsquo; character can be used to separate statements on the same
  26640. line.
  26641. </p>
  26642. <hr>
  26643. <span id="S_002f390_002dDependent"></span><div class="header">
  26644. <p>
  26645. Next: <a href="#SCORE_002dDependent" accesskey="n" rel="next">SCORE-Dependent</a>, Previous: <a href="#RX_002dDependent" accesskey="p" rel="prev">RX-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26646. </div>
  26647. <span id="IBM-S_002f390-Dependent-Features"></span><h3 class="section">9.42 IBM S/390 Dependent Features</h3>
  26648. <span id="index-s390-support"></span>
  26649. <p>The s390 version of <code>as</code> supports two architectures modes
  26650. and eleven chip levels. The architecture modes are the Enterprise System
  26651. Architecture (ESA) and the newer z/Architecture mode. The chip levels
  26652. are g5 (or arch3), g6, z900 (or arch5), z990 (or arch6), z9-109, z9-ec
  26653. (or arch7), z10 (or arch8), z196 (or arch9), zEC12 (or arch10), z13
  26654. (or arch11), z14 (or arch12), z15 (or arch13), or z16 (or arch14).
  26655. </p>
  26656. <table class="menu" border="0" cellspacing="0">
  26657. <tr><td align="left" valign="top">&bull; <a href="#s390-Options" accesskey="1">s390 Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command-line Options.
  26658. </td></tr>
  26659. <tr><td align="left" valign="top">&bull; <a href="#s390-Characters" accesskey="2">s390 Characters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters.
  26660. </td></tr>
  26661. <tr><td align="left" valign="top">&bull; <a href="#s390-Syntax" accesskey="3">s390 Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Instruction syntax.
  26662. </td></tr>
  26663. <tr><td align="left" valign="top">&bull; <a href="#s390-Directives" accesskey="4">s390 Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Directives.
  26664. </td></tr>
  26665. <tr><td align="left" valign="top">&bull; <a href="#s390-Floating-Point" accesskey="5">s390 Floating Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point.
  26666. </td></tr>
  26667. </table>
  26668. <hr>
  26669. <span id="s390-Options"></span><div class="header">
  26670. <p>
  26671. Next: <a href="#s390-Characters" accesskey="n" rel="next">s390 Characters</a>, Up: <a href="#S_002f390_002dDependent" accesskey="u" rel="up">S/390-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26672. </div>
  26673. <span id="Options-22"></span><h4 class="subsection">9.42.1 Options</h4>
  26674. <span id="index-options-for-s390"></span>
  26675. <span id="index-s390-options"></span>
  26676. <p>The following table lists all available s390 specific options:
  26677. </p>
  26678. <dl compact="compact">
  26679. <dd><span id="index-_002dm31-option_002c-s390"></span>
  26680. <span id="index-_002dm64-option_002c-s390"></span>
  26681. </dd>
  26682. <dt><code>-m31 | -m64</code></dt>
  26683. <dd><p>Select 31- or 64-bit ABI implying a word size of 32- or 64-bit.
  26684. </p>
  26685. <p>These options are only available with the ELF object file format, and
  26686. require that the necessary BFD support has been included (on a 31-bit
  26687. platform you must add &ndash;enable-64-bit-bfd on the call to the configure
  26688. script to enable 64-bit usage and use s390x as target platform).
  26689. </p>
  26690. <span id="index-_002dmesa-option_002c-s390"></span>
  26691. <span id="index-_002dmzarch-option_002c-s390"></span>
  26692. </dd>
  26693. <dt><code>-mesa | -mzarch</code></dt>
  26694. <dd><p>Select the architecture mode, either the Enterprise System Architecture
  26695. (esa) mode or the z/Architecture mode (zarch).
  26696. </p>
  26697. <p>The 64-bit instructions are only available with the z/Architecture mode.
  26698. The combination of &lsquo;<samp>-m64</samp>&rsquo; and &lsquo;<samp>-mesa</samp>&rsquo; results in a warning
  26699. message.
  26700. </p>
  26701. <span id="index-_002dmarch_003d-option_002c-s390"></span>
  26702. </dd>
  26703. <dt><code>-march=<var>CPU</var></code></dt>
  26704. <dd><p>This option specifies the target processor. The following processor names
  26705. are recognized:
  26706. <code>g5</code> (or <code>arch3</code>),
  26707. <code>g6</code>,
  26708. <code>z900</code> (or <code>arch5</code>),
  26709. <code>z990</code> (or <code>arch6</code>),
  26710. <code>z9-109</code>,
  26711. <code>z9-ec</code> (or <code>arch7</code>),
  26712. <code>z10</code> (or <code>arch8</code>),
  26713. <code>z196</code> (or <code>arch9</code>),
  26714. <code>zEC12</code> (or <code>arch10</code>),
  26715. <code>z13</code> (or <code>arch11</code>),
  26716. <code>z14</code> (or <code>arch12</code>),
  26717. <code>z15</code> (or <code>arch13</code>), and
  26718. <code>z16</code> (or <code>arch14</code>).
  26719. </p>
  26720. <p>Assembling an instruction that is not supported on the target
  26721. processor results in an error message.
  26722. </p>
  26723. <p>The processor names starting with <code>arch</code> refer to the edition
  26724. number in the Principle of Operations manual. They can be used as
  26725. alternate processor names and have been added for compatibility with
  26726. the IBM XL compiler.
  26727. </p>
  26728. <p><code>arch3</code>, <code>g5</code> and <code>g6</code> cannot be used with the
  26729. &lsquo;<samp>-mzarch</samp>&rsquo; option since the z/Architecture mode is not supported
  26730. on these processor levels.
  26731. </p>
  26732. <p>There is no <code>arch4</code> option supported. <code>arch4</code> matches
  26733. <code>-march=arch5 -mesa</code>.
  26734. </p>
  26735. <span id="index-_002dmregnames-option_002c-s390"></span>
  26736. </dd>
  26737. <dt><code>-mregnames</code></dt>
  26738. <dd><p>Allow symbolic names for registers.
  26739. </p>
  26740. <span id="index-_002dmno_002dregnames-option_002c-s390"></span>
  26741. </dd>
  26742. <dt><code>-mno-regnames</code></dt>
  26743. <dd><p>Do not allow symbolic names for registers.
  26744. </p>
  26745. <span id="index-_002dmwarn_002dareg_002dzero-option_002c-s390"></span>
  26746. </dd>
  26747. <dt><code>-mwarn-areg-zero</code></dt>
  26748. <dd><p>Warn whenever the operand for a base or index register has been specified
  26749. but evaluates to zero. This can indicate the misuse of general purpose
  26750. register 0 as an address register.
  26751. </p>
  26752. </dd>
  26753. </dl>
  26754. <hr>
  26755. <span id="s390-Characters"></span><div class="header">
  26756. <p>
  26757. Next: <a href="#s390-Syntax" accesskey="n" rel="next">s390 Syntax</a>, Previous: <a href="#s390-Options" accesskey="p" rel="prev">s390 Options</a>, Up: <a href="#S_002f390_002dDependent" accesskey="u" rel="up">S/390-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26758. </div>
  26759. <span id="Special-Characters-31"></span><h4 class="subsection">9.42.2 Special Characters</h4>
  26760. <span id="index-line-comment-character_002c-s390"></span>
  26761. <span id="index-s390-line-comment-character"></span>
  26762. <p>&lsquo;<samp>#</samp>&rsquo; is the line comment character.
  26763. </p>
  26764. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  26765. line is treated as a comment, but in this case the line could also be
  26766. a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  26767. control command (see <a href="#Preprocessing">Preprocessing</a>).
  26768. </p>
  26769. <span id="index-line-separator_002c-s390"></span>
  26770. <span id="index-statement-separator_002c-s390"></span>
  26771. <span id="index-s390-line-separator"></span>
  26772. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used instead of a newline to separate
  26773. statements.
  26774. </p>
  26775. <hr>
  26776. <span id="s390-Syntax"></span><div class="header">
  26777. <p>
  26778. Next: <a href="#s390-Directives" accesskey="n" rel="next">s390 Directives</a>, Previous: <a href="#s390-Characters" accesskey="p" rel="prev">s390 Characters</a>, Up: <a href="#S_002f390_002dDependent" accesskey="u" rel="up">S/390-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26779. </div>
  26780. <span id="Instruction-syntax"></span><h4 class="subsection">9.42.3 Instruction syntax</h4>
  26781. <span id="index-instruction-syntax_002c-s390"></span>
  26782. <span id="index-s390-instruction-syntax"></span>
  26783. <p>The assembler syntax closely follows the syntax outlined in
  26784. Enterprise Systems Architecture/390 Principles of Operation (SA22-7201)
  26785. and the z/Architecture Principles of Operation (SA22-7832).
  26786. </p>
  26787. <p>Each instruction has two major parts, the instruction mnemonic
  26788. and the instruction operands. The instruction format varies.
  26789. </p>
  26790. <table class="menu" border="0" cellspacing="0">
  26791. <tr><td align="left" valign="top">&bull; <a href="#s390-Register" accesskey="1">s390 Register</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Naming
  26792. </td></tr>
  26793. <tr><td align="left" valign="top">&bull; <a href="#s390-Mnemonics" accesskey="2">s390 Mnemonics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Instruction Mnemonics
  26794. </td></tr>
  26795. <tr><td align="left" valign="top">&bull; <a href="#s390-Operands" accesskey="3">s390 Operands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Instruction Operands
  26796. </td></tr>
  26797. <tr><td align="left" valign="top">&bull; <a href="#s390-Formats" accesskey="4">s390 Formats</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Instruction Formats
  26798. </td></tr>
  26799. <tr><td align="left" valign="top">&bull; <a href="#s390-Aliases" accesskey="5">s390 Aliases</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Instruction Aliases
  26800. </td></tr>
  26801. <tr><td align="left" valign="top">&bull; <a href="#s390-Operand-Modifier" accesskey="6">s390 Operand Modifier</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Instruction Operand Modifier
  26802. </td></tr>
  26803. <tr><td align="left" valign="top">&bull; <a href="#s390-Instruction-Marker" accesskey="7">s390 Instruction Marker</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Instruction Marker
  26804. </td></tr>
  26805. <tr><td align="left" valign="top">&bull; <a href="#s390-Literal-Pool-Entries" accesskey="8">s390 Literal Pool Entries</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal Pool Entries
  26806. </td></tr>
  26807. </table>
  26808. <hr>
  26809. <span id="s390-Register"></span><div class="header">
  26810. <p>
  26811. Next: <a href="#s390-Mnemonics" accesskey="n" rel="next">s390 Mnemonics</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26812. </div>
  26813. <span id="Register-naming"></span><h4 class="subsubsection">9.42.3.1 Register naming</h4>
  26814. <span id="index-register-naming_002c-s390"></span>
  26815. <span id="index-s390-register-naming"></span>
  26816. <p>The <code>as</code> recognizes a number of predefined symbols for the
  26817. various processor registers. A register specification in one of the
  26818. instruction formats is an unsigned integer between 0 and 15. The specific
  26819. instruction and the position of the register in the instruction format
  26820. denotes the type of the register. The register symbols are prefixed with
  26821. &lsquo;<samp>%</samp>&rsquo;:
  26822. </p>
  26823. <div class="display">
  26824. <table>
  26825. <tr><td><pre class="display">%rN</pre></td><td><pre class="display">the 16 general purpose registers, 0 &lt;= N &lt;= 15</pre></td></tr>
  26826. <tr><td><pre class="display">%fN</pre></td><td><pre class="display">the 16 floating point registers, 0 &lt;= N &lt;= 15</pre></td></tr>
  26827. <tr><td><pre class="display">%aN</pre></td><td><pre class="display">the 16 access registers, 0 &lt;= N &lt;= 15</pre></td></tr>
  26828. <tr><td><pre class="display">%cN</pre></td><td><pre class="display">the 16 control registers, 0 &lt;= N &lt;= 15</pre></td></tr>
  26829. <tr><td><pre class="display">%lit</pre></td><td><pre class="display">an alias for the general purpose register %r13</pre></td></tr>
  26830. <tr><td><pre class="display">%sp</pre></td><td><pre class="display">an alias for the general purpose register %r15</pre></td></tr>
  26831. </table>
  26832. </div>
  26833. <hr>
  26834. <span id="s390-Mnemonics"></span><div class="header">
  26835. <p>
  26836. Next: <a href="#s390-Operands" accesskey="n" rel="next">s390 Operands</a>, Previous: <a href="#s390-Register" accesskey="p" rel="prev">s390 Register</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26837. </div>
  26838. <span id="Instruction-Mnemonics"></span><h4 class="subsubsection">9.42.3.2 Instruction Mnemonics</h4>
  26839. <span id="index-instruction-mnemonics_002c-s390"></span>
  26840. <span id="index-s390-instruction-mnemonics"></span>
  26841. <p>All instructions documented in the Principles of Operation are supported
  26842. with the mnemonic and order of operands as described.
  26843. The instruction mnemonic identifies the instruction format
  26844. (<a href="#s390-Formats">s390 Formats</a>) and the specific operation code for the instruction.
  26845. For example, the &lsquo;<samp>lr</samp>&rsquo; mnemonic denotes the instruction format &lsquo;<samp>RR</samp>&rsquo;
  26846. with the operation code &lsquo;<samp>0x18</samp>&rsquo;.
  26847. </p>
  26848. <p>The definition of the various mnemonics follows a scheme, where the first
  26849. character usually hint at the type of the instruction:
  26850. </p>
  26851. <div class="display">
  26852. <table>
  26853. <tr><td><pre class="display">a</pre></td><td><pre class="display">add instruction, for example &lsquo;<samp>al</samp>&rsquo; for add logical 32-bit</pre></td></tr>
  26854. <tr><td><pre class="display">b</pre></td><td><pre class="display">branch instruction, for example &lsquo;<samp>bc</samp>&rsquo; for branch on condition</pre></td></tr>
  26855. <tr><td><pre class="display">c</pre></td><td><pre class="display">compare or convert instruction, for example &lsquo;<samp>cr</samp>&rsquo; for compare
  26856. register 32-bit</pre></td></tr>
  26857. <tr><td><pre class="display">d</pre></td><td><pre class="display">divide instruction, for example &lsquo;<samp>dlr</samp>&rsquo; divide logical register
  26858. 64-bit to 32-bit</pre></td></tr>
  26859. <tr><td><pre class="display">i</pre></td><td><pre class="display">insert instruction, for example &lsquo;<samp>ic</samp>&rsquo; insert character</pre></td></tr>
  26860. <tr><td><pre class="display">l</pre></td><td><pre class="display">load instruction, for example &lsquo;<samp>ltr</samp>&rsquo; load and test register</pre></td></tr>
  26861. <tr><td><pre class="display">mv</pre></td><td><pre class="display">move instruction, for example &lsquo;<samp>mvc</samp>&rsquo; move character</pre></td></tr>
  26862. <tr><td><pre class="display">m</pre></td><td><pre class="display">multiply instruction, for example &lsquo;<samp>mh</samp>&rsquo; multiply halfword</pre></td></tr>
  26863. <tr><td><pre class="display">n</pre></td><td><pre class="display">and instruction, for example &lsquo;<samp>ni</samp>&rsquo; and immediate</pre></td></tr>
  26864. <tr><td><pre class="display">o</pre></td><td><pre class="display">or instruction, for example &lsquo;<samp>oc</samp>&rsquo; or character</pre></td></tr>
  26865. <tr><td><pre class="display">sla, sll</pre></td><td><pre class="display">shift left single instruction</pre></td></tr>
  26866. <tr><td><pre class="display">sra, srl</pre></td><td><pre class="display">shift right single instruction</pre></td></tr>
  26867. <tr><td><pre class="display">st</pre></td><td><pre class="display">store instruction, for example &lsquo;<samp>stm</samp>&rsquo; store multiple</pre></td></tr>
  26868. <tr><td><pre class="display">s</pre></td><td><pre class="display">subtract instruction, for example &lsquo;<samp>slr</samp>&rsquo; subtract
  26869. logical 32-bit</pre></td></tr>
  26870. <tr><td><pre class="display">t</pre></td><td><pre class="display">test or translate instruction, of example &lsquo;<samp>tm</samp>&rsquo; test under mask</pre></td></tr>
  26871. <tr><td><pre class="display">x</pre></td><td><pre class="display">exclusive or instruction, for example &lsquo;<samp>xc</samp>&rsquo; exclusive or
  26872. character</pre></td></tr>
  26873. </table>
  26874. </div>
  26875. <p>Certain characters at the end of the mnemonic may describe a property
  26876. of the instruction:
  26877. </p>
  26878. <div class="display">
  26879. <table>
  26880. <tr><td><pre class="display">c</pre></td><td><pre class="display">the instruction uses a 8-bit character operand</pre></td></tr>
  26881. <tr><td><pre class="display">f</pre></td><td><pre class="display">the instruction extends a 32-bit operand to 64 bit</pre></td></tr>
  26882. <tr><td><pre class="display">g</pre></td><td><pre class="display">the operands are treated as 64-bit values</pre></td></tr>
  26883. <tr><td><pre class="display">h</pre></td><td><pre class="display">the operand uses a 16-bit halfword operand</pre></td></tr>
  26884. <tr><td><pre class="display">i</pre></td><td><pre class="display">the instruction uses an immediate operand</pre></td></tr>
  26885. <tr><td><pre class="display">l</pre></td><td><pre class="display">the instruction uses unsigned, logical operands</pre></td></tr>
  26886. <tr><td><pre class="display">m</pre></td><td><pre class="display">the instruction uses a mask or operates on multiple values</pre></td></tr>
  26887. <tr><td><pre class="display">r</pre></td><td><pre class="display">if r is the last character, the instruction operates on registers</pre></td></tr>
  26888. <tr><td><pre class="display">y</pre></td><td><pre class="display">the instruction uses 20-bit displacements</pre></td></tr>
  26889. </table>
  26890. </div>
  26891. <p>There are many exceptions to the scheme outlined in the above lists, in
  26892. particular for the privileged instructions. For non-privileged
  26893. instruction it works quite well, for example the instruction &lsquo;<samp>clgfr</samp>&rsquo;
  26894. c: compare instruction, l: unsigned operands, g: 64-bit operands,
  26895. f: 32- to 64-bit extension, r: register operands. The instruction compares
  26896. an 64-bit value in a register with the zero extended 32-bit value from
  26897. a second register.
  26898. For a complete list of all mnemonics see appendix B in the Principles
  26899. of Operation.
  26900. </p>
  26901. <hr>
  26902. <span id="s390-Operands"></span><div class="header">
  26903. <p>
  26904. Next: <a href="#s390-Formats" accesskey="n" rel="next">s390 Formats</a>, Previous: <a href="#s390-Mnemonics" accesskey="p" rel="prev">s390 Mnemonics</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26905. </div>
  26906. <span id="Instruction-Operands"></span><h4 class="subsubsection">9.42.3.3 Instruction Operands</h4>
  26907. <span id="index-instruction-operands_002c-s390"></span>
  26908. <span id="index-s390-instruction-operands"></span>
  26909. <p>Instruction operands can be grouped into three classes, operands located
  26910. in registers, immediate operands, and operands in storage.
  26911. </p>
  26912. <p>A register operand can be located in general, floating-point, access,
  26913. or control register. The register is identified by a four-bit field.
  26914. The field containing the register operand is called the R field.
  26915. </p>
  26916. <p>Immediate operands are contained within the instruction and can have
  26917. 8, 16 or 32 bits. The field containing the immediate operand is called
  26918. the I field. Dependent on the instruction the I field is either signed
  26919. or unsigned.
  26920. </p>
  26921. <p>A storage operand consists of an address and a length. The address of a
  26922. storage operands can be specified in any of these ways:
  26923. </p>
  26924. <ul>
  26925. <li> The content of a single general R
  26926. </li><li> The sum of the content of a general register called the base
  26927. register B plus the content of a displacement field D
  26928. </li><li> The sum of the contents of two general registers called the
  26929. index register X and the base register B plus the content of a
  26930. displacement field
  26931. </li><li> The sum of the current instruction address and a 32-bit signed
  26932. immediate field multiplied by two.
  26933. </li></ul>
  26934. <p>The length of a storage operand can be:
  26935. </p>
  26936. <ul>
  26937. <li> Implied by the instruction
  26938. </li><li> Specified by a bitmask
  26939. </li><li> Specified by a four-bit or eight-bit length field L
  26940. </li><li> Specified by the content of a general register
  26941. </li></ul>
  26942. <p>The notation for storage operand addresses formed from multiple fields is
  26943. as follows:
  26944. </p>
  26945. <dl compact="compact">
  26946. <dt><code>Dn(Bn)</code></dt>
  26947. <dd><p>the address for operand number n is formed from the content of general
  26948. register Bn called the base register and the displacement field Dn.
  26949. </p></dd>
  26950. <dt><code>Dn(Xn,Bn)</code></dt>
  26951. <dd><p>the address for operand number n is formed from the content of general
  26952. register Xn called the index register, general register Bn called the
  26953. base register and the displacement field Dn.
  26954. </p></dd>
  26955. <dt><code>Dn(Ln,Bn)</code></dt>
  26956. <dd><p>the address for operand number n is formed from the content of general
  26957. register Bn called the base register and the displacement field Dn.
  26958. The length of the operand n is specified by the field Ln.
  26959. </p></dd>
  26960. </dl>
  26961. <p>The base registers Bn and the index registers Xn of a storage operand can
  26962. be skipped. If Bn and Xn are skipped, a zero will be stored to the operand
  26963. field. The notation changes as follows:
  26964. </p>
  26965. <div class="display">
  26966. <table>
  26967. <thead><tr><th width="30%"><pre class="display">full notation</pre></th><th width="30%"><pre class="display">short notation</pre></th></tr></thead>
  26968. <tr><td width="30%"><pre class="display">Dn(0,Bn)</pre></td><td width="30%"><pre class="display">Dn(Bn)</pre></td></tr>
  26969. <tr><td width="30%"><pre class="display">Dn(0,0)</pre></td><td width="30%"><pre class="display">Dn</pre></td></tr>
  26970. <tr><td width="30%"><pre class="display">Dn(0)</pre></td><td width="30%"><pre class="display">Dn</pre></td></tr>
  26971. <tr><td width="30%"><pre class="display">Dn(Ln,0)</pre></td><td width="30%"><pre class="display">Dn(Ln)</pre></td></tr>
  26972. </table>
  26973. </div>
  26974. <hr>
  26975. <span id="s390-Formats"></span><div class="header">
  26976. <p>
  26977. Next: <a href="#s390-Aliases" accesskey="n" rel="next">s390 Aliases</a>, Previous: <a href="#s390-Operands" accesskey="p" rel="prev">s390 Operands</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  26978. </div>
  26979. <span id="Instruction-Formats"></span><h4 class="subsubsection">9.42.3.4 Instruction Formats</h4>
  26980. <span id="index-instruction-formats_002c-s390"></span>
  26981. <span id="index-s390-instruction-formats"></span>
  26982. <p>The Principles of Operation manuals lists 35 instruction formats where
  26983. some of the formats have multiple variants. For the &lsquo;<samp>.insn</samp>&rsquo;
  26984. pseudo directive the assembler recognizes some of the formats.
  26985. Typically, the most general variant of the instruction format is used
  26986. by the &lsquo;<samp>.insn</samp>&rsquo; directive.
  26987. </p>
  26988. <p>The following table lists the abbreviations used in the table of
  26989. instruction formats:
  26990. </p>
  26991. <div class="display">
  26992. <table>
  26993. <tr><td><pre class="display">OpCode / OpCd</pre></td><td><pre class="display">Part of the op code.</pre></td></tr>
  26994. <tr><td><pre class="display">Bx</pre></td><td><pre class="display">Base register number for operand x.</pre></td></tr>
  26995. <tr><td><pre class="display">Dx</pre></td><td><pre class="display">Displacement for operand x.</pre></td></tr>
  26996. <tr><td><pre class="display">DLx</pre></td><td><pre class="display">Displacement lower 12 bits for operand x.</pre></td></tr>
  26997. <tr><td><pre class="display">DHx</pre></td><td><pre class="display">Displacement higher 8-bits for operand x.</pre></td></tr>
  26998. <tr><td><pre class="display">Rx</pre></td><td><pre class="display">Register number for operand x.</pre></td></tr>
  26999. <tr><td><pre class="display">Xx</pre></td><td><pre class="display">Index register number for operand x.</pre></td></tr>
  27000. <tr><td><pre class="display">Ix</pre></td><td><pre class="display">Signed immediate for operand x.</pre></td></tr>
  27001. <tr><td><pre class="display">Ux</pre></td><td><pre class="display">Unsigned immediate for operand x.</pre></td></tr>
  27002. </table>
  27003. </div>
  27004. <p>An instruction is two, four, or six bytes in length and must be aligned
  27005. on a 2 byte boundary. The first two bits of the instruction specify the
  27006. length of the instruction, 00 indicates a two byte instruction, 01 and 10
  27007. indicates a four byte instruction, and 11 indicates a six byte instruction.
  27008. </p>
  27009. <p>The following table lists the s390 instruction formats that are available
  27010. with the &lsquo;<samp>.insn</samp>&rsquo; pseudo directive:
  27011. </p>
  27012. <dl compact="compact">
  27013. <dt><code>E format</code></dt>
  27014. <dd><pre class="verbatim">+-------------+
  27015. | OpCode |
  27016. +-------------+
  27017. 0 15
  27018. </pre>
  27019. </dd>
  27020. <dt><code>RI format: &lt;insn&gt; R1,I2</code></dt>
  27021. <dd><pre class="verbatim">+--------+----+----+------------------+
  27022. | OpCode | R1 |OpCd| I2 |
  27023. +--------+----+----+------------------+
  27024. 0 8 12 16 31
  27025. </pre>
  27026. </dd>
  27027. <dt><code>RIE format: &lt;insn&gt; R1,R3,I2</code></dt>
  27028. <dd><pre class="verbatim">+--------+----+----+------------------+--------+--------+
  27029. | OpCode | R1 | R3 | I2 |////////| OpCode |
  27030. +--------+----+----+------------------+--------+--------+
  27031. 0 8 12 16 32 40 47
  27032. </pre>
  27033. </dd>
  27034. <dt><code>RIL format: &lt;insn&gt; R1,I2</code></dt>
  27035. <dd><pre class="verbatim">+--------+----+----+------------------------------------+
  27036. | OpCode | R1 |OpCd| I2 |
  27037. +--------+----+----+------------------------------------+
  27038. 0 8 12 16 47
  27039. </pre>
  27040. </dd>
  27041. <dt><code>RILU format: &lt;insn&gt; R1,U2</code></dt>
  27042. <dd><pre class="verbatim">+--------+----+----+------------------------------------+
  27043. | OpCode | R1 |OpCd| U2 |
  27044. +--------+----+----+------------------------------------+
  27045. 0 8 12 16 47
  27046. </pre>
  27047. </dd>
  27048. <dt><code>RIS format: &lt;insn&gt; R1,I2,M3,D4(B4)</code></dt>
  27049. <dd><pre class="verbatim">+--------+----+----+----+-------------+--------+--------+
  27050. | OpCode | R1 | M3 | B4 | D4 | I2 | Opcode |
  27051. +--------+----+----+----+-------------+--------+--------+
  27052. 0 8 12 16 20 32 36 47
  27053. </pre>
  27054. </dd>
  27055. <dt><code>RR format: &lt;insn&gt; R1,R2</code></dt>
  27056. <dd><pre class="verbatim">+--------+----+----+
  27057. | OpCode | R1 | R2 |
  27058. +--------+----+----+
  27059. 0 8 12 15
  27060. </pre>
  27061. </dd>
  27062. <dt><code>RRE format: &lt;insn&gt; R1,R2</code></dt>
  27063. <dd><pre class="verbatim">+------------------+--------+----+----+
  27064. | OpCode |////////| R1 | R2 |
  27065. +------------------+--------+----+----+
  27066. 0 16 24 28 31
  27067. </pre>
  27068. </dd>
  27069. <dt><code>RRF format: &lt;insn&gt; R1,R2,R3,M4</code></dt>
  27070. <dd><pre class="verbatim">+------------------+----+----+----+----+
  27071. | OpCode | R3 | M4 | R1 | R2 |
  27072. +------------------+----+----+----+----+
  27073. 0 16 20 24 28 31
  27074. </pre>
  27075. </dd>
  27076. <dt><code>RRS format: &lt;insn&gt; R1,R2,M3,D4(B4)</code></dt>
  27077. <dd><pre class="verbatim">+--------+----+----+----+-------------+----+----+--------+
  27078. | OpCode | R1 | R3 | B4 | D4 | M3 |////| OpCode |
  27079. +--------+----+----+----+-------------+----+----+--------+
  27080. 0 8 12 16 20 32 36 40 47
  27081. </pre>
  27082. </dd>
  27083. <dt><code>RS format: &lt;insn&gt; R1,R3,D2(B2)</code></dt>
  27084. <dd><pre class="verbatim">+--------+----+----+----+-------------+
  27085. | OpCode | R1 | R3 | B2 | D2 |
  27086. +--------+----+----+----+-------------+
  27087. 0 8 12 16 20 31
  27088. </pre>
  27089. </dd>
  27090. <dt><code>RSE format: &lt;insn&gt; R1,R3,D2(B2)</code></dt>
  27091. <dd><pre class="verbatim">+--------+----+----+----+-------------+--------+--------+
  27092. | OpCode | R1 | R3 | B2 | D2 |////////| OpCode |
  27093. +--------+----+----+----+-------------+--------+--------+
  27094. 0 8 12 16 20 32 40 47
  27095. </pre>
  27096. </dd>
  27097. <dt><code>RSI format: &lt;insn&gt; R1,R3,I2</code></dt>
  27098. <dd><pre class="verbatim">+--------+----+----+------------------------------------+
  27099. | OpCode | R1 | R3 | I2 |
  27100. +--------+----+----+------------------------------------+
  27101. 0 8 12 16 47
  27102. </pre>
  27103. </dd>
  27104. <dt><code>RSY format: &lt;insn&gt; R1,R3,D2(B2)</code></dt>
  27105. <dd><pre class="verbatim">+--------+----+----+----+-------------+--------+--------+
  27106. | OpCode | R1 | R3 | B2 | DL2 | DH2 | OpCode |
  27107. +--------+----+----+----+-------------+--------+--------+
  27108. 0 8 12 16 20 32 40 47
  27109. </pre>
  27110. </dd>
  27111. <dt><code>RX format: &lt;insn&gt; R1,D2(X2,B2)</code></dt>
  27112. <dd><pre class="verbatim">+--------+----+----+----+-------------+
  27113. | OpCode | R1 | X2 | B2 | D2 |
  27114. +--------+----+----+----+-------------+
  27115. 0 8 12 16 20 31
  27116. </pre>
  27117. </dd>
  27118. <dt><code>RXE format: &lt;insn&gt; R1,D2(X2,B2)</code></dt>
  27119. <dd><pre class="verbatim">+--------+----+----+----+-------------+--------+--------+
  27120. | OpCode | R1 | X2 | B2 | D2 |////////| OpCode |
  27121. +--------+----+----+----+-------------+--------+--------+
  27122. 0 8 12 16 20 32 40 47
  27123. </pre>
  27124. </dd>
  27125. <dt><code>RXF format: &lt;insn&gt; R1,R3,D2(X2,B2)</code></dt>
  27126. <dd><pre class="verbatim">+--------+----+----+----+-------------+----+---+--------+
  27127. | OpCode | R3 | X2 | B2 | D2 | R1 |///| OpCode |
  27128. +--------+----+----+----+-------------+----+---+--------+
  27129. 0 8 12 16 20 32 36 40 47
  27130. </pre>
  27131. </dd>
  27132. <dt><code>RXY format: &lt;insn&gt; R1,D2(X2,B2)</code></dt>
  27133. <dd><pre class="verbatim">+--------+----+----+----+-------------+--------+--------+
  27134. | OpCode | R1 | X2 | B2 | DL2 | DH2 | OpCode |
  27135. +--------+----+----+----+-------------+--------+--------+
  27136. 0 8 12 16 20 32 36 40 47
  27137. </pre>
  27138. </dd>
  27139. <dt><code>S format: &lt;insn&gt; D2(B2)</code></dt>
  27140. <dd><pre class="verbatim">+------------------+----+-------------+
  27141. | OpCode | B2 | D2 |
  27142. +------------------+----+-------------+
  27143. 0 16 20 31
  27144. </pre>
  27145. </dd>
  27146. <dt><code>SI format: &lt;insn&gt; D1(B1),I2</code></dt>
  27147. <dd><pre class="verbatim">+--------+---------+----+-------------+
  27148. | OpCode | I2 | B1 | D1 |
  27149. +--------+---------+----+-------------+
  27150. 0 8 16 20 31
  27151. </pre>
  27152. </dd>
  27153. <dt><code>SIY format: &lt;insn&gt; D1(B1),U2</code></dt>
  27154. <dd><pre class="verbatim">+--------+---------+----+-------------+--------+--------+
  27155. | OpCode | I2 | B1 | DL1 | DH1 | OpCode |
  27156. +--------+---------+----+-------------+--------+--------+
  27157. 0 8 16 20 32 36 40 47
  27158. </pre>
  27159. </dd>
  27160. <dt><code>SIL format: &lt;insn&gt; D1(B1),I2</code></dt>
  27161. <dd><pre class="verbatim">+------------------+----+-------------+-----------------+
  27162. | OpCode | B1 | D1 | I2 |
  27163. +------------------+----+-------------+-----------------+
  27164. 0 16 20 32 47
  27165. </pre>
  27166. </dd>
  27167. <dt><code>SS format: &lt;insn&gt; D1(R1,B1),D2(B3),R3</code></dt>
  27168. <dd><pre class="verbatim">+--------+----+----+----+-------------+----+------------+
  27169. | OpCode | R1 | R3 | B1 | D1 | B2 | D2 |
  27170. +--------+----+----+----+-------------+----+------------+
  27171. 0 8 12 16 20 32 36 47
  27172. </pre>
  27173. </dd>
  27174. <dt><code>SSE format: &lt;insn&gt; D1(B1),D2(B2)</code></dt>
  27175. <dd><pre class="verbatim">+------------------+----+-------------+----+------------+
  27176. | OpCode | B1 | D1 | B2 | D2 |
  27177. +------------------+----+-------------+----+------------+
  27178. 0 8 12 16 20 32 36 47
  27179. </pre>
  27180. </dd>
  27181. <dt><code>SSF format: &lt;insn&gt; D1(B1),D2(B2),R3</code></dt>
  27182. <dd><pre class="verbatim">+--------+----+----+----+-------------+----+------------+
  27183. | OpCode | R3 |OpCd| B1 | D1 | B2 | D2 |
  27184. +--------+----+----+----+-------------+----+------------+
  27185. 0 8 12 16 20 32 36 47
  27186. </pre>
  27187. </dd>
  27188. <dt><code>VRV format: &lt;insn&gt; V1,D2(V2,B2),M3</code></dt>
  27189. <dd><pre class="verbatim">+--------+----+----+----+-------------+----+------------+
  27190. | OpCode | V1 | V2 | B2 | D2 | M3 | Opcode |
  27191. +--------+----+----+----+-------------+----+------------+
  27192. 0 8 12 16 20 32 36 47
  27193. </pre>
  27194. </dd>
  27195. <dt><code>VRI format: &lt;insn&gt; V1,V2,I3,M4,M5</code></dt>
  27196. <dd><pre class="verbatim">+--------+----+----+-------------+----+----+------------+
  27197. | OpCode | V1 | V2 | I3 | M5 | M4 | Opcode |
  27198. +--------+----+----+-------------+----+----+------------+
  27199. 0 8 12 16 28 32 36 47
  27200. </pre>
  27201. </dd>
  27202. <dt><code>VRX format: &lt;insn&gt; V1,D2(R2,B2),M3</code></dt>
  27203. <dd><pre class="verbatim">+--------+----+----+----+-------------+----+------------+
  27204. | OpCode | V1 | R2 | B2 | D2 | M3 | Opcode |
  27205. +--------+----+----+----+-------------+----+------------+
  27206. 0 8 12 16 20 32 36 47
  27207. </pre>
  27208. </dd>
  27209. <dt><code>VRS format: &lt;insn&gt; R1,V3,D2(B2),M4</code></dt>
  27210. <dd><pre class="verbatim">+--------+----+----+----+-------------+----+------------+
  27211. | OpCode | R1 | V3 | B2 | D2 | M4 | Opcode |
  27212. +--------+----+----+----+-------------+----+------------+
  27213. 0 8 12 16 20 32 36 47
  27214. </pre>
  27215. </dd>
  27216. <dt><code>VRR format: &lt;insn&gt; V1,V2,V3,M4,M5,M6</code></dt>
  27217. <dd><pre class="verbatim">+--------+----+----+----+---+----+----+----+------------+
  27218. | OpCode | V1 | V2 | V3 |///| M6 | M5 | M4 | Opcode |
  27219. +--------+----+----+----+---+----+----+----+------------+
  27220. 0 8 12 16 24 28 32 36 47
  27221. </pre>
  27222. </dd>
  27223. <dt><code>VSI format: &lt;insn&gt; V1,D2(B2),I3</code></dt>
  27224. <dd><pre class="verbatim">+--------+---------+----+-------------+----+------------+
  27225. | OpCode | I3 | B2 | D2 | V1 | Opcode |
  27226. +--------+---------+----+-------------+----+------------+
  27227. 0 8 16 20 32 36 47
  27228. </pre>
  27229. </dd>
  27230. </dl>
  27231. <p>For the complete list of all instruction format variants see the
  27232. Principles of Operation manuals.
  27233. </p>
  27234. <hr>
  27235. <span id="s390-Aliases"></span><div class="header">
  27236. <p>
  27237. Next: <a href="#s390-Operand-Modifier" accesskey="n" rel="next">s390 Operand Modifier</a>, Previous: <a href="#s390-Formats" accesskey="p" rel="prev">s390 Formats</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27238. </div>
  27239. <span id="Instruction-Aliases"></span><h4 class="subsubsection">9.42.3.5 Instruction Aliases</h4>
  27240. <span id="index-instruction-aliases_002c-s390"></span>
  27241. <span id="index-s390-instruction-aliases"></span>
  27242. <p>A specific bit pattern can have multiple mnemonics, for example
  27243. the bit pattern &lsquo;<samp>0xa7000000</samp>&rsquo; has the mnemonics &lsquo;<samp>tmh</samp>&rsquo; and
  27244. &lsquo;<samp>tmlh</samp>&rsquo;. In addition, there are a number of mnemonics recognized by
  27245. <code>as</code> that are not present in the Principles of Operation.
  27246. These are the short forms of the branch instructions, where the condition
  27247. code mask operand is encoded in the mnemonic. This is relevant for the
  27248. branch instructions, the compare and branch instructions, and the
  27249. compare and trap instructions.
  27250. </p>
  27251. <p>For the branch instructions there are 20 condition code strings that can
  27252. be used as part of the mnemonic in place of a mask operand in the instruction
  27253. format:
  27254. </p>
  27255. <div class="display">
  27256. <table>
  27257. <thead><tr><th width="30%"><pre class="display">instruction</pre></th><th width="30%"><pre class="display">short form</pre></th></tr></thead>
  27258. <tr><td width="30%"><pre class="display">bcr M1,R2</pre></td><td width="30%"><pre class="display">b&lt;m&gt;r R2</pre></td></tr>
  27259. <tr><td width="30%"><pre class="display">bc M1,D2(X2,B2)</pre></td><td width="30%"><pre class="display">b&lt;m&gt; D2(X2,B2)</pre></td></tr>
  27260. <tr><td width="30%"><pre class="display">brc M1,I2</pre></td><td width="30%"><pre class="display">j&lt;m&gt; I2</pre></td></tr>
  27261. <tr><td width="30%"><pre class="display">brcl M1,I2</pre></td><td width="30%"><pre class="display">jg&lt;m&gt; I2</pre></td></tr>
  27262. </table>
  27263. </div>
  27264. <p>In the mnemonic for a branch instruction the condition code string &lt;m&gt;
  27265. can be any of the following:
  27266. </p>
  27267. <div class="display">
  27268. <table>
  27269. <tr><td><pre class="display">o</pre></td><td><pre class="display">jump on overflow / if ones</pre></td></tr>
  27270. <tr><td><pre class="display">h</pre></td><td><pre class="display">jump on A high</pre></td></tr>
  27271. <tr><td><pre class="display">p</pre></td><td><pre class="display">jump on plus</pre></td></tr>
  27272. <tr><td><pre class="display">nle</pre></td><td><pre class="display">jump on not low or equal</pre></td></tr>
  27273. <tr><td><pre class="display">l</pre></td><td><pre class="display">jump on A low</pre></td></tr>
  27274. <tr><td><pre class="display">m</pre></td><td><pre class="display">jump on minus</pre></td></tr>
  27275. <tr><td><pre class="display">nhe</pre></td><td><pre class="display">jump on not high or equal</pre></td></tr>
  27276. <tr><td><pre class="display">lh</pre></td><td><pre class="display">jump on low or high</pre></td></tr>
  27277. <tr><td><pre class="display">ne</pre></td><td><pre class="display">jump on A not equal B</pre></td></tr>
  27278. <tr><td><pre class="display">nz</pre></td><td><pre class="display">jump on not zero / if not zeros</pre></td></tr>
  27279. <tr><td><pre class="display">e</pre></td><td><pre class="display">jump on A equal B</pre></td></tr>
  27280. <tr><td><pre class="display">z</pre></td><td><pre class="display">jump on zero / if zeroes</pre></td></tr>
  27281. <tr><td><pre class="display">nlh</pre></td><td><pre class="display">jump on not low or high</pre></td></tr>
  27282. <tr><td><pre class="display">he</pre></td><td><pre class="display">jump on high or equal</pre></td></tr>
  27283. <tr><td><pre class="display">nl</pre></td><td><pre class="display">jump on A not low</pre></td></tr>
  27284. <tr><td><pre class="display">nm</pre></td><td><pre class="display">jump on not minus / if not mixed</pre></td></tr>
  27285. <tr><td><pre class="display">le</pre></td><td><pre class="display">jump on low or equal</pre></td></tr>
  27286. <tr><td><pre class="display">nh</pre></td><td><pre class="display">jump on A not high</pre></td></tr>
  27287. <tr><td><pre class="display">np</pre></td><td><pre class="display">jump on not plus</pre></td></tr>
  27288. <tr><td><pre class="display">no</pre></td><td><pre class="display">jump on not overflow / if not ones</pre></td></tr>
  27289. </table>
  27290. </div>
  27291. <p>For the compare and branch, and compare and trap instructions there
  27292. are 12 condition code strings that can be used as part of the mnemonic in
  27293. place of a mask operand in the instruction format:
  27294. </p>
  27295. <div class="display">
  27296. <table>
  27297. <thead><tr><th width="40%"><pre class="display">instruction</pre></th><th width="40%"><pre class="display">short form</pre></th></tr></thead>
  27298. <tr><td width="40%"><pre class="display">crb R1,R2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">crb&lt;m&gt; R1,R2,D4(B4)</pre></td></tr>
  27299. <tr><td width="40%"><pre class="display">cgrb R1,R2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">cgrb&lt;m&gt; R1,R2,D4(B4)</pre></td></tr>
  27300. <tr><td width="40%"><pre class="display">crj R1,R2,M3,I4</pre></td><td width="40%"><pre class="display">crj&lt;m&gt; R1,R2,I4</pre></td></tr>
  27301. <tr><td width="40%"><pre class="display">cgrj R1,R2,M3,I4</pre></td><td width="40%"><pre class="display">cgrj&lt;m&gt; R1,R2,I4</pre></td></tr>
  27302. <tr><td width="40%"><pre class="display">cib R1,I2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">cib&lt;m&gt; R1,I2,D4(B4)</pre></td></tr>
  27303. <tr><td width="40%"><pre class="display">cgib R1,I2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">cgib&lt;m&gt; R1,I2,D4(B4)</pre></td></tr>
  27304. <tr><td width="40%"><pre class="display">cij R1,I2,M3,I4</pre></td><td width="40%"><pre class="display">cij&lt;m&gt; R1,I2,I4</pre></td></tr>
  27305. <tr><td width="40%"><pre class="display">cgij R1,I2,M3,I4</pre></td><td width="40%"><pre class="display">cgij&lt;m&gt; R1,I2,I4</pre></td></tr>
  27306. <tr><td width="40%"><pre class="display">crt R1,R2,M3</pre></td><td width="40%"><pre class="display">crt&lt;m&gt; R1,R2</pre></td></tr>
  27307. <tr><td width="40%"><pre class="display">cgrt R1,R2,M3</pre></td><td width="40%"><pre class="display">cgrt&lt;m&gt; R1,R2</pre></td></tr>
  27308. <tr><td width="40%"><pre class="display">cit R1,I2,M3</pre></td><td width="40%"><pre class="display">cit&lt;m&gt; R1,I2</pre></td></tr>
  27309. <tr><td width="40%"><pre class="display">cgit R1,I2,M3</pre></td><td width="40%"><pre class="display">cgit&lt;m&gt; R1,I2</pre></td></tr>
  27310. <tr><td width="40%"><pre class="display">clrb R1,R2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">clrb&lt;m&gt; R1,R2,D4(B4)</pre></td></tr>
  27311. <tr><td width="40%"><pre class="display">clgrb R1,R2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">clgrb&lt;m&gt; R1,R2,D4(B4)</pre></td></tr>
  27312. <tr><td width="40%"><pre class="display">clrj R1,R2,M3,I4</pre></td><td width="40%"><pre class="display">clrj&lt;m&gt; R1,R2,I4</pre></td></tr>
  27313. <tr><td width="40%"><pre class="display">clgrj R1,R2,M3,I4</pre></td><td width="40%"><pre class="display">clgrj&lt;m&gt; R1,R2,I4</pre></td></tr>
  27314. <tr><td width="40%"><pre class="display">clib R1,I2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">clib&lt;m&gt; R1,I2,D4(B4)</pre></td></tr>
  27315. <tr><td width="40%"><pre class="display">clgib R1,I2,M3,D4(B4)</pre></td><td width="40%"><pre class="display">clgib&lt;m&gt; R1,I2,D4(B4)</pre></td></tr>
  27316. <tr><td width="40%"><pre class="display">clij R1,I2,M3,I4</pre></td><td width="40%"><pre class="display">clij&lt;m&gt; R1,I2,I4</pre></td></tr>
  27317. <tr><td width="40%"><pre class="display">clgij R1,I2,M3,I4</pre></td><td width="40%"><pre class="display">clgij&lt;m&gt; R1,I2,I4</pre></td></tr>
  27318. <tr><td width="40%"><pre class="display">clrt R1,R2,M3</pre></td><td width="40%"><pre class="display">clrt&lt;m&gt; R1,R2</pre></td></tr>
  27319. <tr><td width="40%"><pre class="display">clgrt R1,R2,M3</pre></td><td width="40%"><pre class="display">clgrt&lt;m&gt; R1,R2</pre></td></tr>
  27320. <tr><td width="40%"><pre class="display">clfit R1,I2,M3</pre></td><td width="40%"><pre class="display">clfit&lt;m&gt; R1,I2</pre></td></tr>
  27321. <tr><td width="40%"><pre class="display">clgit R1,I2,M3</pre></td><td width="40%"><pre class="display">clgit&lt;m&gt; R1,I2</pre></td></tr>
  27322. </table>
  27323. </div>
  27324. <p>In the mnemonic for a compare and branch and compare and trap instruction
  27325. the condition code string &lt;m&gt; can be any of the following:
  27326. </p>
  27327. <div class="display">
  27328. <table>
  27329. <tr><td><pre class="display">h</pre></td><td><pre class="display">jump on A high</pre></td></tr>
  27330. <tr><td><pre class="display">nle</pre></td><td><pre class="display">jump on not low or equal</pre></td></tr>
  27331. <tr><td><pre class="display">l</pre></td><td><pre class="display">jump on A low</pre></td></tr>
  27332. <tr><td><pre class="display">nhe</pre></td><td><pre class="display">jump on not high or equal</pre></td></tr>
  27333. <tr><td><pre class="display">ne</pre></td><td><pre class="display">jump on A not equal B</pre></td></tr>
  27334. <tr><td><pre class="display">lh</pre></td><td><pre class="display">jump on low or high</pre></td></tr>
  27335. <tr><td><pre class="display">e</pre></td><td><pre class="display">jump on A equal B</pre></td></tr>
  27336. <tr><td><pre class="display">nlh</pre></td><td><pre class="display">jump on not low or high</pre></td></tr>
  27337. <tr><td><pre class="display">nl</pre></td><td><pre class="display">jump on A not low</pre></td></tr>
  27338. <tr><td><pre class="display">he</pre></td><td><pre class="display">jump on high or equal</pre></td></tr>
  27339. <tr><td><pre class="display">nh</pre></td><td><pre class="display">jump on A not high</pre></td></tr>
  27340. <tr><td><pre class="display">le</pre></td><td><pre class="display">jump on low or equal</pre></td></tr>
  27341. </table>
  27342. </div>
  27343. <hr>
  27344. <span id="s390-Operand-Modifier"></span><div class="header">
  27345. <p>
  27346. Next: <a href="#s390-Instruction-Marker" accesskey="n" rel="next">s390 Instruction Marker</a>, Previous: <a href="#s390-Aliases" accesskey="p" rel="prev">s390 Aliases</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27347. </div>
  27348. <span id="Instruction-Operand-Modifier"></span><h4 class="subsubsection">9.42.3.6 Instruction Operand Modifier</h4>
  27349. <span id="index-instruction-operand-modifier_002c-s390"></span>
  27350. <span id="index-s390-instruction-operand-modifier"></span>
  27351. <p>If a symbol modifier is attached to a symbol in an expression for an
  27352. instruction operand field, the symbol term is replaced with a reference
  27353. to an object in the global offset table (GOT) or the procedure linkage
  27354. table (PLT). The following expressions are allowed:
  27355. &lsquo;<samp>symbol@modifier + constant</samp>&rsquo;,
  27356. &lsquo;<samp>symbol@modifier + label + constant</samp>&rsquo;, and
  27357. &lsquo;<samp>symbol@modifier - label + constant</samp>&rsquo;.
  27358. The term &lsquo;<samp>symbol</samp>&rsquo; is the symbol that will be entered into the GOT or
  27359. PLT, &lsquo;<samp>label</samp>&rsquo; is a local label, and &lsquo;<samp>constant</samp>&rsquo; is an arbitrary
  27360. expression that the assembler can evaluate to a constant value.
  27361. </p>
  27362. <p>The term &lsquo;<samp>(symbol + constant1)@modifier +/- label + constant2</samp>&rsquo;
  27363. is also accepted but a warning message is printed and the term is
  27364. converted to &lsquo;<samp>symbol@modifier +/- label + constant1 + constant2</samp>&rsquo;.
  27365. </p>
  27366. <dl compact="compact">
  27367. <dt><code>@got</code></dt>
  27368. <dt><code>@got12</code></dt>
  27369. <dd><p>The @got modifier can be used for displacement fields, 16-bit immediate
  27370. fields and 32-bit pc-relative immediate fields. The @got12 modifier is
  27371. synonym to @got. The symbol is added to the GOT. For displacement
  27372. fields and 16-bit immediate fields the symbol term is replaced with
  27373. the offset from the start of the GOT to the GOT slot for the symbol.
  27374. For a 32-bit pc-relative field the pc-relative offset to the GOT
  27375. slot from the current instruction address is used.
  27376. </p></dd>
  27377. <dt><code>@gotent</code></dt>
  27378. <dd><p>The @gotent modifier can be used for 32-bit pc-relative immediate fields.
  27379. The symbol is added to the GOT and the symbol term is replaced with
  27380. the pc-relative offset from the current instruction to the GOT slot for the
  27381. symbol.
  27382. </p></dd>
  27383. <dt><code>@gotoff</code></dt>
  27384. <dd><p>The @gotoff modifier can be used for 16-bit immediate fields. The symbol
  27385. term is replaced with the offset from the start of the GOT to the
  27386. address of the symbol.
  27387. </p></dd>
  27388. <dt><code>@gotplt</code></dt>
  27389. <dd><p>The @gotplt modifier can be used for displacement fields, 16-bit immediate
  27390. fields, and 32-bit pc-relative immediate fields. A procedure linkage
  27391. table entry is generated for the symbol and a jump slot for the symbol
  27392. is added to the GOT. For displacement fields and 16-bit immediate
  27393. fields the symbol term is replaced with the offset from the start of the
  27394. GOT to the jump slot for the symbol. For a 32-bit pc-relative field
  27395. the pc-relative offset to the jump slot from the current instruction
  27396. address is used.
  27397. </p></dd>
  27398. <dt><code>@plt</code></dt>
  27399. <dd><p>The @plt modifier can be used for 16-bit and 32-bit pc-relative immediate
  27400. fields. A procedure linkage table entry is generated for the symbol.
  27401. The symbol term is replaced with the relative offset from the current
  27402. instruction to the PLT entry for the symbol.
  27403. </p></dd>
  27404. <dt><code>@pltoff</code></dt>
  27405. <dd><p>The @pltoff modifier can be used for 16-bit immediate fields. The symbol
  27406. term is replaced with the offset from the start of the PLT to the address
  27407. of the symbol.
  27408. </p></dd>
  27409. <dt><code>@gotntpoff</code></dt>
  27410. <dd><p>The @gotntpoff modifier can be used for displacement fields. The symbol
  27411. is added to the static TLS block and the negated offset to the symbol
  27412. in the static TLS block is added to the GOT. The symbol term is replaced
  27413. with the offset to the GOT slot from the start of the GOT.
  27414. </p></dd>
  27415. <dt><code>@indntpoff</code></dt>
  27416. <dd><p>The @indntpoff modifier can be used for 32-bit pc-relative immediate
  27417. fields. The symbol is added to the static TLS block and the negated offset
  27418. to the symbol in the static TLS block is added to the GOT. The symbol term
  27419. is replaced with the pc-relative offset to the GOT slot from the current
  27420. instruction address.
  27421. </p></dd>
  27422. </dl>
  27423. <p>For more information about the thread local storage modifiers
  27424. &lsquo;<samp>gotntpoff</samp>&rsquo; and &lsquo;<samp>indntpoff</samp>&rsquo; see the ELF extension documentation
  27425. &lsquo;<samp>ELF Handling For Thread-Local Storage</samp>&rsquo;.
  27426. </p>
  27427. <hr>
  27428. <span id="s390-Instruction-Marker"></span><div class="header">
  27429. <p>
  27430. Next: <a href="#s390-Literal-Pool-Entries" accesskey="n" rel="next">s390 Literal Pool Entries</a>, Previous: <a href="#s390-Operand-Modifier" accesskey="p" rel="prev">s390 Operand Modifier</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27431. </div>
  27432. <span id="Instruction-Marker"></span><h4 class="subsubsection">9.42.3.7 Instruction Marker</h4>
  27433. <span id="index-instruction-marker_002c-s390"></span>
  27434. <span id="index-s390-instruction-marker"></span>
  27435. <p>The thread local storage instruction markers are used by the linker to
  27436. perform code optimization.
  27437. </p>
  27438. <dl compact="compact">
  27439. <dt><code>:tls_load</code></dt>
  27440. <dd><p>The :tls_load marker is used to flag the load instruction in the initial
  27441. exec TLS model that retrieves the offset from the thread pointer to a
  27442. thread local storage variable from the GOT.
  27443. </p></dd>
  27444. <dt><code>:tls_gdcall</code></dt>
  27445. <dd><p>The :tls_gdcall marker is used to flag the branch-and-save instruction to
  27446. the __tls_get_offset function in the global dynamic TLS model.
  27447. </p></dd>
  27448. <dt><code>:tls_ldcall</code></dt>
  27449. <dd><p>The :tls_ldcall marker is used to flag the branch-and-save instruction to
  27450. the __tls_get_offset function in the local dynamic TLS model.
  27451. </p></dd>
  27452. </dl>
  27453. <p>For more information about the thread local storage instruction marker
  27454. and the linker optimizations see the ELF extension documentation
  27455. &lsquo;<samp>ELF Handling For Thread-Local Storage</samp>&rsquo;.
  27456. </p>
  27457. <hr>
  27458. <span id="s390-Literal-Pool-Entries"></span><div class="header">
  27459. <p>
  27460. Previous: <a href="#s390-Instruction-Marker" accesskey="p" rel="prev">s390 Instruction Marker</a>, Up: <a href="#s390-Syntax" accesskey="u" rel="up">s390 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27461. </div>
  27462. <span id="Literal-Pool-Entries"></span><h4 class="subsubsection">9.42.3.8 Literal Pool Entries</h4>
  27463. <span id="index-literal-pool-entries_002c-s390"></span>
  27464. <span id="index-s390-literal-pool-entries"></span>
  27465. <p>A literal pool is a collection of values. To access the values a pointer
  27466. to the literal pool is loaded to a register, the literal pool register.
  27467. Usually, register %r13 is used as the literal pool register
  27468. (<a href="#s390-Register">s390 Register</a>). Literal pool entries are created by adding the
  27469. suffix :lit1, :lit2, :lit4, or :lit8 to the end of an expression for an
  27470. instruction operand. The expression is added to the literal pool and the
  27471. operand is replaced with the offset to the literal in the literal pool.
  27472. </p>
  27473. <dl compact="compact">
  27474. <dt><code>:lit1</code></dt>
  27475. <dd><p>The literal pool entry is created as an 8-bit value. An operand modifier
  27476. must not be used for the original expression.
  27477. </p></dd>
  27478. <dt><code>:lit2</code></dt>
  27479. <dd><p>The literal pool entry is created as a 16 bit value. The operand modifier
  27480. @got may be used in the original expression. The term &lsquo;<samp>x@got:lit2</samp>&rsquo;
  27481. will put the got offset for the global symbol x to the literal pool as
  27482. 16 bit value.
  27483. </p></dd>
  27484. <dt><code>:lit4</code></dt>
  27485. <dd><p>The literal pool entry is created as a 32-bit value. The operand modifier
  27486. @got and @plt may be used in the original expression. The term
  27487. &lsquo;<samp>x@got:lit4</samp>&rsquo; will put the got offset for the global symbol x to the
  27488. literal pool as a 32-bit value. The term &lsquo;<samp>x@plt:lit4</samp>&rsquo; will put the
  27489. plt offset for the global symbol x to the literal pool as a 32-bit value.
  27490. </p></dd>
  27491. <dt><code>:lit8</code></dt>
  27492. <dd><p>The literal pool entry is created as a 64-bit value. The operand modifier
  27493. @got and @plt may be used in the original expression. The term
  27494. &lsquo;<samp>x@got:lit8</samp>&rsquo; will put the got offset for the global symbol x to the
  27495. literal pool as a 64-bit value. The term &lsquo;<samp>x@plt:lit8</samp>&rsquo; will put the
  27496. plt offset for the global symbol x to the literal pool as a 64-bit value.
  27497. </p></dd>
  27498. </dl>
  27499. <p>The assembler directive &lsquo;<samp>.ltorg</samp>&rsquo; is used to emit all literal pool
  27500. entries to the current position.
  27501. </p>
  27502. <hr>
  27503. <span id="s390-Directives"></span><div class="header">
  27504. <p>
  27505. Next: <a href="#s390-Floating-Point" accesskey="n" rel="next">s390 Floating Point</a>, Previous: <a href="#s390-Syntax" accesskey="p" rel="prev">s390 Syntax</a>, Up: <a href="#S_002f390_002dDependent" accesskey="u" rel="up">S/390-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27506. </div>
  27507. <span id="Assembler-Directives-7"></span><h4 class="subsection">9.42.4 Assembler Directives</h4>
  27508. <p><code>as</code> for s390 supports all of the standard ELF
  27509. assembler directives as outlined in the main part of this document.
  27510. Some directives have been extended and there are some additional
  27511. directives, which are only available for the s390 <code>as</code>.
  27512. </p>
  27513. <dl compact="compact">
  27514. <dd><span id="index-_002einsn-directive_002c-s390"></span>
  27515. </dd>
  27516. <dt><code>.insn</code></dt>
  27517. <dd><p>This directive permits the numeric representation of an instructions
  27518. and makes the assembler insert the operands according to one of the
  27519. instructions formats for &lsquo;<samp>.insn</samp>&rsquo; (<a href="#s390-Formats">s390 Formats</a>).
  27520. For example, the instruction &lsquo;<samp>l %r1,24(%r15)</samp>&rsquo; could be written as
  27521. &lsquo;<samp>.insn rx,0x58000000,%r1,24(%r15)</samp>&rsquo;.
  27522. <span id="index-_002eshort-directive_002c-s390"></span>
  27523. <span id="index-_002elong-directive_002c-s390"></span>
  27524. <span id="index-_002equad-directive_002c-s390"></span>
  27525. </p></dd>
  27526. <dt><code>.short</code></dt>
  27527. <dt><code>.long</code></dt>
  27528. <dt><code>.quad</code></dt>
  27529. <dd><p>This directive places one or more 16-bit (.short), 32-bit (.long), or
  27530. 64-bit (.quad) values into the current section. If an ELF or TLS modifier
  27531. is used only the following expressions are allowed:
  27532. &lsquo;<samp>symbol@modifier + constant</samp>&rsquo;,
  27533. &lsquo;<samp>symbol@modifier + label + constant</samp>&rsquo;, and
  27534. &lsquo;<samp>symbol@modifier - label + constant</samp>&rsquo;.
  27535. The following modifiers are available:
  27536. </p><dl compact="compact">
  27537. <dt><code>@got</code></dt>
  27538. <dt><code>@got12</code></dt>
  27539. <dd><p>The @got modifier can be used for .short, .long and .quad. The @got12
  27540. modifier is synonym to @got. The symbol is added to the GOT. The symbol
  27541. term is replaced with offset from the start of the GOT to the GOT slot for
  27542. the symbol.
  27543. </p></dd>
  27544. <dt><code>@gotoff</code></dt>
  27545. <dd><p>The @gotoff modifier can be used for .short, .long and .quad. The symbol
  27546. term is replaced with the offset from the start of the GOT to the address
  27547. of the symbol.
  27548. </p></dd>
  27549. <dt><code>@gotplt</code></dt>
  27550. <dd><p>The @gotplt modifier can be used for .long and .quad. A procedure linkage
  27551. table entry is generated for the symbol and a jump slot for the symbol
  27552. is added to the GOT. The symbol term is replaced with the offset from the
  27553. start of the GOT to the jump slot for the symbol.
  27554. </p></dd>
  27555. <dt><code>@plt</code></dt>
  27556. <dd><p>The @plt modifier can be used for .long and .quad. A procedure linkage
  27557. table entry us generated for the symbol. The symbol term is replaced with
  27558. the address of the PLT entry for the symbol.
  27559. </p></dd>
  27560. <dt><code>@pltoff</code></dt>
  27561. <dd><p>The @pltoff modifier can be used for .short, .long and .quad. The symbol
  27562. term is replaced with the offset from the start of the PLT to the address
  27563. of the symbol.
  27564. </p></dd>
  27565. <dt><code>@tlsgd</code></dt>
  27566. <dt><code>@tlsldm</code></dt>
  27567. <dd><p>The @tlsgd and @tlsldm modifier can be used for .long and .quad. A
  27568. tls_index structure for the symbol is added to the GOT. The symbol term is
  27569. replaced with the offset from the start of the GOT to the tls_index structure.
  27570. </p></dd>
  27571. <dt><code>@gotntpoff</code></dt>
  27572. <dt><code>@indntpoff</code></dt>
  27573. <dd><p>The @gotntpoff and @indntpoff modifier can be used for .long and .quad.
  27574. The symbol is added to the static TLS block and the negated offset to the
  27575. symbol in the static TLS block is added to the GOT. For @gotntpoff the
  27576. symbol term is replaced with the offset from the start of the GOT to the
  27577. GOT slot, for @indntpoff the symbol term is replaced with the address
  27578. of the GOT slot.
  27579. </p></dd>
  27580. <dt><code>@dtpoff</code></dt>
  27581. <dd><p>The @dtpoff modifier can be used for .long and .quad. The symbol term
  27582. is replaced with the offset of the symbol relative to the start of the
  27583. TLS block it is contained in.
  27584. </p></dd>
  27585. <dt><code>@ntpoff</code></dt>
  27586. <dd><p>The @ntpoff modifier can be used for .long and .quad. The symbol term
  27587. is replaced with the offset of the symbol relative to the TCB pointer.
  27588. </p></dd>
  27589. </dl>
  27590. <p>For more information about the thread local storage modifiers see the
  27591. ELF extension documentation &lsquo;<samp>ELF Handling For Thread-Local Storage</samp>&rsquo;.
  27592. </p>
  27593. <span id="index-_002eltorg-directive_002c-s390"></span>
  27594. </dd>
  27595. <dt><code>.ltorg</code></dt>
  27596. <dd><p>This directive causes the current contents of the literal pool to be
  27597. dumped to the current location (<a href="#s390-Literal-Pool-Entries">s390 Literal Pool Entries</a>).
  27598. </p>
  27599. <span id="index-_002emachine-directive_002c-s390"></span>
  27600. </dd>
  27601. <dt><code>.machine <var>STRING</var>[+<var>EXTENSION</var>]&hellip;</code></dt>
  27602. <dd>
  27603. <p>This directive allows changing the machine for which code is
  27604. generated. <code>string</code> may be any of the <code>-march=</code>
  27605. selection options, or <code>push</code>, or <code>pop</code>. <code>.machine
  27606. push</code> saves the currently selected cpu, which may be restored with
  27607. <code>.machine pop</code>. Be aware that the cpu string has to be put
  27608. into double quotes in case it contains characters not appropriate
  27609. for identifiers. So you have to write <code>&quot;z9-109&quot;</code> instead of
  27610. just <code>z9-109</code>. Extensions can be specified after the cpu
  27611. name, separated by plus characters. Valid extensions are:
  27612. <code>htm</code>,
  27613. <code>nohtm</code>,
  27614. <code>vx</code>,
  27615. <code>novx</code>.
  27616. They extend the basic instruction set with features from a higher
  27617. cpu level, or remove support for a feature from the given cpu
  27618. level.
  27619. </p>
  27620. <p>Example: <code>z13+nohtm</code> allows all instructions of the z13 cpu
  27621. except instructions from the HTM facility.
  27622. </p>
  27623. <span id="index-_002emachinemode-directive_002c-s390"></span>
  27624. </dd>
  27625. <dt><code>.machinemode string</code></dt>
  27626. <dd><p>This directive allows one to change the architecture mode for which code
  27627. is being generated. <code>string</code> may be <code>esa</code>, <code>zarch</code>,
  27628. <code>zarch_nohighgprs</code>, <code>push</code>, or <code>pop</code>.
  27629. <code>.machinemode zarch_nohighgprs</code> can be used to prevent the
  27630. <code>highgprs</code> flag from being set in the ELF header of the output
  27631. file. This is useful in situations where the code is gated with a
  27632. runtime check which makes sure that the code is only executed on
  27633. kernels providing the <code>highgprs</code> feature.
  27634. <code>.machinemode push</code> saves the currently selected mode, which may
  27635. be restored with <code>.machinemode pop</code>.
  27636. </p></dd>
  27637. </dl>
  27638. <hr>
  27639. <span id="s390-Floating-Point"></span><div class="header">
  27640. <p>
  27641. Previous: <a href="#s390-Directives" accesskey="p" rel="prev">s390 Directives</a>, Up: <a href="#S_002f390_002dDependent" accesskey="u" rel="up">S/390-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27642. </div>
  27643. <span id="Floating-Point-13"></span><h4 class="subsection">9.42.5 Floating Point</h4>
  27644. <span id="index-floating-point_002c-s390"></span>
  27645. <span id="index-s390-floating-point"></span>
  27646. <p>The assembler recognizes both the <small>IEEE</small> floating-point instruction and
  27647. the hexadecimal floating-point instructions. The floating-point constructors
  27648. &lsquo;<samp>.float</samp>&rsquo;, &lsquo;<samp>.single</samp>&rsquo;, and &lsquo;<samp>.double</samp>&rsquo; always emit the
  27649. <small>IEEE</small> format. To assemble hexadecimal floating-point constants the
  27650. &lsquo;<samp>.long</samp>&rsquo; and &lsquo;<samp>.quad</samp>&rsquo; directives must be used.
  27651. </p>
  27652. <hr>
  27653. <span id="SCORE_002dDependent"></span><div class="header">
  27654. <p>
  27655. Next: <a href="#SH_002dDependent" accesskey="n" rel="next">SH-Dependent</a>, Previous: <a href="#S_002f390_002dDependent" accesskey="p" rel="prev">S/390-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27656. </div>
  27657. <span id="SCORE-Dependent-Features"></span><h3 class="section">9.43 SCORE Dependent Features</h3>
  27658. <span id="index-SCORE-processor"></span>
  27659. <table class="menu" border="0" cellspacing="0">
  27660. <tr><td align="left" valign="top">&bull; <a href="#SCORE_002dOpts" accesskey="1">SCORE-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler options
  27661. </td></tr>
  27662. <tr><td align="left" valign="top">&bull; <a href="#SCORE_002dPseudo" accesskey="2">SCORE-Pseudo</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">SCORE Assembler Directives
  27663. </td></tr>
  27664. <tr><td align="left" valign="top">&bull; <a href="#SCORE_002dSyntax" accesskey="3">SCORE-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  27665. </td></tr>
  27666. </table>
  27667. <hr>
  27668. <span id="SCORE_002dOpts"></span><div class="header">
  27669. <p>
  27670. Next: <a href="#SCORE_002dPseudo" accesskey="n" rel="next">SCORE-Pseudo</a>, Up: <a href="#SCORE_002dDependent" accesskey="u" rel="up">SCORE-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27671. </div>
  27672. <span id="Options-23"></span><h4 class="subsection">9.43.1 Options</h4>
  27673. <span id="index-options-for-SCORE"></span>
  27674. <span id="index-SCORE-options"></span>
  27675. <span id="index-architectures_002c-SCORE"></span>
  27676. <span id="index-SCORE-architectures"></span>
  27677. <p>The following table lists all available SCORE options.
  27678. </p>
  27679. <dl compact="compact">
  27680. <dt><code>-G <var>num</var></code></dt>
  27681. <dd><p>This option sets the largest size of an object that can be referenced
  27682. implicitly with the <code>gp</code> register. The default value is 8.
  27683. </p>
  27684. </dd>
  27685. <dt><code>-EB</code></dt>
  27686. <dd><p>Assemble code for a big-endian cpu
  27687. </p>
  27688. </dd>
  27689. <dt><code>-EL</code></dt>
  27690. <dd><p>Assemble code for a little-endian cpu
  27691. </p>
  27692. </dd>
  27693. <dt><code>-FIXDD</code></dt>
  27694. <dd><p>Assemble code for fix data dependency
  27695. </p>
  27696. </dd>
  27697. <dt><code>-NWARN</code></dt>
  27698. <dd><p>Assemble code for no warning message for fix data dependency
  27699. </p>
  27700. </dd>
  27701. <dt><code>-SCORE5</code></dt>
  27702. <dd><p>Assemble code for target is SCORE5
  27703. </p>
  27704. </dd>
  27705. <dt><code>-SCORE5U</code></dt>
  27706. <dd><p>Assemble code for target is SCORE5U
  27707. </p>
  27708. </dd>
  27709. <dt><code>-SCORE7</code></dt>
  27710. <dd><p>Assemble code for target is SCORE7, this is default setting
  27711. </p>
  27712. </dd>
  27713. <dt><code>-SCORE3</code></dt>
  27714. <dd><p>Assemble code for target is SCORE3
  27715. </p>
  27716. </dd>
  27717. <dt><code>-march=score7</code></dt>
  27718. <dd><p>Assemble code for target is SCORE7, this is default setting
  27719. </p>
  27720. </dd>
  27721. <dt><code>-march=score3</code></dt>
  27722. <dd><p>Assemble code for target is SCORE3
  27723. </p>
  27724. </dd>
  27725. <dt><code>-USE_R1</code></dt>
  27726. <dd><p>Assemble code for no warning message when using temp register r1
  27727. </p>
  27728. </dd>
  27729. <dt><code>-KPIC</code></dt>
  27730. <dd><p>Generate code for PIC. This option tells the assembler to generate
  27731. score position-independent macro expansions. It also tells the
  27732. assembler to mark the output file as PIC.
  27733. </p>
  27734. </dd>
  27735. <dt><code>-O0</code></dt>
  27736. <dd><p>Assembler will not perform any optimizations
  27737. </p>
  27738. </dd>
  27739. <dt><code>-V</code></dt>
  27740. <dd><p>Sunplus release version
  27741. </p>
  27742. </dd>
  27743. </dl>
  27744. <hr>
  27745. <span id="SCORE_002dPseudo"></span><div class="header">
  27746. <p>
  27747. Next: <a href="#SCORE_002dSyntax" accesskey="n" rel="next">SCORE-Syntax</a>, Previous: <a href="#SCORE_002dOpts" accesskey="p" rel="prev">SCORE-Opts</a>, Up: <a href="#SCORE_002dDependent" accesskey="u" rel="up">SCORE-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27748. </div>
  27749. <span id="SCORE-Assembler-Directives"></span><h4 class="subsection">9.43.2 SCORE Assembler Directives</h4>
  27750. <span id="index-directives-for-SCORE"></span>
  27751. <span id="index-SCORE-directives"></span>
  27752. <p>A number of assembler directives are available for SCORE. The
  27753. following table is far from complete.
  27754. </p>
  27755. <dl compact="compact">
  27756. <dt><code>.set nwarn</code></dt>
  27757. <dd><p>Let the assembler not to generate warnings if the source machine
  27758. language instructions happen data dependency.
  27759. </p>
  27760. </dd>
  27761. <dt><code>.set fixdd</code></dt>
  27762. <dd><p>Let the assembler to insert bubbles (32 bit nop instruction /
  27763. 16 bit nop! Instruction) if the source machine language instructions
  27764. happen data dependency.
  27765. </p>
  27766. </dd>
  27767. <dt><code>.set nofixdd</code></dt>
  27768. <dd><p>Let the assembler to generate warnings if the source machine
  27769. language instructions happen data dependency. (Default)
  27770. </p>
  27771. </dd>
  27772. <dt><code>.set r1</code></dt>
  27773. <dd><p>Let the assembler not to generate warnings if the source program
  27774. uses r1. allow user to use r1
  27775. </p>
  27776. </dd>
  27777. <dt><code>set nor1</code></dt>
  27778. <dd><p>Let the assembler to generate warnings if the source program uses
  27779. r1. (Default)
  27780. </p>
  27781. </dd>
  27782. <dt><code>.sdata</code></dt>
  27783. <dd><p>Tell the assembler to add subsequent data into the sdata section
  27784. </p>
  27785. </dd>
  27786. <dt><code>.rdata</code></dt>
  27787. <dd><p>Tell the assembler to add subsequent data into the rdata section
  27788. </p>
  27789. </dd>
  27790. <dt><code>.frame &quot;frame-register&quot;, &quot;offset&quot;, &quot;return-pc-register&quot;</code></dt>
  27791. <dd><p>Describe a stack frame. &quot;frame-register&quot; is the frame register,
  27792. &quot;offset&quot; is the distance from the frame register to the virtual
  27793. frame pointer, &quot;return-pc-register&quot; is the return program register.
  27794. You must use &quot;.ent&quot; before &quot;.frame&quot; and only one &quot;.frame&quot; can be
  27795. used per &quot;.ent&quot;.
  27796. </p>
  27797. </dd>
  27798. <dt><code>.mask &quot;bitmask&quot;, &quot;frameoffset&quot;</code></dt>
  27799. <dd><p>Indicate which of the integer registers are saved in the current
  27800. function&rsquo;s stack frame, this is for the debugger to explain the
  27801. frame chain.
  27802. </p>
  27803. </dd>
  27804. <dt><code>.ent &quot;proc-name&quot;</code></dt>
  27805. <dd><p>Set the beginning of the procedure &quot;proc_name&quot;. Use this directive
  27806. when you want to generate information for the debugger.
  27807. </p>
  27808. </dd>
  27809. <dt><code>.end proc-name</code></dt>
  27810. <dd><p>Set the end of a procedure. Use this directive to generate information
  27811. for the debugger.
  27812. </p>
  27813. </dd>
  27814. <dt><code>.bss</code></dt>
  27815. <dd><p>Switch the destination of following statements into the bss section,
  27816. which is used for data that is uninitialized anywhere.
  27817. </p>
  27818. </dd>
  27819. </dl>
  27820. <hr>
  27821. <span id="SCORE_002dSyntax"></span><div class="header">
  27822. <p>
  27823. Previous: <a href="#SCORE_002dPseudo" accesskey="p" rel="prev">SCORE-Pseudo</a>, Up: <a href="#SCORE_002dDependent" accesskey="u" rel="up">SCORE-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27824. </div>
  27825. <span id="SCORE-Syntax"></span><h4 class="subsection">9.43.3 SCORE Syntax</h4>
  27826. <table class="menu" border="0" cellspacing="0">
  27827. <tr><td align="left" valign="top">&bull; <a href="#SCORE_002dChars" accesskey="1">SCORE-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  27828. </td></tr>
  27829. </table>
  27830. <hr>
  27831. <span id="SCORE_002dChars"></span><div class="header">
  27832. <p>
  27833. Up: <a href="#SCORE_002dSyntax" accesskey="u" rel="up">SCORE-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27834. </div>
  27835. <span id="Special-Characters-32"></span><h4 class="subsubsection">9.43.3.1 Special Characters</h4>
  27836. <span id="index-line-comment-character_002c-SCORE"></span>
  27837. <span id="index-SCORE-line-comment-character"></span>
  27838. <p>The presence of a &lsquo;<samp>#</samp>&rsquo; appearing anywhere on a line indicates the
  27839. start of a comment that extends to the end of that line.
  27840. </p>
  27841. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  27842. line is treated as a comment, but in this case the line can also be a
  27843. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  27844. control command (see <a href="#Preprocessing">Preprocessing</a>).
  27845. </p>
  27846. <span id="index-line-separator_002c-SCORE"></span>
  27847. <span id="index-statement-separator_002c-SCORE"></span>
  27848. <span id="index-SCORE-line-separator"></span>
  27849. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used to separate statements on the same
  27850. line.
  27851. </p>
  27852. <hr>
  27853. <span id="SH_002dDependent"></span><div class="header">
  27854. <p>
  27855. Next: <a href="#Sparc_002dDependent" accesskey="n" rel="next">Sparc-Dependent</a>, Previous: <a href="#SCORE_002dDependent" accesskey="p" rel="prev">SCORE-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27856. </div>
  27857. <span id="Renesas-_002f-SuperH-SH-Dependent-Features"></span><h3 class="section">9.44 Renesas / SuperH SH Dependent Features</h3>
  27858. <span id="index-SH-support"></span>
  27859. <table class="menu" border="0" cellspacing="0">
  27860. <tr><td align="left" valign="top">&bull; <a href="#SH-Options" accesskey="1">SH Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  27861. </td></tr>
  27862. <tr><td align="left" valign="top">&bull; <a href="#SH-Syntax" accesskey="2">SH Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  27863. </td></tr>
  27864. <tr><td align="left" valign="top">&bull; <a href="#SH-Floating-Point" accesskey="3">SH Floating Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  27865. </td></tr>
  27866. <tr><td align="left" valign="top">&bull; <a href="#SH-Directives" accesskey="4">SH Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">SH Machine Directives
  27867. </td></tr>
  27868. <tr><td align="left" valign="top">&bull; <a href="#SH-Opcodes" accesskey="5">SH Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  27869. </td></tr>
  27870. </table>
  27871. <hr>
  27872. <span id="SH-Options"></span><div class="header">
  27873. <p>
  27874. Next: <a href="#SH-Syntax" accesskey="n" rel="next">SH Syntax</a>, Up: <a href="#SH_002dDependent" accesskey="u" rel="up">SH-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27875. </div>
  27876. <span id="Options-24"></span><h4 class="subsection">9.44.1 Options</h4>
  27877. <span id="index-SH-options"></span>
  27878. <span id="index-options_002c-SH"></span>
  27879. <p><code>as</code> has following command-line options for the Renesas
  27880. (formerly Hitachi) / SuperH SH family.
  27881. </p>
  27882. <dl compact="compact">
  27883. <dd><span id="index-_002d_002dlittle"></span>
  27884. <span id="index-_002d_002dbig"></span>
  27885. <span id="index-_002d_002drelax"></span>
  27886. <span id="index-_002d_002dsmall"></span>
  27887. <span id="index-_002d_002ddsp"></span>
  27888. <span id="index-_002d_002drenesas"></span>
  27889. <span id="index-_002d_002dallow_002dreg_002dprefix"></span>
  27890. </dd>
  27891. <dt><code>--little</code></dt>
  27892. <dd><p>Generate little endian code.
  27893. </p>
  27894. </dd>
  27895. <dt><code>--big</code></dt>
  27896. <dd><p>Generate big endian code.
  27897. </p>
  27898. </dd>
  27899. <dt><code>--relax</code></dt>
  27900. <dd><p>Alter jump instructions for long displacements.
  27901. </p>
  27902. </dd>
  27903. <dt><code>--small</code></dt>
  27904. <dd><p>Align sections to 4 byte boundaries, not 16.
  27905. </p>
  27906. </dd>
  27907. <dt><code>--dsp</code></dt>
  27908. <dd><p>Enable sh-dsp insns, and disable sh3e / sh4 insns.
  27909. </p>
  27910. </dd>
  27911. <dt><code>--renesas</code></dt>
  27912. <dd><p>Disable optimization with section symbol for compatibility with
  27913. Renesas assembler.
  27914. </p>
  27915. </dd>
  27916. <dt><code>--allow-reg-prefix</code></dt>
  27917. <dd><p>Allow &rsquo;$&rsquo; as a register name prefix.
  27918. </p>
  27919. <span id="index-_002d_002dfdpic"></span>
  27920. </dd>
  27921. <dt><code>--fdpic</code></dt>
  27922. <dd><p>Generate an FDPIC object file.
  27923. </p>
  27924. </dd>
  27925. <dt><code>--isa=sh4 | sh4a</code></dt>
  27926. <dd><p>Specify the sh4 or sh4a instruction set.
  27927. </p></dd>
  27928. <dt><code>--isa=dsp</code></dt>
  27929. <dd><p>Enable sh-dsp insns, and disable sh3e / sh4 insns.
  27930. </p></dd>
  27931. <dt><code>--isa=fp</code></dt>
  27932. <dd><p>Enable sh2e, sh3e, sh4, and sh4a insn sets.
  27933. </p></dd>
  27934. <dt><code>--isa=all</code></dt>
  27935. <dd><p>Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets.
  27936. </p>
  27937. </dd>
  27938. <dt><code>-h-tick-hex</code></dt>
  27939. <dd><p>Support H&rsquo;00 style hex constants in addition to 0x00 style.
  27940. </p>
  27941. </dd>
  27942. </dl>
  27943. <hr>
  27944. <span id="SH-Syntax"></span><div class="header">
  27945. <p>
  27946. Next: <a href="#SH-Floating-Point" accesskey="n" rel="next">SH Floating Point</a>, Previous: <a href="#SH-Options" accesskey="p" rel="prev">SH Options</a>, Up: <a href="#SH_002dDependent" accesskey="u" rel="up">SH-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27947. </div>
  27948. <span id="Syntax-26"></span><h4 class="subsection">9.44.2 Syntax</h4>
  27949. <table class="menu" border="0" cellspacing="0">
  27950. <tr><td align="left" valign="top">&bull; <a href="#SH_002dChars" accesskey="1">SH-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  27951. </td></tr>
  27952. <tr><td align="left" valign="top">&bull; <a href="#SH_002dRegs" accesskey="2">SH-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  27953. </td></tr>
  27954. <tr><td align="left" valign="top">&bull; <a href="#SH_002dAddressing" accesskey="3">SH-Addressing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Addressing Modes
  27955. </td></tr>
  27956. </table>
  27957. <hr>
  27958. <span id="SH_002dChars"></span><div class="header">
  27959. <p>
  27960. Next: <a href="#SH_002dRegs" accesskey="n" rel="next">SH-Regs</a>, Up: <a href="#SH-Syntax" accesskey="u" rel="up">SH Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27961. </div>
  27962. <span id="Special-Characters-33"></span><h4 class="subsubsection">9.44.2.1 Special Characters</h4>
  27963. <span id="index-line-comment-character_002c-SH"></span>
  27964. <span id="index-SH-line-comment-character"></span>
  27965. <p>&lsquo;<samp>!</samp>&rsquo; is the line comment character.
  27966. </p>
  27967. <span id="index-line-separator_002c-SH"></span>
  27968. <span id="index-statement-separator_002c-SH"></span>
  27969. <span id="index-SH-line-separator"></span>
  27970. <p>You can use &lsquo;<samp>;</samp>&rsquo; instead of a newline to separate statements.
  27971. </p>
  27972. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  27973. line is treated as a comment, but in this case the line could also be
  27974. a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  27975. control command (see <a href="#Preprocessing">Preprocessing</a>).
  27976. </p>
  27977. <span id="index-symbol-names_002c-_0024-in-3"></span>
  27978. <span id="index-_0024-in-symbol-names-3"></span>
  27979. <p>Since &lsquo;<samp>$</samp>&rsquo; has no special meaning, you may use it in symbol names.
  27980. </p>
  27981. <hr>
  27982. <span id="SH_002dRegs"></span><div class="header">
  27983. <p>
  27984. Next: <a href="#SH_002dAddressing" accesskey="n" rel="next">SH-Addressing</a>, Previous: <a href="#SH_002dChars" accesskey="p" rel="prev">SH-Chars</a>, Up: <a href="#SH-Syntax" accesskey="u" rel="up">SH Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  27985. </div>
  27986. <span id="Register-Names-14"></span><h4 class="subsubsection">9.44.2.2 Register Names</h4>
  27987. <span id="index-SH-registers"></span>
  27988. <span id="index-registers_002c-SH"></span>
  27989. <p>You can use the predefined symbols &lsquo;<samp>r0</samp>&rsquo;, &lsquo;<samp>r1</samp>&rsquo;, &lsquo;<samp>r2</samp>&rsquo;,
  27990. &lsquo;<samp>r3</samp>&rsquo;, &lsquo;<samp>r4</samp>&rsquo;, &lsquo;<samp>r5</samp>&rsquo;, &lsquo;<samp>r6</samp>&rsquo;, &lsquo;<samp>r7</samp>&rsquo;, &lsquo;<samp>r8</samp>&rsquo;,
  27991. &lsquo;<samp>r9</samp>&rsquo;, &lsquo;<samp>r10</samp>&rsquo;, &lsquo;<samp>r11</samp>&rsquo;, &lsquo;<samp>r12</samp>&rsquo;, &lsquo;<samp>r13</samp>&rsquo;, &lsquo;<samp>r14</samp>&rsquo;,
  27992. and &lsquo;<samp>r15</samp>&rsquo; to refer to the SH registers.
  27993. </p>
  27994. <p>The SH also has these control registers:
  27995. </p>
  27996. <dl compact="compact">
  27997. <dt><code>pr</code></dt>
  27998. <dd><p>procedure register (holds return address)
  27999. </p>
  28000. </dd>
  28001. <dt><code>pc</code></dt>
  28002. <dd><p>program counter
  28003. </p>
  28004. </dd>
  28005. <dt><code>mach</code></dt>
  28006. <dt><code>macl</code></dt>
  28007. <dd><p>high and low multiply accumulator registers
  28008. </p>
  28009. </dd>
  28010. <dt><code>sr</code></dt>
  28011. <dd><p>status register
  28012. </p>
  28013. </dd>
  28014. <dt><code>gbr</code></dt>
  28015. <dd><p>global base register
  28016. </p>
  28017. </dd>
  28018. <dt><code>vbr</code></dt>
  28019. <dd><p>vector base register (for interrupt vectors)
  28020. </p></dd>
  28021. </dl>
  28022. <hr>
  28023. <span id="SH_002dAddressing"></span><div class="header">
  28024. <p>
  28025. Previous: <a href="#SH_002dRegs" accesskey="p" rel="prev">SH-Regs</a>, Up: <a href="#SH-Syntax" accesskey="u" rel="up">SH Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28026. </div>
  28027. <span id="Addressing-Modes-4"></span><h4 class="subsubsection">9.44.2.3 Addressing Modes</h4>
  28028. <span id="index-addressing-modes_002c-SH"></span>
  28029. <span id="index-SH-addressing-modes"></span>
  28030. <p><code>as</code> understands the following addressing modes for the SH.
  28031. <code>R<var>n</var></code> in the following refers to any of the numbered
  28032. registers, but <em>not</em> the control registers.
  28033. </p>
  28034. <dl compact="compact">
  28035. <dt><code>R<var>n</var></code></dt>
  28036. <dd><p>Register direct
  28037. </p>
  28038. </dd>
  28039. <dt><code>@R<var>n</var></code></dt>
  28040. <dd><p>Register indirect
  28041. </p>
  28042. </dd>
  28043. <dt><code>@-R<var>n</var></code></dt>
  28044. <dd><p>Register indirect with pre-decrement
  28045. </p>
  28046. </dd>
  28047. <dt><code>@R<var>n</var>+</code></dt>
  28048. <dd><p>Register indirect with post-increment
  28049. </p>
  28050. </dd>
  28051. <dt><code>@(<var>disp</var>, R<var>n</var>)</code></dt>
  28052. <dd><p>Register indirect with displacement
  28053. </p>
  28054. </dd>
  28055. <dt><code>@(R0, R<var>n</var>)</code></dt>
  28056. <dd><p>Register indexed
  28057. </p>
  28058. </dd>
  28059. <dt><code>@(<var>disp</var>, GBR)</code></dt>
  28060. <dd><p><code>GBR</code> offset
  28061. </p>
  28062. </dd>
  28063. <dt><code>@(R0, GBR)</code></dt>
  28064. <dd><p>GBR indexed
  28065. </p>
  28066. </dd>
  28067. <dt><code><var>addr</var></code></dt>
  28068. <dt><code>@(<var>disp</var>, PC)</code></dt>
  28069. <dd><p>PC relative address (for branch or for addressing memory). The
  28070. <code>as</code> implementation allows you to use the simpler form
  28071. <var>addr</var> anywhere a PC relative address is called for; the alternate
  28072. form is supported for compatibility with other assemblers.
  28073. </p>
  28074. </dd>
  28075. <dt><code>#<var>imm</var></code></dt>
  28076. <dd><p>Immediate data
  28077. </p></dd>
  28078. </dl>
  28079. <hr>
  28080. <span id="SH-Floating-Point"></span><div class="header">
  28081. <p>
  28082. Next: <a href="#SH-Directives" accesskey="n" rel="next">SH Directives</a>, Previous: <a href="#SH-Syntax" accesskey="p" rel="prev">SH Syntax</a>, Up: <a href="#SH_002dDependent" accesskey="u" rel="up">SH-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28083. </div>
  28084. <span id="Floating-Point-14"></span><h4 class="subsection">9.44.3 Floating Point</h4>
  28085. <span id="index-floating-point_002c-SH-_0028IEEE_0029"></span>
  28086. <span id="index-SH-floating-point-_0028IEEE_0029"></span>
  28087. <p>SH2E, SH3E and SH4 groups have on-chip floating-point unit (FPU). Other
  28088. SH groups can use <code>.float</code> directive to generate <small>IEEE</small>
  28089. floating-point numbers.
  28090. </p>
  28091. <p>SH2E and SH3E support single-precision floating point calculations as
  28092. well as entirely PCAPI compatible emulation of double-precision
  28093. floating point calculations. SH2E and SH3E instructions are a subset of
  28094. the floating point calculations conforming to the IEEE754 standard.
  28095. </p>
  28096. <p>In addition to single-precision and double-precision floating-point
  28097. operation capability, the on-chip FPU of SH4 has a 128-bit graphic
  28098. engine that enables 32-bit floating-point data to be processed 128
  28099. bits at a time. It also supports 4 * 4 array operations and inner
  28100. product operations. Also, a superscalar architecture is employed that
  28101. enables simultaneous execution of two instructions (including FPU
  28102. instructions), providing performance of up to twice that of
  28103. conventional architectures at the same frequency.
  28104. </p>
  28105. <hr>
  28106. <span id="SH-Directives"></span><div class="header">
  28107. <p>
  28108. Next: <a href="#SH-Opcodes" accesskey="n" rel="next">SH Opcodes</a>, Previous: <a href="#SH-Floating-Point" accesskey="p" rel="prev">SH Floating Point</a>, Up: <a href="#SH_002dDependent" accesskey="u" rel="up">SH-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28109. </div>
  28110. <span id="SH-Machine-Directives"></span><h4 class="subsection">9.44.4 SH Machine Directives</h4>
  28111. <span id="index-SH-machine-directives"></span>
  28112. <span id="index-machine-directives_002c-SH"></span>
  28113. <span id="index-uaword-directive_002c-SH"></span>
  28114. <span id="index-ualong-directive_002c-SH"></span>
  28115. <span id="index-uaquad-directive_002c-SH"></span>
  28116. <dl compact="compact">
  28117. <dt><code>uaword</code></dt>
  28118. <dt><code>ualong</code></dt>
  28119. <dt><code>uaquad</code></dt>
  28120. <dd><p><code>as</code> will issue a warning when a misaligned <code>.word</code>,
  28121. <code>.long</code>, or <code>.quad</code> directive is used. You may use
  28122. <code>.uaword</code>, <code>.ualong</code>, or <code>.uaquad</code> to indicate that the
  28123. value is intentionally misaligned.
  28124. </p></dd>
  28125. </dl>
  28126. <hr>
  28127. <span id="SH-Opcodes"></span><div class="header">
  28128. <p>
  28129. Previous: <a href="#SH-Directives" accesskey="p" rel="prev">SH Directives</a>, Up: <a href="#SH_002dDependent" accesskey="u" rel="up">SH-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28130. </div>
  28131. <span id="Opcodes-17"></span><h4 class="subsection">9.44.5 Opcodes</h4>
  28132. <span id="index-SH-opcode-summary"></span>
  28133. <span id="index-opcode-summary_002c-SH"></span>
  28134. <span id="index-mnemonics_002c-SH"></span>
  28135. <span id="index-instruction-summary_002c-SH"></span>
  28136. <p>For detailed information on the SH machine instruction set, see
  28137. <cite>SH-Microcomputer User&rsquo;s Manual</cite> (Renesas) or
  28138. <cite>SH-4 32-bit CPU Core Architecture</cite> (SuperH) and
  28139. <cite>SuperH (SH) 64-Bit RISC Series</cite> (SuperH).
  28140. </p>
  28141. <p><code>as</code> implements all the standard SH opcodes. No additional
  28142. pseudo-instructions are needed on this family. Note, however, that
  28143. because <code>as</code> supports a simpler form of PC-relative
  28144. addressing, you may simply write (for example)
  28145. </p>
  28146. <div class="example">
  28147. <pre class="example">mov.l bar,r0
  28148. </pre></div>
  28149. <p>where other assemblers might require an explicit displacement to
  28150. <code>bar</code> from the program counter:
  28151. </p>
  28152. <div class="example">
  28153. <pre class="example">mov.l @(<var>disp</var>, PC)
  28154. </pre></div>
  28155. <hr>
  28156. <span id="Sparc_002dDependent"></span><div class="header">
  28157. <p>
  28158. Next: <a href="#TIC54X_002dDependent" accesskey="n" rel="next">TIC54X-Dependent</a>, Previous: <a href="#SH_002dDependent" accesskey="p" rel="prev">SH-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28159. </div>
  28160. <span id="SPARC-Dependent-Features"></span><h3 class="section">9.45 SPARC Dependent Features</h3>
  28161. <span id="index-SPARC-support"></span>
  28162. <table class="menu" border="0" cellspacing="0">
  28163. <tr><td align="left" valign="top">&bull; <a href="#Sparc_002dOpts" accesskey="1">Sparc-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  28164. </td></tr>
  28165. <tr><td align="left" valign="top">&bull; <a href="#Sparc_002dAligned_002dData" accesskey="2">Sparc-Aligned-Data</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Option to enforce aligned data
  28166. </td></tr>
  28167. <tr><td align="left" valign="top">&bull; <a href="#Sparc_002dSyntax" accesskey="3">Sparc-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  28168. </td></tr>
  28169. <tr><td align="left" valign="top">&bull; <a href="#Sparc_002dFloat" accesskey="4">Sparc-Float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  28170. </td></tr>
  28171. <tr><td align="left" valign="top">&bull; <a href="#Sparc_002dDirectives" accesskey="5">Sparc-Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Sparc Machine Directives
  28172. </td></tr>
  28173. </table>
  28174. <hr>
  28175. <span id="Sparc_002dOpts"></span><div class="header">
  28176. <p>
  28177. Next: <a href="#Sparc_002dAligned_002dData" accesskey="n" rel="next">Sparc-Aligned-Data</a>, Up: <a href="#Sparc_002dDependent" accesskey="u" rel="up">Sparc-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28178. </div>
  28179. <span id="Options-25"></span><h4 class="subsection">9.45.1 Options</h4>
  28180. <span id="index-options-for-SPARC"></span>
  28181. <span id="index-SPARC-options"></span>
  28182. <span id="index-architectures_002c-SPARC"></span>
  28183. <span id="index-SPARC-architectures"></span>
  28184. <p>The SPARC chip family includes several successive versions, using the same
  28185. core instruction set, but including a few additional instructions at
  28186. each version. There are exceptions to this however. For details on what
  28187. instructions each variant supports, please see the chip&rsquo;s architecture
  28188. reference manual.
  28189. </p>
  28190. <p>By default, <code>as</code> assumes the core instruction set (SPARC
  28191. v6), but &ldquo;bumps&rdquo; the architecture level as needed: it switches to
  28192. successively higher architectures as it encounters instructions that
  28193. only exist in the higher levels.
  28194. </p>
  28195. <p>If not configured for SPARC v9 (<code>sparc64-*-*</code>) GAS will not bump
  28196. past sparclite by default, an option must be passed to enable the
  28197. v9 instructions.
  28198. </p>
  28199. <p>GAS treats sparclite as being compatible with v8, unless an architecture
  28200. is explicitly requested. SPARC v9 is always incompatible with sparclite.
  28201. </p>
  28202. <dl compact="compact">
  28203. <dd><span id="index-_002dAv6"></span>
  28204. <span id="index-_002dAv7"></span>
  28205. <span id="index-_002dAv8"></span>
  28206. <span id="index-_002dAleon"></span>
  28207. <span id="index-_002dAsparclet"></span>
  28208. <span id="index-_002dAsparclite"></span>
  28209. <span id="index-_002dAv9"></span>
  28210. <span id="index-_002dAv9a"></span>
  28211. <span id="index-_002dAv9b"></span>
  28212. <span id="index-_002dAv9c"></span>
  28213. <span id="index-_002dAv9d"></span>
  28214. <span id="index-_002dAv9e"></span>
  28215. <span id="index-_002dAv9v"></span>
  28216. <span id="index-_002dAv9m"></span>
  28217. <span id="index-_002dAsparc"></span>
  28218. <span id="index-_002dAsparcvis"></span>
  28219. <span id="index-_002dAsparcvis2"></span>
  28220. <span id="index-_002dAsparcfmaf"></span>
  28221. <span id="index-_002dAsparcima"></span>
  28222. <span id="index-_002dAsparcvis3"></span>
  28223. <span id="index-_002dAsparcvis3r"></span>
  28224. </dd>
  28225. <dt><code>-Av6 | -Av7 | -Av8 | -Aleon | -Asparclet | -Asparclite</code></dt>
  28226. <dt><code>-Av8plus | -Av8plusa | -Av8plusb | -Av8plusc | -Av8plusd |</code></dt>
  28227. <dt><code>-Av8plusv | -Av8plusm | -Av8plusm8</code></dt>
  28228. <dt><code>-Av9 | -Av9a | -Av9b | -Av9c | -Av9d | -Av9e | -Av9v | -Av9m | -Av9m8</code></dt>
  28229. <dt><code>-Asparc | -Asparcvis | -Asparcvis2 | -Asparcfmaf | -Asparcima</code></dt>
  28230. <dt><code>-Asparcvis3 | -Asparcvis3r | -Asparc5 | -Asparc6</code></dt>
  28231. <dd><p>Use one of the &lsquo;<samp>-A</samp>&rsquo; options to select one of the SPARC
  28232. architectures explicitly. If you select an architecture explicitly,
  28233. <code>as</code> reports a fatal error if it encounters an instruction
  28234. or feature requiring an incompatible or higher level.
  28235. </p>
  28236. <p>&lsquo;<samp>-Av8plus</samp>&rsquo;, &lsquo;<samp>-Av8plusa</samp>&rsquo;, &lsquo;<samp>-Av8plusb</samp>&rsquo;, &lsquo;<samp>-Av8plusc</samp>&rsquo;,
  28237. &lsquo;<samp>-Av8plusd</samp>&rsquo;, and &lsquo;<samp>-Av8plusv</samp>&rsquo; select a 32 bit environment.
  28238. </p>
  28239. <p>&lsquo;<samp>-Av9</samp>&rsquo;, &lsquo;<samp>-Av9a</samp>&rsquo;, &lsquo;<samp>-Av9b</samp>&rsquo;, &lsquo;<samp>-Av9c</samp>&rsquo;, &lsquo;<samp>-Av9d</samp>&rsquo;,
  28240. &lsquo;<samp>-Av9e</samp>&rsquo;, &lsquo;<samp>-Av9v</samp>&rsquo; and &lsquo;<samp>-Av9m</samp>&rsquo; select a 64 bit
  28241. environment and are not available unless GAS is explicitly configured
  28242. with 64 bit environment support.
  28243. </p>
  28244. <p>&lsquo;<samp>-Av8plusa</samp>&rsquo; and &lsquo;<samp>-Av9a</samp>&rsquo; enable the SPARC V9 instruction set with
  28245. UltraSPARC VIS 1.0 extensions.
  28246. </p>
  28247. <p>&lsquo;<samp>-Av8plusb</samp>&rsquo; and &lsquo;<samp>-Av9b</samp>&rsquo; enable the UltraSPARC VIS 2.0 instructions,
  28248. as well as the instructions enabled by &lsquo;<samp>-Av8plusa</samp>&rsquo; and &lsquo;<samp>-Av9a</samp>&rsquo;.
  28249. </p>
  28250. <p>&lsquo;<samp>-Av8plusc</samp>&rsquo; and &lsquo;<samp>-Av9c</samp>&rsquo; enable the UltraSPARC Niagara instructions,
  28251. as well as the instructions enabled by &lsquo;<samp>-Av8plusb</samp>&rsquo; and &lsquo;<samp>-Av9b</samp>&rsquo;.
  28252. </p>
  28253. <p>&lsquo;<samp>-Av8plusd</samp>&rsquo; and &lsquo;<samp>-Av9d</samp>&rsquo; enable the floating point fused
  28254. multiply-add, VIS 3.0, and HPC extension instructions, as well as the
  28255. instructions enabled by &lsquo;<samp>-Av8plusc</samp>&rsquo; and &lsquo;<samp>-Av9c</samp>&rsquo;.
  28256. </p>
  28257. <p>&lsquo;<samp>-Av8pluse</samp>&rsquo; and &lsquo;<samp>-Av9e</samp>&rsquo; enable the cryptographic
  28258. instructions, as well as the instructions enabled by &lsquo;<samp>-Av8plusd</samp>&rsquo;
  28259. and &lsquo;<samp>-Av9d</samp>&rsquo;.
  28260. </p>
  28261. <p>&lsquo;<samp>-Av8plusv</samp>&rsquo; and &lsquo;<samp>-Av9v</samp>&rsquo; enable floating point unfused
  28262. multiply-add, and integer multiply-add, as well as the instructions
  28263. enabled by &lsquo;<samp>-Av8pluse</samp>&rsquo; and &lsquo;<samp>-Av9e</samp>&rsquo;.
  28264. </p>
  28265. <p>&lsquo;<samp>-Av8plusm</samp>&rsquo; and &lsquo;<samp>-Av9m</samp>&rsquo; enable the VIS 4.0, subtract extended,
  28266. xmpmul, xmontmul and xmontsqr instructions, as well as the instructions
  28267. enabled by &lsquo;<samp>-Av8plusv</samp>&rsquo; and &lsquo;<samp>-Av9v</samp>&rsquo;.
  28268. </p>
  28269. <p>&lsquo;<samp>-Av8plusm8</samp>&rsquo; and &lsquo;<samp>-Av9m8</samp>&rsquo; enable the instructions introduced
  28270. in the Oracle SPARC Architecture 2017 and the M8 processor, as
  28271. well as the instructions enabled by &lsquo;<samp>-Av8plusm</samp>&rsquo; and &lsquo;<samp>-Av9m</samp>&rsquo;.
  28272. </p>
  28273. <p>&lsquo;<samp>-Asparc</samp>&rsquo; specifies a v9 environment. It is equivalent to
  28274. &lsquo;<samp>-Av9</samp>&rsquo; if the word size is 64-bit, and &lsquo;<samp>-Av8plus</samp>&rsquo; otherwise.
  28275. </p>
  28276. <p>&lsquo;<samp>-Asparcvis</samp>&rsquo; specifies a v9a environment. It is equivalent to
  28277. &lsquo;<samp>-Av9a</samp>&rsquo; if the word size is 64-bit, and &lsquo;<samp>-Av8plusa</samp>&rsquo; otherwise.
  28278. </p>
  28279. <p>&lsquo;<samp>-Asparcvis2</samp>&rsquo; specifies a v9b environment. It is equivalent to
  28280. &lsquo;<samp>-Av9b</samp>&rsquo; if the word size is 64-bit, and &lsquo;<samp>-Av8plusb</samp>&rsquo; otherwise.
  28281. </p>
  28282. <p>&lsquo;<samp>-Asparcfmaf</samp>&rsquo; specifies a v9b environment with the floating point
  28283. fused multiply-add instructions enabled.
  28284. </p>
  28285. <p>&lsquo;<samp>-Asparcima</samp>&rsquo; specifies a v9b environment with the integer
  28286. multiply-add instructions enabled.
  28287. </p>
  28288. <p>&lsquo;<samp>-Asparcvis3</samp>&rsquo; specifies a v9b environment with the VIS 3.0,
  28289. HPC , and floating point fused multiply-add instructions enabled.
  28290. </p>
  28291. <p>&lsquo;<samp>-Asparcvis3r</samp>&rsquo; specifies a v9b environment with the VIS 3.0, HPC,
  28292. and floating point unfused multiply-add instructions enabled.
  28293. </p>
  28294. <p>&lsquo;<samp>-Asparc5</samp>&rsquo; is equivalent to &lsquo;<samp>-Av9m</samp>&rsquo;.
  28295. </p>
  28296. <p>&lsquo;<samp>-Asparc6</samp>&rsquo; is equivalent to &lsquo;<samp>-Av9m8</samp>&rsquo;.
  28297. </p>
  28298. </dd>
  28299. <dt><code>-xarch=v8plus | -xarch=v8plusa | -xarch=v8plusb | -xarch=v8plusc</code></dt>
  28300. <dt><code>-xarch=v8plusd | -xarch=v8plusv | -xarch=v8plusm |</code></dt>
  28301. <dt><code>-xarch=v8plusm8 | -xarch=v9 | -xarch=v9a | -xarch=v9b</code></dt>
  28302. <dt><code>-xarch=v9c | -xarch=v9d | -xarch=v9e | -xarch=v9v</code></dt>
  28303. <dt><code>-xarch=v9m | -xarch=v9m8</code></dt>
  28304. <dt><code>-xarch=sparc | -xarch=sparcvis | -xarch=sparcvis2</code></dt>
  28305. <dt><code>-xarch=sparcfmaf | -xarch=sparcima | -xarch=sparcvis3</code></dt>
  28306. <dt><code>-xarch=sparcvis3r | -xarch=sparc5 | -xarch=sparc6</code></dt>
  28307. <dd><p>For compatibility with the SunOS v9 assembler. These options are
  28308. equivalent to -Av8plus, -Av8plusa, -Av8plusb, -Av8plusc, -Av8plusd,
  28309. -Av8plusv, -Av8plusm, -Av8plusm8, -Av9, -Av9a, -Av9b, -Av9c, -Av9d,
  28310. -Av9e, -Av9v, -Av9m, -Av9m8, -Asparc, -Asparcvis, -Asparcvis2,
  28311. -Asparcfmaf, -Asparcima, -Asparcvis3, -Asparcvis3r, -Asparc5 and
  28312. -Asparc6 respectively.
  28313. </p>
  28314. </dd>
  28315. <dt><code>-bump</code></dt>
  28316. <dd><p>Warn whenever it is necessary to switch to another level.
  28317. If an architecture level is explicitly requested, GAS will not issue
  28318. warnings until that level is reached, and will then bump the level
  28319. as required (except between incompatible levels).
  28320. </p>
  28321. </dd>
  28322. <dt><code>-32 | -64</code></dt>
  28323. <dd><p>Select the word size, either 32 bits or 64 bits.
  28324. These options are only available with the ELF object file format,
  28325. and require that the necessary BFD support has been included.
  28326. </p>
  28327. </dd>
  28328. <dt><code>--dcti-couples-detect</code></dt>
  28329. <dd><p>Warn if a DCTI (delayed control transfer instruction) couple is found
  28330. when generating code for a variant of the SPARC architecture in which
  28331. the execution of the couple is unpredictable, or very slow. This is
  28332. disabled by default.
  28333. </p></dd>
  28334. </dl>
  28335. <hr>
  28336. <span id="Sparc_002dAligned_002dData"></span><div class="header">
  28337. <p>
  28338. Next: <a href="#Sparc_002dSyntax" accesskey="n" rel="next">Sparc-Syntax</a>, Previous: <a href="#Sparc_002dOpts" accesskey="p" rel="prev">Sparc-Opts</a>, Up: <a href="#Sparc_002dDependent" accesskey="u" rel="up">Sparc-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28339. </div>
  28340. <span id="Enforcing-aligned-data"></span><h4 class="subsection">9.45.2 Enforcing aligned data</h4>
  28341. <span id="index-data-alignment-on-SPARC"></span>
  28342. <span id="index-SPARC-data-alignment"></span>
  28343. <p>SPARC GAS normally permits data to be misaligned. For example, it
  28344. permits the <code>.long</code> pseudo-op to be used on a byte boundary.
  28345. However, the native SunOS assemblers issue an error when they see
  28346. misaligned data.
  28347. </p>
  28348. <span id="index-_002d_002denforce_002daligned_002ddata"></span>
  28349. <p>You can use the <code>--enforce-aligned-data</code> option to make SPARC GAS
  28350. also issue an error about misaligned data, just as the SunOS
  28351. assemblers do.
  28352. </p>
  28353. <p>The <code>--enforce-aligned-data</code> option is not the default because gcc
  28354. issues misaligned data pseudo-ops when it initializes certain packed
  28355. data structures (structures defined using the <code>packed</code> attribute).
  28356. You may have to assemble with GAS in order to initialize packed data
  28357. structures in your own code.
  28358. </p>
  28359. <span id="index-SPARC-syntax"></span>
  28360. <span id="index-syntax_002c-SPARC"></span>
  28361. <hr>
  28362. <span id="Sparc_002dSyntax"></span><div class="header">
  28363. <p>
  28364. Next: <a href="#Sparc_002dFloat" accesskey="n" rel="next">Sparc-Float</a>, Previous: <a href="#Sparc_002dAligned_002dData" accesskey="p" rel="prev">Sparc-Aligned-Data</a>, Up: <a href="#Sparc_002dDependent" accesskey="u" rel="up">Sparc-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28365. </div>
  28366. <span id="Sparc-Syntax"></span><h4 class="subsection">9.45.3 Sparc Syntax</h4>
  28367. <p>The assembler syntax closely follows The Sparc Architecture Manual,
  28368. versions 8 and 9, as well as most extensions defined by Sun
  28369. for their UltraSPARC and Niagara line of processors.
  28370. </p>
  28371. <table class="menu" border="0" cellspacing="0">
  28372. <tr><td align="left" valign="top">&bull; <a href="#Sparc_002dChars" accesskey="1">Sparc-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  28373. </td></tr>
  28374. <tr><td align="left" valign="top">&bull; <a href="#Sparc_002dRegs" accesskey="2">Sparc-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  28375. </td></tr>
  28376. <tr><td align="left" valign="top">&bull; <a href="#Sparc_002dConstants" accesskey="3">Sparc-Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Constant Names
  28377. </td></tr>
  28378. <tr><td align="left" valign="top">&bull; <a href="#Sparc_002dRelocs" accesskey="4">Sparc-Relocs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relocations
  28379. </td></tr>
  28380. <tr><td align="left" valign="top">&bull; <a href="#Sparc_002dSize_002dTranslations" accesskey="5">Sparc-Size-Translations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Size Translations
  28381. </td></tr>
  28382. </table>
  28383. <hr>
  28384. <span id="Sparc_002dChars"></span><div class="header">
  28385. <p>
  28386. Next: <a href="#Sparc_002dRegs" accesskey="n" rel="next">Sparc-Regs</a>, Up: <a href="#Sparc_002dSyntax" accesskey="u" rel="up">Sparc-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28387. </div>
  28388. <span id="Special-Characters-34"></span><h4 class="subsubsection">9.45.3.1 Special Characters</h4>
  28389. <span id="index-line-comment-character_002c-Sparc"></span>
  28390. <span id="index-Sparc-line-comment-character"></span>
  28391. <p>A &lsquo;<samp>!</samp>&rsquo; character appearing anywhere on a line indicates the start
  28392. of a comment that extends to the end of that line.
  28393. </p>
  28394. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  28395. line is treated as a comment, but in this case the line could also be
  28396. a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  28397. control command (see <a href="#Preprocessing">Preprocessing</a>).
  28398. </p>
  28399. <span id="index-line-separator_002c-Sparc"></span>
  28400. <span id="index-statement-separator_002c-Sparc"></span>
  28401. <span id="index-Sparc-line-separator"></span>
  28402. <p>&lsquo;<samp>;</samp>&rsquo; can be used instead of a newline to separate statements.
  28403. </p>
  28404. <hr>
  28405. <span id="Sparc_002dRegs"></span><div class="header">
  28406. <p>
  28407. Next: <a href="#Sparc_002dConstants" accesskey="n" rel="next">Sparc-Constants</a>, Previous: <a href="#Sparc_002dChars" accesskey="p" rel="prev">Sparc-Chars</a>, Up: <a href="#Sparc_002dSyntax" accesskey="u" rel="up">Sparc-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28408. </div>
  28409. <span id="Register-Names-15"></span><h4 class="subsubsection">9.45.3.2 Register Names</h4>
  28410. <span id="index-Sparc-registers"></span>
  28411. <span id="index-register-names_002c-Sparc"></span>
  28412. <p>The Sparc integer register file is broken down into global,
  28413. outgoing, local, and incoming.
  28414. </p>
  28415. <ul>
  28416. <li> The 8 global registers are referred to as &lsquo;<samp>%g<var>n</var></samp>&rsquo;.
  28417. </li><li> The 8 outgoing registers are referred to as &lsquo;<samp>%o<var>n</var></samp>&rsquo;.
  28418. </li><li> The 8 local registers are referred to as &lsquo;<samp>%l<var>n</var></samp>&rsquo;.
  28419. </li><li> The 8 incoming registers are referred to as &lsquo;<samp>%i<var>n</var></samp>&rsquo;.
  28420. </li><li> The frame pointer register &lsquo;<samp>%i6</samp>&rsquo; can be referenced using
  28421. the alias &lsquo;<samp>%fp</samp>&rsquo;.
  28422. </li><li> The stack pointer register &lsquo;<samp>%o6</samp>&rsquo; can be referenced using
  28423. the alias &lsquo;<samp>%sp</samp>&rsquo;.
  28424. </li></ul>
  28425. <p>Floating point registers are simply referred to as &lsquo;<samp>%f<var>n</var></samp>&rsquo;.
  28426. When assembling for pre-V9, only 32 floating point registers
  28427. are available. For V9 and later there are 64, but there are
  28428. restrictions when referencing the upper 32 registers. They
  28429. can only be accessed as double or quad, and thus only even
  28430. or quad numbered accesses are allowed. For example, &lsquo;<samp>%f34</samp>&rsquo;
  28431. is a legal floating point register, but &lsquo;<samp>%f35</samp>&rsquo; is not.
  28432. </p>
  28433. <p>Floating point registers accessed as double can also be referred using
  28434. the &lsquo;<samp>%d<var>n</var></samp>&rsquo; notation, where <var>n</var> is even. Similarly,
  28435. floating point registers accessed as quad can be referred using the
  28436. &lsquo;<samp>%q<var>n</var></samp>&rsquo; notation, where <var>n</var> is a multiple of 4. For
  28437. example, &lsquo;<samp>%f4</samp>&rsquo; can be denoted as both &lsquo;<samp>%d4</samp>&rsquo; and &lsquo;<samp>%q4</samp>&rsquo;.
  28438. On the other hand, &lsquo;<samp>%f2</samp>&rsquo; can be denoted as &lsquo;<samp>%d2</samp>&rsquo; but not as
  28439. &lsquo;<samp>%q2</samp>&rsquo;.
  28440. </p>
  28441. <p>Certain V9 instructions allow access to ancillary state registers.
  28442. Most simply they can be referred to as &lsquo;<samp>%asr<var>n</var></samp>&rsquo; where
  28443. <var>n</var> can be from 16 to 31. However, there are some aliases
  28444. defined to reference ASR registers defined for various UltraSPARC
  28445. processors:
  28446. </p>
  28447. <ul>
  28448. <li> The tick compare register is referred to as &lsquo;<samp>%tick_cmpr</samp>&rsquo;.
  28449. </li><li> The system tick register is referred to as &lsquo;<samp>%stick</samp>&rsquo;. An alias,
  28450. &lsquo;<samp>%sys_tick</samp>&rsquo;, exists but is deprecated and should not be used
  28451. by new software.
  28452. </li><li> The system tick compare register is referred to as &lsquo;<samp>%stick_cmpr</samp>&rsquo;.
  28453. An alias, &lsquo;<samp>%sys_tick_cmpr</samp>&rsquo;, exists but is deprecated and should
  28454. not be used by new software.
  28455. </li><li> The software interrupt register is referred to as &lsquo;<samp>%softint</samp>&rsquo;.
  28456. </li><li> The set software interrupt register is referred to as &lsquo;<samp>%set_softint</samp>&rsquo;.
  28457. The mnemonic &lsquo;<samp>%softint_set</samp>&rsquo; is provided as an alias.
  28458. </li><li> The clear software interrupt register is referred to as
  28459. &lsquo;<samp>%clear_softint</samp>&rsquo;. The mnemonic &lsquo;<samp>%softint_clear</samp>&rsquo; is provided
  28460. as an alias.
  28461. </li><li> The performance instrumentation counters register is referred to as
  28462. &lsquo;<samp>%pic</samp>&rsquo;.
  28463. </li><li> The performance control register is referred to as &lsquo;<samp>%pcr</samp>&rsquo;.
  28464. </li><li> The graphics status register is referred to as &lsquo;<samp>%gsr</samp>&rsquo;.
  28465. </li><li> The V9 dispatch control register is referred to as &lsquo;<samp>%dcr</samp>&rsquo;.
  28466. </li></ul>
  28467. <p>Various V9 branch and conditional move instructions allow
  28468. specification of which set of integer condition codes to
  28469. test. These are referred to as &lsquo;<samp>%xcc</samp>&rsquo; and &lsquo;<samp>%icc</samp>&rsquo;.
  28470. </p>
  28471. <p>Additionally, GAS supports the so-called &ldquo;natural&rdquo; condition codes;
  28472. these are referred to as &lsquo;<samp>%ncc</samp>&rsquo; and reference to &lsquo;<samp>%icc</samp>&rsquo; if
  28473. the word size is 32, &lsquo;<samp>%xcc</samp>&rsquo; if the word size is 64.
  28474. </p>
  28475. <p>In V9, there are 4 sets of floating point condition codes
  28476. which are referred to as &lsquo;<samp>%fcc<var>n</var></samp>&rsquo;.
  28477. </p>
  28478. <p>Several special privileged and non-privileged registers
  28479. exist:
  28480. </p>
  28481. <ul>
  28482. <li> The V9 address space identifier register is referred to as &lsquo;<samp>%asi</samp>&rsquo;.
  28483. </li><li> The V9 restorable windows register is referred to as &lsquo;<samp>%canrestore</samp>&rsquo;.
  28484. </li><li> The V9 saveable windows register is referred to as &lsquo;<samp>%cansave</samp>&rsquo;.
  28485. </li><li> The V9 clean windows register is referred to as &lsquo;<samp>%cleanwin</samp>&rsquo;.
  28486. </li><li> The V9 current window pointer register is referred to as &lsquo;<samp>%cwp</samp>&rsquo;.
  28487. </li><li> The floating-point queue register is referred to as &lsquo;<samp>%fq</samp>&rsquo;.
  28488. </li><li> The V8 co-processor queue register is referred to as &lsquo;<samp>%cq</samp>&rsquo;.
  28489. </li><li> The floating point status register is referred to as &lsquo;<samp>%fsr</samp>&rsquo;.
  28490. </li><li> The other windows register is referred to as &lsquo;<samp>%otherwin</samp>&rsquo;.
  28491. </li><li> The V9 program counter register is referred to as &lsquo;<samp>%pc</samp>&rsquo;.
  28492. </li><li> The V9 next program counter register is referred to as &lsquo;<samp>%npc</samp>&rsquo;.
  28493. </li><li> The V9 processor interrupt level register is referred to as &lsquo;<samp>%pil</samp>&rsquo;.
  28494. </li><li> The V9 processor state register is referred to as &lsquo;<samp>%pstate</samp>&rsquo;.
  28495. </li><li> The trap base address register is referred to as &lsquo;<samp>%tba</samp>&rsquo;.
  28496. </li><li> The V9 tick register is referred to as &lsquo;<samp>%tick</samp>&rsquo;.
  28497. </li><li> The V9 trap level is referred to as &lsquo;<samp>%tl</samp>&rsquo;.
  28498. </li><li> The V9 trap program counter is referred to as &lsquo;<samp>%tpc</samp>&rsquo;.
  28499. </li><li> The V9 trap next program counter is referred to as &lsquo;<samp>%tnpc</samp>&rsquo;.
  28500. </li><li> The V9 trap state is referred to as &lsquo;<samp>%tstate</samp>&rsquo;.
  28501. </li><li> The V9 trap type is referred to as &lsquo;<samp>%tt</samp>&rsquo;.
  28502. </li><li> The V9 condition codes is referred to as &lsquo;<samp>%ccr</samp>&rsquo;.
  28503. </li><li> The V9 floating-point registers state is referred to as &lsquo;<samp>%fprs</samp>&rsquo;.
  28504. </li><li> The V9 version register is referred to as &lsquo;<samp>%ver</samp>&rsquo;.
  28505. </li><li> The V9 window state register is referred to as &lsquo;<samp>%wstate</samp>&rsquo;.
  28506. </li><li> The Y register is referred to as &lsquo;<samp>%y</samp>&rsquo;.
  28507. </li><li> The V8 window invalid mask register is referred to as &lsquo;<samp>%wim</samp>&rsquo;.
  28508. </li><li> The V8 processor state register is referred to as &lsquo;<samp>%psr</samp>&rsquo;.
  28509. </li><li> The V9 global register level register is referred to as &lsquo;<samp>%gl</samp>&rsquo;.
  28510. </li></ul>
  28511. <p>Several special register names exist for hypervisor mode code:
  28512. </p>
  28513. <ul>
  28514. <li> The hyperprivileged processor state register is referred to as
  28515. &lsquo;<samp>%hpstate</samp>&rsquo;.
  28516. </li><li> The hyperprivileged trap state register is referred to as &lsquo;<samp>%htstate</samp>&rsquo;.
  28517. </li><li> The hyperprivileged interrupt pending register is referred to as
  28518. &lsquo;<samp>%hintp</samp>&rsquo;.
  28519. </li><li> The hyperprivileged trap base address register is referred to as
  28520. &lsquo;<samp>%htba</samp>&rsquo;.
  28521. </li><li> The hyperprivileged implementation version register is referred
  28522. to as &lsquo;<samp>%hver</samp>&rsquo;.
  28523. </li><li> The hyperprivileged system tick offset register is referred to as
  28524. &lsquo;<samp>%hstick_offset</samp>&rsquo;. Note that there is no &lsquo;<samp>%hstick</samp>&rsquo; register,
  28525. the normal &lsquo;<samp>%stick</samp>&rsquo; is used.
  28526. </li><li> The hyperprivileged system tick enable register is referred to as
  28527. &lsquo;<samp>%hstick_enable</samp>&rsquo;.
  28528. </li><li> The hyperprivileged system tick compare register is referred
  28529. to as &lsquo;<samp>%hstick_cmpr</samp>&rsquo;.
  28530. </li></ul>
  28531. <hr>
  28532. <span id="Sparc_002dConstants"></span><div class="header">
  28533. <p>
  28534. Next: <a href="#Sparc_002dRelocs" accesskey="n" rel="next">Sparc-Relocs</a>, Previous: <a href="#Sparc_002dRegs" accesskey="p" rel="prev">Sparc-Regs</a>, Up: <a href="#Sparc_002dSyntax" accesskey="u" rel="up">Sparc-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28535. </div>
  28536. <span id="Constants-2"></span><h4 class="subsubsection">9.45.3.3 Constants</h4>
  28537. <span id="index-Sparc-constants"></span>
  28538. <span id="index-constants_002c-Sparc"></span>
  28539. <p>Several Sparc instructions take an immediate operand field for
  28540. which mnemonic names exist. Two such examples are &lsquo;<samp>membar</samp>&rsquo;
  28541. and &lsquo;<samp>prefetch</samp>&rsquo;. Another example are the set of V9
  28542. memory access instruction that allow specification of an
  28543. address space identifier.
  28544. </p>
  28545. <p>The &lsquo;<samp>membar</samp>&rsquo; instruction specifies a memory barrier that is
  28546. the defined by the operand which is a bitmask. The supported
  28547. mask mnemonics are:
  28548. </p>
  28549. <ul>
  28550. <li> &lsquo;<samp>#Sync</samp>&rsquo; requests that all operations (including nonmemory
  28551. reference operations) appearing prior to the <code>membar</code> must have
  28552. been performed and the effects of any exceptions become visible before
  28553. any instructions after the <code>membar</code> may be initiated. This
  28554. corresponds to <code>membar</code> cmask field bit 2.
  28555. </li><li> &lsquo;<samp>#MemIssue</samp>&rsquo; requests that all memory reference operations
  28556. appearing prior to the <code>membar</code> must have been performed before
  28557. any memory operation after the <code>membar</code> may be initiated. This
  28558. corresponds to <code>membar</code> cmask field bit 1.
  28559. </li><li> &lsquo;<samp>#Lookaside</samp>&rsquo; requests that a store appearing prior to the
  28560. <code>membar</code> must complete before any load following the
  28561. <code>membar</code> referencing the same address can be initiated. This
  28562. corresponds to <code>membar</code> cmask field bit 0.
  28563. </li><li> &lsquo;<samp>#StoreStore</samp>&rsquo; defines that the effects of all stores appearing
  28564. prior to the <code>membar</code> instruction must be visible to all
  28565. processors before the effect of any stores following the
  28566. <code>membar</code>. Equivalent to the deprecated <code>stbar</code> instruction.
  28567. This corresponds to <code>membar</code> mmask field bit 3.
  28568. </li><li> &lsquo;<samp>#LoadStore</samp>&rsquo; defines all loads appearing prior to the
  28569. <code>membar</code> instruction must have been performed before the effect
  28570. of any stores following the <code>membar</code> is visible to any other
  28571. processor. This corresponds to <code>membar</code> mmask field bit 2.
  28572. </li><li> &lsquo;<samp>#StoreLoad</samp>&rsquo; defines that the effects of all stores appearing
  28573. prior to the <code>membar</code> instruction must be visible to all
  28574. processors before loads following the <code>membar</code> may be performed.
  28575. This corresponds to <code>membar</code> mmask field bit 1.
  28576. </li><li> &lsquo;<samp>#LoadLoad</samp>&rsquo; defines that all loads appearing prior to the
  28577. <code>membar</code> instruction must have been performed before any loads
  28578. following the <code>membar</code> may be performed. This corresponds to
  28579. <code>membar</code> mmask field bit 0.
  28580. </li></ul>
  28581. <p>These values can be ored together, for example:
  28582. </p>
  28583. <div class="example">
  28584. <pre class="example">membar #Sync
  28585. membar #StoreLoad | #LoadLoad
  28586. membar #StoreLoad | #StoreStore
  28587. </pre></div>
  28588. <p>The <code>prefetch</code> and <code>prefetcha</code> instructions take a prefetch
  28589. function code. The following prefetch function code constant
  28590. mnemonics are available:
  28591. </p>
  28592. <ul>
  28593. <li> &lsquo;<samp>#n_reads</samp>&rsquo; requests a prefetch for several reads, and corresponds
  28594. to a prefetch function code of 0.
  28595. <p>&lsquo;<samp>#one_read</samp>&rsquo; requests a prefetch for one read, and corresponds
  28596. to a prefetch function code of 1.
  28597. </p>
  28598. <p>&lsquo;<samp>#n_writes</samp>&rsquo; requests a prefetch for several writes (and possibly
  28599. reads), and corresponds to a prefetch function code of 2.
  28600. </p>
  28601. <p>&lsquo;<samp>#one_write</samp>&rsquo; requests a prefetch for one write, and corresponds
  28602. to a prefetch function code of 3.
  28603. </p>
  28604. <p>&lsquo;<samp>#page</samp>&rsquo; requests a prefetch page, and corresponds to a prefetch
  28605. function code of 4.
  28606. </p>
  28607. <p>&lsquo;<samp>#invalidate</samp>&rsquo; requests a prefetch invalidate, and corresponds to
  28608. a prefetch function code of 16.
  28609. </p>
  28610. <p>&lsquo;<samp>#unified</samp>&rsquo; requests a prefetch to the nearest unified cache, and
  28611. corresponds to a prefetch function code of 17.
  28612. </p>
  28613. <p>&lsquo;<samp>#n_reads_strong</samp>&rsquo; requests a strong prefetch for several reads,
  28614. and corresponds to a prefetch function code of 20.
  28615. </p>
  28616. <p>&lsquo;<samp>#one_read_strong</samp>&rsquo; requests a strong prefetch for one read,
  28617. and corresponds to a prefetch function code of 21.
  28618. </p>
  28619. <p>&lsquo;<samp>#n_writes_strong</samp>&rsquo; requests a strong prefetch for several writes,
  28620. and corresponds to a prefetch function code of 22.
  28621. </p>
  28622. <p>&lsquo;<samp>#one_write_strong</samp>&rsquo; requests a strong prefetch for one write,
  28623. and corresponds to a prefetch function code of 23.
  28624. </p>
  28625. <p>Onle one prefetch code may be specified. Here are some examples:
  28626. </p>
  28627. <div class="example">
  28628. <pre class="example">prefetch [%l0 + %l2], #one_read
  28629. prefetch [%g2 + 8], #n_writes
  28630. prefetcha [%g1] 0x8, #unified
  28631. prefetcha [%o0 + 0x10] %asi, #n_reads
  28632. </pre></div>
  28633. <p>The actual behavior of a given prefetch function code is processor
  28634. specific. If a processor does not implement a given prefetch
  28635. function code, it will treat the prefetch instruction as a nop.
  28636. </p>
  28637. <p>For instructions that accept an immediate address space identifier,
  28638. <code>as</code> provides many mnemonics corresponding to
  28639. V9 defined as well as UltraSPARC and Niagara extended values.
  28640. For example, &lsquo;<samp>#ASI_P</samp>&rsquo; and &lsquo;<samp>#ASI_BLK_INIT_QUAD_LDD_AIUS</samp>&rsquo;.
  28641. See the V9 and processor specific manuals for details.
  28642. </p>
  28643. </li></ul>
  28644. <hr>
  28645. <span id="Sparc_002dRelocs"></span><div class="header">
  28646. <p>
  28647. Next: <a href="#Sparc_002dSize_002dTranslations" accesskey="n" rel="next">Sparc-Size-Translations</a>, Previous: <a href="#Sparc_002dConstants" accesskey="p" rel="prev">Sparc-Constants</a>, Up: <a href="#Sparc_002dSyntax" accesskey="u" rel="up">Sparc-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28648. </div>
  28649. <span id="Relocations-4"></span><h4 class="subsubsection">9.45.3.4 Relocations</h4>
  28650. <span id="index-Sparc-relocations"></span>
  28651. <span id="index-relocations_002c-Sparc"></span>
  28652. <p>ELF relocations are available as defined in the 32-bit and 64-bit
  28653. Sparc ELF specifications.
  28654. </p>
  28655. <p><code>R_SPARC_HI22</code> is obtained using &lsquo;<samp>%hi</samp>&rsquo; and <code>R_SPARC_LO10</code>
  28656. is obtained using &lsquo;<samp>%lo</samp>&rsquo;. Likewise <code>R_SPARC_HIX22</code> is
  28657. obtained from &lsquo;<samp>%hix</samp>&rsquo; and <code>R_SPARC_LOX10</code> is obtained
  28658. using &lsquo;<samp>%lox</samp>&rsquo;. For example:
  28659. </p>
  28660. <div class="example">
  28661. <pre class="example">sethi %hi(symbol), %g1
  28662. or %g1, %lo(symbol), %g1
  28663. sethi %hix(symbol), %g1
  28664. xor %g1, %lox(symbol), %g1
  28665. </pre></div>
  28666. <p>These &ldquo;high&rdquo; mnemonics extract bits 31:10 of their operand,
  28667. and the &ldquo;low&rdquo; mnemonics extract bits 9:0 of their operand.
  28668. </p>
  28669. <p>V9 code model relocations can be requested as follows:
  28670. </p>
  28671. <ul>
  28672. <li> <code>R_SPARC_HH22</code> is requested using &lsquo;<samp>%hh</samp>&rsquo;. It can
  28673. also be generated using &lsquo;<samp>%uhi</samp>&rsquo;.
  28674. </li><li> <code>R_SPARC_HM10</code> is requested using &lsquo;<samp>%hm</samp>&rsquo;. It can
  28675. also be generated using &lsquo;<samp>%ulo</samp>&rsquo;.
  28676. </li><li> <code>R_SPARC_LM22</code> is requested using &lsquo;<samp>%lm</samp>&rsquo;.
  28677. </li><li> <code>R_SPARC_H44</code> is requested using &lsquo;<samp>%h44</samp>&rsquo;.
  28678. </li><li> <code>R_SPARC_M44</code> is requested using &lsquo;<samp>%m44</samp>&rsquo;.
  28679. </li><li> <code>R_SPARC_L44</code> is requested using &lsquo;<samp>%l44</samp>&rsquo; or &lsquo;<samp>%l34</samp>&rsquo;.
  28680. </li><li> <code>R_SPARC_H34</code> is requested using &lsquo;<samp>%h34</samp>&rsquo;.
  28681. </li></ul>
  28682. <p>The &lsquo;<samp>%l34</samp>&rsquo; generates a <code>R_SPARC_L44</code> relocation because it
  28683. calculates the necessary value, and therefore no explicit
  28684. <code>R_SPARC_L34</code> relocation needed to be created for this purpose.
  28685. </p>
  28686. <p>The &lsquo;<samp>%h34</samp>&rsquo; and &lsquo;<samp>%l34</samp>&rsquo; relocations are used for the abs34 code
  28687. model. Here is an example abs34 address generation sequence:
  28688. </p>
  28689. <div class="example">
  28690. <pre class="example">sethi %h34(symbol), %g1
  28691. sllx %g1, 2, %g1
  28692. or %g1, %l34(symbol), %g1
  28693. </pre></div>
  28694. <p>The PC relative relocation <code>R_SPARC_PC22</code> can be obtained by
  28695. enclosing an operand inside of &lsquo;<samp>%pc22</samp>&rsquo;. Likewise, the
  28696. <code>R_SPARC_PC10</code> relocation can be obtained using &lsquo;<samp>%pc10</samp>&rsquo;.
  28697. These are mostly used when assembling PIC code. For example, the
  28698. standard PIC sequence on Sparc to get the base of the global offset
  28699. table, PC relative, into a register, can be performed as:
  28700. </p>
  28701. <div class="example">
  28702. <pre class="example">sethi %pc22(_GLOBAL_OFFSET_TABLE_-4), %l7
  28703. add %l7, %pc10(_GLOBAL_OFFSET_TABLE_+4), %l7
  28704. </pre></div>
  28705. <p>Several relocations exist to allow the link editor to potentially
  28706. optimize GOT data references. The <code>R_SPARC_GOTDATA_OP_HIX22</code>
  28707. relocation can obtained by enclosing an operand inside of
  28708. &lsquo;<samp>%gdop_hix22</samp>&rsquo;. The <code>R_SPARC_GOTDATA_OP_LOX10</code>
  28709. relocation can obtained by enclosing an operand inside of
  28710. &lsquo;<samp>%gdop_lox10</samp>&rsquo;. Likewise, <code>R_SPARC_GOTDATA_OP</code> can be
  28711. obtained by enclosing an operand inside of &lsquo;<samp>%gdop</samp>&rsquo;.
  28712. For example, assuming the GOT base is in register <code>%l7</code>:
  28713. </p>
  28714. <div class="example">
  28715. <pre class="example">sethi %gdop_hix22(symbol), %l1
  28716. xor %l1, %gdop_lox10(symbol), %l1
  28717. ld [%l7 + %l1], %l2, %gdop(symbol)
  28718. </pre></div>
  28719. <p>There are many relocations that can be requested for access to
  28720. thread local storage variables. All of the Sparc TLS mnemonics
  28721. are supported:
  28722. </p>
  28723. <ul>
  28724. <li> <code>R_SPARC_TLS_GD_HI22</code> is requested using &lsquo;<samp>%tgd_hi22</samp>&rsquo;.
  28725. </li><li> <code>R_SPARC_TLS_GD_LO10</code> is requested using &lsquo;<samp>%tgd_lo10</samp>&rsquo;.
  28726. </li><li> <code>R_SPARC_TLS_GD_ADD</code> is requested using &lsquo;<samp>%tgd_add</samp>&rsquo;.
  28727. </li><li> <code>R_SPARC_TLS_GD_CALL</code> is requested using &lsquo;<samp>%tgd_call</samp>&rsquo;.
  28728. </li><li> <code>R_SPARC_TLS_LDM_HI22</code> is requested using &lsquo;<samp>%tldm_hi22</samp>&rsquo;.
  28729. </li><li> <code>R_SPARC_TLS_LDM_LO10</code> is requested using &lsquo;<samp>%tldm_lo10</samp>&rsquo;.
  28730. </li><li> <code>R_SPARC_TLS_LDM_ADD</code> is requested using &lsquo;<samp>%tldm_add</samp>&rsquo;.
  28731. </li><li> <code>R_SPARC_TLS_LDM_CALL</code> is requested using &lsquo;<samp>%tldm_call</samp>&rsquo;.
  28732. </li><li> <code>R_SPARC_TLS_LDO_HIX22</code> is requested using &lsquo;<samp>%tldo_hix22</samp>&rsquo;.
  28733. </li><li> <code>R_SPARC_TLS_LDO_LOX10</code> is requested using &lsquo;<samp>%tldo_lox10</samp>&rsquo;.
  28734. </li><li> <code>R_SPARC_TLS_LDO_ADD</code> is requested using &lsquo;<samp>%tldo_add</samp>&rsquo;.
  28735. </li><li> <code>R_SPARC_TLS_IE_HI22</code> is requested using &lsquo;<samp>%tie_hi22</samp>&rsquo;.
  28736. </li><li> <code>R_SPARC_TLS_IE_LO10</code> is requested using &lsquo;<samp>%tie_lo10</samp>&rsquo;.
  28737. </li><li> <code>R_SPARC_TLS_IE_LD</code> is requested using &lsquo;<samp>%tie_ld</samp>&rsquo;.
  28738. </li><li> <code>R_SPARC_TLS_IE_LDX</code> is requested using &lsquo;<samp>%tie_ldx</samp>&rsquo;.
  28739. </li><li> <code>R_SPARC_TLS_IE_ADD</code> is requested using &lsquo;<samp>%tie_add</samp>&rsquo;.
  28740. </li><li> <code>R_SPARC_TLS_LE_HIX22</code> is requested using &lsquo;<samp>%tle_hix22</samp>&rsquo;.
  28741. </li><li> <code>R_SPARC_TLS_LE_LOX10</code> is requested using &lsquo;<samp>%tle_lox10</samp>&rsquo;.
  28742. </li></ul>
  28743. <p>Here are some example TLS model sequences.
  28744. </p>
  28745. <p>First, General Dynamic:
  28746. </p>
  28747. <div class="example">
  28748. <pre class="example">sethi %tgd_hi22(symbol), %l1
  28749. add %l1, %tgd_lo10(symbol), %l1
  28750. add %l7, %l1, %o0, %tgd_add(symbol)
  28751. call __tls_get_addr, %tgd_call(symbol)
  28752. nop
  28753. </pre></div>
  28754. <p>Local Dynamic:
  28755. </p>
  28756. <div class="example">
  28757. <pre class="example">sethi %tldm_hi22(symbol), %l1
  28758. add %l1, %tldm_lo10(symbol), %l1
  28759. add %l7, %l1, %o0, %tldm_add(symbol)
  28760. call __tls_get_addr, %tldm_call(symbol)
  28761. nop
  28762. sethi %tldo_hix22(symbol), %l1
  28763. xor %l1, %tldo_lox10(symbol), %l1
  28764. add %o0, %l1, %l1, %tldo_add(symbol)
  28765. </pre></div>
  28766. <p>Initial Exec:
  28767. </p>
  28768. <div class="example">
  28769. <pre class="example">sethi %tie_hi22(symbol), %l1
  28770. add %l1, %tie_lo10(symbol), %l1
  28771. ld [%l7 + %l1], %o0, %tie_ld(symbol)
  28772. add %g7, %o0, %o0, %tie_add(symbol)
  28773. sethi %tie_hi22(symbol), %l1
  28774. add %l1, %tie_lo10(symbol), %l1
  28775. ldx [%l7 + %l1], %o0, %tie_ldx(symbol)
  28776. add %g7, %o0, %o0, %tie_add(symbol)
  28777. </pre></div>
  28778. <p>And finally, Local Exec:
  28779. </p>
  28780. <div class="example">
  28781. <pre class="example">sethi %tle_hix22(symbol), %l1
  28782. add %l1, %tle_lox10(symbol), %l1
  28783. add %g7, %l1, %l1
  28784. </pre></div>
  28785. <p>When assembling for 64-bit, and a secondary constant addend is
  28786. specified in an address expression that would normally generate
  28787. an <code>R_SPARC_LO10</code> relocation, the assembler will emit an
  28788. <code>R_SPARC_OLO10</code> instead.
  28789. </p>
  28790. <hr>
  28791. <span id="Sparc_002dSize_002dTranslations"></span><div class="header">
  28792. <p>
  28793. Previous: <a href="#Sparc_002dRelocs" accesskey="p" rel="prev">Sparc-Relocs</a>, Up: <a href="#Sparc_002dSyntax" accesskey="u" rel="up">Sparc-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28794. </div>
  28795. <span id="Size-Translations"></span><h4 class="subsubsection">9.45.3.5 Size Translations</h4>
  28796. <span id="index-Sparc-size-translations"></span>
  28797. <span id="index-size_002c-translations_002c-Sparc"></span>
  28798. <p>Often it is desirable to write code in an operand size agnostic
  28799. manner. <code>as</code> provides support for this via
  28800. operand size opcode translations. Translations are supported
  28801. for loads, stores, shifts, compare-and-swap atomics, and the
  28802. &lsquo;<samp>clr</samp>&rsquo; synthetic instruction.
  28803. </p>
  28804. <p>If generating 32-bit code, <code>as</code> will generate the
  28805. 32-bit opcode. Whereas if 64-bit code is being generated,
  28806. the 64-bit opcode will be emitted. For example <code>ldn</code>
  28807. will be transformed into <code>ld</code> for 32-bit code and
  28808. <code>ldx</code> for 64-bit code.
  28809. </p>
  28810. <p>Here is an example meant to demonstrate all the supported
  28811. opcode translations:
  28812. </p>
  28813. <div class="example">
  28814. <pre class="example">ldn [%o0], %o1
  28815. ldna [%o0] %asi, %o2
  28816. stn %o1, [%o0]
  28817. stna %o2, [%o0] %asi
  28818. slln %o3, 3, %o3
  28819. srln %o4, 8, %o4
  28820. sran %o5, 12, %o5
  28821. casn [%o0], %o1, %o2
  28822. casna [%o0] %asi, %o1, %o2
  28823. clrn %g1
  28824. </pre></div>
  28825. <p>In 32-bit mode <code>as</code> will emit:
  28826. </p>
  28827. <div class="example">
  28828. <pre class="example">ld [%o0], %o1
  28829. lda [%o0] %asi, %o2
  28830. st %o1, [%o0]
  28831. sta %o2, [%o0] %asi
  28832. sll %o3, 3, %o3
  28833. srl %o4, 8, %o4
  28834. sra %o5, 12, %o5
  28835. cas [%o0], %o1, %o2
  28836. casa [%o0] %asi, %o1, %o2
  28837. clr %g1
  28838. </pre></div>
  28839. <p>And in 64-bit mode <code>as</code> will emit:
  28840. </p>
  28841. <div class="example">
  28842. <pre class="example">ldx [%o0], %o1
  28843. ldxa [%o0] %asi, %o2
  28844. stx %o1, [%o0]
  28845. stxa %o2, [%o0] %asi
  28846. sllx %o3, 3, %o3
  28847. srlx %o4, 8, %o4
  28848. srax %o5, 12, %o5
  28849. casx [%o0], %o1, %o2
  28850. casxa [%o0] %asi, %o1, %o2
  28851. clrx %g1
  28852. </pre></div>
  28853. <p>Finally, the &lsquo;<samp>.nword</samp>&rsquo; translating directive is supported
  28854. as well. It is documented in the section on Sparc machine
  28855. directives.
  28856. </p>
  28857. <hr>
  28858. <span id="Sparc_002dFloat"></span><div class="header">
  28859. <p>
  28860. Next: <a href="#Sparc_002dDirectives" accesskey="n" rel="next">Sparc-Directives</a>, Previous: <a href="#Sparc_002dSyntax" accesskey="p" rel="prev">Sparc-Syntax</a>, Up: <a href="#Sparc_002dDependent" accesskey="u" rel="up">Sparc-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28861. </div>
  28862. <span id="Floating-Point-15"></span><h4 class="subsection">9.45.4 Floating Point</h4>
  28863. <span id="index-floating-point_002c-SPARC-_0028IEEE_0029"></span>
  28864. <span id="index-SPARC-floating-point-_0028IEEE_0029"></span>
  28865. <p>The Sparc uses <small>IEEE</small> floating-point numbers.
  28866. </p>
  28867. <hr>
  28868. <span id="Sparc_002dDirectives"></span><div class="header">
  28869. <p>
  28870. Previous: <a href="#Sparc_002dFloat" accesskey="p" rel="prev">Sparc-Float</a>, Up: <a href="#Sparc_002dDependent" accesskey="u" rel="up">Sparc-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28871. </div>
  28872. <span id="Sparc-Machine-Directives"></span><h4 class="subsection">9.45.5 Sparc Machine Directives</h4>
  28873. <span id="index-SPARC-machine-directives"></span>
  28874. <span id="index-machine-directives_002c-SPARC"></span>
  28875. <p>The Sparc version of <code>as</code> supports the following additional
  28876. machine directives:
  28877. </p>
  28878. <dl compact="compact">
  28879. <dd><span id="index-align-directive_002c-SPARC"></span>
  28880. </dd>
  28881. <dt><code>.align</code></dt>
  28882. <dd><p>This must be followed by the desired alignment in bytes.
  28883. </p>
  28884. <span id="index-common-directive_002c-SPARC"></span>
  28885. </dd>
  28886. <dt><code>.common</code></dt>
  28887. <dd><p>This must be followed by a symbol name, a positive number, and
  28888. <code>&quot;bss&quot;</code>. This behaves somewhat like <code>.comm</code>, but the
  28889. syntax is different.
  28890. </p>
  28891. <span id="index-half-directive_002c-SPARC"></span>
  28892. </dd>
  28893. <dt><code>.half</code></dt>
  28894. <dd><p>This is functionally identical to <code>.short</code>.
  28895. </p>
  28896. <span id="index-nword-directive_002c-SPARC"></span>
  28897. </dd>
  28898. <dt><code>.nword</code></dt>
  28899. <dd><p>On the Sparc, the <code>.nword</code> directive produces native word sized value,
  28900. ie. if assembling with -32 it is equivalent to <code>.word</code>, if assembling
  28901. with -64 it is equivalent to <code>.xword</code>.
  28902. </p>
  28903. <span id="index-proc-directive_002c-SPARC"></span>
  28904. </dd>
  28905. <dt><code>.proc</code></dt>
  28906. <dd><p>This directive is ignored. Any text following it on the same
  28907. line is also ignored.
  28908. </p>
  28909. <span id="index-register-directive_002c-SPARC"></span>
  28910. </dd>
  28911. <dt><code>.register</code></dt>
  28912. <dd><p>This directive declares use of a global application or system register.
  28913. It must be followed by a register name %g2, %g3, %g6 or %g7, comma and
  28914. the symbol name for that register. If symbol name is <code>#scratch</code>,
  28915. it is a scratch register, if it is <code>#ignore</code>, it just suppresses any
  28916. errors about using undeclared global register, but does not emit any
  28917. information about it into the object file. This can be useful e.g. if you
  28918. save the register before use and restore it after.
  28919. </p>
  28920. <span id="index-reserve-directive_002c-SPARC"></span>
  28921. </dd>
  28922. <dt><code>.reserve</code></dt>
  28923. <dd><p>This must be followed by a symbol name, a positive number, and
  28924. <code>&quot;bss&quot;</code>. This behaves somewhat like <code>.lcomm</code>, but the
  28925. syntax is different.
  28926. </p>
  28927. <span id="index-seg-directive_002c-SPARC"></span>
  28928. </dd>
  28929. <dt><code>.seg</code></dt>
  28930. <dd><p>This must be followed by <code>&quot;text&quot;</code>, <code>&quot;data&quot;</code>, or
  28931. <code>&quot;data1&quot;</code>. It behaves like <code>.text</code>, <code>.data</code>, or
  28932. <code>.data 1</code>.
  28933. </p>
  28934. <span id="index-skip-directive_002c-SPARC"></span>
  28935. </dd>
  28936. <dt><code>.skip</code></dt>
  28937. <dd><p>This is functionally identical to the <code>.space</code> directive.
  28938. </p>
  28939. <span id="index-word-directive_002c-SPARC"></span>
  28940. </dd>
  28941. <dt><code>.word</code></dt>
  28942. <dd><p>On the Sparc, the <code>.word</code> directive produces 32 bit values,
  28943. instead of the 16 bit values it produces on many other machines.
  28944. </p>
  28945. <span id="index-xword-directive_002c-SPARC"></span>
  28946. </dd>
  28947. <dt><code>.xword</code></dt>
  28948. <dd><p>On the Sparc V9 processor, the <code>.xword</code> directive produces
  28949. 64 bit values.
  28950. </p></dd>
  28951. </dl>
  28952. <hr>
  28953. <span id="TIC54X_002dDependent"></span><div class="header">
  28954. <p>
  28955. Next: <a href="#TIC6X_002dDependent" accesskey="n" rel="next">TIC6X-Dependent</a>, Previous: <a href="#Sparc_002dDependent" accesskey="p" rel="prev">Sparc-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28956. </div>
  28957. <span id="TIC54X-Dependent-Features"></span><h3 class="section">9.46 TIC54X Dependent Features</h3>
  28958. <span id="index-TIC54X-support"></span>
  28959. <table class="menu" border="0" cellspacing="0">
  28960. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dOpts" accesskey="1">TIC54X-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command-line Options
  28961. </td></tr>
  28962. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dBlock" accesskey="2">TIC54X-Block</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Blocking
  28963. </td></tr>
  28964. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dEnv" accesskey="3">TIC54X-Env</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Environment Settings
  28965. </td></tr>
  28966. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dConstants" accesskey="4">TIC54X-Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Constants Syntax
  28967. </td></tr>
  28968. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dSubsyms" accesskey="5">TIC54X-Subsyms</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">String Substitution
  28969. </td></tr>
  28970. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dLocals" accesskey="6">TIC54X-Locals</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Local Label Syntax
  28971. </td></tr>
  28972. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dBuiltins" accesskey="7">TIC54X-Builtins</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Builtin Assembler Math Functions
  28973. </td></tr>
  28974. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dExt" accesskey="8">TIC54X-Ext</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Extended Addressing Support
  28975. </td></tr>
  28976. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dDirectives" accesskey="9">TIC54X-Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives
  28977. </td></tr>
  28978. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dMacros">TIC54X-Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macro Features
  28979. </td></tr>
  28980. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dMMRegs">TIC54X-MMRegs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Memory-mapped Registers
  28981. </td></tr>
  28982. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dSyntax">TIC54X-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  28983. </td></tr>
  28984. </table>
  28985. <hr>
  28986. <span id="TIC54X_002dOpts"></span><div class="header">
  28987. <p>
  28988. Next: <a href="#TIC54X_002dBlock" accesskey="n" rel="next">TIC54X-Block</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  28989. </div>
  28990. <span id="Options-26"></span><h4 class="subsection">9.46.1 Options</h4>
  28991. <span id="index-options_002c-TIC54X"></span>
  28992. <span id="index-TIC54X-options"></span>
  28993. <p>The TMS320C54X version of <code>as</code> has a few machine-dependent options.
  28994. </p>
  28995. <span id="index-_002dmfar_002dmode-option_002c-far_002dmode"></span>
  28996. <span id="index-_002dmf-option_002c-far_002dmode"></span>
  28997. <p>You can use the &lsquo;<samp>-mfar-mode</samp>&rsquo; option to enable extended addressing mode.
  28998. All addresses will be assumed to be &gt; 16 bits, and the appropriate
  28999. relocation types will be used. This option is equivalent to using the
  29000. &lsquo;<samp>.far_mode</samp>&rsquo; directive in the assembly code. If you do not use the
  29001. &lsquo;<samp>-mfar-mode</samp>&rsquo; option, all references will be assumed to be 16 bits.
  29002. This option may be abbreviated to &lsquo;<samp>-mf</samp>&rsquo;.
  29003. </p>
  29004. <span id="index-_002dmcpu-option_002c-cpu"></span>
  29005. <p>You can use the &lsquo;<samp>-mcpu</samp>&rsquo; option to specify a particular CPU.
  29006. This option is equivalent to using the &lsquo;<samp>.version</samp>&rsquo; directive in the
  29007. assembly code. For recognized CPU codes, see
  29008. See <a href="#TIC54X_002dDirectives"><code>.version</code></a>. The default CPU version is
  29009. &lsquo;<samp>542</samp>&rsquo;.
  29010. </p>
  29011. <span id="index-_002dmerrors_002dto_002dfile-option_002c-stderr-redirect"></span>
  29012. <span id="index-_002dme-option_002c-stderr-redirect"></span>
  29013. <p>You can use the &lsquo;<samp>-merrors-to-file</samp>&rsquo; option to redirect error output
  29014. to a file (this provided for those deficient environments which don&rsquo;t
  29015. provide adequate output redirection). This option may be abbreviated to
  29016. &lsquo;<samp>-me</samp>&rsquo;.
  29017. </p>
  29018. <hr>
  29019. <span id="TIC54X_002dBlock"></span><div class="header">
  29020. <p>
  29021. Next: <a href="#TIC54X_002dEnv" accesskey="n" rel="next">TIC54X-Env</a>, Previous: <a href="#TIC54X_002dOpts" accesskey="p" rel="prev">TIC54X-Opts</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29022. </div>
  29023. <span id="Blocking"></span><h4 class="subsection">9.46.2 Blocking</h4>
  29024. <p>A blocked section or memory block is guaranteed not to cross the blocking
  29025. boundary (usually a page, or 128 words) if it is smaller than the
  29026. blocking size, or to start on a page boundary if it is larger than the
  29027. blocking size.
  29028. </p>
  29029. <hr>
  29030. <span id="TIC54X_002dEnv"></span><div class="header">
  29031. <p>
  29032. Next: <a href="#TIC54X_002dConstants" accesskey="n" rel="next">TIC54X-Constants</a>, Previous: <a href="#TIC54X_002dBlock" accesskey="p" rel="prev">TIC54X-Block</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29033. </div>
  29034. <span id="Environment-Settings"></span><h4 class="subsection">9.46.3 Environment Settings</h4>
  29035. <span id="index-environment-settings_002c-TIC54X"></span>
  29036. <span id="index-A_005fDIR-environment-variable_002c-TIC54X"></span>
  29037. <span id="index-C54XDSP_005fDIR-environment-variable_002c-TIC54X"></span>
  29038. <p>&lsquo;<samp>C54XDSP_DIR</samp>&rsquo; and &lsquo;<samp>A_DIR</samp>&rsquo; are semicolon-separated
  29039. paths which are added to the list of directories normally searched for
  29040. source and include files. &lsquo;<samp>C54XDSP_DIR</samp>&rsquo; will override &lsquo;<samp>A_DIR</samp>&rsquo;.
  29041. </p>
  29042. <hr>
  29043. <span id="TIC54X_002dConstants"></span><div class="header">
  29044. <p>
  29045. Next: <a href="#TIC54X_002dSubsyms" accesskey="n" rel="next">TIC54X-Subsyms</a>, Previous: <a href="#TIC54X_002dEnv" accesskey="p" rel="prev">TIC54X-Env</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29046. </div>
  29047. <span id="Constants-Syntax"></span><h4 class="subsection">9.46.4 Constants Syntax</h4>
  29048. <span id="index-constants_002c-TIC54X"></span>
  29049. <p>The TIC54X version of <code>as</code> allows the following additional
  29050. constant formats, using a suffix to indicate the radix:
  29051. </p><div class="example">
  29052. <pre class="example"><span id="index-binary-constants_002c-TIC54X"></span>
  29053. Binary <code>000000B, 011000b</code>
  29054. Octal <code>10Q, 224q</code>
  29055. Hexadecimal <code>45h, 0FH</code>
  29056. </pre></div>
  29057. <hr>
  29058. <span id="TIC54X_002dSubsyms"></span><div class="header">
  29059. <p>
  29060. Next: <a href="#TIC54X_002dLocals" accesskey="n" rel="next">TIC54X-Locals</a>, Previous: <a href="#TIC54X_002dConstants" accesskey="p" rel="prev">TIC54X-Constants</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29061. </div>
  29062. <span id="String-Substitution"></span><h4 class="subsection">9.46.5 String Substitution</h4>
  29063. <p>A subset of allowable symbols (which we&rsquo;ll call subsyms) may be assigned
  29064. arbitrary string values. This is roughly equivalent to C preprocessor
  29065. #define macros. When <code>as</code> encounters one of these
  29066. symbols, the symbol is replaced in the input stream by its string value.
  29067. Subsym names <strong>must</strong> begin with a letter.
  29068. </p>
  29069. <p>Subsyms may be defined using the <code>.asg</code> and <code>.eval</code> directives
  29070. (See <a href="#TIC54X_002dDirectives"><code>.asg</code></a>,
  29071. See <a href="#TIC54X_002dDirectives"><code>.eval</code></a>.
  29072. </p>
  29073. <p>Expansion is recursive until a previously encountered symbol is seen, at
  29074. which point substitution stops.
  29075. </p>
  29076. <p>In this example, x is replaced with SYM2; SYM2 is replaced with SYM1, and SYM1
  29077. is replaced with x. At this point, x has already been encountered
  29078. and the substitution stops.
  29079. </p>
  29080. <div class="example">
  29081. <pre class="example"> .asg &quot;x&quot;,SYM1
  29082. .asg &quot;SYM1&quot;,SYM2
  29083. .asg &quot;SYM2&quot;,x
  29084. add x,a ; final code assembled is &quot;add x, a&quot;
  29085. </pre></div>
  29086. <p>Macro parameters are converted to subsyms; a side effect of this is the normal
  29087. <code>as</code> &rsquo;\ARG&rsquo; dereferencing syntax is unnecessary. Subsyms
  29088. defined within a macro will have global scope, unless the <code>.var</code>
  29089. directive is used to identify the subsym as a local macro variable
  29090. see <a href="#TIC54X_002dDirectives"><code>.var</code></a>.
  29091. </p>
  29092. <p>Substitution may be forced in situations where replacement might be
  29093. ambiguous by placing colons on either side of the subsym. The following
  29094. code:
  29095. </p>
  29096. <div class="example">
  29097. <pre class="example"> .eval &quot;10&quot;,x
  29098. LAB:X: add #x, a
  29099. </pre></div>
  29100. <p>When assembled becomes:
  29101. </p>
  29102. <div class="example">
  29103. <pre class="example">LAB10 add #10, a
  29104. </pre></div>
  29105. <p>Smaller parts of the string assigned to a subsym may be accessed with
  29106. the following syntax:
  29107. </p>
  29108. <dl compact="compact">
  29109. <dt><code><code>:<var>symbol</var>(<var>char_index</var>):</code></code></dt>
  29110. <dd><p>Evaluates to a single-character string, the character at <var>char_index</var>.
  29111. </p></dd>
  29112. <dt><code><code>:<var>symbol</var>(<var>start</var>,<var>length</var>):</code></code></dt>
  29113. <dd><p>Evaluates to a substring of <var>symbol</var> beginning at <var>start</var> with
  29114. length <var>length</var>.
  29115. </p></dd>
  29116. </dl>
  29117. <hr>
  29118. <span id="TIC54X_002dLocals"></span><div class="header">
  29119. <p>
  29120. Next: <a href="#TIC54X_002dBuiltins" accesskey="n" rel="next">TIC54X-Builtins</a>, Previous: <a href="#TIC54X_002dSubsyms" accesskey="p" rel="prev">TIC54X-Subsyms</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29121. </div>
  29122. <span id="Local-Labels"></span><h4 class="subsection">9.46.6 Local Labels</h4>
  29123. <p>Local labels may be defined in two ways:
  29124. </p>
  29125. <ul>
  29126. <li> $N, where N is a decimal number between 0 and 9
  29127. </li><li> LABEL?, where LABEL is any legal symbol name.
  29128. </li></ul>
  29129. <p>Local labels thus defined may be redefined or automatically generated.
  29130. The scope of a local label is based on when it may be undefined or reset.
  29131. This happens when one of the following situations is encountered:
  29132. </p>
  29133. <ul>
  29134. <li> .newblock directive see <a href="#TIC54X_002dDirectives"><code>.newblock</code></a>
  29135. </li><li> The current section is changed (.sect, .text, or .data)
  29136. </li><li> Entering or leaving an included file
  29137. </li><li> The macro scope where the label was defined is exited
  29138. </li></ul>
  29139. <hr>
  29140. <span id="TIC54X_002dBuiltins"></span><div class="header">
  29141. <p>
  29142. Next: <a href="#TIC54X_002dExt" accesskey="n" rel="next">TIC54X-Ext</a>, Previous: <a href="#TIC54X_002dLocals" accesskey="p" rel="prev">TIC54X-Locals</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29143. </div>
  29144. <span id="Math-Builtins"></span><h4 class="subsection">9.46.7 Math Builtins</h4>
  29145. <span id="index-math-builtins_002c-TIC54X"></span>
  29146. <span id="index-TIC54X-builtin-math-functions"></span>
  29147. <span id="index-builtin-math-functions_002c-TIC54X"></span>
  29148. <p>The following built-in functions may be used to generate a
  29149. floating-point value. All return a floating-point value except
  29150. &lsquo;<samp>$cvi</samp>&rsquo;, &lsquo;<samp>$int</samp>&rsquo;, and &lsquo;<samp>$sgn</samp>&rsquo;, which return an integer
  29151. value.
  29152. </p>
  29153. <dl compact="compact">
  29154. <dd><span id="index-_0024acos-math-builtin_002c-TIC54X"></span>
  29155. </dd>
  29156. <dt><code><code>$acos(<var>expr</var>)</code></code></dt>
  29157. <dd><p>Returns the floating point arccosine of <var>expr</var>.
  29158. </p>
  29159. <span id="index-_0024asin-math-builtin_002c-TIC54X"></span>
  29160. </dd>
  29161. <dt><code><code>$asin(<var>expr</var>)</code></code></dt>
  29162. <dd><p>Returns the floating point arcsine of <var>expr</var>.
  29163. </p>
  29164. <span id="index-_0024atan-math-builtin_002c-TIC54X"></span>
  29165. </dd>
  29166. <dt><code><code>$atan(<var>expr</var>)</code></code></dt>
  29167. <dd><p>Returns the floating point arctangent of <var>expr</var>.
  29168. </p>
  29169. <span id="index-_0024atan2-math-builtin_002c-TIC54X"></span>
  29170. </dd>
  29171. <dt><code><code>$atan2(<var>expr1</var>,<var>expr2</var>)</code></code></dt>
  29172. <dd><p>Returns the floating point arctangent of <var>expr1</var> / <var>expr2</var>.
  29173. </p>
  29174. <span id="index-_0024ceil-math-builtin_002c-TIC54X"></span>
  29175. </dd>
  29176. <dt><code><code>$ceil(<var>expr</var>)</code></code></dt>
  29177. <dd><p>Returns the smallest integer not less than <var>expr</var> as floating point.
  29178. </p>
  29179. <span id="index-_0024cosh-math-builtin_002c-TIC54X"></span>
  29180. </dd>
  29181. <dt><code><code>$cosh(<var>expr</var>)</code></code></dt>
  29182. <dd><p>Returns the floating point hyperbolic cosine of <var>expr</var>.
  29183. </p>
  29184. <span id="index-_0024cos-math-builtin_002c-TIC54X"></span>
  29185. </dd>
  29186. <dt><code><code>$cos(<var>expr</var>)</code></code></dt>
  29187. <dd><p>Returns the floating point cosine of <var>expr</var>.
  29188. </p>
  29189. <span id="index-_0024cvf-math-builtin_002c-TIC54X"></span>
  29190. </dd>
  29191. <dt><code><code>$cvf(<var>expr</var>)</code></code></dt>
  29192. <dd><p>Returns the integer value <var>expr</var> converted to floating-point.
  29193. </p>
  29194. <span id="index-_0024cvi-math-builtin_002c-TIC54X"></span>
  29195. </dd>
  29196. <dt><code><code>$cvi(<var>expr</var>)</code></code></dt>
  29197. <dd><p>Returns the floating point value <var>expr</var> converted to integer.
  29198. </p>
  29199. <span id="index-_0024exp-math-builtin_002c-TIC54X"></span>
  29200. </dd>
  29201. <dt><code><code>$exp(<var>expr</var>)</code></code></dt>
  29202. <dd><p>Returns the floating point value e ^ <var>expr</var>.
  29203. </p>
  29204. <span id="index-_0024fabs-math-builtin_002c-TIC54X"></span>
  29205. </dd>
  29206. <dt><code><code>$fabs(<var>expr</var>)</code></code></dt>
  29207. <dd><p>Returns the floating point absolute value of <var>expr</var>.
  29208. </p>
  29209. <span id="index-_0024floor-math-builtin_002c-TIC54X"></span>
  29210. </dd>
  29211. <dt><code><code>$floor(<var>expr</var>)</code></code></dt>
  29212. <dd><p>Returns the largest integer that is not greater than <var>expr</var> as
  29213. floating point.
  29214. </p>
  29215. <span id="index-_0024fmod-math-builtin_002c-TIC54X"></span>
  29216. </dd>
  29217. <dt><code><code>$fmod(<var>expr1</var>,<var>expr2</var>)</code></code></dt>
  29218. <dd><p>Returns the floating point remainder of <var>expr1</var> / <var>expr2</var>.
  29219. </p>
  29220. <span id="index-_0024int-math-builtin_002c-TIC54X"></span>
  29221. </dd>
  29222. <dt><code><code>$int(<var>expr</var>)</code></code></dt>
  29223. <dd><p>Returns 1 if <var>expr</var> evaluates to an integer, zero otherwise.
  29224. </p>
  29225. <span id="index-_0024ldexp-math-builtin_002c-TIC54X"></span>
  29226. </dd>
  29227. <dt><code><code>$ldexp(<var>expr1</var>,<var>expr2</var>)</code></code></dt>
  29228. <dd><p>Returns the floating point value <var>expr1</var> * 2 ^ <var>expr2</var>.
  29229. </p>
  29230. <span id="index-_0024log10-math-builtin_002c-TIC54X"></span>
  29231. </dd>
  29232. <dt><code><code>$log10(<var>expr</var>)</code></code></dt>
  29233. <dd><p>Returns the base 10 logarithm of <var>expr</var>.
  29234. </p>
  29235. <span id="index-_0024log-math-builtin_002c-TIC54X"></span>
  29236. </dd>
  29237. <dt><code><code>$log(<var>expr</var>)</code></code></dt>
  29238. <dd><p>Returns the natural logarithm of <var>expr</var>.
  29239. </p>
  29240. <span id="index-_0024max-math-builtin_002c-TIC54X"></span>
  29241. </dd>
  29242. <dt><code><code>$max(<var>expr1</var>,<var>expr2</var>)</code></code></dt>
  29243. <dd><p>Returns the floating point maximum of <var>expr1</var> and <var>expr2</var>.
  29244. </p>
  29245. <span id="index-_0024min-math-builtin_002c-TIC54X"></span>
  29246. </dd>
  29247. <dt><code><code>$min(<var>expr1</var>,<var>expr2</var>)</code></code></dt>
  29248. <dd><p>Returns the floating point minimum of <var>expr1</var> and <var>expr2</var>.
  29249. </p>
  29250. <span id="index-_0024pow-math-builtin_002c-TIC54X"></span>
  29251. </dd>
  29252. <dt><code><code>$pow(<var>expr1</var>,<var>expr2</var>)</code></code></dt>
  29253. <dd><p>Returns the floating point value <var>expr1</var> ^ <var>expr2</var>.
  29254. </p>
  29255. <span id="index-_0024round-math-builtin_002c-TIC54X"></span>
  29256. </dd>
  29257. <dt><code><code>$round(<var>expr</var>)</code></code></dt>
  29258. <dd><p>Returns the nearest integer to <var>expr</var> as a floating point number.
  29259. </p>
  29260. <span id="index-_0024sgn-math-builtin_002c-TIC54X"></span>
  29261. </dd>
  29262. <dt><code><code>$sgn(<var>expr</var>)</code></code></dt>
  29263. <dd><p>Returns -1, 0, or 1 based on the sign of <var>expr</var>.
  29264. </p>
  29265. <span id="index-_0024sin-math-builtin_002c-TIC54X"></span>
  29266. </dd>
  29267. <dt><code><code>$sin(<var>expr</var>)</code></code></dt>
  29268. <dd><p>Returns the floating point sine of <var>expr</var>.
  29269. </p>
  29270. <span id="index-_0024sinh-math-builtin_002c-TIC54X"></span>
  29271. </dd>
  29272. <dt><code><code>$sinh(<var>expr</var>)</code></code></dt>
  29273. <dd><p>Returns the floating point hyperbolic sine of <var>expr</var>.
  29274. </p>
  29275. <span id="index-_0024sqrt-math-builtin_002c-TIC54X"></span>
  29276. </dd>
  29277. <dt><code><code>$sqrt(<var>expr</var>)</code></code></dt>
  29278. <dd><p>Returns the floating point square root of <var>expr</var>.
  29279. </p>
  29280. <span id="index-_0024tan-math-builtin_002c-TIC54X"></span>
  29281. </dd>
  29282. <dt><code><code>$tan(<var>expr</var>)</code></code></dt>
  29283. <dd><p>Returns the floating point tangent of <var>expr</var>.
  29284. </p>
  29285. <span id="index-_0024tanh-math-builtin_002c-TIC54X"></span>
  29286. </dd>
  29287. <dt><code><code>$tanh(<var>expr</var>)</code></code></dt>
  29288. <dd><p>Returns the floating point hyperbolic tangent of <var>expr</var>.
  29289. </p>
  29290. <span id="index-_0024trunc-math-builtin_002c-TIC54X"></span>
  29291. </dd>
  29292. <dt><code><code>$trunc(<var>expr</var>)</code></code></dt>
  29293. <dd><p>Returns the integer value of <var>expr</var> truncated towards zero as
  29294. floating point.
  29295. </p>
  29296. </dd>
  29297. </dl>
  29298. <hr>
  29299. <span id="TIC54X_002dExt"></span><div class="header">
  29300. <p>
  29301. Next: <a href="#TIC54X_002dDirectives" accesskey="n" rel="next">TIC54X-Directives</a>, Previous: <a href="#TIC54X_002dBuiltins" accesskey="p" rel="prev">TIC54X-Builtins</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29302. </div>
  29303. <span id="Extended-Addressing"></span><h4 class="subsection">9.46.8 Extended Addressing</h4>
  29304. <p>The <code>LDX</code> pseudo-op is provided for loading the extended addressing bits
  29305. of a label or address. For example, if an address <code>_label</code> resides
  29306. in extended program memory, the value of <code>_label</code> may be loaded as
  29307. follows:
  29308. </p><div class="example">
  29309. <pre class="example"> ldx #_label,16,a ; loads extended bits of _label
  29310. or #_label,a ; loads lower 16 bits of _label
  29311. bacc a ; full address is in accumulator A
  29312. </pre></div>
  29313. <hr>
  29314. <span id="TIC54X_002dDirectives"></span><div class="header">
  29315. <p>
  29316. Next: <a href="#TIC54X_002dMacros" accesskey="n" rel="next">TIC54X-Macros</a>, Previous: <a href="#TIC54X_002dExt" accesskey="p" rel="prev">TIC54X-Ext</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29317. </div>
  29318. <span id="Directives-2"></span><h4 class="subsection">9.46.9 Directives</h4>
  29319. <span id="index-machine-directives_002c-TIC54X"></span>
  29320. <span id="index-TIC54X-machine-directives"></span>
  29321. <dl compact="compact">
  29322. <dd>
  29323. <span id="index-align-directive_002c-TIC54X"></span>
  29324. <span id="index-even-directive_002c-TIC54X"></span>
  29325. </dd>
  29326. <dt><code>.align [<var>size</var>]</code></dt>
  29327. <dt><code>.even</code></dt>
  29328. <dd><p>Align the section program counter on the next boundary, based on
  29329. <var>size</var>. <var>size</var> may be any power of 2. <code>.even</code> is
  29330. equivalent to <code>.align</code> with a <var>size</var> of 2.
  29331. </p><dl compact="compact">
  29332. <dt><code>1</code></dt>
  29333. <dd><p>Align SPC to word boundary
  29334. </p></dd>
  29335. <dt><code>2</code></dt>
  29336. <dd><p>Align SPC to longword boundary (same as .even)
  29337. </p></dd>
  29338. <dt><code>128</code></dt>
  29339. <dd><p>Align SPC to page boundary
  29340. </p></dd>
  29341. </dl>
  29342. <span id="index-asg-directive_002c-TIC54X"></span>
  29343. </dd>
  29344. <dt><code>.asg <var>string</var>, <var>name</var></code></dt>
  29345. <dd><p>Assign <var>name</var> the string <var>string</var>. String replacement is
  29346. performed on <var>string</var> before assignment.
  29347. </p>
  29348. <span id="index-eval-directive_002c-TIC54X"></span>
  29349. </dd>
  29350. <dt><code>.eval <var>string</var>, <var>name</var></code></dt>
  29351. <dd><p>Evaluate the contents of string <var>string</var> and assign the result as a
  29352. string to the subsym <var>name</var>. String replacement is performed on
  29353. <var>string</var> before assignment.
  29354. </p>
  29355. <span id="index-bss-directive_002c-TIC54X"></span>
  29356. </dd>
  29357. <dt><code>.bss <var>symbol</var>, <var>size</var> [, [<var>blocking_flag</var>] [,<var>alignment_flag</var>]]</code></dt>
  29358. <dd><p>Reserve space for <var>symbol</var> in the .bss section. <var>size</var> is in
  29359. words. If present, <var>blocking_flag</var> indicates the allocated space
  29360. should be aligned on a page boundary if it would otherwise cross a page
  29361. boundary. If present, <var>alignment_flag</var> causes the assembler to
  29362. allocate <var>size</var> on a long word boundary.
  29363. </p>
  29364. <span id="index-byte-directive_002c-TIC54X"></span>
  29365. <span id="index-ubyte-directive_002c-TIC54X"></span>
  29366. <span id="index-char-directive_002c-TIC54X"></span>
  29367. <span id="index-uchar-directive_002c-TIC54X"></span>
  29368. </dd>
  29369. <dt><code>.byte <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29370. <dt><code>.ubyte <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29371. <dt><code>.char <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29372. <dt><code>.uchar <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29373. <dd><p>Place one or more bytes into consecutive words of the current section.
  29374. The upper 8 bits of each word is zero-filled. If a label is used, it
  29375. points to the word allocated for the first byte encountered.
  29376. </p>
  29377. <span id="index-clink-directive_002c-TIC54X"></span>
  29378. </dd>
  29379. <dt><code>.clink [&quot;<var>section_name</var>&quot;]</code></dt>
  29380. <dd><p>Set STYP_CLINK flag for this section, which indicates to the linker that
  29381. if no symbols from this section are referenced, the section should not
  29382. be included in the link. If <var>section_name</var> is omitted, the current
  29383. section is used.
  29384. </p>
  29385. <span id="index-c_005fmode-directive_002c-TIC54X"></span>
  29386. </dd>
  29387. <dt><code>.c_mode</code></dt>
  29388. <dd><p>TBD.
  29389. </p>
  29390. <span id="index-copy-directive_002c-TIC54X"></span>
  29391. </dd>
  29392. <dt><code>.copy &quot;<var>filename</var>&quot; | <var>filename</var></code></dt>
  29393. <dt><code>.include &quot;<var>filename</var>&quot; | <var>filename</var></code></dt>
  29394. <dd><p>Read source statements from <var>filename</var>. The normal include search
  29395. path is used. Normally .copy will cause statements from the included
  29396. file to be printed in the assembly listing and .include will not, but
  29397. this distinction is not currently implemented.
  29398. </p>
  29399. <span id="index-data-directive_002c-TIC54X"></span>
  29400. </dd>
  29401. <dt><code>.data</code></dt>
  29402. <dd><p>Begin assembling code into the .data section.
  29403. </p>
  29404. <span id="index-double-directive_002c-TIC54X"></span>
  29405. <span id="index-ldouble-directive_002c-TIC54X"></span>
  29406. <span id="index-float-directive_002c-TIC54X"></span>
  29407. <span id="index-xfloat-directive_002c-TIC54X"></span>
  29408. </dd>
  29409. <dt><code>.double <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29410. <dt><code>.ldouble <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29411. <dt><code>.float <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29412. <dt><code>.xfloat <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29413. <dd><p>Place an IEEE single-precision floating-point representation of one or
  29414. more floating-point values into the current section. All but
  29415. <code>.xfloat</code> align the result on a longword boundary. Values are
  29416. stored most-significant word first.
  29417. </p>
  29418. <span id="index-drlist-directive_002c-TIC54X"></span>
  29419. <span id="index-drnolist-directive_002c-TIC54X"></span>
  29420. </dd>
  29421. <dt><code>.drlist</code></dt>
  29422. <dt><code>.drnolist</code></dt>
  29423. <dd><p>Control printing of directives to the listing file. Ignored.
  29424. </p>
  29425. <span id="index-emsg-directive_002c-TIC54X"></span>
  29426. <span id="index-mmsg-directive_002c-TIC54X"></span>
  29427. <span id="index-wmsg-directive_002c-TIC54X"></span>
  29428. </dd>
  29429. <dt><code>.emsg <var>string</var></code></dt>
  29430. <dt><code>.mmsg <var>string</var></code></dt>
  29431. <dt><code>.wmsg <var>string</var></code></dt>
  29432. <dd><p>Emit a user-defined error, message, or warning, respectively.
  29433. </p>
  29434. <span id="index-far_005fmode-directive_002c-TIC54X"></span>
  29435. </dd>
  29436. <dt><code>.far_mode</code></dt>
  29437. <dd><p>Use extended addressing when assembling statements. This should appear
  29438. only once per file, and is equivalent to the -mfar-mode option see <a href="#TIC54X_002dOpts"><code>-mfar-mode</code></a>.
  29439. </p>
  29440. <span id="index-fclist-directive_002c-TIC54X"></span>
  29441. <span id="index-fcnolist-directive_002c-TIC54X"></span>
  29442. </dd>
  29443. <dt><code>.fclist</code></dt>
  29444. <dt><code>.fcnolist</code></dt>
  29445. <dd><p>Control printing of false conditional blocks to the listing file.
  29446. </p>
  29447. <span id="index-field-directive_002c-TIC54X"></span>
  29448. </dd>
  29449. <dt><code>.field <var>value</var> [,<var>size</var>]</code></dt>
  29450. <dd><p>Initialize a bitfield of <var>size</var> bits in the current section. If
  29451. <var>value</var> is relocatable, then <var>size</var> must be 16. <var>size</var>
  29452. defaults to 16 bits. If <var>value</var> does not fit into <var>size</var> bits,
  29453. the value will be truncated. Successive <code>.field</code> directives will
  29454. pack starting at the current word, filling the most significant bits
  29455. first, and aligning to the start of the next word if the field size does
  29456. not fit into the space remaining in the current word. A <code>.align</code>
  29457. directive with an operand of 1 will force the next <code>.field</code>
  29458. directive to begin packing into a new word. If a label is used, it
  29459. points to the word that contains the specified field.
  29460. </p>
  29461. <span id="index-global-directive_002c-TIC54X"></span>
  29462. <span id="index-def-directive_002c-TIC54X"></span>
  29463. <span id="index-ref-directive_002c-TIC54X"></span>
  29464. </dd>
  29465. <dt><code>.global <var>symbol</var> [,...,<var>symbol_n</var>]</code></dt>
  29466. <dt><code>.def <var>symbol</var> [,...,<var>symbol_n</var>]</code></dt>
  29467. <dt><code>.ref <var>symbol</var> [,...,<var>symbol_n</var>]</code></dt>
  29468. <dd><p><code>.def</code> nominally identifies a symbol defined in the current file
  29469. and available to other files. <code>.ref</code> identifies a symbol used in
  29470. the current file but defined elsewhere. Both map to the standard
  29471. <code>.global</code> directive.
  29472. </p>
  29473. <span id="index-half-directive_002c-TIC54X"></span>
  29474. <span id="index-uhalf-directive_002c-TIC54X"></span>
  29475. <span id="index-short-directive_002c-TIC54X"></span>
  29476. <span id="index-ushort-directive_002c-TIC54X"></span>
  29477. <span id="index-int-directive_002c-TIC54X"></span>
  29478. <span id="index-uint-directive_002c-TIC54X"></span>
  29479. <span id="index-word-directive_002c-TIC54X"></span>
  29480. <span id="index-uword-directive_002c-TIC54X"></span>
  29481. </dd>
  29482. <dt><code>.half <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29483. <dt><code>.uhalf <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29484. <dt><code>.short <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29485. <dt><code>.ushort <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29486. <dt><code>.int <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29487. <dt><code>.uint <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29488. <dt><code>.word <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29489. <dt><code>.uword <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29490. <dd><p>Place one or more values into consecutive words of the current section.
  29491. If a label is used, it points to the word allocated for the first value
  29492. encountered.
  29493. </p>
  29494. <span id="index-label-directive_002c-TIC54X"></span>
  29495. </dd>
  29496. <dt><code>.label <var>symbol</var></code></dt>
  29497. <dd><p>Define a special <var>symbol</var> to refer to the load time address of the
  29498. current section program counter.
  29499. </p>
  29500. <span id="index-length-directive_002c-TIC54X"></span>
  29501. <span id="index-width-directive_002c-TIC54X"></span>
  29502. </dd>
  29503. <dt><code>.length</code></dt>
  29504. <dt><code>.width</code></dt>
  29505. <dd><p>Set the page length and width of the output listing file. Ignored.
  29506. </p>
  29507. <span id="index-list-directive_002c-TIC54X"></span>
  29508. <span id="index-nolist-directive_002c-TIC54X"></span>
  29509. </dd>
  29510. <dt><code>.list</code></dt>
  29511. <dt><code>.nolist</code></dt>
  29512. <dd><p>Control whether the source listing is printed. Ignored.
  29513. </p>
  29514. <span id="index-long-directive_002c-TIC54X"></span>
  29515. <span id="index-ulong-directive_002c-TIC54X"></span>
  29516. <span id="index-xlong-directive_002c-TIC54X"></span>
  29517. </dd>
  29518. <dt><code>.long <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29519. <dt><code>.ulong <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29520. <dt><code>.xlong <var>value</var> [,...,<var>value_n</var>]</code></dt>
  29521. <dd><p>Place one or more 32-bit values into consecutive words in the current
  29522. section. The most significant word is stored first. <code>.long</code> and
  29523. <code>.ulong</code> align the result on a longword boundary; <code>xlong</code> does
  29524. not.
  29525. </p>
  29526. <span id="index-loop-directive_002c-TIC54X"></span>
  29527. <span id="index-break-directive_002c-TIC54X"></span>
  29528. <span id="index-endloop-directive_002c-TIC54X"></span>
  29529. </dd>
  29530. <dt><code>.loop [<var>count</var>]</code></dt>
  29531. <dt><code>.break [<var>condition</var>]</code></dt>
  29532. <dt><code>.endloop</code></dt>
  29533. <dd><p>Repeatedly assemble a block of code. <code>.loop</code> begins the block, and
  29534. <code>.endloop</code> marks its termination. <var>count</var> defaults to 1024,
  29535. and indicates the number of times the block should be repeated.
  29536. <code>.break</code> terminates the loop so that assembly begins after the
  29537. <code>.endloop</code> directive. The optional <var>condition</var> will cause the
  29538. loop to terminate only if it evaluates to zero.
  29539. </p>
  29540. <span id="index-macro-directive_002c-TIC54X"></span>
  29541. <span id="index-endm-directive_002c-TIC54X"></span>
  29542. </dd>
  29543. <dt><code><var>macro_name</var> .macro [<var>param1</var>][,...<var>param_n</var>]</code></dt>
  29544. <dt><code>[.mexit]</code></dt>
  29545. <dt><code>.endm</code></dt>
  29546. <dd><p>See the section on macros for more explanation (See <a href="#TIC54X_002dMacros">TIC54X-Macros</a>.
  29547. </p>
  29548. <span id="index-mlib-directive_002c-TIC54X"></span>
  29549. </dd>
  29550. <dt><code>.mlib &quot;<var>filename</var>&quot; | <var>filename</var></code></dt>
  29551. <dd><p>Load the macro library <var>filename</var>. <var>filename</var> must be an
  29552. archived library (BFD ar-compatible) of text files, expected to contain
  29553. only macro definitions. The standard include search path is used.
  29554. </p>
  29555. <span id="index-mlist-directive_002c-TIC54X"></span>
  29556. <span id="index-mnolist-directive_002c-TIC54X"></span>
  29557. </dd>
  29558. <dt><code>.mlist</code></dt>
  29559. <dt><code>.mnolist</code></dt>
  29560. <dd><p>Control whether to include macro and loop block expansions in the
  29561. listing output. Ignored.
  29562. </p>
  29563. <span id="index-mmregs-directive_002c-TIC54X"></span>
  29564. </dd>
  29565. <dt><code>.mmregs</code></dt>
  29566. <dd><p>Define global symbolic names for the &rsquo;c54x registers. Supposedly
  29567. equivalent to executing <code>.set</code> directives for each register with
  29568. its memory-mapped value, but in reality is provided only for
  29569. compatibility and does nothing.
  29570. </p>
  29571. <span id="index-newblock-directive_002c-TIC54X"></span>
  29572. </dd>
  29573. <dt><code>.newblock</code></dt>
  29574. <dd><p>This directive resets any TIC54X local labels currently defined. Normal
  29575. <code>as</code> local labels are unaffected.
  29576. </p>
  29577. <span id="index-option-directive_002c-TIC54X"></span>
  29578. </dd>
  29579. <dt><code>.option <var>option_list</var></code></dt>
  29580. <dd><p>Set listing options. Ignored.
  29581. </p>
  29582. <span id="index-sblock-directive_002c-TIC54X"></span>
  29583. </dd>
  29584. <dt><code>.sblock &quot;<var>section_name</var>&quot; | <var>section_name</var> [,&quot;<var>name_n</var>&quot; | <var>name_n</var>]</code></dt>
  29585. <dd><p>Designate <var>section_name</var> for blocking. Blocking guarantees that a
  29586. section will start on a page boundary (128 words) if it would otherwise
  29587. cross a page boundary. Only initialized sections may be designated with
  29588. this directive. See also See <a href="#TIC54X_002dBlock">TIC54X-Block</a>.
  29589. </p>
  29590. <span id="index-sect-directive_002c-TIC54X"></span>
  29591. </dd>
  29592. <dt><code>.sect &quot;<var>section_name</var>&quot;</code></dt>
  29593. <dd><p>Define a named initialized section and make it the current section.
  29594. </p>
  29595. <span id="index-set-directive_002c-TIC54X"></span>
  29596. <span id="index-equ-directive_002c-TIC54X"></span>
  29597. </dd>
  29598. <dt><code><var>symbol</var> .set &quot;<var>value</var>&quot;</code></dt>
  29599. <dt><code><var>symbol</var> .equ &quot;<var>value</var>&quot;</code></dt>
  29600. <dd><p>Equate a constant <var>value</var> to a <var>symbol</var>, which is placed in the
  29601. symbol table. <var>symbol</var> may not be previously defined.
  29602. </p>
  29603. <span id="index-space-directive_002c-TIC54X"></span>
  29604. <span id="index-bes-directive_002c-TIC54X"></span>
  29605. </dd>
  29606. <dt><code>.space <var>size_in_bits</var></code></dt>
  29607. <dt><code>.bes <var>size_in_bits</var></code></dt>
  29608. <dd><p>Reserve the given number of bits in the current section and zero-fill
  29609. them. If a label is used with <code>.space</code>, it points to the
  29610. <strong>first</strong> word reserved. With <code>.bes</code>, the label points to the
  29611. <strong>last</strong> word reserved.
  29612. </p>
  29613. <span id="index-sslist-directive_002c-TIC54X"></span>
  29614. <span id="index-ssnolist-directive_002c-TIC54X"></span>
  29615. </dd>
  29616. <dt><code>.sslist</code></dt>
  29617. <dt><code>.ssnolist</code></dt>
  29618. <dd><p>Controls the inclusion of subsym replacement in the listing output. Ignored.
  29619. </p>
  29620. <span id="index-string-directive_002c-TIC54X"></span>
  29621. <span id="index-pstring-directive_002c-TIC54X"></span>
  29622. </dd>
  29623. <dt><code>.string &quot;<var>string</var>&quot; [,...,&quot;<var>string_n</var>&quot;]</code></dt>
  29624. <dt><code>.pstring &quot;<var>string</var>&quot; [,...,&quot;<var>string_n</var>&quot;]</code></dt>
  29625. <dd><p>Place 8-bit characters from <var>string</var> into the current section.
  29626. <code>.string</code> zero-fills the upper 8 bits of each word, while
  29627. <code>.pstring</code> puts two characters into each word, filling the
  29628. most-significant bits first. Unused space is zero-filled. If a label
  29629. is used, it points to the first word initialized.
  29630. </p>
  29631. <span id="index-struct-directive_002c-TIC54X"></span>
  29632. <span id="index-tag-directive_002c-TIC54X"></span>
  29633. <span id="index-endstruct-directive_002c-TIC54X"></span>
  29634. </dd>
  29635. <dt><code>[<var>stag</var>] .struct [<var>offset</var>]</code></dt>
  29636. <dt><code>[<var>name_1</var>] element [<var>count_1</var>]</code></dt>
  29637. <dt><code>[<var>name_2</var>] element [<var>count_2</var>]</code></dt>
  29638. <dt><code>[<var>tname</var>] .tag <var>stagx</var> [<var>tcount</var>]</code></dt>
  29639. <dt><code>...</code></dt>
  29640. <dt><code>[<var>name_n</var>] element [<var>count_n</var>]</code></dt>
  29641. <dt><code>[<var>ssize</var>] .endstruct</code></dt>
  29642. <dt><code><var>label</var> .tag [<var>stag</var>]</code></dt>
  29643. <dd><p>Assign symbolic offsets to the elements of a structure. <var>stag</var>
  29644. defines a symbol to use to reference the structure. <var>offset</var>
  29645. indicates a starting value to use for the first element encountered;
  29646. otherwise it defaults to zero. Each element can have a named offset,
  29647. <var>name</var>, which is a symbol assigned the value of the element&rsquo;s offset
  29648. into the structure. If <var>stag</var> is missing, these become global
  29649. symbols. <var>count</var> adjusts the offset that many times, as if
  29650. <code>element</code> were an array. <code>element</code> may be one of
  29651. <code>.byte</code>, <code>.word</code>, <code>.long</code>, <code>.float</code>, or any
  29652. equivalent of those, and the structure offset is adjusted accordingly.
  29653. <code>.field</code> and <code>.string</code> are also allowed; the size of
  29654. <code>.field</code> is one bit, and <code>.string</code> is considered to be one
  29655. word in size. Only element descriptors, structure/union tags,
  29656. <code>.align</code> and conditional assembly directives are allowed within
  29657. <code>.struct</code>/<code>.endstruct</code>. <code>.align</code> aligns member offsets
  29658. to word boundaries only. <var>ssize</var>, if provided, will always be
  29659. assigned the size of the structure.
  29660. </p>
  29661. <p>The <code>.tag</code> directive, in addition to being used to define a
  29662. structure/union element within a structure, may be used to apply a
  29663. structure to a symbol. Once applied to <var>label</var>, the individual
  29664. structure elements may be applied to <var>label</var> to produce the desired
  29665. offsets using <var>label</var> as the structure base.
  29666. </p>
  29667. <span id="index-tab-directive_002c-TIC54X"></span>
  29668. </dd>
  29669. <dt><code>.tab</code></dt>
  29670. <dd><p>Set the tab size in the output listing. Ignored.
  29671. </p>
  29672. <span id="index-union-directive_002c-TIC54X"></span>
  29673. <span id="index-tag-directive_002c-TIC54X-1"></span>
  29674. <span id="index-endunion-directive_002c-TIC54X"></span>
  29675. </dd>
  29676. <dt><code>[<var>utag</var>] .union</code></dt>
  29677. <dt><code>[<var>name_1</var>] element [<var>count_1</var>]</code></dt>
  29678. <dt><code>[<var>name_2</var>] element [<var>count_2</var>]</code></dt>
  29679. <dt><code>[<var>tname</var>] .tag <var>utagx</var>[,<var>tcount</var>]</code></dt>
  29680. <dt><code>...</code></dt>
  29681. <dt><code>[<var>name_n</var>] element [<var>count_n</var>]</code></dt>
  29682. <dt><code>[<var>usize</var>] .endstruct</code></dt>
  29683. <dt><code><var>label</var> .tag [<var>utag</var>]</code></dt>
  29684. <dd><p>Similar to <code>.struct</code>, but the offset after each element is reset to
  29685. zero, and the <var>usize</var> is set to the maximum of all defined elements.
  29686. Starting offset for the union is always zero.
  29687. </p>
  29688. <span id="index-usect-directive_002c-TIC54X"></span>
  29689. </dd>
  29690. <dt><code>[<var>symbol</var>] .usect &quot;<var>section_name</var>&quot;, <var>size</var>, [,[<var>blocking_flag</var>] [,<var>alignment_flag</var>]]</code></dt>
  29691. <dd><p>Reserve space for variables in a named, uninitialized section (similar to
  29692. .bss). <code>.usect</code> allows definitions sections independent of .bss.
  29693. <var>symbol</var> points to the first location reserved by this allocation.
  29694. The symbol may be used as a variable name. <var>size</var> is the allocated
  29695. size in words. <var>blocking_flag</var> indicates whether to block this
  29696. section on a page boundary (128 words) (see <a href="#TIC54X_002dBlock">TIC54X-Block</a>).
  29697. <var>alignment flag</var> indicates whether the section should be
  29698. longword-aligned.
  29699. </p>
  29700. <span id="index-var-directive_002c-TIC54X"></span>
  29701. </dd>
  29702. <dt><code>.var <var>sym</var>[,..., <var>sym_n</var>]</code></dt>
  29703. <dd><p>Define a subsym to be a local variable within a macro. See
  29704. See <a href="#TIC54X_002dMacros">TIC54X-Macros</a>.
  29705. </p>
  29706. <span id="index-version-directive_002c-TIC54X"></span>
  29707. </dd>
  29708. <dt><code>.version <var>version</var></code></dt>
  29709. <dd><p>Set which processor to build instructions for. Though the following
  29710. values are accepted, the op is ignored.
  29711. </p><dl compact="compact">
  29712. <dt><code>541</code></dt>
  29713. <dt><code>542</code></dt>
  29714. <dt><code>543</code></dt>
  29715. <dt><code>545</code></dt>
  29716. <dt><code>545LP</code></dt>
  29717. <dt><code>546LP</code></dt>
  29718. <dt><code>548</code></dt>
  29719. <dt><code>549</code></dt>
  29720. </dl>
  29721. </dd>
  29722. </dl>
  29723. <hr>
  29724. <span id="TIC54X_002dMacros"></span><div class="header">
  29725. <p>
  29726. Next: <a href="#TIC54X_002dMMRegs" accesskey="n" rel="next">TIC54X-MMRegs</a>, Previous: <a href="#TIC54X_002dDirectives" accesskey="p" rel="prev">TIC54X-Directives</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29727. </div>
  29728. <span id="Macros-1"></span><h4 class="subsection">9.46.10 Macros</h4>
  29729. <span id="index-TIC54X_002dspecific-macros"></span>
  29730. <span id="index-macros_002c-TIC54X"></span>
  29731. <p>Macros do not require explicit dereferencing of arguments (i.e., \ARG).
  29732. </p>
  29733. <p>During macro expansion, the macro parameters are converted to subsyms.
  29734. If the number of arguments passed the macro invocation exceeds the
  29735. number of parameters defined, the last parameter is assigned the string
  29736. equivalent of all remaining arguments. If fewer arguments are given
  29737. than parameters, the missing parameters are assigned empty strings. To
  29738. include a comma in an argument, you must enclose the argument in quotes.
  29739. </p>
  29740. <span id="index-subsym-builtins_002c-TIC54X"></span>
  29741. <span id="index-TIC54X-subsym-builtins"></span>
  29742. <span id="index-builtin-subsym-functions_002c-TIC54X"></span>
  29743. <p>The following built-in subsym functions allow examination of the string
  29744. value of subsyms (or ordinary strings). The arguments are strings
  29745. unless otherwise indicated (subsyms passed as args will be replaced by
  29746. the strings they represent).
  29747. </p><dl compact="compact">
  29748. <dd><span id="index-_0024symlen-subsym-builtin_002c-TIC54X"></span>
  29749. </dd>
  29750. <dt><code><code>$symlen(<var>str</var>)</code></code></dt>
  29751. <dd><p>Returns the length of <var>str</var>.
  29752. </p>
  29753. <span id="index-_0024symcmp-subsym-builtin_002c-TIC54X"></span>
  29754. </dd>
  29755. <dt><code><code>$symcmp(<var>str1</var>,<var>str2</var>)</code></code></dt>
  29756. <dd><p>Returns 0 if <var>str1</var> == <var>str2</var>, non-zero otherwise.
  29757. </p>
  29758. <span id="index-_0024firstch-subsym-builtin_002c-TIC54X"></span>
  29759. </dd>
  29760. <dt><code><code>$firstch(<var>str</var>,<var>ch</var>)</code></code></dt>
  29761. <dd><p>Returns index of the first occurrence of character constant <var>ch</var> in
  29762. <var>str</var>.
  29763. </p>
  29764. <span id="index-_0024lastch-subsym-builtin_002c-TIC54X"></span>
  29765. </dd>
  29766. <dt><code><code>$lastch(<var>str</var>,<var>ch</var>)</code></code></dt>
  29767. <dd><p>Returns index of the last occurrence of character constant <var>ch</var> in
  29768. <var>str</var>.
  29769. </p>
  29770. <span id="index-_0024isdefed-subsym-builtin_002c-TIC54X"></span>
  29771. </dd>
  29772. <dt><code><code>$isdefed(<var>symbol</var>)</code></code></dt>
  29773. <dd><p>Returns zero if the symbol <var>symbol</var> is not in the symbol table,
  29774. non-zero otherwise.
  29775. </p>
  29776. <span id="index-_0024ismember-subsym-builtin_002c-TIC54X"></span>
  29777. </dd>
  29778. <dt><code><code>$ismember(<var>symbol</var>,<var>list</var>)</code></code></dt>
  29779. <dd><p>Assign the first member of comma-separated string <var>list</var> to
  29780. <var>symbol</var>; <var>list</var> is reassigned the remainder of the list. Returns
  29781. zero if <var>list</var> is a null string. Both arguments must be subsyms.
  29782. </p>
  29783. <span id="index-_0024iscons-subsym-builtin_002c-TIC54X"></span>
  29784. </dd>
  29785. <dt><code><code>$iscons(<var>expr</var>)</code></code></dt>
  29786. <dd><p>Returns 1 if string <var>expr</var> is binary, 2 if octal, 3 if hexadecimal,
  29787. 4 if a character, 5 if decimal, and zero if not an integer.
  29788. </p>
  29789. <span id="index-_0024isname-subsym-builtin_002c-TIC54X"></span>
  29790. </dd>
  29791. <dt><code><code>$isname(<var>name</var>)</code></code></dt>
  29792. <dd><p>Returns 1 if <var>name</var> is a valid symbol name, zero otherwise.
  29793. </p>
  29794. <span id="index-_0024isreg-subsym-builtin_002c-TIC54X"></span>
  29795. </dd>
  29796. <dt><code><code>$isreg(<var>reg</var>)</code></code></dt>
  29797. <dd><p>Returns 1 if <var>reg</var> is a valid predefined register name (AR0-AR7 only).
  29798. </p>
  29799. <span id="index-_0024structsz-subsym-builtin_002c-TIC54X"></span>
  29800. </dd>
  29801. <dt><code><code>$structsz(<var>stag</var>)</code></code></dt>
  29802. <dd><p>Returns the size of the structure or union represented by <var>stag</var>.
  29803. </p>
  29804. <span id="index-_0024structacc-subsym-builtin_002c-TIC54X"></span>
  29805. </dd>
  29806. <dt><code><code>$structacc(<var>stag</var>)</code></code></dt>
  29807. <dd><p>Returns the reference point of the structure or union represented by
  29808. <var>stag</var>. Always returns zero.
  29809. </p>
  29810. </dd>
  29811. </dl>
  29812. <hr>
  29813. <span id="TIC54X_002dMMRegs"></span><div class="header">
  29814. <p>
  29815. Next: <a href="#TIC54X_002dSyntax" accesskey="n" rel="next">TIC54X-Syntax</a>, Previous: <a href="#TIC54X_002dMacros" accesskey="p" rel="prev">TIC54X-Macros</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29816. </div>
  29817. <span id="Memory_002dmapped-Registers"></span><h4 class="subsection">9.46.11 Memory-mapped Registers</h4>
  29818. <span id="index-TIC54X-memory_002dmapped-registers"></span>
  29819. <span id="index-registers_002c-TIC54X-memory_002dmapped"></span>
  29820. <span id="index-memory_002dmapped-registers_002c-TIC54X"></span>
  29821. <p>The following symbols are recognized as memory-mapped registers:
  29822. </p>
  29823. <hr>
  29824. <span id="TIC54X_002dSyntax"></span><div class="header">
  29825. <p>
  29826. Previous: <a href="#TIC54X_002dMMRegs" accesskey="p" rel="prev">TIC54X-MMRegs</a>, Up: <a href="#TIC54X_002dDependent" accesskey="u" rel="up">TIC54X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29827. </div>
  29828. <span id="TIC54X-Syntax"></span><h4 class="subsection">9.46.12 TIC54X Syntax</h4>
  29829. <table class="menu" border="0" cellspacing="0">
  29830. <tr><td align="left" valign="top">&bull; <a href="#TIC54X_002dChars" accesskey="1">TIC54X-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  29831. </td></tr>
  29832. </table>
  29833. <hr>
  29834. <span id="TIC54X_002dChars"></span><div class="header">
  29835. <p>
  29836. Up: <a href="#TIC54X_002dSyntax" accesskey="u" rel="up">TIC54X-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29837. </div>
  29838. <span id="Special-Characters-35"></span><h4 class="subsubsection">9.46.12.1 Special Characters</h4>
  29839. <span id="index-line-comment-character_002c-TIC54X"></span>
  29840. <span id="index-TIC54X-line-comment-character"></span>
  29841. <p>The presence of a &lsquo;<samp>;</samp>&rsquo; appearing anywhere on a line indicates the
  29842. start of a comment that extends to the end of that line.
  29843. </p>
  29844. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  29845. line is treated as a comment, but in this case the line can also be a
  29846. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  29847. control command (see <a href="#Preprocessing">Preprocessing</a>).
  29848. </p>
  29849. <p>The presence of an asterisk (&lsquo;<samp>*</samp>&rsquo;) at the start of a line also
  29850. indicates a comment that extends to the end of that line.
  29851. </p>
  29852. <span id="index-line-separator_002c-TIC54X"></span>
  29853. <span id="index-statement-separator_002c-TIC54X"></span>
  29854. <span id="index-TIC54X-line-separator"></span>
  29855. <p>The TIC54X assembler does not currently support a line separator
  29856. character.
  29857. </p>
  29858. <hr>
  29859. <span id="TIC6X_002dDependent"></span><div class="header">
  29860. <p>
  29861. Next: <a href="#TILE_002dGx_002dDependent" accesskey="n" rel="next">TILE-Gx-Dependent</a>, Previous: <a href="#TIC54X_002dDependent" accesskey="p" rel="prev">TIC54X-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29862. </div>
  29863. <span id="TIC6X-Dependent-Features"></span><h3 class="section">9.47 TIC6X Dependent Features</h3>
  29864. <span id="index-TIC6X-support"></span>
  29865. <span id="index-TMS320C6X-support"></span>
  29866. <table class="menu" border="0" cellspacing="0">
  29867. <tr><td align="left" valign="top">&bull; <a href="#TIC6X-Options" accesskey="1">TIC6X Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  29868. </td></tr>
  29869. <tr><td align="left" valign="top">&bull; <a href="#TIC6X-Syntax" accesskey="2">TIC6X Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  29870. </td></tr>
  29871. <tr><td align="left" valign="top">&bull; <a href="#TIC6X-Directives" accesskey="3">TIC6X Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives
  29872. </td></tr>
  29873. </table>
  29874. <hr>
  29875. <span id="TIC6X-Options"></span><div class="header">
  29876. <p>
  29877. Next: <a href="#TIC6X-Syntax" accesskey="n" rel="next">TIC6X Syntax</a>, Up: <a href="#TIC6X_002dDependent" accesskey="u" rel="up">TIC6X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29878. </div>
  29879. <span id="TIC6X-Options-1"></span><h4 class="subsection">9.47.1 TIC6X Options</h4>
  29880. <span id="index-TIC6X-options"></span>
  29881. <span id="index-options-for-TIC6X"></span>
  29882. <dl compact="compact">
  29883. <dd>
  29884. <span id="index-_002dmarch_003d-command_002dline-option_002c-TIC6X"></span>
  29885. </dd>
  29886. <dt><code>-march=<var>arch</var></code></dt>
  29887. <dd><p>Enable (only) instructions from architecture <var>arch</var>. By default,
  29888. all instructions are permitted.
  29889. </p>
  29890. <p>The following values of <var>arch</var> are accepted: <code>c62x</code>,
  29891. <code>c64x</code>, <code>c64x+</code>, <code>c67x</code>, <code>c67x+</code>, <code>c674x</code>.
  29892. </p>
  29893. <span id="index-_002dmdsbt-command_002dline-option_002c-TIC6X"></span>
  29894. <span id="index-_002dmno_002ddsbt-command_002dline-option_002c-TIC6X"></span>
  29895. </dd>
  29896. <dt><code>-mdsbt</code></dt>
  29897. <dt><code>-mno-dsbt</code></dt>
  29898. <dd><p>The <samp>-mdsbt</samp> option causes the assembler to generate the
  29899. <code>Tag_ABI_DSBT</code> attribute with a value of 1, indicating that the
  29900. code is using DSBT addressing. The <samp>-mno-dsbt</samp> option, the
  29901. default, causes the tag to have a value of 0, indicating that the code
  29902. does not use DSBT addressing. The linker will emit a warning if
  29903. objects of different type (DSBT and non-DSBT) are linked together.
  29904. </p>
  29905. <span id="index-_002dmpid_003d-command_002dline-option_002c-TIC6X"></span>
  29906. </dd>
  29907. <dt><code>-mpid=no</code></dt>
  29908. <dt><code>-mpid=near</code></dt>
  29909. <dt><code>-mpid=far</code></dt>
  29910. <dd><p>The <samp>-mpid=</samp> option causes the assembler to generate the
  29911. <code>Tag_ABI_PID</code> attribute with a value indicating the form of data
  29912. addressing used by the code. <samp>-mpid=no</samp>, the default,
  29913. indicates position-dependent data addressing, <samp>-mpid=near</samp>
  29914. indicates position-independent addressing with GOT accesses using near
  29915. DP addressing, and <samp>-mpid=far</samp> indicates position-independent
  29916. addressing with GOT accesses using far DP addressing. The linker will
  29917. emit a warning if objects built with different settings of this option
  29918. are linked together.
  29919. </p>
  29920. <span id="index-_002dmpic-command_002dline-option_002c-TIC6X"></span>
  29921. <span id="index-_002dmno_002dpic-command_002dline-option_002c-TIC6X"></span>
  29922. </dd>
  29923. <dt><code>-mpic</code></dt>
  29924. <dt><code>-mno-pic</code></dt>
  29925. <dd><p>The <samp>-mpic</samp> option causes the assembler to generate the
  29926. <code>Tag_ABI_PIC</code> attribute with a value of 1, indicating that the
  29927. code is using position-independent code addressing, The
  29928. <code>-mno-pic</code> option, the default, causes the tag to have a value of
  29929. 0, indicating position-dependent code addressing. The linker will
  29930. emit a warning if objects of different type (position-dependent and
  29931. position-independent) are linked together.
  29932. </p>
  29933. <span id="index-TIC6X-big_002dendian-output"></span>
  29934. <span id="index-TIC6X-little_002dendian-output"></span>
  29935. <span id="index-big_002dendian-output_002c-TIC6X"></span>
  29936. <span id="index-little_002dendian-output_002c-TIC6X"></span>
  29937. </dd>
  29938. <dt><code>-mbig-endian</code></dt>
  29939. <dt><code>-mlittle-endian</code></dt>
  29940. <dd><p>Generate code for the specified endianness. The default is
  29941. little-endian.
  29942. </p>
  29943. </dd>
  29944. </dl>
  29945. <hr>
  29946. <span id="TIC6X-Syntax"></span><div class="header">
  29947. <p>
  29948. Next: <a href="#TIC6X-Directives" accesskey="n" rel="next">TIC6X Directives</a>, Previous: <a href="#TIC6X-Options" accesskey="p" rel="prev">TIC6X Options</a>, Up: <a href="#TIC6X_002dDependent" accesskey="u" rel="up">TIC6X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29949. </div>
  29950. <span id="TIC6X-Syntax-1"></span><h4 class="subsection">9.47.2 TIC6X Syntax</h4>
  29951. <span id="index-line-comment-character_002c-TIC6X"></span>
  29952. <span id="index-TIC6X-line-comment-character"></span>
  29953. <p>The presence of a &lsquo;<samp>;</samp>&rsquo; on a line indicates the start of a comment
  29954. that extends to the end of the current line. If a &lsquo;<samp>#</samp>&rsquo; or
  29955. &lsquo;<samp>*</samp>&rsquo; appears as the first character of a line, the whole line is
  29956. treated as a comment. Note that if a line starts with a &lsquo;<samp>#</samp>&rsquo;
  29957. character then it can also be a logical line number directive
  29958. (see <a href="#Comments">Comments</a>) or a preprocessor control command
  29959. (see <a href="#Preprocessing">Preprocessing</a>).
  29960. </p>
  29961. <span id="index-line-separator_002c-TIC6X"></span>
  29962. <span id="index-statement-separator_002c-TIC6X"></span>
  29963. <span id="index-TIC6X-line-separator"></span>
  29964. <p>The &lsquo;<samp>@</samp>&rsquo; character can be used instead of a newline to separate
  29965. statements.
  29966. </p>
  29967. <p>Instruction, register and functional unit names are case-insensitive.
  29968. <code>as</code> requires fully-specified functional unit names,
  29969. such as &lsquo;<samp>.S1</samp>&rsquo;, &lsquo;<samp>.L1X</samp>&rsquo; or &lsquo;<samp>.D1T2</samp>&rsquo;, on all instructions
  29970. using a functional unit.
  29971. </p>
  29972. <p>For some instructions, there may be syntactic ambiguity between
  29973. register or functional unit names and the names of labels or other
  29974. symbols. To avoid this, enclose the ambiguous symbol name in
  29975. parentheses; register and functional unit names may not be enclosed in
  29976. parentheses.
  29977. </p>
  29978. <hr>
  29979. <span id="TIC6X-Directives"></span><div class="header">
  29980. <p>
  29981. Previous: <a href="#TIC6X-Syntax" accesskey="p" rel="prev">TIC6X Syntax</a>, Up: <a href="#TIC6X_002dDependent" accesskey="u" rel="up">TIC6X-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  29982. </div>
  29983. <span id="TIC6X-Directives-1"></span><h4 class="subsection">9.47.3 TIC6X Directives</h4>
  29984. <span id="index-machine-directives_002c-TIC6X"></span>
  29985. <span id="index-TIC6X-machine-directives"></span>
  29986. <p>Directives controlling the set of instructions accepted by the
  29987. assembler have effect for instructions between the directive and any
  29988. subsequent directive overriding it.
  29989. </p>
  29990. <dl compact="compact">
  29991. <dd>
  29992. <span id="index-_002earch-directive_002c-TIC6X"></span>
  29993. </dd>
  29994. <dt><code>.arch <var>arch</var></code></dt>
  29995. <dd><p>This has the same effect as <samp>-march=<var>arch</var></samp>.
  29996. </p>
  29997. <span id="index-_002ecantunwind-directive_002c-TIC6X"></span>
  29998. </dd>
  29999. <dt><code>.cantunwind</code></dt>
  30000. <dd><p>Prevents unwinding through the current function. No personality routine
  30001. or exception table data is required or permitted.
  30002. </p>
  30003. <p>If this is not specified then frame unwinding information will be
  30004. constructed from CFI directives. see <a href="#CFI-directives">CFI directives</a>.
  30005. </p>
  30006. <span id="index-_002ec6xabi_005fattribute-directive_002c-TIC6X"></span>
  30007. </dd>
  30008. <dt><code>.c6xabi_attribute <var>tag</var>, <var>value</var></code></dt>
  30009. <dd><p>Set the C6000 EABI build attribute <var>tag</var> to <var>value</var>.
  30010. </p>
  30011. <p>The <var>tag</var> is either an attribute number or one of
  30012. <code>Tag_ISA</code>, <code>Tag_ABI_wchar_t</code>,
  30013. <code>Tag_ABI_stack_align_needed</code>,
  30014. <code>Tag_ABI_stack_align_preserved</code>, <code>Tag_ABI_DSBT</code>,
  30015. <code>Tag_ABI_PID</code>, <code>Tag_ABI_PIC</code>,
  30016. <code>TAG_ABI_array_object_alignment</code>,
  30017. <code>TAG_ABI_array_object_align_expected</code>,
  30018. <code>Tag_ABI_compatibility</code> and <code>Tag_ABI_conformance</code>. The
  30019. <var>value</var> is either a <code>number</code>, <code>&quot;string&quot;</code>, or
  30020. <code>number, &quot;string&quot;</code> depending on the tag.
  30021. </p>
  30022. <span id="index-_002eehtype-directive_002c-TIC6X"></span>
  30023. </dd>
  30024. <dt><code>.ehtype <var>symbol</var></code></dt>
  30025. <dd><p>Output an exception type table reference to <var>symbol</var>.
  30026. </p>
  30027. <span id="index-_002eendp-directive_002c-TIC6X"></span>
  30028. </dd>
  30029. <dt><code>.endp</code></dt>
  30030. <dd><p>Marks the end of and exception table or function. If preceded by a
  30031. <code>.handlerdata</code> directive then this also switched back to the previous
  30032. text section.
  30033. </p>
  30034. <span id="index-_002ehandlerdata-directive_002c-TIC6X"></span>
  30035. </dd>
  30036. <dt><code>.handlerdata</code></dt>
  30037. <dd><p>Marks the end of the current function, and the start of the exception table
  30038. entry for that function. Anything between this directive and the
  30039. <code>.endp</code> directive will be added to the exception table entry.
  30040. </p>
  30041. <p>Must be preceded by a CFI block containing a <code>.cfi_lsda</code> directive.
  30042. </p>
  30043. <span id="index-_002enocmp-directive_002c-TIC6X"></span>
  30044. </dd>
  30045. <dt><code>.nocmp</code></dt>
  30046. <dd><p>Disallow use of C64x+ compact instructions in the current text
  30047. section.
  30048. </p>
  30049. <span id="index-_002epersonalityindex-directive_002c-TIC6X"></span>
  30050. </dd>
  30051. <dt><code>.personalityindex <var>index</var></code></dt>
  30052. <dd><p>Sets the personality routine for the current function to the ABI specified
  30053. compact routine number <var>index</var>
  30054. </p>
  30055. <span id="index-_002epersonality-directive_002c-TIC6X"></span>
  30056. </dd>
  30057. <dt><code>.personality <var>name</var></code></dt>
  30058. <dd><p>Sets the personality routine for the current function to <var>name</var>.
  30059. </p>
  30060. <span id="index-_002escomm-directive_002c-TIC6X"></span>
  30061. </dd>
  30062. <dt><code>.scomm <var>symbol</var>, <var>size</var>, <var>align</var></code></dt>
  30063. <dd><p>Like <code>.comm</code>, creating a common symbol <var>symbol</var> with size <var>size</var>
  30064. and alignment <var>align</var>, but unlike when using <code>.comm</code>, this symbol
  30065. will be placed into the small BSS section by the linker.
  30066. </p>
  30067. </dd>
  30068. </dl>
  30069. <hr>
  30070. <span id="TILE_002dGx_002dDependent"></span><div class="header">
  30071. <p>
  30072. Next: <a href="#TILEPro_002dDependent" accesskey="n" rel="next">TILEPro-Dependent</a>, Previous: <a href="#TIC6X_002dDependent" accesskey="p" rel="prev">TIC6X-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30073. </div>
  30074. <span id="TILE_002dGx-Dependent-Features"></span><h3 class="section">9.48 TILE-Gx Dependent Features</h3>
  30075. <span id="index-TILE_002dGx-support"></span>
  30076. <table class="menu" border="0" cellspacing="0">
  30077. <tr><td align="left" valign="top">&bull; <a href="#TILE_002dGx-Options" accesskey="1">TILE-Gx Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">TILE-Gx Options
  30078. </td></tr>
  30079. <tr><td align="left" valign="top">&bull; <a href="#TILE_002dGx-Syntax" accesskey="2">TILE-Gx Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">TILE-Gx Syntax
  30080. </td></tr>
  30081. <tr><td align="left" valign="top">&bull; <a href="#TILE_002dGx-Directives" accesskey="3">TILE-Gx Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">TILE-Gx Directives
  30082. </td></tr>
  30083. </table>
  30084. <hr>
  30085. <span id="TILE_002dGx-Options"></span><div class="header">
  30086. <p>
  30087. Next: <a href="#TILE_002dGx-Syntax" accesskey="n" rel="next">TILE-Gx Syntax</a>, Up: <a href="#TILE_002dGx_002dDependent" accesskey="u" rel="up">TILE-Gx-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30088. </div>
  30089. <span id="Options-27"></span><h4 class="subsection">9.48.1 Options</h4>
  30090. <p>The following table lists all available TILE-Gx specific options:
  30091. </p>
  30092. <dl compact="compact">
  30093. <dd><span id="index-_002dm32-option_002c-TILE_002dGx"></span>
  30094. <span id="index-_002dm64-option_002c-TILE_002dGx"></span>
  30095. </dd>
  30096. <dt><code>-m32 | -m64</code></dt>
  30097. <dd><p>Select the word size, either 32 bits or 64 bits.
  30098. </p>
  30099. <span id="index-_002dEB-option_002c-TILE_002dGx"></span>
  30100. <span id="index-_002dEL-option_002c-TILE_002dGx"></span>
  30101. </dd>
  30102. <dt><code>-EB | -EL</code></dt>
  30103. <dd><p>Select the endianness, either big-endian (-EB) or little-endian (-EL).
  30104. </p>
  30105. </dd>
  30106. </dl>
  30107. <hr>
  30108. <span id="TILE_002dGx-Syntax"></span><div class="header">
  30109. <p>
  30110. Next: <a href="#TILE_002dGx-Directives" accesskey="n" rel="next">TILE-Gx Directives</a>, Previous: <a href="#TILE_002dGx-Options" accesskey="p" rel="prev">TILE-Gx Options</a>, Up: <a href="#TILE_002dGx_002dDependent" accesskey="u" rel="up">TILE-Gx-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30111. </div>
  30112. <span id="Syntax-27"></span><h4 class="subsection">9.48.2 Syntax</h4>
  30113. <span id="index-TILE_002dGx-syntax"></span>
  30114. <span id="index-syntax_002c-TILE_002dGx"></span>
  30115. <p>Block comments are delimited by &lsquo;<samp>/*</samp>&rsquo; and &lsquo;<samp>*/</samp>&rsquo;. End of line
  30116. comments may be introduced by &lsquo;<samp>#</samp>&rsquo;.
  30117. </p>
  30118. <p>Instructions consist of a leading opcode or macro name followed by
  30119. whitespace and an optional comma-separated list of operands:
  30120. </p>
  30121. <div class="example">
  30122. <pre class="example"><var>opcode</var> [<var>operand</var>, &hellip;]
  30123. </pre></div>
  30124. <p>Instructions must be separated by a newline or semicolon.
  30125. </p>
  30126. <p>There are two ways to write code: either write naked instructions,
  30127. which the assembler is free to combine into VLIW bundles, or specify
  30128. the VLIW bundles explicitly.
  30129. </p>
  30130. <p>Bundles are specified using curly braces:
  30131. </p>
  30132. <div class="example">
  30133. <pre class="example">{ <var>add</var> r3,r4,r5 ; <var>add</var> r7,r8,r9 ; <var>lw</var> r10,r11 }
  30134. </pre></div>
  30135. <p>A bundle can span multiple lines. If you want to put multiple
  30136. instructions on a line, whether in a bundle or not, you need to
  30137. separate them with semicolons as in this example.
  30138. </p>
  30139. <p>A bundle may contain one or more instructions, up to the limit
  30140. specified by the ISA (currently three). If fewer instructions are
  30141. specified than the hardware supports in a bundle, the assembler
  30142. inserts <code>fnop</code> instructions automatically.
  30143. </p>
  30144. <p>The assembler will prefer to preserve the ordering of instructions
  30145. within the bundle, putting the first instruction in a lower-numbered
  30146. pipeline than the next one, etc. This fact, combined with the
  30147. optional use of explicit <code>fnop</code> or <code>nop</code> instructions,
  30148. allows precise control over which pipeline executes each instruction.
  30149. </p>
  30150. <p>If the instructions cannot be bundled in the listed order, the
  30151. assembler will automatically try to find a valid pipeline
  30152. assignment. If there is no way to bundle the instructions together,
  30153. the assembler reports an error.
  30154. </p>
  30155. <p>The assembler does not yet auto-bundle (automatically combine multiple
  30156. instructions into one bundle), but it reserves the right to do so in
  30157. the future. If you want to force an instruction to run by itself, put
  30158. it in a bundle explicitly with curly braces and use <code>nop</code>
  30159. instructions (not <code>fnop</code>) to fill the remaining pipeline slots in
  30160. that bundle.
  30161. </p>
  30162. <table class="menu" border="0" cellspacing="0">
  30163. <tr><td align="left" valign="top">&bull; <a href="#TILE_002dGx-Opcodes" accesskey="1">TILE-Gx Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcode Naming Conventions.
  30164. </td></tr>
  30165. <tr><td align="left" valign="top">&bull; <a href="#TILE_002dGx-Registers" accesskey="2">TILE-Gx Registers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Naming.
  30166. </td></tr>
  30167. <tr><td align="left" valign="top">&bull; <a href="#TILE_002dGx-Modifiers" accesskey="3">TILE-Gx Modifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbolic Operand Modifiers.
  30168. </td></tr>
  30169. </table>
  30170. <hr>
  30171. <span id="TILE_002dGx-Opcodes"></span><div class="header">
  30172. <p>
  30173. Next: <a href="#TILE_002dGx-Registers" accesskey="n" rel="next">TILE-Gx Registers</a>, Up: <a href="#TILE_002dGx-Syntax" accesskey="u" rel="up">TILE-Gx Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30174. </div>
  30175. <span id="Opcode-Names"></span><h4 class="subsubsection">9.48.2.1 Opcode Names</h4>
  30176. <span id="index-TILE_002dGx-opcode-names"></span>
  30177. <span id="index-opcode-names_002c-TILE_002dGx"></span>
  30178. <p>For a complete list of opcodes and descriptions of their semantics,
  30179. see <cite>TILE-Gx Instruction Set Architecture</cite>, available upon
  30180. request at www.tilera.com.
  30181. </p>
  30182. <hr>
  30183. <span id="TILE_002dGx-Registers"></span><div class="header">
  30184. <p>
  30185. Next: <a href="#TILE_002dGx-Modifiers" accesskey="n" rel="next">TILE-Gx Modifiers</a>, Previous: <a href="#TILE_002dGx-Opcodes" accesskey="p" rel="prev">TILE-Gx Opcodes</a>, Up: <a href="#TILE_002dGx-Syntax" accesskey="u" rel="up">TILE-Gx Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30186. </div>
  30187. <span id="Register-Names-16"></span><h4 class="subsubsection">9.48.2.2 Register Names</h4>
  30188. <span id="index-TILE_002dGx-register-names"></span>
  30189. <span id="index-register-names_002c-TILE_002dGx"></span>
  30190. <p>General-purpose registers are represented by predefined symbols of the
  30191. form &lsquo;<samp>r<var>N</var></samp>&rsquo;, where <var>N</var> represents a number between
  30192. <code>0</code> and <code>63</code>. However, the following registers have
  30193. canonical names that must be used instead:
  30194. </p>
  30195. <dl compact="compact">
  30196. <dt><code>r54</code></dt>
  30197. <dd><p>sp
  30198. </p>
  30199. </dd>
  30200. <dt><code>r55</code></dt>
  30201. <dd><p>lr
  30202. </p>
  30203. </dd>
  30204. <dt><code>r56</code></dt>
  30205. <dd><p>sn
  30206. </p>
  30207. </dd>
  30208. <dt><code>r57</code></dt>
  30209. <dd><p>idn0
  30210. </p>
  30211. </dd>
  30212. <dt><code>r58</code></dt>
  30213. <dd><p>idn1
  30214. </p>
  30215. </dd>
  30216. <dt><code>r59</code></dt>
  30217. <dd><p>udn0
  30218. </p>
  30219. </dd>
  30220. <dt><code>r60</code></dt>
  30221. <dd><p>udn1
  30222. </p>
  30223. </dd>
  30224. <dt><code>r61</code></dt>
  30225. <dd><p>udn2
  30226. </p>
  30227. </dd>
  30228. <dt><code>r62</code></dt>
  30229. <dd><p>udn3
  30230. </p>
  30231. </dd>
  30232. <dt><code>r63</code></dt>
  30233. <dd><p>zero
  30234. </p>
  30235. </dd>
  30236. </dl>
  30237. <p>The assembler will emit a warning if a numeric name is used instead of
  30238. the non-numeric name. The <code>.no_require_canonical_reg_names</code>
  30239. assembler pseudo-op turns off this
  30240. warning. <code>.require_canonical_reg_names</code> turns it back on.
  30241. </p>
  30242. <hr>
  30243. <span id="TILE_002dGx-Modifiers"></span><div class="header">
  30244. <p>
  30245. Previous: <a href="#TILE_002dGx-Registers" accesskey="p" rel="prev">TILE-Gx Registers</a>, Up: <a href="#TILE_002dGx-Syntax" accesskey="u" rel="up">TILE-Gx Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30246. </div>
  30247. <span id="Symbolic-Operand-Modifiers-4"></span><h4 class="subsubsection">9.48.2.3 Symbolic Operand Modifiers</h4>
  30248. <span id="index-TILE_002dGx-modifiers"></span>
  30249. <span id="index-symbol-modifiers_002c-TILE_002dGx"></span>
  30250. <p>The assembler supports several modifiers when using symbol addresses
  30251. in TILE-Gx instruction operands. The general syntax is the following:
  30252. </p>
  30253. <div class="example">
  30254. <pre class="example">modifier(symbol)
  30255. </pre></div>
  30256. <p>The following modifiers are supported:
  30257. </p>
  30258. <dl compact="compact">
  30259. <dt><code>hw0</code></dt>
  30260. <dd>
  30261. <p>This modifier is used to load bits 0-15 of the symbol&rsquo;s address.
  30262. </p>
  30263. </dd>
  30264. <dt><code>hw1</code></dt>
  30265. <dd>
  30266. <p>This modifier is used to load bits 16-31 of the symbol&rsquo;s address.
  30267. </p>
  30268. </dd>
  30269. <dt><code>hw2</code></dt>
  30270. <dd>
  30271. <p>This modifier is used to load bits 32-47 of the symbol&rsquo;s address.
  30272. </p>
  30273. </dd>
  30274. <dt><code>hw3</code></dt>
  30275. <dd>
  30276. <p>This modifier is used to load bits 48-63 of the symbol&rsquo;s address.
  30277. </p>
  30278. </dd>
  30279. <dt><code>hw0_last</code></dt>
  30280. <dd>
  30281. <p>This modifier yields the same value as <code>hw0</code>, but it also checks
  30282. that the value does not overflow.
  30283. </p>
  30284. </dd>
  30285. <dt><code>hw1_last</code></dt>
  30286. <dd>
  30287. <p>This modifier yields the same value as <code>hw1</code>, but it also checks
  30288. that the value does not overflow.
  30289. </p>
  30290. </dd>
  30291. <dt><code>hw2_last</code></dt>
  30292. <dd>
  30293. <p>This modifier yields the same value as <code>hw2</code>, but it also checks
  30294. that the value does not overflow.
  30295. </p>
  30296. <p>A 48-bit symbolic value is constructed by using the following idiom:
  30297. </p>
  30298. <div class="example">
  30299. <pre class="example">moveli r0, hw2_last(sym)
  30300. shl16insli r0, r0, hw1(sym)
  30301. shl16insli r0, r0, hw0(sym)
  30302. </pre></div>
  30303. </dd>
  30304. <dt><code>hw0_got</code></dt>
  30305. <dd>
  30306. <p>This modifier is used to load bits 0-15 of the symbol&rsquo;s offset in the
  30307. GOT entry corresponding to the symbol.
  30308. </p>
  30309. </dd>
  30310. <dt><code>hw0_last_got</code></dt>
  30311. <dd>
  30312. <p>This modifier yields the same value as <code>hw0_got</code>, but it also
  30313. checks that the value does not overflow.
  30314. </p>
  30315. </dd>
  30316. <dt><code>hw1_last_got</code></dt>
  30317. <dd>
  30318. <p>This modifier is used to load bits 16-31 of the symbol&rsquo;s offset in the
  30319. GOT entry corresponding to the symbol, and it also checks that the
  30320. value does not overflow.
  30321. </p>
  30322. </dd>
  30323. <dt><code>plt</code></dt>
  30324. <dd>
  30325. <p>This modifier is used for function symbols. It causes a
  30326. <em>procedure linkage table</em>, an array of code stubs, to be created
  30327. at the time the shared object is created or linked against, together
  30328. with a global offset table entry. The value is a pc-relative offset
  30329. to the corresponding stub code in the procedure linkage table. This
  30330. arrangement causes the run-time symbol resolver to be called to look
  30331. up and set the value of the symbol the first time the function is
  30332. called (at latest; depending environment variables). It is only safe
  30333. to leave the symbol unresolved this way if all references are function
  30334. calls.
  30335. </p>
  30336. </dd>
  30337. <dt><code>hw0_plt</code></dt>
  30338. <dd>
  30339. <p>This modifier is used to load bits 0-15 of the pc-relative address of
  30340. a plt entry.
  30341. </p>
  30342. </dd>
  30343. <dt><code>hw1_plt</code></dt>
  30344. <dd>
  30345. <p>This modifier is used to load bits 16-31 of the pc-relative address of
  30346. a plt entry.
  30347. </p>
  30348. </dd>
  30349. <dt><code>hw1_last_plt</code></dt>
  30350. <dd>
  30351. <p>This modifier yields the same value as <code>hw1_plt</code>, but it also
  30352. checks that the value does not overflow.
  30353. </p>
  30354. </dd>
  30355. <dt><code>hw2_last_plt</code></dt>
  30356. <dd>
  30357. <p>This modifier is used to load bits 32-47 of the pc-relative address of
  30358. a plt entry, and it also checks that the value does not overflow.
  30359. </p>
  30360. </dd>
  30361. <dt><code>hw0_tls_gd</code></dt>
  30362. <dd>
  30363. <p>This modifier is used to load bits 0-15 of the offset of the GOT entry
  30364. of the symbol&rsquo;s TLS descriptor, to be used for general-dynamic TLS
  30365. accesses.
  30366. </p>
  30367. </dd>
  30368. <dt><code>hw0_last_tls_gd</code></dt>
  30369. <dd>
  30370. <p>This modifier yields the same value as <code>hw0_tls_gd</code>, but it also
  30371. checks that the value does not overflow.
  30372. </p>
  30373. </dd>
  30374. <dt><code>hw1_last_tls_gd</code></dt>
  30375. <dd>
  30376. <p>This modifier is used to load bits 16-31 of the offset of the GOT
  30377. entry of the symbol&rsquo;s TLS descriptor, to be used for general-dynamic
  30378. TLS accesses. It also checks that the value does not overflow.
  30379. </p>
  30380. </dd>
  30381. <dt><code>hw0_tls_ie</code></dt>
  30382. <dd>
  30383. <p>This modifier is used to load bits 0-15 of the offset of the GOT entry
  30384. containing the offset of the symbol&rsquo;s address from the TCB, to be used
  30385. for initial-exec TLS accesses.
  30386. </p>
  30387. </dd>
  30388. <dt><code>hw0_last_tls_ie</code></dt>
  30389. <dd>
  30390. <p>This modifier yields the same value as <code>hw0_tls_ie</code>, but it also
  30391. checks that the value does not overflow.
  30392. </p>
  30393. </dd>
  30394. <dt><code>hw1_last_tls_ie</code></dt>
  30395. <dd>
  30396. <p>This modifier is used to load bits 16-31 of the offset of the GOT
  30397. entry containing the offset of the symbol&rsquo;s address from the TCB, to
  30398. be used for initial-exec TLS accesses. It also checks that the value
  30399. does not overflow.
  30400. </p>
  30401. </dd>
  30402. <dt><code>hw0_tls_le</code></dt>
  30403. <dd>
  30404. <p>This modifier is used to load bits 0-15 of the offset of the symbol&rsquo;s
  30405. address from the TCB, to be used for local-exec TLS accesses.
  30406. </p>
  30407. </dd>
  30408. <dt><code>hw0_last_tls_le</code></dt>
  30409. <dd>
  30410. <p>This modifier yields the same value as <code>hw0_tls_le</code>, but it also
  30411. checks that the value does not overflow.
  30412. </p>
  30413. </dd>
  30414. <dt><code>hw1_last_tls_le</code></dt>
  30415. <dd>
  30416. <p>This modifier is used to load bits 16-31 of the offset of the symbol&rsquo;s
  30417. address from the TCB, to be used for local-exec TLS accesses. It
  30418. also checks that the value does not overflow.
  30419. </p>
  30420. </dd>
  30421. <dt><code>tls_gd_call</code></dt>
  30422. <dd>
  30423. <p>This modifier is used to tag an instruction as the &ldquo;call&rdquo; part of a
  30424. calling sequence for a TLS GD reference of its operand.
  30425. </p>
  30426. </dd>
  30427. <dt><code>tls_gd_add</code></dt>
  30428. <dd>
  30429. <p>This modifier is used to tag an instruction as the &ldquo;add&rdquo; part of a
  30430. calling sequence for a TLS GD reference of its operand.
  30431. </p>
  30432. </dd>
  30433. <dt><code>tls_ie_load</code></dt>
  30434. <dd>
  30435. <p>This modifier is used to tag an instruction as the &ldquo;load&rdquo; part of a
  30436. calling sequence for a TLS IE reference of its operand.
  30437. </p>
  30438. </dd>
  30439. </dl>
  30440. <hr>
  30441. <span id="TILE_002dGx-Directives"></span><div class="header">
  30442. <p>
  30443. Previous: <a href="#TILE_002dGx-Syntax" accesskey="p" rel="prev">TILE-Gx Syntax</a>, Up: <a href="#TILE_002dGx_002dDependent" accesskey="u" rel="up">TILE-Gx-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30444. </div>
  30445. <span id="TILE_002dGx-Directives-1"></span><h4 class="subsection">9.48.3 TILE-Gx Directives</h4>
  30446. <span id="index-machine-directives_002c-TILE_002dGx"></span>
  30447. <span id="index-TILE_002dGx-machine-directives"></span>
  30448. <dl compact="compact">
  30449. <dd>
  30450. <span id="index-_002ealign-directive_002c-TILE_002dGx"></span>
  30451. </dd>
  30452. <dt><code>.align <var>expression</var> [, <var>expression</var>]</code></dt>
  30453. <dd><p>This is the generic <var>.align</var> directive. The first argument is the
  30454. requested alignment in bytes.
  30455. </p>
  30456. <span id="index-_002eallow_005fsuspicious_005fbundles-directive_002c-TILE_002dGx"></span>
  30457. </dd>
  30458. <dt><code>.allow_suspicious_bundles</code></dt>
  30459. <dd><p>Turns on error checking for combinations of instructions in a bundle
  30460. that probably indicate a programming error. This is on by default.
  30461. </p>
  30462. </dd>
  30463. <dt><code>.no_allow_suspicious_bundles</code></dt>
  30464. <dd><p>Turns off error checking for combinations of instructions in a bundle
  30465. that probably indicate a programming error.
  30466. </p>
  30467. <span id="index-_002erequire_005fcanonical_005freg_005fnames-directive_002c-TILE_002dGx"></span>
  30468. </dd>
  30469. <dt><code>.require_canonical_reg_names</code></dt>
  30470. <dd><p>Require that canonical register names be used, and emit a warning if
  30471. the numeric names are used. This is on by default.
  30472. </p>
  30473. </dd>
  30474. <dt><code>.no_require_canonical_reg_names</code></dt>
  30475. <dd><p>Permit the use of numeric names for registers that have canonical
  30476. names.
  30477. </p>
  30478. </dd>
  30479. </dl>
  30480. <hr>
  30481. <span id="TILEPro_002dDependent"></span><div class="header">
  30482. <p>
  30483. Next: <a href="#V850_002dDependent" accesskey="n" rel="next">V850-Dependent</a>, Previous: <a href="#TILE_002dGx_002dDependent" accesskey="p" rel="prev">TILE-Gx-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30484. </div>
  30485. <span id="TILEPro-Dependent-Features"></span><h3 class="section">9.49 TILEPro Dependent Features</h3>
  30486. <span id="index-TILEPro-support"></span>
  30487. <table class="menu" border="0" cellspacing="0">
  30488. <tr><td align="left" valign="top">&bull; <a href="#TILEPro-Options" accesskey="1">TILEPro Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">TILEPro Options
  30489. </td></tr>
  30490. <tr><td align="left" valign="top">&bull; <a href="#TILEPro-Syntax" accesskey="2">TILEPro Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">TILEPro Syntax
  30491. </td></tr>
  30492. <tr><td align="left" valign="top">&bull; <a href="#TILEPro-Directives" accesskey="3">TILEPro Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">TILEPro Directives
  30493. </td></tr>
  30494. </table>
  30495. <hr>
  30496. <span id="TILEPro-Options"></span><div class="header">
  30497. <p>
  30498. Next: <a href="#TILEPro-Syntax" accesskey="n" rel="next">TILEPro Syntax</a>, Up: <a href="#TILEPro_002dDependent" accesskey="u" rel="up">TILEPro-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30499. </div>
  30500. <span id="Options-28"></span><h4 class="subsection">9.49.1 Options</h4>
  30501. <p><code>as</code> has no machine-dependent command-line options for
  30502. TILEPro.
  30503. </p>
  30504. <hr>
  30505. <span id="TILEPro-Syntax"></span><div class="header">
  30506. <p>
  30507. Next: <a href="#TILEPro-Directives" accesskey="n" rel="next">TILEPro Directives</a>, Previous: <a href="#TILEPro-Options" accesskey="p" rel="prev">TILEPro Options</a>, Up: <a href="#TILEPro_002dDependent" accesskey="u" rel="up">TILEPro-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30508. </div>
  30509. <span id="Syntax-28"></span><h4 class="subsection">9.49.2 Syntax</h4>
  30510. <span id="index-TILEPro-syntax"></span>
  30511. <span id="index-syntax_002c-TILEPro"></span>
  30512. <p>Block comments are delimited by &lsquo;<samp>/*</samp>&rsquo; and &lsquo;<samp>*/</samp>&rsquo;. End of line
  30513. comments may be introduced by &lsquo;<samp>#</samp>&rsquo;.
  30514. </p>
  30515. <p>Instructions consist of a leading opcode or macro name followed by
  30516. whitespace and an optional comma-separated list of operands:
  30517. </p>
  30518. <div class="example">
  30519. <pre class="example"><var>opcode</var> [<var>operand</var>, &hellip;]
  30520. </pre></div>
  30521. <p>Instructions must be separated by a newline or semicolon.
  30522. </p>
  30523. <p>There are two ways to write code: either write naked instructions,
  30524. which the assembler is free to combine into VLIW bundles, or specify
  30525. the VLIW bundles explicitly.
  30526. </p>
  30527. <p>Bundles are specified using curly braces:
  30528. </p>
  30529. <div class="example">
  30530. <pre class="example">{ <var>add</var> r3,r4,r5 ; <var>add</var> r7,r8,r9 ; <var>lw</var> r10,r11 }
  30531. </pre></div>
  30532. <p>A bundle can span multiple lines. If you want to put multiple
  30533. instructions on a line, whether in a bundle or not, you need to
  30534. separate them with semicolons as in this example.
  30535. </p>
  30536. <p>A bundle may contain one or more instructions, up to the limit
  30537. specified by the ISA (currently three). If fewer instructions are
  30538. specified than the hardware supports in a bundle, the assembler
  30539. inserts <code>fnop</code> instructions automatically.
  30540. </p>
  30541. <p>The assembler will prefer to preserve the ordering of instructions
  30542. within the bundle, putting the first instruction in a lower-numbered
  30543. pipeline than the next one, etc. This fact, combined with the
  30544. optional use of explicit <code>fnop</code> or <code>nop</code> instructions,
  30545. allows precise control over which pipeline executes each instruction.
  30546. </p>
  30547. <p>If the instructions cannot be bundled in the listed order, the
  30548. assembler will automatically try to find a valid pipeline
  30549. assignment. If there is no way to bundle the instructions together,
  30550. the assembler reports an error.
  30551. </p>
  30552. <p>The assembler does not yet auto-bundle (automatically combine multiple
  30553. instructions into one bundle), but it reserves the right to do so in
  30554. the future. If you want to force an instruction to run by itself, put
  30555. it in a bundle explicitly with curly braces and use <code>nop</code>
  30556. instructions (not <code>fnop</code>) to fill the remaining pipeline slots in
  30557. that bundle.
  30558. </p>
  30559. <table class="menu" border="0" cellspacing="0">
  30560. <tr><td align="left" valign="top">&bull; <a href="#TILEPro-Opcodes" accesskey="1">TILEPro Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcode Naming Conventions.
  30561. </td></tr>
  30562. <tr><td align="left" valign="top">&bull; <a href="#TILEPro-Registers" accesskey="2">TILEPro Registers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Naming.
  30563. </td></tr>
  30564. <tr><td align="left" valign="top">&bull; <a href="#TILEPro-Modifiers" accesskey="3">TILEPro Modifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Symbolic Operand Modifiers.
  30565. </td></tr>
  30566. </table>
  30567. <hr>
  30568. <span id="TILEPro-Opcodes"></span><div class="header">
  30569. <p>
  30570. Next: <a href="#TILEPro-Registers" accesskey="n" rel="next">TILEPro Registers</a>, Up: <a href="#TILEPro-Syntax" accesskey="u" rel="up">TILEPro Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30571. </div>
  30572. <span id="Opcode-Names-1"></span><h4 class="subsubsection">9.49.2.1 Opcode Names</h4>
  30573. <span id="index-TILEPro-opcode-names"></span>
  30574. <span id="index-opcode-names_002c-TILEPro"></span>
  30575. <p>For a complete list of opcodes and descriptions of their semantics,
  30576. see <cite>TILE Processor User Architecture Manual</cite>, available upon
  30577. request at www.tilera.com.
  30578. </p>
  30579. <hr>
  30580. <span id="TILEPro-Registers"></span><div class="header">
  30581. <p>
  30582. Next: <a href="#TILEPro-Modifiers" accesskey="n" rel="next">TILEPro Modifiers</a>, Previous: <a href="#TILEPro-Opcodes" accesskey="p" rel="prev">TILEPro Opcodes</a>, Up: <a href="#TILEPro-Syntax" accesskey="u" rel="up">TILEPro Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30583. </div>
  30584. <span id="Register-Names-17"></span><h4 class="subsubsection">9.49.2.2 Register Names</h4>
  30585. <span id="index-TILEPro-register-names"></span>
  30586. <span id="index-register-names_002c-TILEPro"></span>
  30587. <p>General-purpose registers are represented by predefined symbols of the
  30588. form &lsquo;<samp>r<var>N</var></samp>&rsquo;, where <var>N</var> represents a number between
  30589. <code>0</code> and <code>63</code>. However, the following registers have
  30590. canonical names that must be used instead:
  30591. </p>
  30592. <dl compact="compact">
  30593. <dt><code>r54</code></dt>
  30594. <dd><p>sp
  30595. </p>
  30596. </dd>
  30597. <dt><code>r55</code></dt>
  30598. <dd><p>lr
  30599. </p>
  30600. </dd>
  30601. <dt><code>r56</code></dt>
  30602. <dd><p>sn
  30603. </p>
  30604. </dd>
  30605. <dt><code>r57</code></dt>
  30606. <dd><p>idn0
  30607. </p>
  30608. </dd>
  30609. <dt><code>r58</code></dt>
  30610. <dd><p>idn1
  30611. </p>
  30612. </dd>
  30613. <dt><code>r59</code></dt>
  30614. <dd><p>udn0
  30615. </p>
  30616. </dd>
  30617. <dt><code>r60</code></dt>
  30618. <dd><p>udn1
  30619. </p>
  30620. </dd>
  30621. <dt><code>r61</code></dt>
  30622. <dd><p>udn2
  30623. </p>
  30624. </dd>
  30625. <dt><code>r62</code></dt>
  30626. <dd><p>udn3
  30627. </p>
  30628. </dd>
  30629. <dt><code>r63</code></dt>
  30630. <dd><p>zero
  30631. </p>
  30632. </dd>
  30633. </dl>
  30634. <p>The assembler will emit a warning if a numeric name is used instead of
  30635. the canonical name. The <code>.no_require_canonical_reg_names</code>
  30636. assembler pseudo-op turns off this
  30637. warning. <code>.require_canonical_reg_names</code> turns it back on.
  30638. </p>
  30639. <hr>
  30640. <span id="TILEPro-Modifiers"></span><div class="header">
  30641. <p>
  30642. Previous: <a href="#TILEPro-Registers" accesskey="p" rel="prev">TILEPro Registers</a>, Up: <a href="#TILEPro-Syntax" accesskey="u" rel="up">TILEPro Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30643. </div>
  30644. <span id="Symbolic-Operand-Modifiers-5"></span><h4 class="subsubsection">9.49.2.3 Symbolic Operand Modifiers</h4>
  30645. <span id="index-TILEPro-modifiers"></span>
  30646. <span id="index-symbol-modifiers_002c-TILEPro"></span>
  30647. <p>The assembler supports several modifiers when using symbol addresses
  30648. in TILEPro instruction operands. The general syntax is the following:
  30649. </p>
  30650. <div class="example">
  30651. <pre class="example">modifier(symbol)
  30652. </pre></div>
  30653. <p>The following modifiers are supported:
  30654. </p>
  30655. <dl compact="compact">
  30656. <dt><code>lo16</code></dt>
  30657. <dd>
  30658. <p>This modifier is used to load the low 16 bits of the symbol&rsquo;s address,
  30659. sign-extended to a 32-bit value (sign-extension allows it to be
  30660. range-checked against signed 16 bit immediate operands without
  30661. complaint).
  30662. </p>
  30663. </dd>
  30664. <dt><code>hi16</code></dt>
  30665. <dd>
  30666. <p>This modifier is used to load the high 16 bits of the symbol&rsquo;s
  30667. address, also sign-extended to a 32-bit value.
  30668. </p>
  30669. </dd>
  30670. <dt><code>ha16</code></dt>
  30671. <dd>
  30672. <p><code>ha16(N)</code> is identical to <code>hi16(N)</code>, except if
  30673. <code>lo16(N)</code> is negative it adds one to the <code>hi16(N)</code>
  30674. value. This way <code>lo16</code> and <code>ha16</code> can be added to create any
  30675. 32-bit value using <code>auli</code>. For example, here is how you move an
  30676. arbitrary 32-bit address into r3:
  30677. </p>
  30678. <div class="example">
  30679. <pre class="example">moveli r3, lo16(sym)
  30680. auli r3, r3, ha16(sym)
  30681. </pre></div>
  30682. </dd>
  30683. <dt><code>got</code></dt>
  30684. <dd>
  30685. <p>This modifier is used to load the offset of the GOT entry
  30686. corresponding to the symbol.
  30687. </p>
  30688. </dd>
  30689. <dt><code>got_lo16</code></dt>
  30690. <dd>
  30691. <p>This modifier is used to load the sign-extended low 16 bits of the
  30692. offset of the GOT entry corresponding to the symbol.
  30693. </p>
  30694. </dd>
  30695. <dt><code>got_hi16</code></dt>
  30696. <dd>
  30697. <p>This modifier is used to load the sign-extended high 16 bits of the
  30698. offset of the GOT entry corresponding to the symbol.
  30699. </p>
  30700. </dd>
  30701. <dt><code>got_ha16</code></dt>
  30702. <dd>
  30703. <p>This modifier is like <code>got_hi16</code>, but it adds one if
  30704. <code>got_lo16</code> of the input value is negative.
  30705. </p>
  30706. </dd>
  30707. <dt><code>plt</code></dt>
  30708. <dd>
  30709. <p>This modifier is used for function symbols. It causes a
  30710. <em>procedure linkage table</em>, an array of code stubs, to be created
  30711. at the time the shared object is created or linked against, together
  30712. with a global offset table entry. The value is a pc-relative offset
  30713. to the corresponding stub code in the procedure linkage table. This
  30714. arrangement causes the run-time symbol resolver to be called to look
  30715. up and set the value of the symbol the first time the function is
  30716. called (at latest; depending environment variables). It is only safe
  30717. to leave the symbol unresolved this way if all references are function
  30718. calls.
  30719. </p>
  30720. </dd>
  30721. <dt><code>tls_gd</code></dt>
  30722. <dd>
  30723. <p>This modifier is used to load the offset of the GOT entry of the
  30724. symbol&rsquo;s TLS descriptor, to be used for general-dynamic TLS accesses.
  30725. </p>
  30726. </dd>
  30727. <dt><code>tls_gd_lo16</code></dt>
  30728. <dd>
  30729. <p>This modifier is used to load the sign-extended low 16 bits of the
  30730. offset of the GOT entry of the symbol&rsquo;s TLS descriptor, to be used for
  30731. general dynamic TLS accesses.
  30732. </p>
  30733. </dd>
  30734. <dt><code>tls_gd_hi16</code></dt>
  30735. <dd>
  30736. <p>This modifier is used to load the sign-extended high 16 bits of the
  30737. offset of the GOT entry of the symbol&rsquo;s TLS descriptor, to be used for
  30738. general dynamic TLS accesses.
  30739. </p>
  30740. </dd>
  30741. <dt><code>tls_gd_ha16</code></dt>
  30742. <dd>
  30743. <p>This modifier is like <code>tls_gd_hi16</code>, but it adds one to the value
  30744. if <code>tls_gd_lo16</code> of the input value is negative.
  30745. </p>
  30746. </dd>
  30747. <dt><code>tls_ie</code></dt>
  30748. <dd>
  30749. <p>This modifier is used to load the offset of the GOT entry containing
  30750. the offset of the symbol&rsquo;s address from the TCB, to be used for
  30751. initial-exec TLS accesses.
  30752. </p>
  30753. </dd>
  30754. <dt><code>tls_ie_lo16</code></dt>
  30755. <dd>
  30756. <p>This modifier is used to load the low 16 bits of the offset of the GOT
  30757. entry containing the offset of the symbol&rsquo;s address from the TCB, to
  30758. be used for initial-exec TLS accesses.
  30759. </p>
  30760. </dd>
  30761. <dt><code>tls_ie_hi16</code></dt>
  30762. <dd>
  30763. <p>This modifier is used to load the high 16 bits of the offset of the
  30764. GOT entry containing the offset of the symbol&rsquo;s address from the TCB,
  30765. to be used for initial-exec TLS accesses.
  30766. </p>
  30767. </dd>
  30768. <dt><code>tls_ie_ha16</code></dt>
  30769. <dd>
  30770. <p>This modifier is like <code>tls_ie_hi16</code>, but it adds one to the value
  30771. if <code>tls_ie_lo16</code> of the input value is negative.
  30772. </p>
  30773. </dd>
  30774. <dt><code>tls_le</code></dt>
  30775. <dd>
  30776. <p>This modifier is used to load the offset of the symbol&rsquo;s address from
  30777. the TCB, to be used for local-exec TLS accesses.
  30778. </p>
  30779. </dd>
  30780. <dt><code>tls_le_lo16</code></dt>
  30781. <dd>
  30782. <p>This modifier is used to load the low 16 bits of the offset of the
  30783. symbol&rsquo;s address from the TCB, to be used for local-exec TLS accesses.
  30784. </p>
  30785. </dd>
  30786. <dt><code>tls_le_hi16</code></dt>
  30787. <dd>
  30788. <p>This modifier is used to load the high 16 bits of the offset of the
  30789. symbol&rsquo;s address from the TCB, to be used for local-exec TLS accesses.
  30790. </p>
  30791. </dd>
  30792. <dt><code>tls_le_ha16</code></dt>
  30793. <dd>
  30794. <p>This modifier is like <code>tls_le_hi16</code>, but it adds one to the value
  30795. if <code>tls_le_lo16</code> of the input value is negative.
  30796. </p>
  30797. </dd>
  30798. <dt><code>tls_gd_call</code></dt>
  30799. <dd>
  30800. <p>This modifier is used to tag an instruction as the &ldquo;call&rdquo; part of a
  30801. calling sequence for a TLS GD reference of its operand.
  30802. </p>
  30803. </dd>
  30804. <dt><code>tls_gd_add</code></dt>
  30805. <dd>
  30806. <p>This modifier is used to tag an instruction as the &ldquo;add&rdquo; part of a
  30807. calling sequence for a TLS GD reference of its operand.
  30808. </p>
  30809. </dd>
  30810. <dt><code>tls_ie_load</code></dt>
  30811. <dd>
  30812. <p>This modifier is used to tag an instruction as the &ldquo;load&rdquo; part of a
  30813. calling sequence for a TLS IE reference of its operand.
  30814. </p>
  30815. </dd>
  30816. </dl>
  30817. <hr>
  30818. <span id="TILEPro-Directives"></span><div class="header">
  30819. <p>
  30820. Previous: <a href="#TILEPro-Syntax" accesskey="p" rel="prev">TILEPro Syntax</a>, Up: <a href="#TILEPro_002dDependent" accesskey="u" rel="up">TILEPro-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30821. </div>
  30822. <span id="TILEPro-Directives-1"></span><h4 class="subsection">9.49.3 TILEPro Directives</h4>
  30823. <span id="index-machine-directives_002c-TILEPro"></span>
  30824. <span id="index-TILEPro-machine-directives"></span>
  30825. <dl compact="compact">
  30826. <dd>
  30827. <span id="index-_002ealign-directive_002c-TILEPro"></span>
  30828. </dd>
  30829. <dt><code>.align <var>expression</var> [, <var>expression</var>]</code></dt>
  30830. <dd><p>This is the generic <var>.align</var> directive. The first argument is the
  30831. requested alignment in bytes.
  30832. </p>
  30833. <span id="index-_002eallow_005fsuspicious_005fbundles-directive_002c-TILEPro"></span>
  30834. </dd>
  30835. <dt><code>.allow_suspicious_bundles</code></dt>
  30836. <dd><p>Turns on error checking for combinations of instructions in a bundle
  30837. that probably indicate a programming error. This is on by default.
  30838. </p>
  30839. </dd>
  30840. <dt><code>.no_allow_suspicious_bundles</code></dt>
  30841. <dd><p>Turns off error checking for combinations of instructions in a bundle
  30842. that probably indicate a programming error.
  30843. </p>
  30844. <span id="index-_002erequire_005fcanonical_005freg_005fnames-directive_002c-TILEPro"></span>
  30845. </dd>
  30846. <dt><code>.require_canonical_reg_names</code></dt>
  30847. <dd><p>Require that canonical register names be used, and emit a warning if
  30848. the numeric names are used. This is on by default.
  30849. </p>
  30850. </dd>
  30851. <dt><code>.no_require_canonical_reg_names</code></dt>
  30852. <dd><p>Permit the use of numeric names for registers that have canonical
  30853. names.
  30854. </p>
  30855. </dd>
  30856. </dl>
  30857. <hr>
  30858. <span id="V850_002dDependent"></span><div class="header">
  30859. <p>
  30860. Next: <a href="#Vax_002dDependent" accesskey="n" rel="next">Vax-Dependent</a>, Previous: <a href="#TILEPro_002dDependent" accesskey="p" rel="prev">TILEPro-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30861. </div>
  30862. <span id="v850-Dependent-Features"></span><h3 class="section">9.50 v850 Dependent Features</h3>
  30863. <span id="index-V850-support"></span>
  30864. <table class="menu" border="0" cellspacing="0">
  30865. <tr><td align="left" valign="top">&bull; <a href="#V850-Options" accesskey="1">V850 Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  30866. </td></tr>
  30867. <tr><td align="left" valign="top">&bull; <a href="#V850-Syntax" accesskey="2">V850 Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  30868. </td></tr>
  30869. <tr><td align="left" valign="top">&bull; <a href="#V850-Floating-Point" accesskey="3">V850 Floating Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  30870. </td></tr>
  30871. <tr><td align="left" valign="top">&bull; <a href="#V850-Directives" accesskey="4">V850 Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">V850 Machine Directives
  30872. </td></tr>
  30873. <tr><td align="left" valign="top">&bull; <a href="#V850-Opcodes" accesskey="5">V850 Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  30874. </td></tr>
  30875. </table>
  30876. <hr>
  30877. <span id="V850-Options"></span><div class="header">
  30878. <p>
  30879. Next: <a href="#V850-Syntax" accesskey="n" rel="next">V850 Syntax</a>, Up: <a href="#V850_002dDependent" accesskey="u" rel="up">V850-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  30880. </div>
  30881. <span id="Options-29"></span><h4 class="subsection">9.50.1 Options</h4>
  30882. <span id="index-V850-options-_0028none_0029"></span>
  30883. <span id="index-options-for-V850-_0028none_0029"></span>
  30884. <p><code>as</code> supports the following additional command-line options
  30885. for the V850 processor family:
  30886. </p>
  30887. <span id="index-command_002dline-options_002c-V850"></span>
  30888. <span id="index-V850-command_002dline-options"></span>
  30889. <dl compact="compact">
  30890. <dd>
  30891. <span id="index-_002dwsigned_005foverflow-command_002dline-option_002c-V850"></span>
  30892. </dd>
  30893. <dt><code>-wsigned_overflow</code></dt>
  30894. <dd><p>Causes warnings to be produced when signed immediate values overflow the
  30895. space available for then within their opcodes. By default this option
  30896. is disabled as it is possible to receive spurious warnings due to using
  30897. exact bit patterns as immediate constants.
  30898. </p>
  30899. <span id="index-_002dwunsigned_005foverflow-command_002dline-option_002c-V850"></span>
  30900. </dd>
  30901. <dt><code>-wunsigned_overflow</code></dt>
  30902. <dd><p>Causes warnings to be produced when unsigned immediate values overflow
  30903. the space available for then within their opcodes. By default this
  30904. option is disabled as it is possible to receive spurious warnings due to
  30905. using exact bit patterns as immediate constants.
  30906. </p>
  30907. <span id="index-_002dmv850-command_002dline-option_002c-V850"></span>
  30908. </dd>
  30909. <dt><code>-mv850</code></dt>
  30910. <dd><p>Specifies that the assembled code should be marked as being targeted at
  30911. the V850 processor. This allows the linker to detect attempts to link
  30912. such code with code assembled for other processors.
  30913. </p>
  30914. <span id="index-_002dmv850e-command_002dline-option_002c-V850"></span>
  30915. </dd>
  30916. <dt><code>-mv850e</code></dt>
  30917. <dd><p>Specifies that the assembled code should be marked as being targeted at
  30918. the V850E processor. This allows the linker to detect attempts to link
  30919. such code with code assembled for other processors.
  30920. </p>
  30921. <span id="index-_002dmv850e1-command_002dline-option_002c-V850"></span>
  30922. </dd>
  30923. <dt><code>-mv850e1</code></dt>
  30924. <dd><p>Specifies that the assembled code should be marked as being targeted at
  30925. the V850E1 processor. This allows the linker to detect attempts to link
  30926. such code with code assembled for other processors.
  30927. </p>
  30928. <span id="index-_002dmv850any-command_002dline-option_002c-V850"></span>
  30929. </dd>
  30930. <dt><code>-mv850any</code></dt>
  30931. <dd><p>Specifies that the assembled code should be marked as being targeted at
  30932. the V850 processor but support instructions that are specific to the
  30933. extended variants of the process. This allows the production of
  30934. binaries that contain target specific code, but which are also intended
  30935. to be used in a generic fashion. For example libgcc.a contains generic
  30936. routines used by the code produced by GCC for all versions of the v850
  30937. architecture, together with support routines only used by the V850E
  30938. architecture.
  30939. </p>
  30940. <span id="index-_002dmv850e2-command_002dline-option_002c-V850"></span>
  30941. </dd>
  30942. <dt><code>-mv850e2</code></dt>
  30943. <dd><p>Specifies that the assembled code should be marked as being targeted at
  30944. the V850E2 processor. This allows the linker to detect attempts to link
  30945. such code with code assembled for other processors.
  30946. </p>
  30947. <span id="index-_002dmv850e2v3-command_002dline-option_002c-V850"></span>
  30948. </dd>
  30949. <dt><code>-mv850e2v3</code></dt>
  30950. <dd><p>Specifies that the assembled code should be marked as being targeted at
  30951. the V850E2V3 processor. This allows the linker to detect attempts to link
  30952. such code with code assembled for other processors.
  30953. </p>
  30954. <span id="index-_002dmv850e2v4-command_002dline-option_002c-V850"></span>
  30955. </dd>
  30956. <dt><code>-mv850e2v4</code></dt>
  30957. <dd><p>This is an alias for <samp>-mv850e3v5</samp>.
  30958. </p>
  30959. <span id="index-_002dmv850e3v5-command_002dline-option_002c-V850"></span>
  30960. </dd>
  30961. <dt><code>-mv850e3v5</code></dt>
  30962. <dd><p>Specifies that the assembled code should be marked as being targeted at
  30963. the V850E3V5 processor. This allows the linker to detect attempts to link
  30964. such code with code assembled for other processors.
  30965. </p>
  30966. <span id="index-_002dmrelax-command_002dline-option_002c-V850"></span>
  30967. </dd>
  30968. <dt><code>-mrelax</code></dt>
  30969. <dd><p>Enables relaxation. This allows the .longcall and .longjump pseudo
  30970. ops to be used in the assembler source code. These ops label sections
  30971. of code which are either a long function call or a long branch. The
  30972. assembler will then flag these sections of code and the linker will
  30973. attempt to relax them.
  30974. </p>
  30975. <span id="index-_002dmgcc_002dabi-command_002dline-option_002c-V850"></span>
  30976. </dd>
  30977. <dt><code>-mgcc-abi</code></dt>
  30978. <dd><p>Marks the generated object file as supporting the old GCC ABI.
  30979. </p>
  30980. <span id="index-_002dmrh850_002dabi-command_002dline-option_002c-V850"></span>
  30981. </dd>
  30982. <dt><code>-mrh850-abi</code></dt>
  30983. <dd><p>Marks the generated object file as supporting the RH850 ABI. This is
  30984. the default.
  30985. </p>
  30986. <span id="index-_002dm8byte_002dalign-command_002dline-option_002c-V850"></span>
  30987. </dd>
  30988. <dt><code>-m8byte-align</code></dt>
  30989. <dd><p>Marks the generated object file as supporting a maximum 64-bits of
  30990. alignment for variables defined in the source code.
  30991. </p>
  30992. <span id="index-_002dm4byte_002dalign-command_002dline-option_002c-V850"></span>
  30993. </dd>
  30994. <dt><code>-m4byte-align</code></dt>
  30995. <dd><p>Marks the generated object file as supporting a maximum 32-bits of
  30996. alignment for variables defined in the source code. This is the
  30997. default.
  30998. </p>
  30999. <span id="index-_002dmsoft_002dfloat-command_002dline-option_002c-V850"></span>
  31000. </dd>
  31001. <dt><code>-msoft-float</code></dt>
  31002. <dd><p>Marks the generated object file as not using any floating point
  31003. instructions - and hence can be linked with other V850 binaries
  31004. that do or do not use floating point. This is the default for
  31005. binaries for architectures earlier than the <code>e2v3</code>.
  31006. </p>
  31007. <span id="index-_002dmhard_002dfloat-command_002dline-option_002c-V850"></span>
  31008. </dd>
  31009. <dt><code>-mhard-float</code></dt>
  31010. <dd><p>Marks the generated object file as one that uses floating point
  31011. instructions - and hence can only be linked with other V850 binaries
  31012. that use the same kind of floating point instructions, or with
  31013. binaries that do not use floating point at all. This is the default
  31014. for binaries the <code>e2v3</code> and later architectures.
  31015. </p>
  31016. </dd>
  31017. </dl>
  31018. <hr>
  31019. <span id="V850-Syntax"></span><div class="header">
  31020. <p>
  31021. Next: <a href="#V850-Floating-Point" accesskey="n" rel="next">V850 Floating Point</a>, Previous: <a href="#V850-Options" accesskey="p" rel="prev">V850 Options</a>, Up: <a href="#V850_002dDependent" accesskey="u" rel="up">V850-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31022. </div>
  31023. <span id="Syntax-29"></span><h4 class="subsection">9.50.2 Syntax</h4>
  31024. <table class="menu" border="0" cellspacing="0">
  31025. <tr><td align="left" valign="top">&bull; <a href="#V850_002dChars" accesskey="1">V850-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  31026. </td></tr>
  31027. <tr><td align="left" valign="top">&bull; <a href="#V850_002dRegs" accesskey="2">V850-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  31028. </td></tr>
  31029. </table>
  31030. <hr>
  31031. <span id="V850_002dChars"></span><div class="header">
  31032. <p>
  31033. Next: <a href="#V850_002dRegs" accesskey="n" rel="next">V850-Regs</a>, Up: <a href="#V850-Syntax" accesskey="u" rel="up">V850 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31034. </div>
  31035. <span id="Special-Characters-36"></span><h4 class="subsubsection">9.50.2.1 Special Characters</h4>
  31036. <span id="index-line-comment-character_002c-V850"></span>
  31037. <span id="index-V850-line-comment-character"></span>
  31038. <p>&lsquo;<samp>#</samp>&rsquo; is the line comment character. If a &lsquo;<samp>#</samp>&rsquo; appears as the
  31039. first character of a line, the whole line is treated as a comment, but
  31040. in this case the line can also be a logical line number directive
  31041. (see <a href="#Comments">Comments</a>) or a preprocessor control command
  31042. (see <a href="#Preprocessing">Preprocessing</a>).
  31043. </p>
  31044. <p>Two dashes (&lsquo;<samp>--</samp>&rsquo;) can also be used to start a line comment.
  31045. </p>
  31046. <span id="index-line-separator_002c-V850"></span>
  31047. <span id="index-statement-separator_002c-V850"></span>
  31048. <span id="index-V850-line-separator"></span>
  31049. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used to separate statements on the same
  31050. line.
  31051. </p>
  31052. <hr>
  31053. <span id="V850_002dRegs"></span><div class="header">
  31054. <p>
  31055. Previous: <a href="#V850_002dChars" accesskey="p" rel="prev">V850-Chars</a>, Up: <a href="#V850-Syntax" accesskey="u" rel="up">V850 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31056. </div>
  31057. <span id="Register-Names-18"></span><h4 class="subsubsection">9.50.2.2 Register Names</h4>
  31058. <span id="index-V850-register-names"></span>
  31059. <span id="index-register-names_002c-V850"></span>
  31060. <p><code>as</code> supports the following names for registers:
  31061. </p><dl compact="compact">
  31062. <dd><span id="index-zero-register_002c-V850"></span>
  31063. </dd>
  31064. <dt><code>general register 0</code></dt>
  31065. <dd><p>r0, zero
  31066. </p></dd>
  31067. <dt><code>general register 1</code></dt>
  31068. <dd><p>r1
  31069. </p></dd>
  31070. <dt><code>general register 2</code></dt>
  31071. <dd><p>r2, hp
  31072. <span id="index-sp-register_002c-V850"></span>
  31073. </p></dd>
  31074. <dt><code>general register 3</code></dt>
  31075. <dd><p>r3, sp
  31076. <span id="index-gp-register_002c-V850"></span>
  31077. </p></dd>
  31078. <dt><code>general register 4</code></dt>
  31079. <dd><p>r4, gp
  31080. <span id="index-tp-register_002c-V850"></span>
  31081. </p></dd>
  31082. <dt><code>general register 5</code></dt>
  31083. <dd><p>r5, tp
  31084. </p></dd>
  31085. <dt><code>general register 6</code></dt>
  31086. <dd><p>r6
  31087. </p></dd>
  31088. <dt><code>general register 7</code></dt>
  31089. <dd><p>r7
  31090. </p></dd>
  31091. <dt><code>general register 8</code></dt>
  31092. <dd><p>r8
  31093. </p></dd>
  31094. <dt><code>general register 9</code></dt>
  31095. <dd><p>r9
  31096. </p></dd>
  31097. <dt><code>general register 10</code></dt>
  31098. <dd><p>r10
  31099. </p></dd>
  31100. <dt><code>general register 11</code></dt>
  31101. <dd><p>r11
  31102. </p></dd>
  31103. <dt><code>general register 12</code></dt>
  31104. <dd><p>r12
  31105. </p></dd>
  31106. <dt><code>general register 13</code></dt>
  31107. <dd><p>r13
  31108. </p></dd>
  31109. <dt><code>general register 14</code></dt>
  31110. <dd><p>r14
  31111. </p></dd>
  31112. <dt><code>general register 15</code></dt>
  31113. <dd><p>r15
  31114. </p></dd>
  31115. <dt><code>general register 16</code></dt>
  31116. <dd><p>r16
  31117. </p></dd>
  31118. <dt><code>general register 17</code></dt>
  31119. <dd><p>r17
  31120. </p></dd>
  31121. <dt><code>general register 18</code></dt>
  31122. <dd><p>r18
  31123. </p></dd>
  31124. <dt><code>general register 19</code></dt>
  31125. <dd><p>r19
  31126. </p></dd>
  31127. <dt><code>general register 20</code></dt>
  31128. <dd><p>r20
  31129. </p></dd>
  31130. <dt><code>general register 21</code></dt>
  31131. <dd><p>r21
  31132. </p></dd>
  31133. <dt><code>general register 22</code></dt>
  31134. <dd><p>r22
  31135. </p></dd>
  31136. <dt><code>general register 23</code></dt>
  31137. <dd><p>r23
  31138. </p></dd>
  31139. <dt><code>general register 24</code></dt>
  31140. <dd><p>r24
  31141. </p></dd>
  31142. <dt><code>general register 25</code></dt>
  31143. <dd><p>r25
  31144. </p></dd>
  31145. <dt><code>general register 26</code></dt>
  31146. <dd><p>r26
  31147. </p></dd>
  31148. <dt><code>general register 27</code></dt>
  31149. <dd><p>r27
  31150. </p></dd>
  31151. <dt><code>general register 28</code></dt>
  31152. <dd><p>r28
  31153. </p></dd>
  31154. <dt><code>general register 29</code></dt>
  31155. <dd><p>r29
  31156. <span id="index-ep-register_002c-V850"></span>
  31157. </p></dd>
  31158. <dt><code>general register 30</code></dt>
  31159. <dd><p>r30, ep
  31160. <span id="index-lp-register_002c-V850"></span>
  31161. </p></dd>
  31162. <dt><code>general register 31</code></dt>
  31163. <dd><p>r31, lp
  31164. <span id="index-eipc-register_002c-V850"></span>
  31165. </p></dd>
  31166. <dt><code>system register 0</code></dt>
  31167. <dd><p>eipc
  31168. <span id="index-eipsw-register_002c-V850"></span>
  31169. </p></dd>
  31170. <dt><code>system register 1</code></dt>
  31171. <dd><p>eipsw
  31172. <span id="index-fepc-register_002c-V850"></span>
  31173. </p></dd>
  31174. <dt><code>system register 2</code></dt>
  31175. <dd><p>fepc
  31176. <span id="index-fepsw-register_002c-V850"></span>
  31177. </p></dd>
  31178. <dt><code>system register 3</code></dt>
  31179. <dd><p>fepsw
  31180. <span id="index-ecr-register_002c-V850"></span>
  31181. </p></dd>
  31182. <dt><code>system register 4</code></dt>
  31183. <dd><p>ecr
  31184. <span id="index-psw-register_002c-V850"></span>
  31185. </p></dd>
  31186. <dt><code>system register 5</code></dt>
  31187. <dd><p>psw
  31188. <span id="index-ctpc-register_002c-V850"></span>
  31189. </p></dd>
  31190. <dt><code>system register 16</code></dt>
  31191. <dd><p>ctpc
  31192. <span id="index-ctpsw-register_002c-V850"></span>
  31193. </p></dd>
  31194. <dt><code>system register 17</code></dt>
  31195. <dd><p>ctpsw
  31196. <span id="index-dbpc-register_002c-V850"></span>
  31197. </p></dd>
  31198. <dt><code>system register 18</code></dt>
  31199. <dd><p>dbpc
  31200. <span id="index-dbpsw-register_002c-V850"></span>
  31201. </p></dd>
  31202. <dt><code>system register 19</code></dt>
  31203. <dd><p>dbpsw
  31204. <span id="index-ctbp-register_002c-V850"></span>
  31205. </p></dd>
  31206. <dt><code>system register 20</code></dt>
  31207. <dd><p>ctbp
  31208. </p></dd>
  31209. </dl>
  31210. <hr>
  31211. <span id="V850-Floating-Point"></span><div class="header">
  31212. <p>
  31213. Next: <a href="#V850-Directives" accesskey="n" rel="next">V850 Directives</a>, Previous: <a href="#V850-Syntax" accesskey="p" rel="prev">V850 Syntax</a>, Up: <a href="#V850_002dDependent" accesskey="u" rel="up">V850-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31214. </div>
  31215. <span id="Floating-Point-16"></span><h4 class="subsection">9.50.3 Floating Point</h4>
  31216. <span id="index-floating-point_002c-V850-_0028IEEE_0029"></span>
  31217. <span id="index-V850-floating-point-_0028IEEE_0029"></span>
  31218. <p>The V850 family uses <small>IEEE</small> floating-point numbers.
  31219. </p>
  31220. <hr>
  31221. <span id="V850-Directives"></span><div class="header">
  31222. <p>
  31223. Next: <a href="#V850-Opcodes" accesskey="n" rel="next">V850 Opcodes</a>, Previous: <a href="#V850-Floating-Point" accesskey="p" rel="prev">V850 Floating Point</a>, Up: <a href="#V850_002dDependent" accesskey="u" rel="up">V850-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31224. </div>
  31225. <span id="V850-Machine-Directives"></span><h4 class="subsection">9.50.4 V850 Machine Directives</h4>
  31226. <span id="index-machine-directives_002c-V850"></span>
  31227. <span id="index-V850-machine-directives"></span>
  31228. <dl compact="compact">
  31229. <dd><span id="index-offset-directive_002c-V850"></span>
  31230. </dd>
  31231. <dt><code>.offset <var>&lt;expression&gt;</var></code></dt>
  31232. <dd><p>Moves the offset into the current section to the specified amount.
  31233. </p>
  31234. <span id="index-section-directive_002c-V850"></span>
  31235. </dd>
  31236. <dt><code>.section &quot;name&quot;, &lt;type&gt;</code></dt>
  31237. <dd><p>This is an extension to the standard .section directive. It sets the
  31238. current section to be &lt;type&gt; and creates an alias for this section
  31239. called &quot;name&quot;.
  31240. </p>
  31241. <span id="index-_002ev850-directive_002c-V850"></span>
  31242. </dd>
  31243. <dt><code>.v850</code></dt>
  31244. <dd><p>Specifies that the assembled code should be marked as being targeted at
  31245. the V850 processor. This allows the linker to detect attempts to link
  31246. such code with code assembled for other processors.
  31247. </p>
  31248. <span id="index-_002ev850e-directive_002c-V850"></span>
  31249. </dd>
  31250. <dt><code>.v850e</code></dt>
  31251. <dd><p>Specifies that the assembled code should be marked as being targeted at
  31252. the V850E processor. This allows the linker to detect attempts to link
  31253. such code with code assembled for other processors.
  31254. </p>
  31255. <span id="index-_002ev850e1-directive_002c-V850"></span>
  31256. </dd>
  31257. <dt><code>.v850e1</code></dt>
  31258. <dd><p>Specifies that the assembled code should be marked as being targeted at
  31259. the V850E1 processor. This allows the linker to detect attempts to link
  31260. such code with code assembled for other processors.
  31261. </p>
  31262. <span id="index-_002ev850e2-directive_002c-V850"></span>
  31263. </dd>
  31264. <dt><code>.v850e2</code></dt>
  31265. <dd><p>Specifies that the assembled code should be marked as being targeted at
  31266. the V850E2 processor. This allows the linker to detect attempts to link
  31267. such code with code assembled for other processors.
  31268. </p>
  31269. <span id="index-_002ev850e2v3-directive_002c-V850"></span>
  31270. </dd>
  31271. <dt><code>.v850e2v3</code></dt>
  31272. <dd><p>Specifies that the assembled code should be marked as being targeted at
  31273. the V850E2V3 processor. This allows the linker to detect attempts to link
  31274. such code with code assembled for other processors.
  31275. </p>
  31276. <span id="index-_002ev850e2v4-directive_002c-V850"></span>
  31277. </dd>
  31278. <dt><code>.v850e2v4</code></dt>
  31279. <dd><p>Specifies that the assembled code should be marked as being targeted at
  31280. the V850E3V5 processor. This allows the linker to detect attempts to link
  31281. such code with code assembled for other processors.
  31282. </p>
  31283. <span id="index-_002ev850e3v5-directive_002c-V850"></span>
  31284. </dd>
  31285. <dt><code>.v850e3v5</code></dt>
  31286. <dd><p>Specifies that the assembled code should be marked as being targeted at
  31287. the V850E3V5 processor. This allows the linker to detect attempts to link
  31288. such code with code assembled for other processors.
  31289. </p>
  31290. </dd>
  31291. </dl>
  31292. <hr>
  31293. <span id="V850-Opcodes"></span><div class="header">
  31294. <p>
  31295. Previous: <a href="#V850-Directives" accesskey="p" rel="prev">V850 Directives</a>, Up: <a href="#V850_002dDependent" accesskey="u" rel="up">V850-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31296. </div>
  31297. <span id="Opcodes-18"></span><h4 class="subsection">9.50.5 Opcodes</h4>
  31298. <span id="index-V850-opcodes"></span>
  31299. <span id="index-opcodes-for-V850"></span>
  31300. <p><code>as</code> implements all the standard V850 opcodes.
  31301. </p>
  31302. <p><code>as</code> also implements the following pseudo ops:
  31303. </p>
  31304. <dl compact="compact">
  31305. <dd>
  31306. <span id="index-hi0-pseudo_002dop_002c-V850"></span>
  31307. </dd>
  31308. <dt><code>hi0()</code></dt>
  31309. <dd><p>Computes the higher 16 bits of the given expression and stores it into
  31310. the immediate operand field of the given instruction. For example:
  31311. </p>
  31312. <p>&lsquo;<samp>mulhi hi0(here - there), r5, r6</samp>&rsquo;
  31313. </p>
  31314. <p>computes the difference between the address of labels &rsquo;here&rsquo; and
  31315. &rsquo;there&rsquo;, takes the upper 16 bits of this difference, shifts it down 16
  31316. bits and then multiplies it by the lower 16 bits in register 5, putting
  31317. the result into register 6.
  31318. </p>
  31319. <span id="index-lo-pseudo_002dop_002c-V850"></span>
  31320. </dd>
  31321. <dt><code>lo()</code></dt>
  31322. <dd><p>Computes the lower 16 bits of the given expression and stores it into
  31323. the immediate operand field of the given instruction. For example:
  31324. </p>
  31325. <p>&lsquo;<samp>addi lo(here - there), r5, r6</samp>&rsquo;
  31326. </p>
  31327. <p>computes the difference between the address of labels &rsquo;here&rsquo; and
  31328. &rsquo;there&rsquo;, takes the lower 16 bits of this difference and adds it to
  31329. register 5, putting the result into register 6.
  31330. </p>
  31331. <span id="index-hi-pseudo_002dop_002c-V850"></span>
  31332. </dd>
  31333. <dt><code>hi()</code></dt>
  31334. <dd><p>Computes the higher 16 bits of the given expression and then adds the
  31335. value of the most significant bit of the lower 16 bits of the expression
  31336. and stores the result into the immediate operand field of the given
  31337. instruction. For example the following code can be used to compute the
  31338. address of the label &rsquo;here&rsquo; and store it into register 6:
  31339. </p>
  31340. <p>&lsquo;<samp>movhi hi(here), r0, r6</samp>&rsquo;
  31341. &lsquo;<samp>movea lo(here), r6, r6</samp>&rsquo;
  31342. </p>
  31343. <p>The reason for this special behaviour is that movea performs a sign
  31344. extension on its immediate operand. So for example if the address of
  31345. &rsquo;here&rsquo; was 0xFFFFFFFF then without the special behaviour of the hi()
  31346. pseudo-op the movhi instruction would put 0xFFFF0000 into r6, then the
  31347. movea instruction would takes its immediate operand, 0xFFFF, sign extend
  31348. it to 32 bits, 0xFFFFFFFF, and then add it into r6 giving 0xFFFEFFFF
  31349. which is wrong (the fifth nibble is E). With the hi() pseudo op adding
  31350. in the top bit of the lo() pseudo op, the movhi instruction actually
  31351. stores 0 into r6 (0xFFFF + 1 = 0x0000), so that the movea instruction
  31352. stores 0xFFFFFFFF into r6 - the right value.
  31353. </p>
  31354. <span id="index-hilo-pseudo_002dop_002c-V850"></span>
  31355. </dd>
  31356. <dt><code>hilo()</code></dt>
  31357. <dd><p>Computes the 32 bit value of the given expression and stores it into
  31358. the immediate operand field of the given instruction (which must be a
  31359. mov instruction). For example:
  31360. </p>
  31361. <p>&lsquo;<samp>mov hilo(here), r6</samp>&rsquo;
  31362. </p>
  31363. <p>computes the absolute address of label &rsquo;here&rsquo; and puts the result into
  31364. register 6.
  31365. </p>
  31366. <span id="index-sdaoff-pseudo_002dop_002c-V850"></span>
  31367. </dd>
  31368. <dt><code>sdaoff()</code></dt>
  31369. <dd><p>Computes the offset of the named variable from the start of the Small
  31370. Data Area (whose address is held in register 4, the GP register) and
  31371. stores the result as a 16 bit signed value in the immediate operand
  31372. field of the given instruction. For example:
  31373. </p>
  31374. <p>&lsquo;<samp>ld.w sdaoff(_a_variable)[gp],r6</samp>&rsquo;
  31375. </p>
  31376. <p>loads the contents of the location pointed to by the label &rsquo;_a_variable&rsquo;
  31377. into register 6, provided that the label is located somewhere within +/-
  31378. 32K of the address held in the GP register. [Note the linker assumes
  31379. that the GP register contains a fixed address set to the address of the
  31380. label called &rsquo;__gp&rsquo;. This can either be set up automatically by the
  31381. linker, or specifically set by using the &lsquo;<samp>--defsym __gp=&lt;value&gt;</samp>&rsquo;
  31382. command-line option].
  31383. </p>
  31384. <span id="index-tdaoff-pseudo_002dop_002c-V850"></span>
  31385. </dd>
  31386. <dt><code>tdaoff()</code></dt>
  31387. <dd><p>Computes the offset of the named variable from the start of the Tiny
  31388. Data Area (whose address is held in register 30, the EP register) and
  31389. stores the result as a 4,5, 7 or 8 bit unsigned value in the immediate
  31390. operand field of the given instruction. For example:
  31391. </p>
  31392. <p>&lsquo;<samp>sld.w tdaoff(_a_variable)[ep],r6</samp>&rsquo;
  31393. </p>
  31394. <p>loads the contents of the location pointed to by the label &rsquo;_a_variable&rsquo;
  31395. into register 6, provided that the label is located somewhere within +256
  31396. bytes of the address held in the EP register. [Note the linker assumes
  31397. that the EP register contains a fixed address set to the address of the
  31398. label called &rsquo;__ep&rsquo;. This can either be set up automatically by the
  31399. linker, or specifically set by using the &lsquo;<samp>--defsym __ep=&lt;value&gt;</samp>&rsquo;
  31400. command-line option].
  31401. </p>
  31402. <span id="index-zdaoff-pseudo_002dop_002c-V850"></span>
  31403. </dd>
  31404. <dt><code>zdaoff()</code></dt>
  31405. <dd><p>Computes the offset of the named variable from address 0 and stores the
  31406. result as a 16 bit signed value in the immediate operand field of the
  31407. given instruction. For example:
  31408. </p>
  31409. <p>&lsquo;<samp>movea zdaoff(_a_variable),zero,r6</samp>&rsquo;
  31410. </p>
  31411. <p>puts the address of the label &rsquo;_a_variable&rsquo; into register 6, assuming
  31412. that the label is somewhere within the first 32K of memory. (Strictly
  31413. speaking it also possible to access the last 32K of memory as well, as
  31414. the offsets are signed).
  31415. </p>
  31416. <span id="index-ctoff-pseudo_002dop_002c-V850"></span>
  31417. </dd>
  31418. <dt><code>ctoff()</code></dt>
  31419. <dd><p>Computes the offset of the named variable from the start of the Call
  31420. Table Area (whose address is held in system register 20, the CTBP
  31421. register) and stores the result a 6 or 16 bit unsigned value in the
  31422. immediate field of then given instruction or piece of data. For
  31423. example:
  31424. </p>
  31425. <p>&lsquo;<samp>callt ctoff(table_func1)</samp>&rsquo;
  31426. </p>
  31427. <p>will put the call the function whose address is held in the call table
  31428. at the location labeled &rsquo;table_func1&rsquo;.
  31429. </p>
  31430. <span id="index-longcall-pseudo_002dop_002c-V850"></span>
  31431. </dd>
  31432. <dt><code>.longcall <code>name</code></code></dt>
  31433. <dd><p>Indicates that the following sequence of instructions is a long call
  31434. to function <code>name</code>. The linker will attempt to shorten this call
  31435. sequence if <code>name</code> is within a 22bit offset of the call. Only
  31436. valid if the <code>-mrelax</code> command-line switch has been enabled.
  31437. </p>
  31438. <span id="index-longjump-pseudo_002dop_002c-V850"></span>
  31439. </dd>
  31440. <dt><code>.longjump <code>name</code></code></dt>
  31441. <dd><p>Indicates that the following sequence of instructions is a long jump
  31442. to label <code>name</code>. The linker will attempt to shorten this code
  31443. sequence if <code>name</code> is within a 22bit offset of the jump. Only
  31444. valid if the <code>-mrelax</code> command-line switch has been enabled.
  31445. </p>
  31446. </dd>
  31447. </dl>
  31448. <p>For information on the V850 instruction set, see <cite>V850
  31449. Family 32-/16-Bit single-Chip Microcontroller Architecture Manual</cite> from NEC.
  31450. Ltd.
  31451. </p>
  31452. <hr>
  31453. <span id="Vax_002dDependent"></span><div class="header">
  31454. <p>
  31455. Next: <a href="#Visium_002dDependent" accesskey="n" rel="next">Visium-Dependent</a>, Previous: <a href="#V850_002dDependent" accesskey="p" rel="prev">V850-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31456. </div>
  31457. <span id="VAX-Dependent-Features"></span><h3 class="section">9.51 VAX Dependent Features</h3>
  31458. <span id="index-VAX-support"></span>
  31459. <table class="menu" border="0" cellspacing="0">
  31460. <tr><td align="left" valign="top">&bull; <a href="#VAX_002dOpts" accesskey="1">VAX-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">VAX Command-Line Options
  31461. </td></tr>
  31462. <tr><td align="left" valign="top">&bull; <a href="#VAX_002dfloat" accesskey="2">VAX-float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">VAX Floating Point
  31463. </td></tr>
  31464. <tr><td align="left" valign="top">&bull; <a href="#VAX_002ddirectives" accesskey="3">VAX-directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Vax Machine Directives
  31465. </td></tr>
  31466. <tr><td align="left" valign="top">&bull; <a href="#VAX_002dopcodes" accesskey="4">VAX-opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">VAX Opcodes
  31467. </td></tr>
  31468. <tr><td align="left" valign="top">&bull; <a href="#VAX_002dbranch" accesskey="5">VAX-branch</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">VAX Branch Improvement
  31469. </td></tr>
  31470. <tr><td align="left" valign="top">&bull; <a href="#VAX_002doperands" accesskey="6">VAX-operands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">VAX Operands
  31471. </td></tr>
  31472. <tr><td align="left" valign="top">&bull; <a href="#VAX_002dno" accesskey="7">VAX-no</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Not Supported on VAX
  31473. </td></tr>
  31474. <tr><td align="left" valign="top">&bull; <a href="#VAX_002dSyntax" accesskey="8">VAX-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">VAX Syntax
  31475. </td></tr>
  31476. </table>
  31477. <hr>
  31478. <span id="VAX_002dOpts"></span><div class="header">
  31479. <p>
  31480. Next: <a href="#VAX_002dfloat" accesskey="n" rel="next">VAX-float</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31481. </div>
  31482. <span id="VAX-Command_002dLine-Options"></span><h4 class="subsection">9.51.1 VAX Command-Line Options</h4>
  31483. <span id="index-command_002dline-options-ignored_002c-VAX"></span>
  31484. <span id="index-VAX-command_002dline-options-ignored"></span>
  31485. <p>The Vax version of <code>as</code> accepts any of the following options,
  31486. gives a warning message that the option was ignored and proceeds.
  31487. These options are for compatibility with scripts designed for other
  31488. people&rsquo;s assemblers.
  31489. </p>
  31490. <dl compact="compact">
  31491. <dd><span id="index-_002dD_002c-ignored-on-VAX"></span>
  31492. <span id="index-_002dS_002c-ignored-on-VAX"></span>
  31493. <span id="index-_002dT_002c-ignored-on-VAX"></span>
  31494. </dd>
  31495. <dt><code><code>-D</code> (Debug)</code></dt>
  31496. <dt><code><code>-S</code> (Symbol Table)</code></dt>
  31497. <dt><code><code>-T</code> (Token Trace)</code></dt>
  31498. <dd><p>These are obsolete options used to debug old assemblers.
  31499. </p>
  31500. <span id="index-_002dd_002c-VAX-option"></span>
  31501. </dd>
  31502. <dt><code><code>-d</code> (Displacement size for JUMPs)</code></dt>
  31503. <dd><p>This option expects a number following the &lsquo;<samp>-d</samp>&rsquo;. Like options
  31504. that expect filenames, the number may immediately follow the
  31505. &lsquo;<samp>-d</samp>&rsquo; (old standard) or constitute the whole of the command-line
  31506. argument that follows &lsquo;<samp>-d</samp>&rsquo; (<small>GNU</small> standard).
  31507. </p>
  31508. <span id="index-_002dV_002c-redundant-on-VAX"></span>
  31509. </dd>
  31510. <dt><code><code>-V</code> (Virtualize Interpass Temporary File)</code></dt>
  31511. <dd><p>Some other assemblers use a temporary file. This option
  31512. commanded them to keep the information in active memory rather
  31513. than in a disk file. <code>as</code> always does this, so this
  31514. option is redundant.
  31515. </p>
  31516. <span id="index-_002dJ_002c-ignored-on-VAX"></span>
  31517. </dd>
  31518. <dt><code><code>-J</code> (JUMPify Longer Branches)</code></dt>
  31519. <dd><p>Many 32-bit computers permit a variety of branch instructions
  31520. to do the same job. Some of these instructions are short (and
  31521. fast) but have a limited range; others are long (and slow) but
  31522. can branch anywhere in virtual memory. Often there are 3
  31523. flavors of branch: short, medium and long. Some other
  31524. assemblers would emit short and medium branches, unless told by
  31525. this option to emit short and long branches.
  31526. </p>
  31527. <span id="index-_002dt_002c-ignored-on-VAX"></span>
  31528. </dd>
  31529. <dt><code><code>-t</code> (Temporary File Directory)</code></dt>
  31530. <dd><p>Some other assemblers may use a temporary file, and this option
  31531. takes a filename being the directory to site the temporary
  31532. file. Since <code>as</code> does not use a temporary disk file, this
  31533. option makes no difference. &lsquo;<samp>-t</samp>&rsquo; needs exactly one
  31534. filename.
  31535. </p></dd>
  31536. </dl>
  31537. <span id="index-VMS-_0028VAX_0029-options"></span>
  31538. <span id="index-options-for-VAX_002fVMS"></span>
  31539. <span id="index-VAX_002fVMS-options"></span>
  31540. <span id="index-Vax_002d11-C-compatibility"></span>
  31541. <span id="index-symbols-with-uppercase_002c-VAX_002fVMS"></span>
  31542. <p>The Vax version of the assembler accepts additional options when
  31543. compiled for VMS:
  31544. </p>
  31545. <dl compact="compact">
  31546. <dd><span id="index-_002dh-option_002c-VAX_002fVMS"></span>
  31547. </dd>
  31548. <dt>&lsquo;<samp>-h <var>n</var></samp>&rsquo;</dt>
  31549. <dd><p>External symbol or section (used for global variables) names are not
  31550. case sensitive on VAX/VMS and always mapped to upper case. This is
  31551. contrary to the C language definition which explicitly distinguishes
  31552. upper and lower case. To implement a standard conforming C compiler,
  31553. names must be changed (mapped) to preserve the case information. The
  31554. default mapping is to convert all lower case characters to uppercase and
  31555. adding an underscore followed by a 6 digit hex value, representing a 24
  31556. digit binary value. The one digits in the binary value represent which
  31557. characters are uppercase in the original symbol name.
  31558. </p>
  31559. <p>The &lsquo;<samp>-h <var>n</var></samp>&rsquo; option determines how we map names. This takes
  31560. several values. No &lsquo;<samp>-h</samp>&rsquo; switch at all allows case hacking as
  31561. described above. A value of zero (&lsquo;<samp>-h0</samp>&rsquo;) implies names should be
  31562. upper case, and inhibits the case hack. A value of 2 (&lsquo;<samp>-h2</samp>&rsquo;)
  31563. implies names should be all lower case, with no case hack. A value of 3
  31564. (&lsquo;<samp>-h3</samp>&rsquo;) implies that case should be preserved. The value 1 is
  31565. unused. The <code>-H</code> option directs <code>as</code> to display
  31566. every mapped symbol during assembly.
  31567. </p>
  31568. <p>Symbols whose names include a dollar sign &lsquo;<samp>$</samp>&rsquo; are exceptions to the
  31569. general name mapping. These symbols are normally only used to reference
  31570. VMS library names. Such symbols are always mapped to upper case.
  31571. </p>
  31572. <span id="index-_002d_002b-option_002c-VAX_002fVMS"></span>
  31573. </dd>
  31574. <dt>&lsquo;<samp>-+</samp>&rsquo;</dt>
  31575. <dd><p>The &lsquo;<samp>-+</samp>&rsquo; option causes <code>as</code> to truncate any symbol
  31576. name larger than 31 characters. The &lsquo;<samp>-+</samp>&rsquo; option also prevents some
  31577. code following the &lsquo;<samp>_main</samp>&rsquo; symbol normally added to make the object
  31578. file compatible with Vax-11 &quot;C&quot;.
  31579. </p>
  31580. <span id="index-_002d1-option_002c-VAX_002fVMS"></span>
  31581. </dd>
  31582. <dt>&lsquo;<samp>-1</samp>&rsquo;</dt>
  31583. <dd><p>This option is ignored for backward compatibility with <code>as</code>
  31584. version 1.x.
  31585. </p>
  31586. <span id="index-_002dH-option_002c-VAX_002fVMS"></span>
  31587. </dd>
  31588. <dt>&lsquo;<samp>-H</samp>&rsquo;</dt>
  31589. <dd><p>The &lsquo;<samp>-H</samp>&rsquo; option causes <code>as</code> to print every symbol
  31590. which was changed by case mapping.
  31591. </p></dd>
  31592. </dl>
  31593. <hr>
  31594. <span id="VAX_002dfloat"></span><div class="header">
  31595. <p>
  31596. Next: <a href="#VAX_002ddirectives" accesskey="n" rel="next">VAX-directives</a>, Previous: <a href="#VAX_002dOpts" accesskey="p" rel="prev">VAX-Opts</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31597. </div>
  31598. <span id="VAX-Floating-Point"></span><h4 class="subsection">9.51.2 VAX Floating Point</h4>
  31599. <span id="index-VAX-floating-point"></span>
  31600. <span id="index-floating-point_002c-VAX"></span>
  31601. <p>Conversion of flonums to floating point is correct, and
  31602. compatible with previous assemblers. Rounding is
  31603. towards zero if the remainder is exactly half the least significant bit.
  31604. </p>
  31605. <p><code>D</code>, <code>F</code>, <code>G</code> and <code>H</code> floating point formats
  31606. are understood.
  31607. </p>
  31608. <p>Immediate floating literals (<em>e.g.</em> &lsquo;<samp>S`$6.9</samp>&rsquo;)
  31609. are rendered correctly. Again, rounding is towards zero in the
  31610. boundary case.
  31611. </p>
  31612. <span id="index-float-directive_002c-VAX"></span>
  31613. <span id="index-double-directive_002c-VAX"></span>
  31614. <p>The <code>.float</code> directive produces <code>f</code> format numbers.
  31615. The <code>.double</code> directive produces <code>d</code> format numbers.
  31616. </p>
  31617. <hr>
  31618. <span id="VAX_002ddirectives"></span><div class="header">
  31619. <p>
  31620. Next: <a href="#VAX_002dopcodes" accesskey="n" rel="next">VAX-opcodes</a>, Previous: <a href="#VAX_002dfloat" accesskey="p" rel="prev">VAX-float</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31621. </div>
  31622. <span id="Vax-Machine-Directives"></span><h4 class="subsection">9.51.3 Vax Machine Directives</h4>
  31623. <span id="index-machine-directives_002c-VAX"></span>
  31624. <span id="index-VAX-machine-directives"></span>
  31625. <p>The Vax version of the assembler supports four directives for
  31626. generating Vax floating point constants. They are described in the
  31627. table below.
  31628. </p>
  31629. <span id="index-wide-floating-point-directives_002c-VAX"></span>
  31630. <dl compact="compact">
  31631. <dd><span id="index-dfloat-directive_002c-VAX"></span>
  31632. </dd>
  31633. <dt><code>.dfloat</code></dt>
  31634. <dd><p>This expects zero or more flonums, separated by commas, and
  31635. assembles Vax <code>d</code> format 64-bit floating point constants.
  31636. </p>
  31637. <span id="index-ffloat-directive_002c-VAX"></span>
  31638. </dd>
  31639. <dt><code>.ffloat</code></dt>
  31640. <dd><p>This expects zero or more flonums, separated by commas, and
  31641. assembles Vax <code>f</code> format 32-bit floating point constants.
  31642. </p>
  31643. <span id="index-gfloat-directive_002c-VAX"></span>
  31644. </dd>
  31645. <dt><code>.gfloat</code></dt>
  31646. <dd><p>This expects zero or more flonums, separated by commas, and
  31647. assembles Vax <code>g</code> format 64-bit floating point constants.
  31648. </p>
  31649. <span id="index-hfloat-directive_002c-VAX"></span>
  31650. </dd>
  31651. <dt><code>.hfloat</code></dt>
  31652. <dd><p>This expects zero or more flonums, separated by commas, and
  31653. assembles Vax <code>h</code> format 128-bit floating point constants.
  31654. </p>
  31655. </dd>
  31656. </dl>
  31657. <hr>
  31658. <span id="VAX_002dopcodes"></span><div class="header">
  31659. <p>
  31660. Next: <a href="#VAX_002dbranch" accesskey="n" rel="next">VAX-branch</a>, Previous: <a href="#VAX_002ddirectives" accesskey="p" rel="prev">VAX-directives</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31661. </div>
  31662. <span id="VAX-Opcodes"></span><h4 class="subsection">9.51.4 VAX Opcodes</h4>
  31663. <span id="index-VAX-opcode-mnemonics"></span>
  31664. <span id="index-opcode-mnemonics_002c-VAX"></span>
  31665. <span id="index-mnemonics-for-opcodes_002c-VAX"></span>
  31666. <p>All DEC mnemonics are supported. Beware that <code>case&hellip;</code>
  31667. instructions have exactly 3 operands. The dispatch table that
  31668. follows the <code>case&hellip;</code> instruction should be made with
  31669. <code>.word</code> statements. This is compatible with all unix
  31670. assemblers we know of.
  31671. </p>
  31672. <hr>
  31673. <span id="VAX_002dbranch"></span><div class="header">
  31674. <p>
  31675. Next: <a href="#VAX_002doperands" accesskey="n" rel="next">VAX-operands</a>, Previous: <a href="#VAX_002dopcodes" accesskey="p" rel="prev">VAX-opcodes</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31676. </div>
  31677. <span id="VAX-Branch-Improvement"></span><h4 class="subsection">9.51.5 VAX Branch Improvement</h4>
  31678. <span id="index-VAX-branch-improvement"></span>
  31679. <span id="index-branch-improvement_002c-VAX"></span>
  31680. <span id="index-pseudo_002dops-for-branch_002c-VAX"></span>
  31681. <p>Certain pseudo opcodes are permitted. They are for branch
  31682. instructions. They expand to the shortest branch instruction that
  31683. reaches the target. Generally these mnemonics are made by
  31684. substituting &lsquo;<samp>j</samp>&rsquo; for &lsquo;<samp>b</samp>&rsquo; at the start of a DEC mnemonic.
  31685. This feature is included both for compatibility and to help
  31686. compilers. If you do not need this feature, avoid these
  31687. opcodes. Here are the mnemonics, and the code they can expand into.
  31688. </p>
  31689. <dl compact="compact">
  31690. <dt><code>jbsb</code></dt>
  31691. <dd><p>&lsquo;<samp>Jsb</samp>&rsquo; is already an instruction mnemonic, so we chose &lsquo;<samp>jbsb</samp>&rsquo;.
  31692. </p><dl compact="compact">
  31693. <dt>(byte displacement)</dt>
  31694. <dd><p><kbd>bsbb &hellip;</kbd>
  31695. </p></dd>
  31696. <dt>(word displacement)</dt>
  31697. <dd><p><kbd>bsbw &hellip;</kbd>
  31698. </p></dd>
  31699. <dt>(long displacement)</dt>
  31700. <dd><p><kbd>jsb &hellip;</kbd>
  31701. </p></dd>
  31702. </dl>
  31703. </dd>
  31704. <dt><code>jbr</code></dt>
  31705. <dt><code>jr</code></dt>
  31706. <dd><p>Unconditional branch.
  31707. </p><dl compact="compact">
  31708. <dt>(byte displacement)</dt>
  31709. <dd><p><kbd>brb &hellip;</kbd>
  31710. </p></dd>
  31711. <dt>(word displacement)</dt>
  31712. <dd><p><kbd>brw &hellip;</kbd>
  31713. </p></dd>
  31714. <dt>(long displacement)</dt>
  31715. <dd><p><kbd>jmp &hellip;</kbd>
  31716. </p></dd>
  31717. </dl>
  31718. </dd>
  31719. <dt><code>j<var>COND</var></code></dt>
  31720. <dd><p><var>COND</var> may be any one of the conditional branches
  31721. <code>neq</code>, <code>nequ</code>, <code>eql</code>, <code>eqlu</code>, <code>gtr</code>,
  31722. <code>geq</code>, <code>lss</code>, <code>gtru</code>, <code>lequ</code>, <code>vc</code>, <code>vs</code>,
  31723. <code>gequ</code>, <code>cc</code>, <code>lssu</code>, <code>cs</code>.
  31724. <var>COND</var> may also be one of the bit tests
  31725. <code>bs</code>, <code>bc</code>, <code>bss</code>, <code>bcs</code>, <code>bsc</code>, <code>bcc</code>,
  31726. <code>bssi</code>, <code>bcci</code>, <code>lbs</code>, <code>lbc</code>.
  31727. <var>NOTCOND</var> is the opposite condition to <var>COND</var>.
  31728. </p><dl compact="compact">
  31729. <dt>(byte displacement)</dt>
  31730. <dd><p><kbd>b<var>COND</var> &hellip;</kbd>
  31731. </p></dd>
  31732. <dt>(word displacement)</dt>
  31733. <dd><p><kbd>b<var>NOTCOND</var> foo ; brw &hellip; ; foo:</kbd>
  31734. </p></dd>
  31735. <dt>(long displacement)</dt>
  31736. <dd><p><kbd>b<var>NOTCOND</var> foo ; jmp &hellip; ; foo:</kbd>
  31737. </p></dd>
  31738. </dl>
  31739. </dd>
  31740. <dt><code>jacb<var>X</var></code></dt>
  31741. <dd><p><var>X</var> may be one of <code>b d f g h l w</code>.
  31742. </p><dl compact="compact">
  31743. <dt>(word displacement)</dt>
  31744. <dd><p><kbd><var>OPCODE</var> &hellip;</kbd>
  31745. </p></dd>
  31746. <dt>(long displacement)</dt>
  31747. <dd><div class="example">
  31748. <pre class="example"><var>OPCODE</var> &hellip;, foo ;
  31749. brb bar ;
  31750. foo: jmp &hellip; ;
  31751. bar:
  31752. </pre></div>
  31753. </dd>
  31754. </dl>
  31755. </dd>
  31756. <dt><code>jaob<var>YYY</var></code></dt>
  31757. <dd><p><var>YYY</var> may be one of <code>lss leq</code>.
  31758. </p></dd>
  31759. <dt><code>jsob<var>ZZZ</var></code></dt>
  31760. <dd><p><var>ZZZ</var> may be one of <code>geq gtr</code>.
  31761. </p><dl compact="compact">
  31762. <dt>(byte displacement)</dt>
  31763. <dd><p><kbd><var>OPCODE</var> &hellip;</kbd>
  31764. </p></dd>
  31765. <dt>(word displacement)</dt>
  31766. <dd><div class="example">
  31767. <pre class="example"><var>OPCODE</var> &hellip;, foo ;
  31768. brb bar ;
  31769. foo: brw <var>destination</var> ;
  31770. bar:
  31771. </pre></div>
  31772. </dd>
  31773. <dt>(long displacement)</dt>
  31774. <dd><div class="example">
  31775. <pre class="example"><var>OPCODE</var> &hellip;, foo ;
  31776. brb bar ;
  31777. foo: jmp <var>destination</var> ;
  31778. bar:
  31779. </pre></div>
  31780. </dd>
  31781. </dl>
  31782. </dd>
  31783. <dt><code>aobleq</code></dt>
  31784. <dt><code>aoblss</code></dt>
  31785. <dt><code>sobgeq</code></dt>
  31786. <dt><code>sobgtr</code></dt>
  31787. <dd><dl compact="compact">
  31788. <dt>(byte displacement)</dt>
  31789. <dd><p><kbd><var>OPCODE</var> &hellip;</kbd>
  31790. </p></dd>
  31791. <dt>(word displacement)</dt>
  31792. <dd><div class="example">
  31793. <pre class="example"><var>OPCODE</var> &hellip;, foo ;
  31794. brb bar ;
  31795. foo: brw <var>destination</var> ;
  31796. bar:
  31797. </pre></div>
  31798. </dd>
  31799. <dt>(long displacement)</dt>
  31800. <dd><div class="example">
  31801. <pre class="example"><var>OPCODE</var> &hellip;, foo ;
  31802. brb bar ;
  31803. foo: jmp <var>destination</var> ;
  31804. bar:
  31805. </pre></div>
  31806. </dd>
  31807. </dl>
  31808. </dd>
  31809. </dl>
  31810. <hr>
  31811. <span id="VAX_002doperands"></span><div class="header">
  31812. <p>
  31813. Next: <a href="#VAX_002dno" accesskey="n" rel="next">VAX-no</a>, Previous: <a href="#VAX_002dbranch" accesskey="p" rel="prev">VAX-branch</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31814. </div>
  31815. <span id="VAX-Operands"></span><h4 class="subsection">9.51.6 VAX Operands</h4>
  31816. <span id="index-VAX-operand-notation"></span>
  31817. <span id="index-operand-notation_002c-VAX"></span>
  31818. <span id="index-immediate-character_002c-VAX"></span>
  31819. <span id="index-VAX-immediate-character"></span>
  31820. <p>The immediate character is &lsquo;<samp>$</samp>&rsquo; for Unix compatibility, not
  31821. &lsquo;<samp>#</samp>&rsquo; as DEC writes it.
  31822. </p>
  31823. <span id="index-indirect-character_002c-VAX"></span>
  31824. <span id="index-VAX-indirect-character"></span>
  31825. <p>The indirect character is &lsquo;<samp>*</samp>&rsquo; for Unix compatibility, not
  31826. &lsquo;<samp>@</samp>&rsquo; as DEC writes it.
  31827. </p>
  31828. <span id="index-displacement-sizing-character_002c-VAX"></span>
  31829. <span id="index-VAX-displacement-sizing-character"></span>
  31830. <p>The displacement sizing character is &lsquo;<samp>`</samp>&rsquo; (an accent grave) for
  31831. Unix compatibility, not &lsquo;<samp>^</samp>&rsquo; as DEC writes it. The letter
  31832. preceding &lsquo;<samp>`</samp>&rsquo; may have either case. &lsquo;<samp>G</samp>&rsquo; is not
  31833. understood, but all other letters (<code>b i l s w</code>) are understood.
  31834. </p>
  31835. <span id="index-register-names_002c-VAX"></span>
  31836. <span id="index-VAX-register-names"></span>
  31837. <p>Register names understood are <code>r0 r1 r2 &hellip; r15 ap fp sp
  31838. pc</code>. Upper and lower case letters are equivalent.
  31839. </p>
  31840. <p>For instance
  31841. </p><div class="example">
  31842. <pre class="example">tstb *w`$4(r5)
  31843. </pre></div>
  31844. <p>Any expression is permitted in an operand. Operands are comma
  31845. separated.
  31846. </p>
  31847. <hr>
  31848. <span id="VAX_002dno"></span><div class="header">
  31849. <p>
  31850. Next: <a href="#VAX_002dSyntax" accesskey="n" rel="next">VAX-Syntax</a>, Previous: <a href="#VAX_002doperands" accesskey="p" rel="prev">VAX-operands</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31851. </div>
  31852. <span id="Not-Supported-on-VAX"></span><h4 class="subsection">9.51.7 Not Supported on VAX</h4>
  31853. <span id="index-VAX-bitfields-not-supported"></span>
  31854. <span id="index-bitfields_002c-not-supported-on-VAX"></span>
  31855. <p>Vax bit fields can not be assembled with <code>as</code>. Someone
  31856. can add the required code if they really need it.
  31857. </p>
  31858. <hr>
  31859. <span id="VAX_002dSyntax"></span><div class="header">
  31860. <p>
  31861. Previous: <a href="#VAX_002dno" accesskey="p" rel="prev">VAX-no</a>, Up: <a href="#Vax_002dDependent" accesskey="u" rel="up">Vax-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31862. </div>
  31863. <span id="VAX-Syntax"></span><h4 class="subsection">9.51.8 VAX Syntax</h4>
  31864. <table class="menu" border="0" cellspacing="0">
  31865. <tr><td align="left" valign="top">&bull; <a href="#VAX_002dChars" accesskey="1">VAX-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  31866. </td></tr>
  31867. </table>
  31868. <hr>
  31869. <span id="VAX_002dChars"></span><div class="header">
  31870. <p>
  31871. Up: <a href="#VAX_002dSyntax" accesskey="u" rel="up">VAX-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31872. </div>
  31873. <span id="Special-Characters-37"></span><h4 class="subsubsection">9.51.8.1 Special Characters</h4>
  31874. <span id="index-line-comment-character_002c-VAX"></span>
  31875. <span id="index-VAX-line-comment-character"></span>
  31876. <p>The presence of a &lsquo;<samp>#</samp>&rsquo; appearing anywhere on a line indicates the
  31877. start of a comment that extends to the end of that line.
  31878. </p>
  31879. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  31880. line is treated as a comment, but in this case the line can also be a
  31881. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  31882. control command (see <a href="#Preprocessing">Preprocessing</a>).
  31883. </p>
  31884. <span id="index-line-separator_002c-VAX"></span>
  31885. <span id="index-statement-separator_002c-VAX"></span>
  31886. <span id="index-VAX-line-separator"></span>
  31887. <p>The &lsquo;<samp>;</samp>&rsquo; character can be used to separate statements on the same
  31888. line.
  31889. </p>
  31890. <hr>
  31891. <span id="Visium_002dDependent"></span><div class="header">
  31892. <p>
  31893. Next: <a href="#WebAssembly_002dDependent" accesskey="n" rel="next">WebAssembly-Dependent</a>, Previous: <a href="#Vax_002dDependent" accesskey="p" rel="prev">Vax-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31894. </div>
  31895. <span id="Visium-Dependent-Features"></span><h3 class="section">9.52 Visium Dependent Features</h3>
  31896. <span id="index-Visium-support"></span>
  31897. <table class="menu" border="0" cellspacing="0">
  31898. <tr><td align="left" valign="top">&bull; <a href="#Visium-Options" accesskey="1">Visium Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  31899. </td></tr>
  31900. <tr><td align="left" valign="top">&bull; <a href="#Visium-Syntax" accesskey="2">Visium Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  31901. </td></tr>
  31902. <tr><td align="left" valign="top">&bull; <a href="#Visium-Opcodes" accesskey="3">Visium Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  31903. </td></tr>
  31904. </table>
  31905. <hr>
  31906. <span id="Visium-Options"></span><div class="header">
  31907. <p>
  31908. Next: <a href="#Visium-Syntax" accesskey="n" rel="next">Visium Syntax</a>, Up: <a href="#Visium_002dDependent" accesskey="u" rel="up">Visium-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31909. </div>
  31910. <span id="Options-30"></span><h4 class="subsection">9.52.1 Options</h4>
  31911. <span id="index-Visium-options"></span>
  31912. <span id="index-options-for-Visium"></span>
  31913. <p>The Visium assembler implements one machine-specific option:
  31914. </p>
  31915. <dl compact="compact">
  31916. <dd><span id="index-_002dmtune_003darch-command_002dline-option_002c-Visium"></span>
  31917. </dd>
  31918. <dt><code>-mtune=<var>arch</var></code></dt>
  31919. <dd><p>This option specifies the target architecture. If an attempt is made to
  31920. assemble an instruction that will not execute on the target architecture,
  31921. the assembler will issue an error message.
  31922. </p>
  31923. <p>The following names are recognized:
  31924. <code>mcm24</code>
  31925. <code>mcm</code>
  31926. <code>gr5</code>
  31927. <code>gr6</code>
  31928. </p></dd>
  31929. </dl>
  31930. <hr>
  31931. <span id="Visium-Syntax"></span><div class="header">
  31932. <p>
  31933. Next: <a href="#Visium-Opcodes" accesskey="n" rel="next">Visium Opcodes</a>, Previous: <a href="#Visium-Options" accesskey="p" rel="prev">Visium Options</a>, Up: <a href="#Visium_002dDependent" accesskey="u" rel="up">Visium-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31934. </div>
  31935. <span id="Syntax-30"></span><h4 class="subsection">9.52.2 Syntax</h4>
  31936. <table class="menu" border="0" cellspacing="0">
  31937. <tr><td align="left" valign="top">&bull; <a href="#Visium-Characters" accesskey="1">Visium Characters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  31938. </td></tr>
  31939. <tr><td align="left" valign="top">&bull; <a href="#Visium-Registers" accesskey="2">Visium Registers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  31940. </td></tr>
  31941. </table>
  31942. <hr>
  31943. <span id="Visium-Characters"></span><div class="header">
  31944. <p>
  31945. Next: <a href="#Visium-Registers" accesskey="n" rel="next">Visium Registers</a>, Up: <a href="#Visium-Syntax" accesskey="u" rel="up">Visium Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31946. </div>
  31947. <span id="Special-Characters-38"></span><h4 class="subsubsection">9.52.2.1 Special Characters</h4>
  31948. <span id="index-line-comment-character_002c-Visium"></span>
  31949. <span id="index-Visium-line-comment-character"></span>
  31950. <p>Line comments are introduced either by the &lsquo;<samp>!</samp>&rsquo; character or by the
  31951. &lsquo;<samp>;</samp>&rsquo; character appearing anywhere on a line.
  31952. </p>
  31953. <p>A hash character (&lsquo;<samp>#</samp>&rsquo;) as the first character on a line also
  31954. marks the start of a line comment, but in this case it could also be a
  31955. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  31956. control command (see <a href="#Preprocessing">Preprocessing</a>).
  31957. </p>
  31958. <span id="index-line-separator_002c-Visium"></span>
  31959. <span id="index-statement-separator_002c-Visium"></span>
  31960. <span id="index-Visium-line-separator"></span>
  31961. <p>The Visium assembler does not currently support a line separator character.
  31962. </p>
  31963. <hr>
  31964. <span id="Visium-Registers"></span><div class="header">
  31965. <p>
  31966. Previous: <a href="#Visium-Characters" accesskey="p" rel="prev">Visium Characters</a>, Up: <a href="#Visium-Syntax" accesskey="u" rel="up">Visium Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31967. </div>
  31968. <span id="Register-Names-19"></span><h4 class="subsubsection">9.52.2.2 Register Names</h4>
  31969. <span id="index-Visium-registers"></span>
  31970. <span id="index-register-names_002c-Visium"></span>
  31971. <p>Registers can be specified either by using their canonical mnemonic names
  31972. or by using their alias if they have one, for example &lsquo;<samp>sp</samp>&rsquo;.
  31973. </p>
  31974. <hr>
  31975. <span id="Visium-Opcodes"></span><div class="header">
  31976. <p>
  31977. Previous: <a href="#Visium-Syntax" accesskey="p" rel="prev">Visium Syntax</a>, Up: <a href="#Visium_002dDependent" accesskey="u" rel="up">Visium-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31978. </div>
  31979. <span id="Opcodes-19"></span><h4 class="subsection">9.52.3 Opcodes</h4>
  31980. <p>All the standard opcodes of the architecture are implemented, along with the
  31981. following three pseudo-instructions: <code>cmp</code>, <code>cmpc</code>, <code>move</code>.
  31982. </p>
  31983. <p>In addition, the following two illegal opcodes are implemented and used by the simulation:
  31984. </p>
  31985. <div class="example">
  31986. <pre class="example">stop 5-bit immediate, SourceA
  31987. trace 5-bit immediate, SourceA
  31988. </pre></div>
  31989. <hr>
  31990. <span id="WebAssembly_002dDependent"></span><div class="header">
  31991. <p>
  31992. Next: <a href="#XGATE_002dDependent" accesskey="n" rel="next">XGATE-Dependent</a>, Previous: <a href="#Visium_002dDependent" accesskey="p" rel="prev">Visium-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  31993. </div>
  31994. <span id="WebAssembly-Dependent-Features"></span><h3 class="section">9.53 WebAssembly Dependent Features</h3>
  31995. <span id="index-WebAssembly-support"></span>
  31996. <table class="menu" border="0" cellspacing="0">
  31997. <tr><td align="left" valign="top">&bull; <a href="#WebAssembly_002dNotes" accesskey="1">WebAssembly-Notes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Notes
  31998. </td></tr>
  31999. <tr><td align="left" valign="top">&bull; <a href="#WebAssembly_002dSyntax" accesskey="2">WebAssembly-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  32000. </td></tr>
  32001. <tr><td align="left" valign="top">&bull; <a href="#WebAssembly_002dFloating_002dPoint" accesskey="3">WebAssembly-Floating-Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  32002. </td></tr>
  32003. <tr><td align="left" valign="top">&bull; <a href="#WebAssembly_002dOpcodes" accesskey="4">WebAssembly-Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  32004. </td></tr>
  32005. <tr><td align="left" valign="top">&bull; <a href="#WebAssembly_002dmodule_002dlayout" accesskey="5">WebAssembly-module-layout</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Module Layout
  32006. </td></tr>
  32007. </table>
  32008. <hr>
  32009. <span id="WebAssembly_002dNotes"></span><div class="header">
  32010. <p>
  32011. Next: <a href="#WebAssembly_002dSyntax" accesskey="n" rel="next">WebAssembly-Syntax</a>, Up: <a href="#WebAssembly_002dDependent" accesskey="u" rel="up">WebAssembly-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32012. </div>
  32013. <span id="Notes-3"></span><h4 class="subsection">9.53.1 Notes</h4>
  32014. <span id="index-WebAssembly-notes"></span>
  32015. <span id="index-notes-for-WebAssembly"></span>
  32016. <p>While WebAssembly provides its own module format for executables, this
  32017. documentation describes how to use <code>as</code> to produce
  32018. intermediate ELF object format files.
  32019. </p>
  32020. <hr>
  32021. <span id="WebAssembly_002dSyntax"></span><div class="header">
  32022. <p>
  32023. Next: <a href="#WebAssembly_002dFloating_002dPoint" accesskey="n" rel="next">WebAssembly-Floating-Point</a>, Previous: <a href="#WebAssembly_002dNotes" accesskey="p" rel="prev">WebAssembly-Notes</a>, Up: <a href="#WebAssembly_002dDependent" accesskey="u" rel="up">WebAssembly-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32024. </div>
  32025. <span id="Syntax-31"></span><h4 class="subsection">9.53.2 Syntax</h4>
  32026. <span id="index-WebAssembly-Syntax"></span>
  32027. <p>The assembler syntax directly encodes sequences of opcodes as defined
  32028. in the WebAssembly binary encoding specification at
  32029. https://github.com/webassembly/spec/BinaryEncoding.md. Structured
  32030. sexp-style expressions are not supported as input.
  32031. </p>
  32032. <table class="menu" border="0" cellspacing="0">
  32033. <tr><td align="left" valign="top">&bull; <a href="#WebAssembly_002dChars" accesskey="1">WebAssembly-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  32034. </td></tr>
  32035. <tr><td align="left" valign="top">&bull; <a href="#WebAssembly_002dRelocs" accesskey="2">WebAssembly-Relocs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relocations
  32036. </td></tr>
  32037. <tr><td align="left" valign="top">&bull; <a href="#WebAssembly_002dSignatures" accesskey="3">WebAssembly-Signatures</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Signatures
  32038. </td></tr>
  32039. </table>
  32040. <hr>
  32041. <span id="WebAssembly_002dChars"></span><div class="header">
  32042. <p>
  32043. Next: <a href="#WebAssembly_002dRelocs" accesskey="n" rel="next">WebAssembly-Relocs</a>, Up: <a href="#WebAssembly_002dSyntax" accesskey="u" rel="up">WebAssembly-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32044. </div>
  32045. <span id="Special-Characters-39"></span><h4 class="subsubsection">9.53.2.1 Special Characters</h4>
  32046. <span id="index-line-comment-character_002c-WebAssembly"></span>
  32047. <span id="index-WebAssembly-line-comment-character"></span>
  32048. <p>&lsquo;<samp>#</samp>&rsquo; and &lsquo;<samp>;</samp>&rsquo; are the line comment characters. Note that if
  32049. &lsquo;<samp>#</samp>&rsquo; is the first character on a line then it can also be a
  32050. logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  32051. control command (see <a href="#Preprocessing">Preprocessing</a>).
  32052. </p>
  32053. <hr>
  32054. <span id="WebAssembly_002dRelocs"></span><div class="header">
  32055. <p>
  32056. Next: <a href="#WebAssembly_002dSignatures" accesskey="n" rel="next">WebAssembly-Signatures</a>, Previous: <a href="#WebAssembly_002dChars" accesskey="p" rel="prev">WebAssembly-Chars</a>, Up: <a href="#WebAssembly_002dSyntax" accesskey="u" rel="up">WebAssembly-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32057. </div>
  32058. <span id="Relocations-5"></span><h4 class="subsubsection">9.53.2.2 Relocations</h4>
  32059. <span id="index-WebAssembly-relocations"></span>
  32060. <span id="index-relocations_002c-WebAssembly"></span>
  32061. <p>Special relocations are available by using the &lsquo;<samp>@<var>plt</var></samp>&rsquo;,
  32062. &lsquo;<samp>@<var>got</var></samp>&rsquo;, or &lsquo;<samp>@<var>got</var></samp>&rsquo; suffixes after a constant
  32063. expression, which correspond to the R_ASMJS_LEB128_PLT,
  32064. R_ASMJS_LEB128_GOT, and R_ASMJS_LEB128_GOT_CODE relocations,
  32065. respectively.
  32066. </p>
  32067. <p>The &lsquo;<samp>@<var>plt</var></samp>&rsquo; suffix is followed by a symbol name in braces;
  32068. the symbol value is used to determine the function signature for which
  32069. a PLT stub is generated. Currently, the symbol <em>name</em> is parsed
  32070. from its last &lsquo;<samp>F</samp>&rsquo; character to determine the argument count of
  32071. the function, which is also necessary for generating a PLT stub.
  32072. </p>
  32073. <hr>
  32074. <span id="WebAssembly_002dSignatures"></span><div class="header">
  32075. <p>
  32076. Previous: <a href="#WebAssembly_002dRelocs" accesskey="p" rel="prev">WebAssembly-Relocs</a>, Up: <a href="#WebAssembly_002dSyntax" accesskey="u" rel="up">WebAssembly-Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32077. </div>
  32078. <span id="Signatures"></span><h4 class="subsubsection">9.53.2.3 Signatures</h4>
  32079. <span id="index-WebAssembly-signatures"></span>
  32080. <span id="index-signatures_002c-WebAssembly"></span>
  32081. <p>Function signatures are specified with the <code>signature</code>
  32082. pseudo-opcode, followed by a simple function signature imitating a
  32083. C++-mangled function type: <code>F</code> followed by an optional <code>v</code>,
  32084. then a sequence of <code>i</code>, <code>l</code>, <code>f</code>, and <code>d</code>
  32085. characters to mark i32, i64, f32, and f64 parameters, respectively;
  32086. followed by a final <code>E</code> to mark the end of the function
  32087. signature.
  32088. </p>
  32089. <hr>
  32090. <span id="WebAssembly_002dFloating_002dPoint"></span><div class="header">
  32091. <p>
  32092. Next: <a href="#WebAssembly_002dOpcodes" accesskey="n" rel="next">WebAssembly-Opcodes</a>, Previous: <a href="#WebAssembly_002dSyntax" accesskey="p" rel="prev">WebAssembly-Syntax</a>, Up: <a href="#WebAssembly_002dDependent" accesskey="u" rel="up">WebAssembly-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32093. </div>
  32094. <span id="Floating-Point-17"></span><h4 class="subsection">9.53.3 Floating Point</h4>
  32095. <span id="index-floating-point_002c-WebAssembly-_0028IEEE_0029"></span>
  32096. <span id="index-WebAssembly-floating-point-_0028IEEE_0029"></span>
  32097. <p>WebAssembly uses little-endian <small>IEEE</small> floating-point numbers.
  32098. </p>
  32099. <hr>
  32100. <span id="WebAssembly_002dOpcodes"></span><div class="header">
  32101. <p>
  32102. Next: <a href="#WebAssembly_002dmodule_002dlayout" accesskey="n" rel="next">WebAssembly-module-layout</a>, Previous: <a href="#WebAssembly_002dFloating_002dPoint" accesskey="p" rel="prev">WebAssembly-Floating-Point</a>, Up: <a href="#WebAssembly_002dDependent" accesskey="u" rel="up">WebAssembly-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32103. </div>
  32104. <span id="Regular-Opcodes"></span><h4 class="subsection">9.53.4 Regular Opcodes</h4>
  32105. <span id="index-opcodes_002c-WebAssembly"></span>
  32106. <span id="index-WebAssembly-opcodes"></span>
  32107. <p>Ordinary instructions are encoded with the WebAssembly mnemonics as
  32108. listed at:
  32109. <a href="https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md">https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md</a>.
  32110. </p>
  32111. <p>Opcodes are written directly in the order in which they are encoded,
  32112. without going through an intermediate sexp-style expression as in the
  32113. <code>was</code> format.
  32114. </p>
  32115. <p>For &ldquo;typed&rdquo; opcodes (block, if, etc.), the type of the block is
  32116. specified in square brackets following the opcode: <code>if[i]</code>,
  32117. <code>if[]</code>.
  32118. </p>
  32119. <hr>
  32120. <span id="WebAssembly_002dmodule_002dlayout"></span><div class="header">
  32121. <p>
  32122. Previous: <a href="#WebAssembly_002dOpcodes" accesskey="p" rel="prev">WebAssembly-Opcodes</a>, Up: <a href="#WebAssembly_002dDependent" accesskey="u" rel="up">WebAssembly-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32123. </div>
  32124. <span id="WebAssembly-Module-Layout"></span><h4 class="subsection">9.53.5 WebAssembly Module Layout</h4>
  32125. <span id="index-module-layout_002c-WebAssembly"></span>
  32126. <span id="index-WebAssembly-module-layout"></span>
  32127. <p><code>as</code> will only produce ELF output, not a valid
  32128. WebAssembly module. It is possible to make <code>as</code> produce
  32129. output in a single ELF section which becomes a valid WebAssembly
  32130. module, but a linker script to do so may be preferable, as it doesn&rsquo;t
  32131. require running the entire module through the assembler at once.
  32132. </p>
  32133. <hr>
  32134. <span id="XGATE_002dDependent"></span><div class="header">
  32135. <p>
  32136. Next: <a href="#XSTORMY16_002dDependent" accesskey="n" rel="next">XSTORMY16-Dependent</a>, Previous: <a href="#WebAssembly_002dDependent" accesskey="p" rel="prev">WebAssembly-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32137. </div>
  32138. <span id="XGATE-Dependent-Features"></span><h3 class="section">9.54 XGATE Dependent Features</h3>
  32139. <span id="index-XGATE-support"></span>
  32140. <table class="menu" border="0" cellspacing="0">
  32141. <tr><td align="left" valign="top">&bull; <a href="#XGATE_002dOpts" accesskey="1">XGATE-Opts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">XGATE Options
  32142. </td></tr>
  32143. <tr><td align="left" valign="top">&bull; <a href="#XGATE_002dSyntax" accesskey="2">XGATE-Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  32144. </td></tr>
  32145. <tr><td align="left" valign="top">&bull; <a href="#XGATE_002dDirectives" accesskey="3">XGATE-Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Directives
  32146. </td></tr>
  32147. <tr><td align="left" valign="top">&bull; <a href="#XGATE_002dFloat" accesskey="4">XGATE-Float</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  32148. </td></tr>
  32149. <tr><td align="left" valign="top">&bull; <a href="#XGATE_002dopcodes" accesskey="5">XGATE-opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  32150. </td></tr>
  32151. </table>
  32152. <hr>
  32153. <span id="XGATE_002dOpts"></span><div class="header">
  32154. <p>
  32155. Next: <a href="#XGATE_002dSyntax" accesskey="n" rel="next">XGATE-Syntax</a>, Up: <a href="#XGATE_002dDependent" accesskey="u" rel="up">XGATE-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32156. </div>
  32157. <span id="XGATE-Options"></span><h4 class="subsection">9.54.1 XGATE Options</h4>
  32158. <span id="index-options_002c-XGATE"></span>
  32159. <span id="index-XGATE-options"></span>
  32160. <p>The Freescale XGATE version of <code>as</code> has a few machine
  32161. dependent options.
  32162. </p>
  32163. <dl compact="compact">
  32164. <dd>
  32165. <span id="index-_002dmshort-1"></span>
  32166. </dd>
  32167. <dt><code>-mshort</code></dt>
  32168. <dd><p>This option controls the ABI and indicates to use a 16-bit integer ABI.
  32169. It has no effect on the assembled instructions.
  32170. This is the default.
  32171. </p>
  32172. <span id="index-_002dmlong-1"></span>
  32173. </dd>
  32174. <dt><code>-mlong</code></dt>
  32175. <dd><p>This option controls the ABI and indicates to use a 32-bit integer ABI.
  32176. </p>
  32177. <span id="index-_002dmshort_002ddouble-1"></span>
  32178. </dd>
  32179. <dt><code>-mshort-double</code></dt>
  32180. <dd><p>This option controls the ABI and indicates to use a 32-bit float ABI.
  32181. This is the default.
  32182. </p>
  32183. <span id="index-_002dmlong_002ddouble-1"></span>
  32184. </dd>
  32185. <dt><code>-mlong-double</code></dt>
  32186. <dd><p>This option controls the ABI and indicates to use a 64-bit float ABI.
  32187. </p>
  32188. <span id="index-_002d_002dprint_002dinsn_002dsyntax-1"></span>
  32189. </dd>
  32190. <dt><code>--print-insn-syntax</code></dt>
  32191. <dd><p>You can use the &lsquo;<samp>--print-insn-syntax</samp>&rsquo; option to obtain the
  32192. syntax description of the instruction when an error is detected.
  32193. </p>
  32194. <span id="index-_002d_002dprint_002dopcodes-1"></span>
  32195. </dd>
  32196. <dt><code>--print-opcodes</code></dt>
  32197. <dd><p>The &lsquo;<samp>--print-opcodes</samp>&rsquo; option prints the list of all the
  32198. instructions with their syntax. Once the list is printed
  32199. <code>as</code> exits.
  32200. </p>
  32201. </dd>
  32202. </dl>
  32203. <hr>
  32204. <span id="XGATE_002dSyntax"></span><div class="header">
  32205. <p>
  32206. Next: <a href="#XGATE_002dDirectives" accesskey="n" rel="next">XGATE-Directives</a>, Previous: <a href="#XGATE_002dOpts" accesskey="p" rel="prev">XGATE-Opts</a>, Up: <a href="#XGATE_002dDependent" accesskey="u" rel="up">XGATE-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32207. </div>
  32208. <span id="Syntax-32"></span><h4 class="subsection">9.54.2 Syntax</h4>
  32209. <span id="index-XGATE-syntax"></span>
  32210. <span id="index-syntax_002c-XGATE"></span>
  32211. <p>In XGATE RISC syntax, the instruction name comes first and it may
  32212. be followed by up to three operands. Operands are separated by commas
  32213. (&lsquo;<samp>,</samp>&rsquo;). <code>as</code> will complain if too many operands are specified
  32214. for a given instruction. The same will happen if you specified too few
  32215. operands.
  32216. </p>
  32217. <div class="example">
  32218. <pre class="example">nop
  32219. ldl #23
  32220. CMP R1, R2
  32221. </pre></div>
  32222. <span id="index-line-comment-character_002c-XGATE"></span>
  32223. <span id="index-XGATE-line-comment-character"></span>
  32224. <p>The presence of a &lsquo;<samp>;</samp>&rsquo; character or a &lsquo;<samp>!</samp>&rsquo; character anywhere
  32225. on a line indicates the start of a comment that extends to the end of
  32226. that line.
  32227. </p>
  32228. <p>A &lsquo;<samp>*</samp>&rsquo; or a &lsquo;<samp>#</samp>&rsquo; character at the start of a line also
  32229. introduces a line comment, but these characters do not work elsewhere
  32230. on the line. If the first character of the line is a &lsquo;<samp>#</samp>&rsquo; then as
  32231. well as starting a comment, the line could also be logical line number
  32232. directive (see <a href="#Comments">Comments</a>) or a preprocessor control command
  32233. (see <a href="#Preprocessing">Preprocessing</a>).
  32234. </p>
  32235. <span id="index-line-separator_002c-XGATE"></span>
  32236. <span id="index-statement-separator_002c-XGATE"></span>
  32237. <span id="index-XGATE-line-separator"></span>
  32238. <p>The XGATE assembler does not currently support a line separator
  32239. character.
  32240. </p>
  32241. <span id="index-XGATE-addressing-modes"></span>
  32242. <span id="index-addressing-modes_002c-XGATE"></span>
  32243. <p>The following addressing modes are understood for XGATE:
  32244. </p><dl compact="compact">
  32245. <dt><em>Inherent</em></dt>
  32246. <dd><p>&lsquo;<samp></samp>&rsquo;
  32247. </p>
  32248. </dd>
  32249. <dt><em>Immediate 3 Bit Wide</em></dt>
  32250. <dd><p>&lsquo;<samp>#<var>number</var></samp>&rsquo;
  32251. </p>
  32252. </dd>
  32253. <dt><em>Immediate 4 Bit Wide</em></dt>
  32254. <dd><p>&lsquo;<samp>#<var>number</var></samp>&rsquo;
  32255. </p>
  32256. </dd>
  32257. <dt><em>Immediate 8 Bit Wide</em></dt>
  32258. <dd><p>&lsquo;<samp>#<var>number</var></samp>&rsquo;
  32259. </p>
  32260. </dd>
  32261. <dt><em>Monadic Addressing</em></dt>
  32262. <dd><p>&lsquo;<samp><var>reg</var></samp>&rsquo;
  32263. </p>
  32264. </dd>
  32265. <dt><em>Dyadic Addressing</em></dt>
  32266. <dd><p>&lsquo;<samp><var>reg</var>, <var>reg</var></samp>&rsquo;
  32267. </p>
  32268. </dd>
  32269. <dt><em>Triadic Addressing</em></dt>
  32270. <dd><p>&lsquo;<samp><var>reg</var>, <var>reg</var>, <var>reg</var></samp>&rsquo;
  32271. </p>
  32272. </dd>
  32273. <dt><em>Relative Addressing 9 Bit Wide</em></dt>
  32274. <dd><p>&lsquo;<samp>*<var>symbol</var></samp>&rsquo;
  32275. </p>
  32276. </dd>
  32277. <dt><em>Relative Addressing 10 Bit Wide</em></dt>
  32278. <dd><p>&lsquo;<samp>*<var>symbol</var></samp>&rsquo;
  32279. </p>
  32280. </dd>
  32281. <dt><em>Index Register plus Immediate Offset</em></dt>
  32282. <dd><p>&lsquo;<samp><var>reg</var>, (<var>reg</var>, #<var>number</var>)</samp>&rsquo;
  32283. </p>
  32284. </dd>
  32285. <dt><em>Index Register plus Register Offset</em></dt>
  32286. <dd><p>&lsquo;<samp><var>reg</var>, <var>reg</var>, <var>reg</var></samp>&rsquo;
  32287. </p>
  32288. </dd>
  32289. <dt><em>Index Register plus Register Offset with Post-increment</em></dt>
  32290. <dd><p>&lsquo;<samp><var>reg</var>, <var>reg</var>, <var>reg</var>+</samp>&rsquo;
  32291. </p>
  32292. </dd>
  32293. <dt><em>Index Register plus Register Offset with Pre-decrement</em></dt>
  32294. <dd><p>&lsquo;<samp><var>reg</var>, <var>reg</var>, -<var>reg</var></samp>&rsquo;
  32295. </p>
  32296. <p>The register can be either &lsquo;<samp>R0</samp>&rsquo;, &lsquo;<samp>R1</samp>&rsquo;, &lsquo;<samp>R2</samp>&rsquo;, &lsquo;<samp>R3</samp>&rsquo;,
  32297. &lsquo;<samp>R4</samp>&rsquo;, &lsquo;<samp>R5</samp>&rsquo;, &lsquo;<samp>R6</samp>&rsquo; or &lsquo;<samp>R7</samp>&rsquo;.
  32298. </p>
  32299. </dd>
  32300. </dl>
  32301. <p>Convene macro opcodes to deal with 16-bit values have been added.
  32302. </p>
  32303. <dl compact="compact">
  32304. <dt><em>Immediate 16 Bit Wide</em></dt>
  32305. <dd><p>&lsquo;<samp>#<var>number</var></samp>&rsquo;, or &lsquo;<samp>*<var>symbol</var></samp>&rsquo;
  32306. </p>
  32307. <p>For example:
  32308. </p>
  32309. <div class="example">
  32310. <pre class="example">ldw R1, #1024
  32311. ldw R3, timer
  32312. ldw R1, (R1, #0)
  32313. COM R1
  32314. stw R2, (R1, #0)
  32315. </pre></div>
  32316. </dd>
  32317. </dl>
  32318. <hr>
  32319. <span id="XGATE_002dDirectives"></span><div class="header">
  32320. <p>
  32321. Next: <a href="#XGATE_002dFloat" accesskey="n" rel="next">XGATE-Float</a>, Previous: <a href="#XGATE_002dSyntax" accesskey="p" rel="prev">XGATE-Syntax</a>, Up: <a href="#XGATE_002dDependent" accesskey="u" rel="up">XGATE-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32322. </div>
  32323. <span id="Assembler-Directives-8"></span><h4 class="subsection">9.54.3 Assembler Directives</h4>
  32324. <span id="index-assembler-directives_002c-XGATE"></span>
  32325. <span id="index-XGATE-assembler-directives"></span>
  32326. <p>The XGATE version of <code>as</code> have the following
  32327. specific assembler directives:
  32328. </p>
  32329. <hr>
  32330. <span id="XGATE_002dFloat"></span><div class="header">
  32331. <p>
  32332. Next: <a href="#XGATE_002dopcodes" accesskey="n" rel="next">XGATE-opcodes</a>, Previous: <a href="#XGATE_002dDirectives" accesskey="p" rel="prev">XGATE-Directives</a>, Up: <a href="#XGATE_002dDependent" accesskey="u" rel="up">XGATE-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32333. </div>
  32334. <span id="Floating-Point-18"></span><h4 class="subsection">9.54.4 Floating Point</h4>
  32335. <span id="index-floating-point_002c-XGATE"></span>
  32336. <span id="index-XGATE-floating-point"></span>
  32337. <p>Packed decimal (P) format floating literals are not supported(yet).
  32338. </p>
  32339. <p>The floating point formats generated by directives are these.
  32340. </p>
  32341. <dl compact="compact">
  32342. <dd><span id="index-float-directive_002c-XGATE"></span>
  32343. </dd>
  32344. <dt><code>.float</code></dt>
  32345. <dd><p><code>Single</code> precision floating point constants.
  32346. </p>
  32347. <span id="index-double-directive_002c-XGATE"></span>
  32348. </dd>
  32349. <dt><code>.double</code></dt>
  32350. <dd><p><code>Double</code> precision floating point constants.
  32351. </p>
  32352. <span id="index-extend-directive-XGATE"></span>
  32353. <span id="index-ldouble-directive-XGATE"></span>
  32354. </dd>
  32355. <dt><code>.extend</code></dt>
  32356. <dt><code>.ldouble</code></dt>
  32357. <dd><p><code>Extended</code> precision (<code>long double</code>) floating point constants.
  32358. </p></dd>
  32359. </dl>
  32360. <hr>
  32361. <span id="XGATE_002dopcodes"></span><div class="header">
  32362. <p>
  32363. Previous: <a href="#XGATE_002dFloat" accesskey="p" rel="prev">XGATE-Float</a>, Up: <a href="#XGATE_002dDependent" accesskey="u" rel="up">XGATE-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32364. </div>
  32365. <span id="Opcodes-20"></span><h4 class="subsection">9.54.5 Opcodes</h4>
  32366. <span id="index-XGATE-opcodes"></span>
  32367. <span id="index-instruction-set_002c-XGATE"></span>
  32368. <hr>
  32369. <span id="XSTORMY16_002dDependent"></span><div class="header">
  32370. <p>
  32371. Next: <a href="#Xtensa_002dDependent" accesskey="n" rel="next">Xtensa-Dependent</a>, Previous: <a href="#XGATE_002dDependent" accesskey="p" rel="prev">XGATE-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32372. </div>
  32373. <span id="XStormy16-Dependent-Features"></span><h3 class="section">9.55 XStormy16 Dependent Features</h3>
  32374. <span id="index-XStormy16-support"></span>
  32375. <table class="menu" border="0" cellspacing="0">
  32376. <tr><td align="left" valign="top">&bull; <a href="#XStormy16-Syntax" accesskey="1">XStormy16 Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  32377. </td></tr>
  32378. <tr><td align="left" valign="top">&bull; <a href="#XStormy16-Directives" accesskey="2">XStormy16 Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Machine Directives
  32379. </td></tr>
  32380. <tr><td align="left" valign="top">&bull; <a href="#XStormy16-Opcodes" accesskey="3">XStormy16 Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Pseudo-Opcodes
  32381. </td></tr>
  32382. </table>
  32383. <hr>
  32384. <span id="XStormy16-Syntax"></span><div class="header">
  32385. <p>
  32386. Next: <a href="#XStormy16-Directives" accesskey="n" rel="next">XStormy16 Directives</a>, Up: <a href="#XSTORMY16_002dDependent" accesskey="u" rel="up">XSTORMY16-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32387. </div>
  32388. <span id="Syntax-33"></span><h4 class="subsection">9.55.1 Syntax</h4>
  32389. <table class="menu" border="0" cellspacing="0">
  32390. <tr><td align="left" valign="top">&bull; <a href="#XStormy16_002dChars" accesskey="1">XStormy16-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  32391. </td></tr>
  32392. </table>
  32393. <hr>
  32394. <span id="XStormy16_002dChars"></span><div class="header">
  32395. <p>
  32396. Up: <a href="#XStormy16-Syntax" accesskey="u" rel="up">XStormy16 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32397. </div>
  32398. <span id="Special-Characters-40"></span><h4 class="subsubsection">9.55.1.1 Special Characters</h4>
  32399. <span id="index-line-comment-character_002c-XStormy16"></span>
  32400. <span id="index-XStormy16-line-comment-character"></span>
  32401. <p>&lsquo;<samp>#</samp>&rsquo; is the line comment character. If a &lsquo;<samp>#</samp>&rsquo; appears as the
  32402. first character of a line, the whole line is treated as a comment, but
  32403. in this case the line can also be a logical line number directive
  32404. (see <a href="#Comments">Comments</a>) or a preprocessor control command
  32405. (see <a href="#Preprocessing">Preprocessing</a>).
  32406. </p>
  32407. <span id="index-comment-character_002c-XStormy16"></span>
  32408. <span id="index-XStormy16-comment-character"></span>
  32409. <p>A semicolon (&lsquo;<samp>;</samp>&rsquo;) can be used to start a comment that extends
  32410. from wherever the character appears on the line up to the end of the
  32411. line.
  32412. </p>
  32413. <span id="index-line-separator_002c-XStormy16"></span>
  32414. <span id="index-statement-separator_002c-XStormy16"></span>
  32415. <span id="index-XStormy16-line-separator"></span>
  32416. <p>The &lsquo;<samp>|</samp>&rsquo; character can be used to separate statements on the same
  32417. line.
  32418. </p>
  32419. <hr>
  32420. <span id="XStormy16-Directives"></span><div class="header">
  32421. <p>
  32422. Next: <a href="#XStormy16-Opcodes" accesskey="n" rel="next">XStormy16 Opcodes</a>, Previous: <a href="#XStormy16-Syntax" accesskey="p" rel="prev">XStormy16 Syntax</a>, Up: <a href="#XSTORMY16_002dDependent" accesskey="u" rel="up">XSTORMY16-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32423. </div>
  32424. <span id="XStormy16-Machine-Directives"></span><h4 class="subsection">9.55.2 XStormy16 Machine Directives</h4>
  32425. <span id="index-machine-directives_002c-XStormy16"></span>
  32426. <span id="index-XStormy16-machine-directives"></span>
  32427. <dl compact="compact">
  32428. <dd>
  32429. <span id="index-16bit_005fpointers-directive_002c-XStormy16"></span>
  32430. </dd>
  32431. <dt><code>.16bit_pointers</code></dt>
  32432. <dd><p>Like the <samp>--16bit-pointers</samp> command-line option this directive
  32433. indicates that the assembly code makes use of 16-bit pointers.
  32434. </p>
  32435. <span id="index-32bit_005fpointers-directive_002c-XStormy16"></span>
  32436. </dd>
  32437. <dt><code>.32bit_pointers</code></dt>
  32438. <dd><p>Like the <samp>--32bit-pointers</samp> command-line option this directive
  32439. indicates that the assembly code makes use of 32-bit pointers.
  32440. </p>
  32441. <span id="index-_002eno_005fpointers-directive_002c-XStormy16"></span>
  32442. </dd>
  32443. <dt><code>.no_pointers</code></dt>
  32444. <dd><p>Like the <samp>--no-pointers</samp> command-line option this directive
  32445. indicates that the assembly code does not makes use pointers.
  32446. </p>
  32447. </dd>
  32448. </dl>
  32449. <hr>
  32450. <span id="XStormy16-Opcodes"></span><div class="header">
  32451. <p>
  32452. Previous: <a href="#XStormy16-Directives" accesskey="p" rel="prev">XStormy16 Directives</a>, Up: <a href="#XSTORMY16_002dDependent" accesskey="u" rel="up">XSTORMY16-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32453. </div>
  32454. <span id="XStormy16-Pseudo_002dOpcodes"></span><h4 class="subsection">9.55.3 XStormy16 Pseudo-Opcodes</h4>
  32455. <span id="index-XStormy16-pseudo_002dopcodes"></span>
  32456. <span id="index-pseudo_002dopcodes-for-XStormy16"></span>
  32457. <p><code>as</code> implements all the standard XStormy16 opcodes.
  32458. </p>
  32459. <p><code>as</code> also implements the following pseudo ops:
  32460. </p>
  32461. <dl compact="compact">
  32462. <dd>
  32463. <span id="index-_0040lo-pseudo_002dop_002c-XStormy16"></span>
  32464. </dd>
  32465. <dt><code>@lo()</code></dt>
  32466. <dd><p>Computes the lower 16 bits of the given expression and stores it into
  32467. the immediate operand field of the given instruction. For example:
  32468. </p>
  32469. <p>&lsquo;<samp>add r6, @lo(here - there)</samp>&rsquo;
  32470. </p>
  32471. <p>computes the difference between the address of labels &rsquo;here&rsquo; and
  32472. &rsquo;there&rsquo;, takes the lower 16 bits of this difference and adds it to
  32473. register 6.
  32474. </p>
  32475. <span id="index-_0040hi-pseudo_002dop_002c-XStormy16"></span>
  32476. </dd>
  32477. <dt><code>@hi()</code></dt>
  32478. <dd><p>Computes the higher 16 bits of the given expression and stores it into
  32479. the immediate operand field of the given instruction. For example:
  32480. </p>
  32481. <p>&lsquo;<samp>addc r7, @hi(here - there)</samp>&rsquo;
  32482. </p>
  32483. <p>computes the difference between the address of labels &rsquo;here&rsquo; and
  32484. &rsquo;there&rsquo;, takes the upper 16 bits of this difference, shifts it down 16
  32485. bits and then adds it, along with the carry bit, to the value in
  32486. register 7.
  32487. </p>
  32488. </dd>
  32489. </dl>
  32490. <hr>
  32491. <span id="Xtensa_002dDependent"></span><div class="header">
  32492. <p>
  32493. Next: <a href="#Z80_002dDependent" accesskey="n" rel="next">Z80-Dependent</a>, Previous: <a href="#XSTORMY16_002dDependent" accesskey="p" rel="prev">XSTORMY16-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32494. </div>
  32495. <span id="Xtensa-Dependent-Features"></span><h3 class="section">9.56 Xtensa Dependent Features</h3>
  32496. <span id="index-Xtensa-architecture"></span>
  32497. <p>This chapter covers features of the <small>GNU</small> assembler that are specific
  32498. to the Xtensa architecture. For details about the Xtensa instruction
  32499. set, please consult the <cite>Xtensa Instruction Set Architecture (ISA)
  32500. Reference Manual</cite>.
  32501. </p>
  32502. <table class="menu" border="0" cellspacing="0">
  32503. <tr><td align="left" valign="top">&bull; <a href="#Xtensa-Options" accesskey="1">Xtensa Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command-line Options.
  32504. </td></tr>
  32505. <tr><td align="left" valign="top">&bull; <a href="#Xtensa-Syntax" accesskey="2">Xtensa Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Syntax for Xtensa Processors.
  32506. </td></tr>
  32507. <tr><td align="left" valign="top">&bull; <a href="#Xtensa-Optimizations" accesskey="3">Xtensa Optimizations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler Optimizations.
  32508. </td></tr>
  32509. <tr><td align="left" valign="top">&bull; <a href="#Xtensa-Relaxation" accesskey="4">Xtensa Relaxation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Other Automatic Transformations.
  32510. </td></tr>
  32511. <tr><td align="left" valign="top">&bull; <a href="#Xtensa-Directives" accesskey="5">Xtensa Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Directives for Xtensa Processors.
  32512. </td></tr>
  32513. </table>
  32514. <hr>
  32515. <span id="Xtensa-Options"></span><div class="header">
  32516. <p>
  32517. Next: <a href="#Xtensa-Syntax" accesskey="n" rel="next">Xtensa Syntax</a>, Up: <a href="#Xtensa_002dDependent" accesskey="u" rel="up">Xtensa-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32518. </div>
  32519. <span id="Command_002dline-Options-2"></span><h4 class="subsection">9.56.1 Command-line Options</h4>
  32520. <dl compact="compact">
  32521. <dt><code>--text-section-literals | --no-text-section-literals</code></dt>
  32522. <dd><span id="index-_002d_002dtext_002dsection_002dliterals"></span>
  32523. <span id="index-_002d_002dno_002dtext_002dsection_002dliterals"></span>
  32524. <p>Control the treatment of literal pools. The default is
  32525. &lsquo;<samp>--no-text-section-literals</samp>&rsquo;, which places literals in
  32526. separate sections in the output file. This allows the literal pool to be
  32527. placed in a data RAM/ROM. With &lsquo;<samp>--text-section-literals</samp>&rsquo;, the
  32528. literals are interspersed in the text section in order to keep them as
  32529. close as possible to their references. This may be necessary for large
  32530. assembly files, where the literals would otherwise be out of range of the
  32531. <code>L32R</code> instructions in the text section. Literals are grouped into
  32532. pools following <code>.literal_position</code> directives or preceding
  32533. <code>ENTRY</code> instructions. These options only affect literals referenced
  32534. via PC-relative <code>L32R</code> instructions; literals for absolute mode
  32535. <code>L32R</code> instructions are handled separately.
  32536. See <a href="#Literal-Directive">literal</a>.
  32537. </p>
  32538. </dd>
  32539. <dt><code>--auto-litpools | --no-auto-litpools</code></dt>
  32540. <dd><span id="index-_002d_002dauto_002dlitpools"></span>
  32541. <span id="index-_002d_002dno_002dauto_002dlitpools"></span>
  32542. <p>Control the treatment of literal pools. The default is
  32543. &lsquo;<samp>--no-auto-litpools</samp>&rsquo;, which in the absence of
  32544. &lsquo;<samp>--text-section-literals</samp>&rsquo; places literals in separate sections
  32545. in the output file. This allows the literal pool to be placed in a data
  32546. RAM/ROM. With &lsquo;<samp>--auto-litpools</samp>&rsquo;, the literals are interspersed
  32547. in the text section in order to keep them as close as possible to their
  32548. references, explicit <code>.literal_position</code> directives are not
  32549. required. This may be necessary for very large functions, where single
  32550. literal pool at the beginning of the function may not be reachable by
  32551. <code>L32R</code> instructions at the end. These options only affect
  32552. literals referenced via PC-relative <code>L32R</code> instructions; literals
  32553. for absolute mode <code>L32R</code> instructions are handled separately.
  32554. When used together with &lsquo;<samp>--text-section-literals</samp>&rsquo;,
  32555. &lsquo;<samp>--auto-litpools</samp>&rsquo; takes precedence.
  32556. See <a href="#Literal-Directive">literal</a>.
  32557. </p>
  32558. </dd>
  32559. <dt><code>--absolute-literals | --no-absolute-literals</code></dt>
  32560. <dd><span id="index-_002d_002dabsolute_002dliterals"></span>
  32561. <span id="index-_002d_002dno_002dabsolute_002dliterals"></span>
  32562. <p>Indicate to the assembler whether <code>L32R</code> instructions use absolute
  32563. or PC-relative addressing. If the processor includes the absolute
  32564. addressing option, the default is to use absolute <code>L32R</code>
  32565. relocations. Otherwise, only the PC-relative <code>L32R</code> relocations
  32566. can be used.
  32567. </p>
  32568. </dd>
  32569. <dt><code>--target-align | --no-target-align</code></dt>
  32570. <dd><span id="index-_002d_002dtarget_002dalign"></span>
  32571. <span id="index-_002d_002dno_002dtarget_002dalign"></span>
  32572. <p>Enable or disable automatic alignment to reduce branch penalties at some
  32573. expense in code size. See <a href="#Xtensa-Automatic-Alignment">Automatic
  32574. Instruction Alignment</a>. This optimization is enabled by default. Note
  32575. that the assembler will always align instructions like <code>LOOP</code> that
  32576. have fixed alignment requirements.
  32577. </p>
  32578. </dd>
  32579. <dt><code>--longcalls | --no-longcalls</code></dt>
  32580. <dd><span id="index-_002d_002dlongcalls"></span>
  32581. <span id="index-_002d_002dno_002dlongcalls"></span>
  32582. <p>Enable or disable transformation of call instructions to allow calls
  32583. across a greater range of addresses. See <a href="#Xtensa-Call-Relaxation">Function Call Relaxation</a>. This option should be used when call
  32584. targets can potentially be out of range. It may degrade both code size
  32585. and performance, but the linker can generally optimize away the
  32586. unnecessary overhead when a call ends up within range. The default is
  32587. &lsquo;<samp>--no-longcalls</samp>&rsquo;.
  32588. </p>
  32589. </dd>
  32590. <dt><code>--transform | --no-transform</code></dt>
  32591. <dd><span id="index-_002d_002dtransform"></span>
  32592. <span id="index-_002d_002dno_002dtransform"></span>
  32593. <p>Enable or disable all assembler transformations of Xtensa instructions,
  32594. including both relaxation and optimization. The default is
  32595. &lsquo;<samp>--transform</samp>&rsquo;; &lsquo;<samp>--no-transform</samp>&rsquo; should only be used in the
  32596. rare cases when the instructions must be exactly as specified in the
  32597. assembly source. Using &lsquo;<samp>--no-transform</samp>&rsquo; causes out of range
  32598. instruction operands to be errors.
  32599. </p>
  32600. </dd>
  32601. <dt><code>--rename-section <var>oldname</var>=<var>newname</var></code></dt>
  32602. <dd><span id="index-_002d_002drename_002dsection"></span>
  32603. <p>Rename the <var>oldname</var> section to <var>newname</var>. This option can be used
  32604. multiple times to rename multiple sections.
  32605. </p>
  32606. </dd>
  32607. <dt><code>--trampolines | --no-trampolines</code></dt>
  32608. <dd><span id="index-_002d_002dtrampolines"></span>
  32609. <span id="index-_002d_002dno_002dtrampolines"></span>
  32610. <p>Enable or disable transformation of jump instructions to allow jumps
  32611. across a greater range of addresses. See <a href="#Xtensa-Jump-Relaxation">Jump Trampolines</a>. This option should be used when jump targets can
  32612. potentially be out of range. In the absence of such jumps this option
  32613. does not affect code size or performance. The default is
  32614. &lsquo;<samp>--trampolines</samp>&rsquo;.
  32615. </p>
  32616. </dd>
  32617. <dt><code>--abi-windowed | --abi-call0</code></dt>
  32618. <dd><span id="index-_002d_002dabi_002dwindowed"></span>
  32619. <span id="index-_002d_002dabi_002dcall0"></span>
  32620. <p>Choose ABI tag written to the <code>.xtensa.info</code> section. ABI tag
  32621. indicates ABI of the assembly code. A warning is issued by the linker
  32622. on an attempt to link object files with inconsistent ABI tags.
  32623. Default ABI is chosen by the Xtensa core configuration.
  32624. </p></dd>
  32625. </dl>
  32626. <hr>
  32627. <span id="Xtensa-Syntax"></span><div class="header">
  32628. <p>
  32629. Next: <a href="#Xtensa-Optimizations" accesskey="n" rel="next">Xtensa Optimizations</a>, Previous: <a href="#Xtensa-Options" accesskey="p" rel="prev">Xtensa Options</a>, Up: <a href="#Xtensa_002dDependent" accesskey="u" rel="up">Xtensa-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32630. </div>
  32631. <span id="Assembler-Syntax"></span><h4 class="subsection">9.56.2 Assembler Syntax</h4>
  32632. <span id="index-syntax_002c-Xtensa-assembler"></span>
  32633. <span id="index-Xtensa-assembler-syntax"></span>
  32634. <span id="index-FLIX-syntax"></span>
  32635. <p>Block comments are delimited by &lsquo;<samp>/*</samp>&rsquo; and &lsquo;<samp>*/</samp>&rsquo;. End of line
  32636. comments may be introduced with either &lsquo;<samp>#</samp>&rsquo; or &lsquo;<samp>//</samp>&rsquo;.
  32637. </p>
  32638. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  32639. line is treated as a comment, but in this case the line could also be
  32640. a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  32641. control command (see <a href="#Preprocessing">Preprocessing</a>).
  32642. </p>
  32643. <p>Instructions consist of a leading opcode or macro name followed by
  32644. whitespace and an optional comma-separated list of operands:
  32645. </p>
  32646. <div class="example">
  32647. <pre class="example"><var>opcode</var> [<var>operand</var>, &hellip;]
  32648. </pre></div>
  32649. <p>Instructions must be separated by a newline or semicolon (&lsquo;<samp>;</samp>&rsquo;).
  32650. </p>
  32651. <p>FLIX instructions, which bundle multiple opcodes together in a single
  32652. instruction, are specified by enclosing the bundled opcodes inside
  32653. braces:
  32654. </p>
  32655. <div class="example">
  32656. <pre class="example">{
  32657. [<var>format</var>]
  32658. <var>opcode0</var> [<var>operands</var>]
  32659. </pre><pre class="example"><var>opcode1</var> [<var>operands</var>]
  32660. </pre><pre class="example"><var>opcode2</var> [<var>operands</var>]
  32661. &hellip;
  32662. }
  32663. </pre></div>
  32664. <p>The opcodes in a FLIX instruction are listed in the same order as the
  32665. corresponding instruction slots in the TIE format declaration.
  32666. Directives and labels are not allowed inside the braces of a FLIX
  32667. instruction. A particular TIE format name can optionally be specified
  32668. immediately after the opening brace, but this is usually unnecessary.
  32669. The assembler will automatically search for a format that can encode the
  32670. specified opcodes, so the format name need only be specified in rare
  32671. cases where there is more than one applicable format and where it
  32672. matters which of those formats is used. A FLIX instruction can also be
  32673. specified on a single line by separating the opcodes with semicolons:
  32674. </p>
  32675. <div class="example">
  32676. <pre class="example">{ [<var>format</var>;] <var>opcode0</var> [<var>operands</var>]; <var>opcode1</var> [<var>operands</var>]; <var>opcode2</var> [<var>operands</var>]; &hellip; }
  32677. </pre></div>
  32678. <p>If an opcode can only be encoded in a FLIX instruction but is not
  32679. specified as part of a FLIX bundle, the assembler will choose the
  32680. smallest format where the opcode can be encoded and
  32681. will fill unused instruction slots with no-ops.
  32682. </p>
  32683. <table class="menu" border="0" cellspacing="0">
  32684. <tr><td align="left" valign="top">&bull; <a href="#Xtensa-Opcodes" accesskey="1">Xtensa Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcode Naming Conventions.
  32685. </td></tr>
  32686. <tr><td align="left" valign="top">&bull; <a href="#Xtensa-Registers" accesskey="2">Xtensa Registers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Naming.
  32687. </td></tr>
  32688. </table>
  32689. <hr>
  32690. <span id="Xtensa-Opcodes"></span><div class="header">
  32691. <p>
  32692. Next: <a href="#Xtensa-Registers" accesskey="n" rel="next">Xtensa Registers</a>, Up: <a href="#Xtensa-Syntax" accesskey="u" rel="up">Xtensa Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32693. </div>
  32694. <span id="Opcode-Names-2"></span><h4 class="subsubsection">9.56.2.1 Opcode Names</h4>
  32695. <span id="index-Xtensa-opcode-names"></span>
  32696. <span id="index-opcode-names_002c-Xtensa"></span>
  32697. <p>See the <cite>Xtensa Instruction Set Architecture (ISA) Reference
  32698. Manual</cite> for a complete list of opcodes and descriptions of their
  32699. semantics.
  32700. </p>
  32701. <span id="index-_005f-opcode-prefix"></span>
  32702. <p>If an opcode name is prefixed with an underscore character (&lsquo;<samp>_</samp>&rsquo;),
  32703. <code>as</code> will not transform that instruction in any way. The
  32704. underscore prefix disables both optimization (see <a href="#Xtensa-Optimizations">Xtensa Optimizations</a>) and relaxation (see <a href="#Xtensa-Relaxation">Xtensa Relaxation</a>) for that particular instruction. Only
  32705. use the underscore prefix when it is essential to select the exact
  32706. opcode produced by the assembler. Using this feature unnecessarily
  32707. makes the code less efficient by disabling assembler optimization and
  32708. less flexible by disabling relaxation.
  32709. </p>
  32710. <p>Note that this special handling of underscore prefixes only applies to
  32711. Xtensa opcodes, not to either built-in macros or user-defined macros.
  32712. When an underscore prefix is used with a macro (e.g., <code>_MOV</code>), it
  32713. refers to a different macro. The assembler generally provides built-in
  32714. macros both with and without the underscore prefix, where the underscore
  32715. versions behave as if the underscore carries through to the instructions
  32716. in the macros. For example, <code>_MOV</code> may expand to <code>_MOV.N</code>.
  32717. </p>
  32718. <p>The underscore prefix only applies to individual instructions, not to
  32719. series of instructions. For example, if a series of instructions have
  32720. underscore prefixes, the assembler will not transform the individual
  32721. instructions, but it may insert other instructions between them (e.g.,
  32722. to align a <code>LOOP</code> instruction). To prevent the assembler from
  32723. modifying a series of instructions as a whole, use the
  32724. <code>no-transform</code> directive. See <a href="#Transform-Directive">transform</a>.
  32725. </p>
  32726. <hr>
  32727. <span id="Xtensa-Registers"></span><div class="header">
  32728. <p>
  32729. Previous: <a href="#Xtensa-Opcodes" accesskey="p" rel="prev">Xtensa Opcodes</a>, Up: <a href="#Xtensa-Syntax" accesskey="u" rel="up">Xtensa Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32730. </div>
  32731. <span id="Register-Names-20"></span><h4 class="subsubsection">9.56.2.2 Register Names</h4>
  32732. <span id="index-Xtensa-register-names"></span>
  32733. <span id="index-register-names_002c-Xtensa"></span>
  32734. <span id="index-sp-register"></span>
  32735. <p>The assembly syntax for a register file entry is the &ldquo;short&rdquo; name for
  32736. a TIE register file followed by the index into that register file. For
  32737. example, the general-purpose <code>AR</code> register file has a short name of
  32738. <code>a</code>, so these registers are named <code>a0</code>&hellip;<code>a15</code>.
  32739. As a special feature, <code>sp</code> is also supported as a synonym for
  32740. <code>a1</code>. Additional registers may be added by processor configuration
  32741. options and by designer-defined TIE extensions. An initial &lsquo;<samp>$</samp>&rsquo;
  32742. character is optional in all register names.
  32743. </p>
  32744. <hr>
  32745. <span id="Xtensa-Optimizations"></span><div class="header">
  32746. <p>
  32747. Next: <a href="#Xtensa-Relaxation" accesskey="n" rel="next">Xtensa Relaxation</a>, Previous: <a href="#Xtensa-Syntax" accesskey="p" rel="prev">Xtensa Syntax</a>, Up: <a href="#Xtensa_002dDependent" accesskey="u" rel="up">Xtensa-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32748. </div>
  32749. <span id="Xtensa-Optimizations-1"></span><h4 class="subsection">9.56.3 Xtensa Optimizations</h4>
  32750. <span id="index-optimizations"></span>
  32751. <p>The optimizations currently supported by <code>as</code> are
  32752. generation of density instructions where appropriate and automatic
  32753. branch target alignment.
  32754. </p>
  32755. <table class="menu" border="0" cellspacing="0">
  32756. <tr><td align="left" valign="top">&bull; <a href="#Density-Instructions" accesskey="1">Density Instructions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using Density Instructions.
  32757. </td></tr>
  32758. <tr><td align="left" valign="top">&bull; <a href="#Xtensa-Automatic-Alignment" accesskey="2">Xtensa Automatic Alignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Automatic Instruction Alignment.
  32759. </td></tr>
  32760. </table>
  32761. <hr>
  32762. <span id="Density-Instructions"></span><div class="header">
  32763. <p>
  32764. Next: <a href="#Xtensa-Automatic-Alignment" accesskey="n" rel="next">Xtensa Automatic Alignment</a>, Up: <a href="#Xtensa-Optimizations" accesskey="u" rel="up">Xtensa Optimizations</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32765. </div>
  32766. <span id="Using-Density-Instructions"></span><h4 class="subsubsection">9.56.3.1 Using Density Instructions</h4>
  32767. <span id="index-density-instructions"></span>
  32768. <p>The Xtensa instruction set has a code density option that provides
  32769. 16-bit versions of some of the most commonly used opcodes. Use of these
  32770. opcodes can significantly reduce code size. When possible, the
  32771. assembler automatically translates instructions from the core
  32772. Xtensa instruction set into equivalent instructions from the Xtensa code
  32773. density option. This translation can be disabled by using underscore
  32774. prefixes (see <a href="#Xtensa-Opcodes">Opcode Names</a>), by using the
  32775. &lsquo;<samp>--no-transform</samp>&rsquo; command-line option (see <a href="#Xtensa-Options">Command
  32776. Line Options</a>), or by using the <code>no-transform</code> directive
  32777. (see <a href="#Transform-Directive">transform</a>).
  32778. </p>
  32779. <p>It is a good idea <em>not</em> to use the density instructions directly.
  32780. The assembler will automatically select dense instructions where
  32781. possible. If you later need to use an Xtensa processor without the code
  32782. density option, the same assembly code will then work without modification.
  32783. </p>
  32784. <hr>
  32785. <span id="Xtensa-Automatic-Alignment"></span><div class="header">
  32786. <p>
  32787. Previous: <a href="#Density-Instructions" accesskey="p" rel="prev">Density Instructions</a>, Up: <a href="#Xtensa-Optimizations" accesskey="u" rel="up">Xtensa Optimizations</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32788. </div>
  32789. <span id="Automatic-Instruction-Alignment"></span><h4 class="subsubsection">9.56.3.2 Automatic Instruction Alignment</h4>
  32790. <span id="index-alignment-of-LOOP-instructions"></span>
  32791. <span id="index-alignment-of-branch-targets"></span>
  32792. <span id="index-LOOP-instructions_002c-alignment"></span>
  32793. <span id="index-branch-target-alignment"></span>
  32794. <p>The Xtensa assembler will automatically align certain instructions, both
  32795. to optimize performance and to satisfy architectural requirements.
  32796. </p>
  32797. <p>As an optimization to improve performance, the assembler attempts to
  32798. align branch targets so they do not cross instruction fetch boundaries.
  32799. (Xtensa processors can be configured with either 32-bit or 64-bit
  32800. instruction fetch widths.) An
  32801. instruction immediately following a call is treated as a branch target
  32802. in this context, because it will be the target of a return from the
  32803. call. This alignment has the potential to reduce branch penalties at
  32804. some expense in code size.
  32805. This optimization is enabled by default. You can disable it with the
  32806. &lsquo;<samp>--no-target-align</samp>&rsquo; command-line option (see <a href="#Xtensa-Options">Command-line Options</a>).
  32807. </p>
  32808. <p>The target alignment optimization is done without adding instructions
  32809. that could increase the execution time of the program. If there are
  32810. density instructions in the code preceding a target, the assembler can
  32811. change the target alignment by widening some of those instructions to
  32812. the equivalent 24-bit instructions. Extra bytes of padding can be
  32813. inserted immediately following unconditional jump and return
  32814. instructions.
  32815. This approach is usually successful in aligning many, but not all,
  32816. branch targets.
  32817. </p>
  32818. <p>The <code>LOOP</code> family of instructions must be aligned such that the
  32819. first instruction in the loop body does not cross an instruction fetch
  32820. boundary (e.g., with a 32-bit fetch width, a <code>LOOP</code> instruction
  32821. must be on either a 1 or 2 mod 4 byte boundary). The assembler knows
  32822. about this restriction and inserts the minimal number of 2 or 3 byte
  32823. no-op instructions to satisfy it. When no-op instructions are added,
  32824. any label immediately preceding the original loop will be moved in order
  32825. to refer to the loop instruction, not the newly generated no-op
  32826. instruction. To preserve binary compatibility across processors with
  32827. different fetch widths, the assembler conservatively assumes a 32-bit
  32828. fetch width when aligning <code>LOOP</code> instructions (except if the first
  32829. instruction in the loop is a 64-bit instruction).
  32830. </p>
  32831. <p>Previous versions of the assembler automatically aligned <code>ENTRY</code>
  32832. instructions to 4-byte boundaries, but that alignment is now the
  32833. programmer&rsquo;s responsibility.
  32834. </p>
  32835. <hr>
  32836. <span id="Xtensa-Relaxation"></span><div class="header">
  32837. <p>
  32838. Next: <a href="#Xtensa-Directives" accesskey="n" rel="next">Xtensa Directives</a>, Previous: <a href="#Xtensa-Optimizations" accesskey="p" rel="prev">Xtensa Optimizations</a>, Up: <a href="#Xtensa_002dDependent" accesskey="u" rel="up">Xtensa-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32839. </div>
  32840. <span id="Xtensa-Relaxation-1"></span><h4 class="subsection">9.56.4 Xtensa Relaxation</h4>
  32841. <span id="index-relaxation"></span>
  32842. <p>When an instruction operand is outside the range allowed for that
  32843. particular instruction field, <code>as</code> can transform the code
  32844. to use a functionally-equivalent instruction or sequence of
  32845. instructions. This process is known as <em>relaxation</em>. This is
  32846. typically done for branch instructions because the distance of the
  32847. branch targets is not known until assembly-time. The Xtensa assembler
  32848. offers branch relaxation and also extends this concept to function
  32849. calls, <code>MOVI</code> instructions and other instructions with immediate
  32850. fields.
  32851. </p>
  32852. <table class="menu" border="0" cellspacing="0">
  32853. <tr><td align="left" valign="top">&bull; <a href="#Xtensa-Branch-Relaxation" accesskey="1">Xtensa Branch Relaxation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relaxation of Branches.
  32854. </td></tr>
  32855. <tr><td align="left" valign="top">&bull; <a href="#Xtensa-Call-Relaxation" accesskey="2">Xtensa Call Relaxation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relaxation of Function Calls.
  32856. </td></tr>
  32857. <tr><td align="left" valign="top">&bull; <a href="#Xtensa-Jump-Relaxation" accesskey="3">Xtensa Jump Relaxation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relaxation of Jumps.
  32858. </td></tr>
  32859. <tr><td align="left" valign="top">&bull; <a href="#Xtensa-Immediate-Relaxation" accesskey="4">Xtensa Immediate Relaxation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Relaxation of other Immediate Fields.
  32860. </td></tr>
  32861. </table>
  32862. <hr>
  32863. <span id="Xtensa-Branch-Relaxation"></span><div class="header">
  32864. <p>
  32865. Next: <a href="#Xtensa-Call-Relaxation" accesskey="n" rel="next">Xtensa Call Relaxation</a>, Up: <a href="#Xtensa-Relaxation" accesskey="u" rel="up">Xtensa Relaxation</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32866. </div>
  32867. <span id="Conditional-Branch-Relaxation"></span><h4 class="subsubsection">9.56.4.1 Conditional Branch Relaxation</h4>
  32868. <span id="index-relaxation-of-branch-instructions"></span>
  32869. <span id="index-branch-instructions_002c-relaxation"></span>
  32870. <p>When the target of a branch is too far away from the branch itself,
  32871. i.e., when the offset from the branch to the target is too large to fit
  32872. in the immediate field of the branch instruction, it may be necessary to
  32873. replace the branch with a branch around a jump. For example,
  32874. </p>
  32875. <div class="example">
  32876. <pre class="example"> beqz a2, L
  32877. </pre></div>
  32878. <p>may result in:
  32879. </p>
  32880. <div class="example">
  32881. <pre class="example"> bnez.n a2, M
  32882. j L
  32883. M:
  32884. </pre></div>
  32885. <p>(The <code>BNEZ.N</code> instruction would be used in this example only if the
  32886. density option is available. Otherwise, <code>BNEZ</code> would be used.)
  32887. </p>
  32888. <p>This relaxation works well because the unconditional jump instruction
  32889. has a much larger offset range than the various conditional branches.
  32890. However, an error will occur if a branch target is beyond the range of a
  32891. jump instruction. <code>as</code> cannot relax unconditional jumps.
  32892. Similarly, an error will occur if the original input contains an
  32893. unconditional jump to a target that is out of range.
  32894. </p>
  32895. <p>Branch relaxation is enabled by default. It can be disabled by using
  32896. underscore prefixes (see <a href="#Xtensa-Opcodes">Opcode Names</a>), the
  32897. &lsquo;<samp>--no-transform</samp>&rsquo; command-line option (see <a href="#Xtensa-Options">Command-line Options</a>), or the <code>no-transform</code> directive
  32898. (see <a href="#Transform-Directive">transform</a>).
  32899. </p>
  32900. <hr>
  32901. <span id="Xtensa-Call-Relaxation"></span><div class="header">
  32902. <p>
  32903. Next: <a href="#Xtensa-Jump-Relaxation" accesskey="n" rel="next">Xtensa Jump Relaxation</a>, Previous: <a href="#Xtensa-Branch-Relaxation" accesskey="p" rel="prev">Xtensa Branch Relaxation</a>, Up: <a href="#Xtensa-Relaxation" accesskey="u" rel="up">Xtensa Relaxation</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32904. </div>
  32905. <span id="Function-Call-Relaxation"></span><h4 class="subsubsection">9.56.4.2 Function Call Relaxation</h4>
  32906. <span id="index-relaxation-of-call-instructions"></span>
  32907. <span id="index-call-instructions_002c-relaxation"></span>
  32908. <p>Function calls may require relaxation because the Xtensa immediate call
  32909. instructions (<code>CALL0</code>, <code>CALL4</code>, <code>CALL8</code> and
  32910. <code>CALL12</code>) provide a PC-relative offset of only 512 Kbytes in either
  32911. direction. For larger programs, it may be necessary to use indirect
  32912. calls (<code>CALLX0</code>, <code>CALLX4</code>, <code>CALLX8</code> and <code>CALLX12</code>)
  32913. where the target address is specified in a register. The Xtensa
  32914. assembler can automatically relax immediate call instructions into
  32915. indirect call instructions. This relaxation is done by loading the
  32916. address of the called function into the callee&rsquo;s return address register
  32917. and then using a <code>CALLX</code> instruction. So, for example:
  32918. </p>
  32919. <div class="example">
  32920. <pre class="example"> call8 func
  32921. </pre></div>
  32922. <p>might be relaxed to:
  32923. </p>
  32924. <div class="example">
  32925. <pre class="example"> .literal .L1, func
  32926. l32r a8, .L1
  32927. callx8 a8
  32928. </pre></div>
  32929. <p>Because the addresses of targets of function calls are not generally
  32930. known until link-time, the assembler must assume the worst and relax all
  32931. the calls to functions in other source files, not just those that really
  32932. will be out of range. The linker can recognize calls that were
  32933. unnecessarily relaxed, and it will remove the overhead introduced by the
  32934. assembler for those cases where direct calls are sufficient.
  32935. </p>
  32936. <p>Call relaxation is disabled by default because it can have a negative
  32937. effect on both code size and performance, although the linker can
  32938. usually eliminate the unnecessary overhead. If a program is too large
  32939. and some of the calls are out of range, function call relaxation can be
  32940. enabled using the &lsquo;<samp>--longcalls</samp>&rsquo; command-line option or the
  32941. <code>longcalls</code> directive (see <a href="#Longcalls-Directive">longcalls</a>).
  32942. </p>
  32943. <hr>
  32944. <span id="Xtensa-Jump-Relaxation"></span><div class="header">
  32945. <p>
  32946. Next: <a href="#Xtensa-Immediate-Relaxation" accesskey="n" rel="next">Xtensa Immediate Relaxation</a>, Previous: <a href="#Xtensa-Call-Relaxation" accesskey="p" rel="prev">Xtensa Call Relaxation</a>, Up: <a href="#Xtensa-Relaxation" accesskey="u" rel="up">Xtensa Relaxation</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  32947. </div>
  32948. <span id="Jump-Relaxation"></span><h4 class="subsubsection">9.56.4.3 Jump Relaxation</h4>
  32949. <span id="index-relaxation-of-jump-instructions"></span>
  32950. <span id="index-jump-instructions_002c-relaxation"></span>
  32951. <p>Jump instruction may require relaxation because the Xtensa jump instruction
  32952. (<code>J</code>) provide a PC-relative offset of only 128 Kbytes in either
  32953. direction. One option is to use jump long (<code>J.L</code>) instruction, which
  32954. depending on jump distance may be assembled as jump (<code>J</code>) or indirect
  32955. jump (<code>JX</code>). However it needs a free register. When there&rsquo;s no spare
  32956. register it is possible to plant intermediate jump sites (trampolines)
  32957. between the jump instruction and its target. These sites may be located in
  32958. areas unreachable by normal code execution flow, in that case they only
  32959. contain intermediate jumps, or they may be inserted in the middle of code
  32960. block, in which case there&rsquo;s an additional jump from the beginning of the
  32961. trampoline to the instruction past its end. So, for example:
  32962. </p>
  32963. <div class="example">
  32964. <pre class="example"> j 1f
  32965. ...
  32966. retw
  32967. ...
  32968. mov a10, a2
  32969. call8 func
  32970. ...
  32971. 1:
  32972. ...
  32973. </pre></div>
  32974. <p>might be relaxed to:
  32975. </p>
  32976. <div class="example">
  32977. <pre class="example"> j .L0_TR_1
  32978. ...
  32979. retw
  32980. .L0_TR_1:
  32981. j 1f
  32982. ...
  32983. mov a10, a2
  32984. call8 func
  32985. ...
  32986. 1:
  32987. ...
  32988. </pre></div>
  32989. <p>or to:
  32990. </p>
  32991. <div class="example">
  32992. <pre class="example"> j .L0_TR_1
  32993. ...
  32994. retw
  32995. ...
  32996. mov a10, a2
  32997. j .L0_TR_0
  32998. .L0_TR_1:
  32999. j 1f
  33000. .L0_TR_0:
  33001. call8 func
  33002. ...
  33003. 1:
  33004. ...
  33005. </pre></div>
  33006. <p>The Xtensa assembler uses trampolines with jump around only when it cannot
  33007. find suitable unreachable trampoline. There may be multiple trampolines
  33008. between the jump instruction and its target.
  33009. </p>
  33010. <p>This relaxation does not apply to jumps to undefined symbols, assuming they
  33011. will reach their targets once resolved.
  33012. </p>
  33013. <p>Jump relaxation is enabled by default because it does not affect code size
  33014. or performance while the code itself is small. This relaxation may be
  33015. disabled completely with &lsquo;<samp>--no-trampolines</samp>&rsquo; or &lsquo;<samp>--no-transform</samp>&rsquo;
  33016. command-line options (see <a href="#Xtensa-Options">Command-line Options</a>).
  33017. </p>
  33018. <hr>
  33019. <span id="Xtensa-Immediate-Relaxation"></span><div class="header">
  33020. <p>
  33021. Previous: <a href="#Xtensa-Jump-Relaxation" accesskey="p" rel="prev">Xtensa Jump Relaxation</a>, Up: <a href="#Xtensa-Relaxation" accesskey="u" rel="up">Xtensa Relaxation</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33022. </div>
  33023. <span id="Other-Immediate-Field-Relaxation"></span><h4 class="subsubsection">9.56.4.4 Other Immediate Field Relaxation</h4>
  33024. <span id="index-immediate-fields_002c-relaxation"></span>
  33025. <span id="index-relaxation-of-immediate-fields"></span>
  33026. <p>The assembler normally performs the following other relaxations. They
  33027. can be disabled by using underscore prefixes (see <a href="#Xtensa-Opcodes">Opcode Names</a>), the &lsquo;<samp>--no-transform</samp>&rsquo; command-line option
  33028. (see <a href="#Xtensa-Options">Command-line Options</a>), or the
  33029. <code>no-transform</code> directive (see <a href="#Transform-Directive">transform</a>).
  33030. </p>
  33031. <span id="index-MOVI-instructions_002c-relaxation"></span>
  33032. <span id="index-relaxation-of-MOVI-instructions"></span>
  33033. <p>The <code>MOVI</code> machine instruction can only materialize values in the
  33034. range from -2048 to 2047. Values outside this range are best
  33035. materialized with <code>L32R</code> instructions. Thus:
  33036. </p>
  33037. <div class="example">
  33038. <pre class="example"> movi a0, 100000
  33039. </pre></div>
  33040. <p>is assembled into the following machine code:
  33041. </p>
  33042. <div class="example">
  33043. <pre class="example"> .literal .L1, 100000
  33044. l32r a0, .L1
  33045. </pre></div>
  33046. <span id="index-L8UI-instructions_002c-relaxation"></span>
  33047. <span id="index-L16SI-instructions_002c-relaxation"></span>
  33048. <span id="index-L16UI-instructions_002c-relaxation"></span>
  33049. <span id="index-L32I-instructions_002c-relaxation"></span>
  33050. <span id="index-relaxation-of-L8UI-instructions"></span>
  33051. <span id="index-relaxation-of-L16SI-instructions"></span>
  33052. <span id="index-relaxation-of-L16UI-instructions"></span>
  33053. <span id="index-relaxation-of-L32I-instructions"></span>
  33054. <p>The <code>L8UI</code> machine instruction can only be used with immediate
  33055. offsets in the range from 0 to 255. The <code>L16SI</code> and <code>L16UI</code>
  33056. machine instructions can only be used with offsets from 0 to 510. The
  33057. <code>L32I</code> machine instruction can only be used with offsets from 0 to
  33058. 1020. A load offset outside these ranges can be materialized with
  33059. an <code>L32R</code> instruction if the destination register of the load
  33060. is different than the source address register. For example:
  33061. </p>
  33062. <div class="example">
  33063. <pre class="example"> l32i a1, a0, 2040
  33064. </pre></div>
  33065. <p>is translated to:
  33066. </p>
  33067. <div class="example">
  33068. <pre class="example"> .literal .L1, 2040
  33069. l32r a1, .L1
  33070. </pre><pre class="example"> add a1, a0, a1
  33071. l32i a1, a1, 0
  33072. </pre></div>
  33073. <p>If the load destination and source address register are the same, an
  33074. out-of-range offset causes an error.
  33075. </p>
  33076. <span id="index-ADDI-instructions_002c-relaxation"></span>
  33077. <span id="index-relaxation-of-ADDI-instructions"></span>
  33078. <p>The Xtensa <code>ADDI</code> instruction only allows immediate operands in the
  33079. range from -128 to 127. There are a number of alternate instruction
  33080. sequences for the <code>ADDI</code> operation. First, if the
  33081. immediate is 0, the <code>ADDI</code> will be turned into a <code>MOV.N</code>
  33082. instruction (or the equivalent <code>OR</code> instruction if the code density
  33083. option is not available). If the <code>ADDI</code> immediate is outside of
  33084. the range -128 to 127, but inside the range -32896 to 32639, an
  33085. <code>ADDMI</code> instruction or <code>ADDMI</code>/<code>ADDI</code> sequence will be
  33086. used. Finally, if the immediate is outside of this range and a free
  33087. register is available, an <code>L32R</code>/<code>ADD</code> sequence will be used
  33088. with a literal allocated from the literal pool.
  33089. </p>
  33090. <p>For example:
  33091. </p>
  33092. <div class="example">
  33093. <pre class="example"> addi a5, a6, 0
  33094. addi a5, a6, 512
  33095. </pre><pre class="example"> addi a5, a6, 513
  33096. addi a5, a6, 50000
  33097. </pre></div>
  33098. <p>is assembled into the following:
  33099. </p>
  33100. <div class="example">
  33101. <pre class="example"> .literal .L1, 50000
  33102. mov.n a5, a6
  33103. </pre><pre class="example"> addmi a5, a6, 0x200
  33104. addmi a5, a6, 0x200
  33105. addi a5, a5, 1
  33106. </pre><pre class="example"> l32r a5, .L1
  33107. add a5, a6, a5
  33108. </pre></div>
  33109. <hr>
  33110. <span id="Xtensa-Directives"></span><div class="header">
  33111. <p>
  33112. Previous: <a href="#Xtensa-Relaxation" accesskey="p" rel="prev">Xtensa Relaxation</a>, Up: <a href="#Xtensa_002dDependent" accesskey="u" rel="up">Xtensa-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33113. </div>
  33114. <span id="Directives-3"></span><h4 class="subsection">9.56.5 Directives</h4>
  33115. <span id="index-Xtensa-directives"></span>
  33116. <span id="index-directives_002c-Xtensa"></span>
  33117. <p>The Xtensa assembler supports a region-based directive syntax:
  33118. </p>
  33119. <div class="example">
  33120. <pre class="example"> .begin <var>directive</var> [<var>options</var>]
  33121. &hellip;
  33122. .end <var>directive</var>
  33123. </pre></div>
  33124. <p>All the Xtensa-specific directives that apply to a region of code use
  33125. this syntax.
  33126. </p>
  33127. <p>The directive applies to code between the <code>.begin</code> and the
  33128. <code>.end</code>. The state of the option after the <code>.end</code> reverts to
  33129. what it was before the <code>.begin</code>.
  33130. A nested <code>.begin</code>/<code>.end</code> region can further
  33131. change the state of the directive without having to be aware of its
  33132. outer state. For example, consider:
  33133. </p>
  33134. <div class="example">
  33135. <pre class="example"> .begin no-transform
  33136. L: add a0, a1, a2
  33137. </pre><pre class="example"> .begin transform
  33138. M: add a0, a1, a2
  33139. .end transform
  33140. </pre><pre class="example">N: add a0, a1, a2
  33141. .end no-transform
  33142. </pre></div>
  33143. <p>The <code>ADD</code> opcodes at <code>L</code> and <code>N</code> in the outer
  33144. <code>no-transform</code> region both result in <code>ADD</code> machine instructions,
  33145. but the assembler selects an <code>ADD.N</code> instruction for the
  33146. <code>ADD</code> at <code>M</code> in the inner <code>transform</code> region.
  33147. </p>
  33148. <p>The advantage of this style is that it works well inside macros which can
  33149. preserve the context of their callers.
  33150. </p>
  33151. <p>The following directives are available:
  33152. </p><table class="menu" border="0" cellspacing="0">
  33153. <tr><td align="left" valign="top">&bull; <a href="#Schedule-Directive" accesskey="1">Schedule Directive</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Enable instruction scheduling.
  33154. </td></tr>
  33155. <tr><td align="left" valign="top">&bull; <a href="#Longcalls-Directive" accesskey="2">Longcalls Directive</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Use Indirect Calls for Greater Range.
  33156. </td></tr>
  33157. <tr><td align="left" valign="top">&bull; <a href="#Transform-Directive" accesskey="3">Transform Directive</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Disable All Assembler Transformations.
  33158. </td></tr>
  33159. <tr><td align="left" valign="top">&bull; <a href="#Literal-Directive" accesskey="4">Literal Directive</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Intermix Literals with Instructions.
  33160. </td></tr>
  33161. <tr><td align="left" valign="top">&bull; <a href="#Literal-Position-Directive" accesskey="5">Literal Position Directive</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specify Inline Literal Pool Locations.
  33162. </td></tr>
  33163. <tr><td align="left" valign="top">&bull; <a href="#Literal-Prefix-Directive" accesskey="6">Literal Prefix Directive</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specify Literal Section Name Prefix.
  33164. </td></tr>
  33165. <tr><td align="left" valign="top">&bull; <a href="#Absolute-Literals-Directive" accesskey="7">Absolute Literals Directive</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Control PC-Relative vs. Absolute Literals.
  33166. </td></tr>
  33167. </table>
  33168. <hr>
  33169. <span id="Schedule-Directive"></span><div class="header">
  33170. <p>
  33171. Next: <a href="#Longcalls-Directive" accesskey="n" rel="next">Longcalls Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33172. </div>
  33173. <span id="schedule"></span><h4 class="subsubsection">9.56.5.1 schedule</h4>
  33174. <span id="index-schedule-directive"></span>
  33175. <span id="index-no_002dschedule-directive"></span>
  33176. <p>The <code>schedule</code> directive is recognized only for compatibility with
  33177. Tensilica&rsquo;s assembler.
  33178. </p>
  33179. <div class="example">
  33180. <pre class="example"> .begin [no-]schedule
  33181. .end [no-]schedule
  33182. </pre></div>
  33183. <p>This directive is ignored and has no effect on <code>as</code>.
  33184. </p>
  33185. <hr>
  33186. <span id="Longcalls-Directive"></span><div class="header">
  33187. <p>
  33188. Next: <a href="#Transform-Directive" accesskey="n" rel="next">Transform Directive</a>, Previous: <a href="#Schedule-Directive" accesskey="p" rel="prev">Schedule Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33189. </div>
  33190. <span id="longcalls"></span><h4 class="subsubsection">9.56.5.2 longcalls</h4>
  33191. <span id="index-longcalls-directive"></span>
  33192. <span id="index-no_002dlongcalls-directive"></span>
  33193. <p>The <code>longcalls</code> directive enables or disables function call
  33194. relaxation. See <a href="#Xtensa-Call-Relaxation">Function Call Relaxation</a>.
  33195. </p>
  33196. <div class="example">
  33197. <pre class="example"> .begin [no-]longcalls
  33198. .end [no-]longcalls
  33199. </pre></div>
  33200. <p>Call relaxation is disabled by default unless the &lsquo;<samp>--longcalls</samp>&rsquo;
  33201. command-line option is specified. The <code>longcalls</code> directive
  33202. overrides the default determined by the command-line options.
  33203. </p>
  33204. <hr>
  33205. <span id="Transform-Directive"></span><div class="header">
  33206. <p>
  33207. Next: <a href="#Literal-Directive" accesskey="n" rel="next">Literal Directive</a>, Previous: <a href="#Longcalls-Directive" accesskey="p" rel="prev">Longcalls Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33208. </div>
  33209. <span id="transform"></span><h4 class="subsubsection">9.56.5.3 transform</h4>
  33210. <span id="index-transform-directive"></span>
  33211. <span id="index-no_002dtransform-directive"></span>
  33212. <p>This directive enables or disables all assembler transformation,
  33213. including relaxation (see <a href="#Xtensa-Relaxation">Xtensa Relaxation</a>) and
  33214. optimization (see <a href="#Xtensa-Optimizations">Xtensa Optimizations</a>).
  33215. </p>
  33216. <div class="example">
  33217. <pre class="example"> .begin [no-]transform
  33218. .end [no-]transform
  33219. </pre></div>
  33220. <p>Transformations are enabled by default unless the &lsquo;<samp>--no-transform</samp>&rsquo;
  33221. option is used. The <code>transform</code> directive overrides the default
  33222. determined by the command-line options. An underscore opcode prefix,
  33223. disabling transformation of that opcode, always takes precedence over
  33224. both directives and command-line flags.
  33225. </p>
  33226. <hr>
  33227. <span id="Literal-Directive"></span><div class="header">
  33228. <p>
  33229. Next: <a href="#Literal-Position-Directive" accesskey="n" rel="next">Literal Position Directive</a>, Previous: <a href="#Transform-Directive" accesskey="p" rel="prev">Transform Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33230. </div>
  33231. <span id="literal"></span><h4 class="subsubsection">9.56.5.4 literal</h4>
  33232. <span id="index-literal-directive"></span>
  33233. <p>The <code>.literal</code> directive is used to define literal pool data, i.e.,
  33234. read-only 32-bit data accessed via <code>L32R</code> instructions.
  33235. </p>
  33236. <div class="example">
  33237. <pre class="example"> .literal <var>label</var>, <var>value</var>[, <var>value</var>&hellip;]
  33238. </pre></div>
  33239. <p>This directive is similar to the standard <code>.word</code> directive, except
  33240. that the actual location of the literal data is determined by the
  33241. assembler and linker, not by the position of the <code>.literal</code>
  33242. directive. Using this directive gives the assembler freedom to locate
  33243. the literal data in the most appropriate place and possibly to combine
  33244. identical literals. For example, the code:
  33245. </p>
  33246. <div class="example">
  33247. <pre class="example"> entry sp, 40
  33248. .literal .L1, sym
  33249. l32r a4, .L1
  33250. </pre></div>
  33251. <p>can be used to load a pointer to the symbol <code>sym</code> into register
  33252. <code>a4</code>. The value of <code>sym</code> will not be placed between the
  33253. <code>ENTRY</code> and <code>L32R</code> instructions; instead, the assembler puts
  33254. the data in a literal pool.
  33255. </p>
  33256. <p>Literal pools are placed by default in separate literal sections;
  33257. however, when using the &lsquo;<samp>--text-section-literals</samp>&rsquo;
  33258. option (see <a href="#Xtensa-Options">Command-line Options</a>), the literal
  33259. pools for PC-relative mode <code>L32R</code> instructions
  33260. are placed in the current section.<a id="DOCF3" href="#FOOT3"><sup>3</sup></a>
  33261. These text section literal
  33262. pools are created automatically before <code>ENTRY</code> instructions and
  33263. manually after &lsquo;<samp>.literal_position</samp>&rsquo; directives (see <a href="#Literal-Position-Directive">literal_position</a>). If there are no preceding
  33264. <code>ENTRY</code> instructions, explicit <code>.literal_position</code> directives
  33265. must be used to place the text section literal pools; otherwise,
  33266. <code>as</code> will report an error.
  33267. </p>
  33268. <p>When literals are placed in separate sections, the literal section names
  33269. are derived from the names of the sections where the literals are
  33270. defined. The base literal section names are <code>.literal</code> for
  33271. PC-relative mode <code>L32R</code> instructions and <code>.lit4</code> for absolute
  33272. mode <code>L32R</code> instructions (see <a href="#Absolute-Literals-Directive">absolute-literals</a>). These base names are used for literals defined in
  33273. the default <code>.text</code> section. For literals defined in other
  33274. sections or within the scope of a <code>literal_prefix</code> directive
  33275. (see <a href="#Literal-Prefix-Directive">literal_prefix</a>), the following rules
  33276. determine the literal section name:
  33277. </p>
  33278. <ol>
  33279. <li> If the current section is a member of a section group, the literal
  33280. section name includes the group name as a suffix to the base
  33281. <code>.literal</code> or <code>.lit4</code> name, with a period to separate the base
  33282. name and group name. The literal section is also made a member of the
  33283. group.
  33284. </li><li> If the current section name (or <code>literal_prefix</code> value) begins with
  33285. &ldquo;<code>.gnu.linkonce.<var>kind</var>.</code>&rdquo;, the literal section name is formed
  33286. by replacing &ldquo;<code>.<var>kind</var></code>&rdquo; with the base <code>.literal</code> or
  33287. <code>.lit4</code> name. For example, for literals defined in a section named
  33288. <code>.gnu.linkonce.t.func</code>, the literal section will be
  33289. <code>.gnu.linkonce.literal.func</code> or <code>.gnu.linkonce.lit4.func</code>.
  33290. </li><li> If the current section name (or <code>literal_prefix</code> value) ends with
  33291. <code>.text</code>, the literal section name is formed by replacing that
  33292. suffix with the base <code>.literal</code> or <code>.lit4</code> name. For example,
  33293. for literals defined in a section named <code>.iram0.text</code>, the literal
  33294. section will be <code>.iram0.literal</code> or <code>.iram0.lit4</code>.
  33295. </li><li> If none of the preceding conditions apply, the literal section name is
  33296. formed by adding the base <code>.literal</code> or <code>.lit4</code> name as a
  33297. suffix to the current section name (or <code>literal_prefix</code> value).
  33298. </li></ol>
  33299. <hr>
  33300. <span id="Literal-Position-Directive"></span><div class="header">
  33301. <p>
  33302. Next: <a href="#Literal-Prefix-Directive" accesskey="n" rel="next">Literal Prefix Directive</a>, Previous: <a href="#Literal-Directive" accesskey="p" rel="prev">Literal Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33303. </div>
  33304. <span id="literal_005fposition"></span><h4 class="subsubsection">9.56.5.5 literal_position</h4>
  33305. <span id="index-literal_005fposition-directive"></span>
  33306. <p>When using &lsquo;<samp>--text-section-literals</samp>&rsquo; to place literals inline
  33307. in the section being assembled, the <code>.literal_position</code> directive
  33308. can be used to mark a potential location for a literal pool.
  33309. </p>
  33310. <div class="example">
  33311. <pre class="example"> .literal_position
  33312. </pre></div>
  33313. <p>The <code>.literal_position</code> directive is ignored when the
  33314. &lsquo;<samp>--text-section-literals</samp>&rsquo; option is not used or when
  33315. <code>L32R</code> instructions use the absolute addressing mode.
  33316. </p>
  33317. <p>The assembler will automatically place text section literal pools
  33318. before <code>ENTRY</code> instructions, so the <code>.literal_position</code>
  33319. directive is only needed to specify some other location for a literal
  33320. pool. You may need to add an explicit jump instruction to skip over an
  33321. inline literal pool.
  33322. </p>
  33323. <p>For example, an interrupt vector does not begin with an <code>ENTRY</code>
  33324. instruction so the assembler will be unable to automatically find a good
  33325. place to put a literal pool. Moreover, the code for the interrupt
  33326. vector must be at a specific starting address, so the literal pool
  33327. cannot come before the start of the code. The literal pool for the
  33328. vector must be explicitly positioned in the middle of the vector (before
  33329. any uses of the literals, due to the negative offsets used by
  33330. PC-relative <code>L32R</code> instructions). The <code>.literal_position</code>
  33331. directive can be used to do this. In the following code, the literal
  33332. for &lsquo;<samp>M</samp>&rsquo; will automatically be aligned correctly and is placed after
  33333. the unconditional jump.
  33334. </p>
  33335. <div class="example">
  33336. <pre class="example"> .global M
  33337. code_start:
  33338. </pre><pre class="example"> j continue
  33339. .literal_position
  33340. .align 4
  33341. </pre><pre class="example">continue:
  33342. movi a4, M
  33343. </pre></div>
  33344. <hr>
  33345. <span id="Literal-Prefix-Directive"></span><div class="header">
  33346. <p>
  33347. Next: <a href="#Absolute-Literals-Directive" accesskey="n" rel="next">Absolute Literals Directive</a>, Previous: <a href="#Literal-Position-Directive" accesskey="p" rel="prev">Literal Position Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33348. </div>
  33349. <span id="literal_005fprefix"></span><h4 class="subsubsection">9.56.5.6 literal_prefix</h4>
  33350. <span id="index-literal_005fprefix-directive"></span>
  33351. <p>The <code>literal_prefix</code> directive allows you to override the default
  33352. literal section names, which are derived from the names of the sections
  33353. where the literals are defined.
  33354. </p>
  33355. <div class="example">
  33356. <pre class="example"> .begin literal_prefix [<var>name</var>]
  33357. .end literal_prefix
  33358. </pre></div>
  33359. <p>For literals defined within the delimited region, the literal section
  33360. names are derived from the <var>name</var> argument instead of the name of
  33361. the current section. The rules used to derive the literal section names
  33362. do not change. See <a href="#Literal-Directive">literal</a>. If the <var>name</var>
  33363. argument is omitted, the literal sections revert to the defaults. This
  33364. directive has no effect when using the
  33365. &lsquo;<samp>--text-section-literals</samp>&rsquo; option (see <a href="#Xtensa-Options">Command-line Options</a>).
  33366. </p>
  33367. <hr>
  33368. <span id="Absolute-Literals-Directive"></span><div class="header">
  33369. <p>
  33370. Previous: <a href="#Literal-Prefix-Directive" accesskey="p" rel="prev">Literal Prefix Directive</a>, Up: <a href="#Xtensa-Directives" accesskey="u" rel="up">Xtensa Directives</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33371. </div>
  33372. <span id="absolute_002dliterals"></span><h4 class="subsubsection">9.56.5.7 absolute-literals</h4>
  33373. <span id="index-absolute_002dliterals-directive"></span>
  33374. <span id="index-no_002dabsolute_002dliterals-directive"></span>
  33375. <p>The <code>absolute-literals</code> and <code>no-absolute-literals</code>
  33376. directives control the absolute vs. PC-relative mode for <code>L32R</code>
  33377. instructions. These are relevant only for Xtensa configurations that
  33378. include the absolute addressing option for <code>L32R</code> instructions.
  33379. </p>
  33380. <div class="example">
  33381. <pre class="example"> .begin [no-]absolute-literals
  33382. .end [no-]absolute-literals
  33383. </pre></div>
  33384. <p>These directives do not change the <code>L32R</code> mode&mdash;they only cause
  33385. the assembler to emit the appropriate kind of relocation for <code>L32R</code>
  33386. instructions and to place the literal values in the appropriate section.
  33387. To change the <code>L32R</code> mode, the program must write the
  33388. <code>LITBASE</code> special register. It is the programmer&rsquo;s responsibility
  33389. to keep track of the mode and indicate to the assembler which mode is
  33390. used in each region of code.
  33391. </p>
  33392. <p>If the Xtensa configuration includes the absolute <code>L32R</code> addressing
  33393. option, the default is to assume absolute <code>L32R</code> addressing unless
  33394. the &lsquo;<samp>--no-absolute-literals</samp>&rsquo; command-line option is specified.
  33395. Otherwise, the default is to assume PC-relative <code>L32R</code> addressing.
  33396. The <code>absolute-literals</code> directive can then be used to override
  33397. the default determined by the command-line options.
  33398. </p>
  33399. <hr>
  33400. <span id="Z80_002dDependent"></span><div class="header">
  33401. <p>
  33402. Next: <a href="#Z8000_002dDependent" accesskey="n" rel="next">Z8000-Dependent</a>, Previous: <a href="#Xtensa_002dDependent" accesskey="p" rel="prev">Xtensa-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33403. </div>
  33404. <span id="Z80-Dependent-Features"></span><h3 class="section">9.57 Z80 Dependent Features</h3>
  33405. <span id="index-Z80-support"></span>
  33406. <table class="menu" border="0" cellspacing="0">
  33407. <tr><td align="left" valign="top">&bull; <a href="#Z80-Options" accesskey="1">Z80 Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options
  33408. </td></tr>
  33409. <tr><td align="left" valign="top">&bull; <a href="#Z80-Syntax" accesskey="2">Z80 Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax
  33410. </td></tr>
  33411. <tr><td align="left" valign="top">&bull; <a href="#Z80-Floating-Point" accesskey="3">Z80 Floating Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Floating Point
  33412. </td></tr>
  33413. <tr><td align="left" valign="top">&bull; <a href="#Z80-Directives" accesskey="4">Z80 Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Z80 Machine Directives
  33414. </td></tr>
  33415. <tr><td align="left" valign="top">&bull; <a href="#Z80-Opcodes" accesskey="5">Z80 Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  33416. </td></tr>
  33417. </table>
  33418. <hr>
  33419. <span id="Z80-Options"></span><div class="header">
  33420. <p>
  33421. Next: <a href="#Z80-Syntax" accesskey="n" rel="next">Z80 Syntax</a>, Up: <a href="#Z80_002dDependent" accesskey="u" rel="up">Z80-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33422. </div>
  33423. <span id="Command_002dline-Options-3"></span><h4 class="subsection">9.57.1 Command-line Options</h4>
  33424. <span id="index-Z80-options"></span>
  33425. <span id="index-options-for-Z80"></span>
  33426. <dl compact="compact">
  33427. <dd>
  33428. <span id="index-_002dmarch_003d-command_002dline-option_002c-Z80"></span>
  33429. </dd>
  33430. <dt><code>-march=<var>CPU</var>[-<var>EXT</var>&hellip;][+<var>EXT</var>&hellip;]</code></dt>
  33431. <dd><p>This option specifies the target processor. The assembler will issue
  33432. an error message if an attempt is made to assemble an instruction which
  33433. will not execute on the target processor. The following processor names
  33434. are recognized:
  33435. <code>z80</code>,
  33436. <code>z180</code>,
  33437. <code>ez80</code>,
  33438. <code>gbz80</code>,
  33439. <code>z80n</code>,
  33440. <code>r800</code>.
  33441. In addition to the basic instruction set, the assembler can be told to
  33442. accept some extension mnemonics. For example,
  33443. <code>-march=z180+sli+infc</code> extends <var>z180</var> with <var>SLI</var> instructions and
  33444. <var>IN F,(C)</var>. The following extensions are currently supported:
  33445. <code>full</code> (all known instructions),
  33446. <code>adl</code> (ADL CPU mode by default, eZ80 only),
  33447. <code>sli</code> (instruction known as <var>SLI</var>, <var>SLL</var> or <var>SL1</var>),
  33448. <code>xyhl</code> (instructions with halves of index registers: <var>IXL</var>, <var>IXH</var>,
  33449. <var>IYL</var>, <var>IYH</var>),
  33450. <code>xdcb</code> (instructions like <var>RotOp (II+d),R</var> and <var>BitOp n,(II+d),R</var>),
  33451. <code>infc</code> (instruction <var>IN F,(C)</var> or <var>IN (C)</var>),
  33452. <code>outc0</code> (instruction <var>OUT (C),0</var>).
  33453. Note that rather than extending a basic instruction set, the extension
  33454. mnemonics starting with <code>-</code> revoke the respective functionality:
  33455. <code>-march=z80-full+xyhl</code> first removes all default extensions and adds
  33456. support for index registers halves only.
  33457. </p>
  33458. <p>If this option is not specified then <code>-march=z80+xyhl+infc</code> is assumed.
  33459. </p>
  33460. <span id="index-_002dlocal_002dprefix-command_002dline-option_002c-Z80"></span>
  33461. </dd>
  33462. <dt><code>-local-prefix=<var>prefix</var></code></dt>
  33463. <dd><p>Mark all labels with specified prefix as local. But such label can be
  33464. marked global explicitly in the code. This option do not change default
  33465. local label prefix <code>.L</code>, it is just adds new one.
  33466. </p>
  33467. <span id="index-_002dcolonless-command_002dline-option_002c-Z80"></span>
  33468. </dd>
  33469. <dt><code>-colonless</code></dt>
  33470. <dd><p>Accept colonless labels. All symbols at line begin are treated as labels.
  33471. </p>
  33472. <span id="index-_002dsdcc-command_002dline-option_002c-Z80"></span>
  33473. </dd>
  33474. <dt><code>-sdcc</code></dt>
  33475. <dd><p>Accept assembler code produced by SDCC.
  33476. </p>
  33477. <span id="index-_002dfp_002ds-command_002dline-option_002c-Z80"></span>
  33478. </dd>
  33479. <dt><code>-fp-s=<var>FORMAT</var></code></dt>
  33480. <dd><p>Single precision floating point numbers format. Default: ieee754 (32 bit).
  33481. </p>
  33482. <span id="index-_002dfp_002dd-command_002dline-option_002c-Z80"></span>
  33483. </dd>
  33484. <dt><code>-fp-d=<var>FORMAT</var></code></dt>
  33485. <dd><p>Double precision floating point numbers format. Default: ieee754 (64 bit).
  33486. </p></dd>
  33487. </dl>
  33488. <p>Floating point numbers formats.
  33489. </p><dl compact="compact">
  33490. <dt><samp><code>ieee754</code></samp></dt>
  33491. <dd><p>Single or double precision IEEE754 compatible format.
  33492. </p>
  33493. </dd>
  33494. <dt><samp><code>half</code></samp></dt>
  33495. <dd><p>Half precision IEEE754 compatible format (16 bits).
  33496. </p>
  33497. </dd>
  33498. <dt><samp><code>single</code></samp></dt>
  33499. <dd><p>Single precision IEEE754 compatible format (32 bits).
  33500. </p>
  33501. </dd>
  33502. <dt><samp><code>double</code></samp></dt>
  33503. <dd><p>Double precision IEEE754 compatible format (64 bits).
  33504. </p>
  33505. </dd>
  33506. <dt><samp><code>zeda32</code></samp></dt>
  33507. <dd><p>32 bit floating point format from z80float library by Zeda.
  33508. </p>
  33509. </dd>
  33510. <dt><samp><code>math48</code></samp></dt>
  33511. <dd><p>48 bit floating point format from Math48 package by Anders Hejlsberg.
  33512. </p></dd>
  33513. </dl>
  33514. <span id="index-Z80-Syntax"></span>
  33515. <hr>
  33516. <span id="Z80-Syntax"></span><div class="header">
  33517. <p>
  33518. Next: <a href="#Z80-Floating-Point" accesskey="n" rel="next">Z80 Floating Point</a>, Previous: <a href="#Z80-Options" accesskey="p" rel="prev">Z80 Options</a>, Up: <a href="#Z80_002dDependent" accesskey="u" rel="up">Z80-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33519. </div>
  33520. <span id="Syntax-34"></span><h4 class="subsection">9.57.2 Syntax</h4>
  33521. <p>The assembler syntax closely follows the &rsquo;Z80 family CPU User Manual&rsquo; by
  33522. Zilog.
  33523. In expressions a single &lsquo;<samp>=</samp>&rsquo; may be used as &ldquo;is equal to&rdquo;
  33524. comparison operator.
  33525. </p>
  33526. <p>Suffices can be used to indicate the radix of integer constants;
  33527. &lsquo;<samp>H</samp>&rsquo; or &lsquo;<samp>h</samp>&rsquo; for hexadecimal, &lsquo;<samp>D</samp>&rsquo; or &lsquo;<samp>d</samp>&rsquo; for decimal,
  33528. &lsquo;<samp>Q</samp>&rsquo;, &lsquo;<samp>O</samp>&rsquo;, &lsquo;<samp>q</samp>&rsquo; or &lsquo;<samp>o</samp>&rsquo; for octal, and &lsquo;<samp>B</samp>&rsquo; for
  33529. binary.
  33530. </p>
  33531. <p>The suffix &lsquo;<samp>b</samp>&rsquo; denotes a backreference to local label.
  33532. </p>
  33533. <table class="menu" border="0" cellspacing="0">
  33534. <tr><td align="left" valign="top">&bull; <a href="#Z80_002dChars" accesskey="1">Z80-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  33535. </td></tr>
  33536. <tr><td align="left" valign="top">&bull; <a href="#Z80_002dRegs" accesskey="2">Z80-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  33537. </td></tr>
  33538. <tr><td align="left" valign="top">&bull; <a href="#Z80_002dCase" accesskey="3">Z80-Case</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Case Sensitivity
  33539. </td></tr>
  33540. <tr><td align="left" valign="top">&bull; <a href="#Z80_002dLabels" accesskey="4">Z80-Labels</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Labels
  33541. </td></tr>
  33542. </table>
  33543. <hr>
  33544. <span id="Z80_002dChars"></span><div class="header">
  33545. <p>
  33546. Next: <a href="#Z80_002dRegs" accesskey="n" rel="next">Z80-Regs</a>, Up: <a href="#Z80-Syntax" accesskey="u" rel="up">Z80 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33547. </div>
  33548. <span id="Special-Characters-41"></span><h4 class="subsubsection">9.57.2.1 Special Characters</h4>
  33549. <span id="index-line-comment-character_002c-Z80"></span>
  33550. <span id="index-Z80-line-comment-character"></span>
  33551. <p>The semicolon &lsquo;<samp>;</samp>&rsquo; is the line comment character;
  33552. </p>
  33553. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  33554. line is treated as a comment, but in this case the line could also be
  33555. a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  33556. control command (see <a href="#Preprocessing">Preprocessing</a>).
  33557. </p>
  33558. <span id="index-line-separator_002c-Z80"></span>
  33559. <span id="index-statement-separator_002c-Z80"></span>
  33560. <span id="index-Z80-line-separator"></span>
  33561. <p>The Z80 assembler does not support a line separator character.
  33562. </p>
  33563. <span id="index-location-counter_002c-Z80"></span>
  33564. <span id="index-hexadecimal-prefix_002c-Z80"></span>
  33565. <span id="index-Z80-_0024"></span>
  33566. <p>The dollar sign &lsquo;<samp>$</samp>&rsquo; can be used as a prefix for hexadecimal numbers
  33567. and as a symbol denoting the current location counter.
  33568. </p>
  33569. <span id="index-character-escapes_002c-Z80"></span>
  33570. <span id="index-Z80_002c-_005c"></span>
  33571. <p>A backslash &lsquo;<samp>\</samp>&rsquo; is an ordinary character for the Z80 assembler.
  33572. </p>
  33573. <span id="index-character-constant_002c-Z80"></span>
  33574. <span id="index-single-quote_002c-Z80"></span>
  33575. <span id="index-Z80-_0027"></span>
  33576. <p>The single quote &lsquo;<samp>'</samp>&rsquo; must be followed by a closing quote. If there
  33577. is one character in between, it is a character constant, otherwise it is
  33578. a string constant.
  33579. </p>
  33580. <hr>
  33581. <span id="Z80_002dRegs"></span><div class="header">
  33582. <p>
  33583. Next: <a href="#Z80_002dCase" accesskey="n" rel="next">Z80-Case</a>, Previous: <a href="#Z80_002dChars" accesskey="p" rel="prev">Z80-Chars</a>, Up: <a href="#Z80-Syntax" accesskey="u" rel="up">Z80 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33584. </div>
  33585. <span id="Register-Names-21"></span><h4 class="subsubsection">9.57.2.2 Register Names</h4>
  33586. <span id="index-Z80-registers"></span>
  33587. <span id="index-register-names_002c-Z80"></span>
  33588. <p>The registers are referred to with the letters assigned to them by
  33589. Zilog. In addition <code>as</code> recognizes &lsquo;<samp>ixl</samp>&rsquo; and
  33590. &lsquo;<samp>ixh</samp>&rsquo; as the least and most significant octet in &lsquo;<samp>ix</samp>&rsquo;, and
  33591. similarly &lsquo;<samp>iyl</samp>&rsquo; and &lsquo;<samp>iyh</samp>&rsquo; as parts of &lsquo;<samp>iy</samp>&rsquo;.
  33592. </p>
  33593. <hr>
  33594. <span id="Z80_002dCase"></span><div class="header">
  33595. <p>
  33596. Next: <a href="#Z80_002dLabels" accesskey="n" rel="next">Z80-Labels</a>, Previous: <a href="#Z80_002dRegs" accesskey="p" rel="prev">Z80-Regs</a>, Up: <a href="#Z80-Syntax" accesskey="u" rel="up">Z80 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33597. </div>
  33598. <span id="Case-Sensitivity"></span><h4 class="subsubsection">9.57.2.3 Case Sensitivity</h4>
  33599. <span id="index-Z80_002c-case-sensitivity"></span>
  33600. <span id="index-case-sensitivity_002c-Z80"></span>
  33601. <p>Upper and lower case are equivalent in register names, opcodes,
  33602. condition codes and assembler directives.
  33603. The case of letters is significant in labels and symbol names. The case
  33604. is also important to distinguish the suffix &lsquo;<samp>b</samp>&rsquo; for a backward reference
  33605. to a local label from the suffix &lsquo;<samp>B</samp>&rsquo; for a number in binary notation.
  33606. </p>
  33607. <hr>
  33608. <span id="Z80_002dLabels"></span><div class="header">
  33609. <p>
  33610. Previous: <a href="#Z80_002dCase" accesskey="p" rel="prev">Z80-Case</a>, Up: <a href="#Z80-Syntax" accesskey="u" rel="up">Z80 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33611. </div>
  33612. <span id="Labels-2"></span><h4 class="subsubsection">9.57.2.4 Labels</h4>
  33613. <span id="index-labels_002c-Z80"></span>
  33614. <span id="index-Z80-labels"></span>
  33615. <p>Labels started by <code>.L</code> acts as local labels. You may specify custom local
  33616. label prefix by <code>-local-prefix</code> command-line option.
  33617. Dollar, forward and backward local labels are supported. By default, all labels
  33618. are followed by colon.
  33619. Legacy code with colonless labels can be built with <code>-colonless</code>
  33620. command-line option specified. In this case all tokens at line begin are treated
  33621. as labels.
  33622. </p>
  33623. <hr>
  33624. <span id="Z80-Floating-Point"></span><div class="header">
  33625. <p>
  33626. Next: <a href="#Z80-Directives" accesskey="n" rel="next">Z80 Directives</a>, Previous: <a href="#Z80-Syntax" accesskey="p" rel="prev">Z80 Syntax</a>, Up: <a href="#Z80_002dDependent" accesskey="u" rel="up">Z80-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33627. </div>
  33628. <span id="Floating-Point-19"></span><h4 class="subsection">9.57.3 Floating Point</h4>
  33629. <span id="index-floating-point_002c-Z80"></span>
  33630. <span id="index-Z80-floating-point"></span>
  33631. <p>Floating-point numbers of following types are supported:
  33632. </p>
  33633. <dl compact="compact">
  33634. <dt><samp><code>ieee754</code></samp></dt>
  33635. <dd><p>Supported half, single and double precision IEEE754 compatible numbers.
  33636. </p>
  33637. </dd>
  33638. <dt><samp><code>zeda32</code></samp></dt>
  33639. <dd><p>32 bit floating point numbers from z80float library by Zeda.
  33640. </p>
  33641. </dd>
  33642. <dt><samp><code>math48</code></samp></dt>
  33643. <dd><p>48 bit floating point numbers from Math48 package by Anders Hejlsberg.
  33644. </p></dd>
  33645. </dl>
  33646. <hr>
  33647. <span id="Z80-Directives"></span><div class="header">
  33648. <p>
  33649. Next: <a href="#Z80-Opcodes" accesskey="n" rel="next">Z80 Opcodes</a>, Previous: <a href="#Z80-Floating-Point" accesskey="p" rel="prev">Z80 Floating Point</a>, Up: <a href="#Z80_002dDependent" accesskey="u" rel="up">Z80-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33650. </div>
  33651. <span id="Z80-Assembler-Directives"></span><h4 class="subsection">9.57.4 Z80 Assembler Directives</h4>
  33652. <span id="index-Z80_002donly-directives"></span>
  33653. <p><code>as</code> for the Z80 supports some additional directives for
  33654. compatibility with other assemblers.
  33655. </p>
  33656. <p>These are the additional directives in <code>as</code> for the Z80:
  33657. </p>
  33658. <dl compact="compact">
  33659. <dt><code><code>.assume ADL = <var>expression</var></code></code></dt>
  33660. <dd><span id="index-_002eassume-directive_002c-Z80"></span>
  33661. <p>Set ADL status for eZ80. Non-zero value enable compilation in ADL mode else
  33662. used Z80 mode. ADL and Z80 mode produces incompatible object code. Mixing
  33663. both of them within one binary may lead problems with disassembler.
  33664. </p>
  33665. </dd>
  33666. <dt><code><code>db <var>expression</var>|<var>string</var>[,<var>expression</var>|<var>string</var>...]</code></code></dt>
  33667. <dd><span id="index-db-directive_002c-Z80"></span>
  33668. </dd>
  33669. <dt><code><code>defb <var>expression</var>|<var>string</var>[,<var>expression</var>|<var>string</var>...]</code></code></dt>
  33670. <dd><span id="index-defb-directive_002c-Z80"></span>
  33671. </dd>
  33672. <dt><code><code>defm <var>string</var>[,<var>string</var>...]</code></code></dt>
  33673. <dd><span id="index-defm-directive_002c-Z80"></span>
  33674. <p>For each <var>string</var> the characters are copied to the object file, for
  33675. each other <var>expression</var> the value is stored in one byte.
  33676. A warning is issued in case of an overflow.
  33677. Backslash symbol in the strings is generic symbol, it cannot be used as
  33678. escape character. See <a href="#Ascii"><code>.ascii</code></a>.
  33679. </p>
  33680. </dd>
  33681. <dt><code><code>dw <var>expression</var>[,<var>expression</var>...]</code></code></dt>
  33682. <dd><span id="index-dw-directive_002c-Z80"></span>
  33683. </dd>
  33684. <dt><code><code>defw <var>expression</var>[,<var>expression</var>...]</code></code></dt>
  33685. <dd><span id="index-defw-directive_002c-Z80"></span>
  33686. <p>For each <var>expression</var> the value is stored in two bytes, ignoring
  33687. overflow.
  33688. </p>
  33689. </dd>
  33690. <dt><code><code>d24 <var>expression</var>[,<var>expression</var>...]</code></code></dt>
  33691. <dd><span id="index-d24-directive_002c-Z80"></span>
  33692. </dd>
  33693. <dt><code><code>def24 <var>expression</var>[,<var>expression</var>...]</code></code></dt>
  33694. <dd><span id="index-def24-directive_002c-Z80"></span>
  33695. <p>For each <var>expression</var> the value is stored in three bytes, ignoring
  33696. overflow.
  33697. </p>
  33698. </dd>
  33699. <dt><code><code>d32 <var>expression</var>[,<var>expression</var>...]</code></code></dt>
  33700. <dd><span id="index-d32-directive_002c-Z80"></span>
  33701. </dd>
  33702. <dt><code><code>def32 <var>expression</var>[,<var>expression</var>...]</code></code></dt>
  33703. <dd><span id="index-def32-directive_002c-Z80"></span>
  33704. <p>For each <var>expression</var> the value is stored in four bytes, ignoring
  33705. overflow.
  33706. </p>
  33707. </dd>
  33708. <dt><code><code>ds <var>count</var>[, <var>value</var>]</code></code></dt>
  33709. <dd><span id="index-ds-directive_002c-Z80"></span>
  33710. </dd>
  33711. <dt><code><code>defs <var>count</var>[, <var>value</var>]</code></code></dt>
  33712. <dd><span id="index-defs-directive_002c-Z80"></span>
  33713. <p>Fill <var>count</var> bytes in the object file with <var>value</var>, if
  33714. <var>value</var> is omitted it defaults to zero.
  33715. </p>
  33716. </dd>
  33717. <dt><code><code><var>symbol</var> defl <var>expression</var></code></code></dt>
  33718. <dd><span id="index-defl-directive_002c-Z80"></span>
  33719. <p>The <code>defl</code> directive is like <code>.set</code> but with different
  33720. syntax. See <a href="#Set"><code>.set</code></a>.
  33721. It set the value of <var>symbol</var> to <var>expression</var>. Symbols defined
  33722. with <code>defl</code> are not protected from redefinition.
  33723. </p>
  33724. </dd>
  33725. <dt><code><code><var>symbol</var> equ <var>expression</var></code></code></dt>
  33726. <dd><span id="index-equ-directive_002c-Z80"></span>
  33727. <p>The <code>equ</code> directive is like <code>.equiv</code> but with different
  33728. syntax. See <a href="#Equiv"><code>.equiv</code></a>.
  33729. It set the value of <var>symbol</var> to <var>expression</var>. It is an error
  33730. if <var>symbol</var> is already defined. Symbols defined with <code>equ</code>
  33731. are not protected from redefinition.
  33732. </p>
  33733. </dd>
  33734. <dt><code><code>psect <var>name</var></code></code></dt>
  33735. <dd><span id="index-psect-directive_002c-Z80"></span>
  33736. <p>A synonym for <code>.section</code>, no second argument should be given.
  33737. See <a href="#Section"><code>.section</code></a>.
  33738. </p>
  33739. </dd>
  33740. <dt><code><code>xdef <var>symbol</var></code></code></dt>
  33741. <dd><span id="index-xdef-directive_002c-Z80"></span>
  33742. <p>A synonym for <code>.global</code>, make <var>symbol</var> is visible to linker.
  33743. See <a href="#Global"><code>.global</code></a>.
  33744. </p>
  33745. </dd>
  33746. <dt><code><code>xref <var>name</var></code></code></dt>
  33747. <dd><span id="index-xref-directive_002c-Z80"></span>
  33748. <p>A synonym for <code>.extern</code> (<a href="#Extern"><code>.extern</code></a>).
  33749. </p>
  33750. </dd>
  33751. </dl>
  33752. <hr>
  33753. <span id="Z80-Opcodes"></span><div class="header">
  33754. <p>
  33755. Previous: <a href="#Z80-Directives" accesskey="p" rel="prev">Z80 Directives</a>, Up: <a href="#Z80_002dDependent" accesskey="u" rel="up">Z80-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33756. </div>
  33757. <span id="Opcodes-21"></span><h4 class="subsection">9.57.5 Opcodes</h4>
  33758. <p>In line with common practice, Z80 mnemonics are used for the Z80,
  33759. Z80N, Z180, eZ80, Ascii R800 and the GameBoy Z80.
  33760. </p>
  33761. <p>In many instructions it is possible to use one of the half index
  33762. registers (&lsquo;<samp>ixl</samp>&rsquo;,&lsquo;<samp>ixh</samp>&rsquo;,&lsquo;<samp>iyl</samp>&rsquo;,&lsquo;<samp>iyh</samp>&rsquo;) in stead of an
  33763. 8-bit general purpose register. This yields instructions that are
  33764. documented on the eZ80 and the R800, undocumented on the Z80 and
  33765. unsupported on the Z180.
  33766. Similarly <code>in f,(c)</code> is documented on the R800, undocumented on
  33767. the Z80 and unsupported on the Z180 and the eZ80.
  33768. </p>
  33769. <p>The assembler also supports the following undocumented Z80-instructions,
  33770. that have not been adopted in any other instruction set:
  33771. </p><dl compact="compact">
  33772. <dt><code>out (c),0</code></dt>
  33773. <dd><p>Sends zero to the port pointed to by register <code>C</code>.
  33774. </p>
  33775. </dd>
  33776. <dt><code>sli <var>m</var></code></dt>
  33777. <dd><p>Equivalent to <code><var>m</var> = (<var>m</var>&lt;&lt;1)+1</code>, the operand <var>m</var> can
  33778. be any operand that is valid for &lsquo;<samp>sla</samp>&rsquo;. One can use &lsquo;<samp>sll</samp>&rsquo; as a
  33779. synonym for &lsquo;<samp>sli</samp>&rsquo;.
  33780. </p>
  33781. </dd>
  33782. <dt><code><var>op</var> (ix+<var>d</var>), <var>r</var></code></dt>
  33783. <dd><p>This is equivalent to
  33784. </p>
  33785. <div class="example">
  33786. <pre class="example">ld <var>r</var>, (ix+<var>d</var>)
  33787. <var>op</var> <var>r</var>
  33788. ld (ix+<var>d</var>), <var>r</var>
  33789. </pre></div>
  33790. <p>The operation &lsquo;<samp><var>op</var></samp>&rsquo; may be any of &lsquo;<samp>res <var>b</var>,</samp>&rsquo;,
  33791. &lsquo;<samp>set <var>b</var>,</samp>&rsquo;, &lsquo;<samp>rl</samp>&rsquo;, &lsquo;<samp>rlc</samp>&rsquo;, &lsquo;<samp>rr</samp>&rsquo;, &lsquo;<samp>rrc</samp>&rsquo;,
  33792. &lsquo;<samp>sla</samp>&rsquo;, &lsquo;<samp>sli</samp>&rsquo;, &lsquo;<samp>sra</samp>&rsquo; and &lsquo;<samp>srl</samp>&rsquo;, and the register
  33793. &lsquo;<samp><var>r</var></samp>&rsquo; may be any of &lsquo;<samp>a</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo;, &lsquo;<samp>c</samp>&rsquo;, &lsquo;<samp>d</samp>&rsquo;,
  33794. &lsquo;<samp>e</samp>&rsquo;, &lsquo;<samp>h</samp>&rsquo; and &lsquo;<samp>l</samp>&rsquo;.
  33795. </p>
  33796. </dd>
  33797. <dt><code><var>op</var> (iy+<var>d</var>), <var>r</var></code></dt>
  33798. <dd><p>As above, but with &lsquo;<samp>iy</samp>&rsquo; instead of &lsquo;<samp>ix</samp>&rsquo;.
  33799. </p></dd>
  33800. </dl>
  33801. <p>The web site at <a href="http://www.z80.info">http://www.z80.info</a> is a good starting place to
  33802. find more information on programming the Z80.
  33803. </p>
  33804. <p>You may enable or disable any of these instructions for any target CPU
  33805. even this instruction is not supported by any real CPU of this type.
  33806. Useful for custom CPU cores.
  33807. </p>
  33808. <hr>
  33809. <span id="Z8000_002dDependent"></span><div class="header">
  33810. <p>
  33811. Previous: <a href="#Z80_002dDependent" accesskey="p" rel="prev">Z80-Dependent</a>, Up: <a href="#Machine-Dependencies" accesskey="u" rel="up">Machine Dependencies</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33812. </div>
  33813. <span id="Z8000-Dependent-Features"></span><h3 class="section">9.58 Z8000 Dependent Features</h3>
  33814. <span id="index-Z8000-support"></span>
  33815. <p>The Z8000 as supports both members of the Z8000 family: the
  33816. unsegmented Z8002, with 16 bit addresses, and the segmented Z8001 with
  33817. 24 bit addresses.
  33818. </p>
  33819. <p>When the assembler is in unsegmented mode (specified with the
  33820. <code>unsegm</code> directive), an address takes up one word (16 bit)
  33821. sized register. When the assembler is in segmented mode (specified with
  33822. the <code>segm</code> directive), a 24-bit address takes up a long (32 bit)
  33823. register. See <a href="#Z8000-Directives">Assembler Directives for the Z8000</a>,
  33824. for a list of other Z8000 specific assembler directives.
  33825. </p>
  33826. <table class="menu" border="0" cellspacing="0">
  33827. <tr><td align="left" valign="top">&bull; <a href="#Z8000-Options" accesskey="1">Z8000 Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command-line options for the Z8000
  33828. </td></tr>
  33829. <tr><td align="left" valign="top">&bull; <a href="#Z8000-Syntax" accesskey="2">Z8000 Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assembler syntax for the Z8000
  33830. </td></tr>
  33831. <tr><td align="left" valign="top">&bull; <a href="#Z8000-Directives" accesskey="3">Z8000 Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special directives for the Z8000
  33832. </td></tr>
  33833. <tr><td align="left" valign="top">&bull; <a href="#Z8000-Opcodes" accesskey="4">Z8000 Opcodes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Opcodes
  33834. </td></tr>
  33835. </table>
  33836. <hr>
  33837. <span id="Z8000-Options"></span><div class="header">
  33838. <p>
  33839. Next: <a href="#Z8000-Syntax" accesskey="n" rel="next">Z8000 Syntax</a>, Up: <a href="#Z8000_002dDependent" accesskey="u" rel="up">Z8000-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33840. </div>
  33841. <span id="Options-31"></span><h4 class="subsection">9.58.1 Options</h4>
  33842. <span id="index-Z8000-options"></span>
  33843. <span id="index-options_002c-Z8000"></span>
  33844. <dl compact="compact">
  33845. <dd><span id="index-_002dz8001-command_002dline-option_002c-Z8000"></span>
  33846. </dd>
  33847. <dt><samp>-z8001</samp></dt>
  33848. <dd><p>Generate segmented code by default.
  33849. </p>
  33850. <span id="index-_002dz8002-command_002dline-option_002c-Z8000"></span>
  33851. </dd>
  33852. <dt><samp>-z8002</samp></dt>
  33853. <dd><p>Generate unsegmented code by default.
  33854. </p></dd>
  33855. </dl>
  33856. <hr>
  33857. <span id="Z8000-Syntax"></span><div class="header">
  33858. <p>
  33859. Next: <a href="#Z8000-Directives" accesskey="n" rel="next">Z8000 Directives</a>, Previous: <a href="#Z8000-Options" accesskey="p" rel="prev">Z8000 Options</a>, Up: <a href="#Z8000_002dDependent" accesskey="u" rel="up">Z8000-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33860. </div>
  33861. <span id="Syntax-35"></span><h4 class="subsection">9.58.2 Syntax</h4>
  33862. <table class="menu" border="0" cellspacing="0">
  33863. <tr><td align="left" valign="top">&bull; <a href="#Z8000_002dChars" accesskey="1">Z8000-Chars</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Special Characters
  33864. </td></tr>
  33865. <tr><td align="left" valign="top">&bull; <a href="#Z8000_002dRegs" accesskey="2">Z8000-Regs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Register Names
  33866. </td></tr>
  33867. <tr><td align="left" valign="top">&bull; <a href="#Z8000_002dAddressing" accesskey="3">Z8000-Addressing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Addressing Modes
  33868. </td></tr>
  33869. </table>
  33870. <hr>
  33871. <span id="Z8000_002dChars"></span><div class="header">
  33872. <p>
  33873. Next: <a href="#Z8000_002dRegs" accesskey="n" rel="next">Z8000-Regs</a>, Up: <a href="#Z8000-Syntax" accesskey="u" rel="up">Z8000 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33874. </div>
  33875. <span id="Special-Characters-42"></span><h4 class="subsubsection">9.58.2.1 Special Characters</h4>
  33876. <span id="index-line-comment-character_002c-Z8000"></span>
  33877. <span id="index-Z8000-line-comment-character"></span>
  33878. <p>&lsquo;<samp>!</samp>&rsquo; is the line comment character.
  33879. </p>
  33880. <p>If a &lsquo;<samp>#</samp>&rsquo; appears as the first character of a line then the whole
  33881. line is treated as a comment, but in this case the line could also be
  33882. a logical line number directive (see <a href="#Comments">Comments</a>) or a preprocessor
  33883. control command (see <a href="#Preprocessing">Preprocessing</a>).
  33884. </p>
  33885. <span id="index-line-separator_002c-Z8000"></span>
  33886. <span id="index-statement-separator_002c-Z8000"></span>
  33887. <span id="index-Z8000-line-separator"></span>
  33888. <p>You can use &lsquo;<samp>;</samp>&rsquo; instead of a newline to separate statements.
  33889. </p>
  33890. <hr>
  33891. <span id="Z8000_002dRegs"></span><div class="header">
  33892. <p>
  33893. Next: <a href="#Z8000_002dAddressing" accesskey="n" rel="next">Z8000-Addressing</a>, Previous: <a href="#Z8000_002dChars" accesskey="p" rel="prev">Z8000-Chars</a>, Up: <a href="#Z8000-Syntax" accesskey="u" rel="up">Z8000 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33894. </div>
  33895. <span id="Register-Names-22"></span><h4 class="subsubsection">9.58.2.2 Register Names</h4>
  33896. <span id="index-Z8000-registers"></span>
  33897. <span id="index-registers_002c-Z8000"></span>
  33898. <p>The Z8000 has sixteen 16 bit registers, numbered 0 to 15. You can refer
  33899. to different sized groups of registers by register number, with the
  33900. prefix &lsquo;<samp>r</samp>&rsquo; for 16 bit registers, &lsquo;<samp>rr</samp>&rsquo; for 32 bit registers and
  33901. &lsquo;<samp>rq</samp>&rsquo; for 64 bit registers. You can also refer to the contents of
  33902. the first eight (of the sixteen 16 bit registers) by bytes. They are
  33903. named &lsquo;<samp>rl<var>n</var></samp>&rsquo; and &lsquo;<samp>rh<var>n</var></samp>&rsquo;.
  33904. </p>
  33905. <div class="example">
  33906. <pre class="example"><em>byte registers</em>
  33907. </pre><pre class="example">rl0 rh0 rl1 rh1 rl2 rh2 rl3 rh3
  33908. rl4 rh4 rl5 rh5 rl6 rh6 rl7 rh7
  33909. </pre><pre class="example"><em>word registers</em>
  33910. </pre><pre class="example">r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
  33911. </pre><pre class="example"><em>long word registers</em>
  33912. </pre><pre class="example">rr0 rr2 rr4 rr6 rr8 rr10 rr12 rr14
  33913. </pre><pre class="example"><em>quad word registers</em>
  33914. </pre><pre class="example">rq0 rq4 rq8 rq12
  33915. </pre></div>
  33916. <hr>
  33917. <span id="Z8000_002dAddressing"></span><div class="header">
  33918. <p>
  33919. Previous: <a href="#Z8000_002dRegs" accesskey="p" rel="prev">Z8000-Regs</a>, Up: <a href="#Z8000-Syntax" accesskey="u" rel="up">Z8000 Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33920. </div>
  33921. <span id="Addressing-Modes-5"></span><h4 class="subsubsection">9.58.2.3 Addressing Modes</h4>
  33922. <span id="index-addressing-modes_002c-Z8000"></span>
  33923. <span id="index-Z800-addressing-modes"></span>
  33924. <p>as understands the following addressing modes for the Z8000:
  33925. </p>
  33926. <dl compact="compact">
  33927. <dt><code>rl<var>n</var></code></dt>
  33928. <dt><code>rh<var>n</var></code></dt>
  33929. <dt><code>r<var>n</var></code></dt>
  33930. <dt><code>rr<var>n</var></code></dt>
  33931. <dt><code>rq<var>n</var></code></dt>
  33932. <dd><p>Register direct: 8bit, 16bit, 32bit, and 64bit registers.
  33933. </p>
  33934. </dd>
  33935. <dt><code>@r<var>n</var></code></dt>
  33936. <dt><code>@rr<var>n</var></code></dt>
  33937. <dd><p>Indirect register: @rr<var>n</var> in segmented mode, @r<var>n</var> in unsegmented
  33938. mode.
  33939. </p>
  33940. </dd>
  33941. <dt><code><var>addr</var></code></dt>
  33942. <dd><p>Direct: the 16 bit or 24 bit address (depending on whether the assembler
  33943. is in segmented or unsegmented mode) of the operand is in the instruction.
  33944. </p>
  33945. </dd>
  33946. <dt><code>address(r<var>n</var>)</code></dt>
  33947. <dd><p>Indexed: the 16 or 24 bit address is added to the 16 bit register to produce
  33948. the final address in memory of the operand.
  33949. </p>
  33950. </dd>
  33951. <dt><code>r<var>n</var>(#<var>imm</var>)</code></dt>
  33952. <dt><code>rr<var>n</var>(#<var>imm</var>)</code></dt>
  33953. <dd><p>Base Address: the 16 or 24 bit register is added to the 16 bit sign
  33954. extended immediate displacement to produce the final address in memory
  33955. of the operand.
  33956. </p>
  33957. </dd>
  33958. <dt><code>r<var>n</var>(r<var>m</var>)</code></dt>
  33959. <dt><code>rr<var>n</var>(r<var>m</var>)</code></dt>
  33960. <dd><p>Base Index: the 16 or 24 bit register r<var>n</var> or rr<var>n</var> is added to
  33961. the sign extended 16 bit index register r<var>m</var> to produce the final
  33962. address in memory of the operand.
  33963. </p>
  33964. </dd>
  33965. <dt><code>#<var>xx</var></code></dt>
  33966. <dd><p>Immediate data <var>xx</var>.
  33967. </p></dd>
  33968. </dl>
  33969. <hr>
  33970. <span id="Z8000-Directives"></span><div class="header">
  33971. <p>
  33972. Next: <a href="#Z8000-Opcodes" accesskey="n" rel="next">Z8000 Opcodes</a>, Previous: <a href="#Z8000-Syntax" accesskey="p" rel="prev">Z8000 Syntax</a>, Up: <a href="#Z8000_002dDependent" accesskey="u" rel="up">Z8000-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  33973. </div>
  33974. <span id="Assembler-Directives-for-the-Z8000"></span><h4 class="subsection">9.58.3 Assembler Directives for the Z8000</h4>
  33975. <span id="index-Z8000-directives"></span>
  33976. <span id="index-directives_002c-Z8000"></span>
  33977. <p>The Z8000 port of as includes additional assembler directives,
  33978. for compatibility with other Z8000 assemblers. These do not begin with
  33979. &lsquo;<samp>.</samp>&rsquo; (unlike the ordinary as directives).
  33980. </p>
  33981. <dl compact="compact">
  33982. <dd><span id="index-segm"></span>
  33983. </dd>
  33984. <dt><code>segm</code></dt>
  33985. <dd><span id="index-_002ez8001"></span>
  33986. </dd>
  33987. <dt><code>.z8001</code></dt>
  33988. <dd><p>Generate code for the segmented Z8001.
  33989. </p>
  33990. <span id="index-unsegm"></span>
  33991. </dd>
  33992. <dt><code>unsegm</code></dt>
  33993. <dd><span id="index-_002ez8002"></span>
  33994. </dd>
  33995. <dt><code>.z8002</code></dt>
  33996. <dd><p>Generate code for the unsegmented Z8002.
  33997. </p>
  33998. <span id="index-name"></span>
  33999. </dd>
  34000. <dt><code>name</code></dt>
  34001. <dd><p>Synonym for <code>.file</code>
  34002. </p>
  34003. <span id="index-global"></span>
  34004. </dd>
  34005. <dt><code>global</code></dt>
  34006. <dd><p>Synonym for <code>.global</code>
  34007. </p>
  34008. <span id="index-wval"></span>
  34009. </dd>
  34010. <dt><code>wval</code></dt>
  34011. <dd><p>Synonym for <code>.word</code>
  34012. </p>
  34013. <span id="index-lval"></span>
  34014. </dd>
  34015. <dt><code>lval</code></dt>
  34016. <dd><p>Synonym for <code>.long</code>
  34017. </p>
  34018. <span id="index-bval"></span>
  34019. </dd>
  34020. <dt><code>bval</code></dt>
  34021. <dd><p>Synonym for <code>.byte</code>
  34022. </p>
  34023. <span id="index-sval"></span>
  34024. </dd>
  34025. <dt><code>sval</code></dt>
  34026. <dd><p>Assemble a string. <code>sval</code> expects one string literal, delimited by
  34027. single quotes. It assembles each byte of the string into consecutive
  34028. addresses. You can use the escape sequence &lsquo;<samp>%<var>xx</var></samp>&rsquo; (where
  34029. <var>xx</var> represents a two-digit hexadecimal number) to represent the
  34030. character whose <small>ASCII</small> value is <var>xx</var>. Use this feature to
  34031. describe single quote and other characters that may not appear in string
  34032. literals as themselves. For example, the C statement &lsquo;<samp>char&nbsp;*a&nbsp;=&nbsp;&quot;he&nbsp;said&nbsp;\&quot;it's&nbsp;50%&nbsp;off\&quot;&quot;;</samp>&rsquo;<!-- /@w --> is represented in Z8000 assembly language
  34033. (shown with the assembler output in hex at the left) as
  34034. </p>
  34035. <div class="example">
  34036. <pre class="example">68652073 sval 'he said %22it%27s 50%25 off%22%00'
  34037. 61696420
  34038. 22697427
  34039. 73203530
  34040. 25206F66
  34041. 662200
  34042. </pre></div>
  34043. <span id="index-rsect"></span>
  34044. </dd>
  34045. <dt><code>rsect</code></dt>
  34046. <dd><p>synonym for <code>.section</code>
  34047. </p>
  34048. <span id="index-block"></span>
  34049. </dd>
  34050. <dt><code>block</code></dt>
  34051. <dd><p>synonym for <code>.space</code>
  34052. </p>
  34053. <span id="index-even"></span>
  34054. </dd>
  34055. <dt><code>even</code></dt>
  34056. <dd><p>special case of <code>.align</code>; aligns output to even byte boundary.
  34057. </p></dd>
  34058. </dl>
  34059. <hr>
  34060. <span id="Z8000-Opcodes"></span><div class="header">
  34061. <p>
  34062. Previous: <a href="#Z8000-Directives" accesskey="p" rel="prev">Z8000 Directives</a>, Up: <a href="#Z8000_002dDependent" accesskey="u" rel="up">Z8000-Dependent</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  34063. </div>
  34064. <span id="Opcodes-22"></span><h4 class="subsection">9.58.4 Opcodes</h4>
  34065. <span id="index-Z8000-opcode-summary"></span>
  34066. <span id="index-opcode-summary_002c-Z8000"></span>
  34067. <span id="index-mnemonics_002c-Z8000"></span>
  34068. <span id="index-instruction-summary_002c-Z8000"></span>
  34069. <p>For detailed information on the Z8000 machine instruction set, see
  34070. <cite>Z8000 Technical Manual</cite>.
  34071. </p>
  34072. <hr>
  34073. <span id="Reporting-Bugs"></span><div class="header">
  34074. <p>
  34075. Next: <a href="#Acknowledgements" accesskey="n" rel="next">Acknowledgements</a>, Previous: <a href="#Machine-Dependencies" accesskey="p" rel="prev">Machine Dependencies</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  34076. </div>
  34077. <span id="Reporting-Bugs-1"></span><h2 class="chapter">10 Reporting Bugs</h2>
  34078. <span id="index-bugs-in-assembler"></span>
  34079. <span id="index-reporting-bugs-in-assembler"></span>
  34080. <p>Your bug reports play an essential role in making <code>as</code> reliable.
  34081. </p>
  34082. <p>Reporting a bug may help you by bringing a solution to your problem, or it may
  34083. not. But in any case the principal function of a bug report is to help the
  34084. entire community by making the next version of <code>as</code> work better.
  34085. Bug reports are your contribution to the maintenance of <code>as</code>.
  34086. </p>
  34087. <p>In order for a bug report to serve its purpose, you must include the
  34088. information that enables us to fix the bug.
  34089. </p>
  34090. <table class="menu" border="0" cellspacing="0">
  34091. <tr><td align="left" valign="top">&bull; <a href="#Bug-Criteria" accesskey="1">Bug Criteria</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Have you found a bug?
  34092. </td></tr>
  34093. <tr><td align="left" valign="top">&bull; <a href="#Bug-Reporting" accesskey="2">Bug Reporting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to report bugs
  34094. </td></tr>
  34095. </table>
  34096. <hr>
  34097. <span id="Bug-Criteria"></span><div class="header">
  34098. <p>
  34099. Next: <a href="#Bug-Reporting" accesskey="n" rel="next">Bug Reporting</a>, Up: <a href="#Reporting-Bugs" accesskey="u" rel="up">Reporting Bugs</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  34100. </div>
  34101. <span id="Have-You-Found-a-Bug_003f"></span><h3 class="section">10.1 Have You Found a Bug?</h3>
  34102. <span id="index-bug-criteria"></span>
  34103. <p>If you are not sure whether you have found a bug, here are some guidelines:
  34104. </p>
  34105. <ul>
  34106. <li> <span id="index-fatal-signal"></span>
  34107. <span id="index-assembler-crash"></span>
  34108. <span id="index-crash-of-assembler"></span>
  34109. If the assembler gets a fatal signal, for any input whatever, that is a
  34110. <code>as</code> bug. Reliable assemblers never crash.
  34111. </li><li> <span id="index-error-on-valid-input"></span>
  34112. If <code>as</code> produces an error message for valid input, that is a bug.
  34113. </li><li> <span id="index-invalid-input"></span>
  34114. If <code>as</code> does not produce an error message for invalid input, that
  34115. is a bug. However, you should note that your idea of &ldquo;invalid input&rdquo; might
  34116. be our idea of &ldquo;an extension&rdquo; or &ldquo;support for traditional practice&rdquo;.
  34117. </li><li> If you are an experienced user of assemblers, your suggestions for improvement
  34118. of <code>as</code> are welcome in any case.
  34119. </li></ul>
  34120. <hr>
  34121. <span id="Bug-Reporting"></span><div class="header">
  34122. <p>
  34123. Previous: <a href="#Bug-Criteria" accesskey="p" rel="prev">Bug Criteria</a>, Up: <a href="#Reporting-Bugs" accesskey="u" rel="up">Reporting Bugs</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  34124. </div>
  34125. <span id="How-to-Report-Bugs"></span><h3 class="section">10.2 How to Report Bugs</h3>
  34126. <span id="index-bug-reports"></span>
  34127. <span id="index-assembler-bugs_002c-reporting"></span>
  34128. <p>A number of companies and individuals offer support for <small>GNU</small> products. If
  34129. you obtained <code>as</code> from a support organization, we recommend you
  34130. contact that organization first.
  34131. </p>
  34132. <p>You can find contact information for many support companies and
  34133. individuals in the file <samp>etc/SERVICE</samp> in the <small>GNU</small> Emacs
  34134. distribution.
  34135. </p>
  34136. <p>In any event, we also recommend that you send bug reports for <code>as</code>
  34137. to <a href="https://bugs.linaro.org/">https://bugs.linaro.org/</a>.
  34138. </p>
  34139. <p>The fundamental principle of reporting bugs usefully is this:
  34140. <strong>report all the facts</strong>. If you are not sure whether to state a
  34141. fact or leave it out, state it!
  34142. </p>
  34143. <p>Often people omit facts because they think they know what causes the problem
  34144. and assume that some details do not matter. Thus, you might assume that the
  34145. name of a symbol you use in an example does not matter. Well, probably it does
  34146. not, but one cannot be sure. Perhaps the bug is a stray memory reference which
  34147. happens to fetch from the location where that name is stored in memory;
  34148. perhaps, if the name were different, the contents of that location would fool
  34149. the assembler into doing the right thing despite the bug. Play it safe and
  34150. give a specific, complete example. That is the easiest thing for you to do,
  34151. and the most helpful.
  34152. </p>
  34153. <p>Keep in mind that the purpose of a bug report is to enable us to fix the bug if
  34154. it is new to us. Therefore, always write your bug reports on the assumption
  34155. that the bug has not been reported previously.
  34156. </p>
  34157. <p>Sometimes people give a few sketchy facts and ask, &ldquo;Does this ring a
  34158. bell?&rdquo; This cannot help us fix a bug, so it is basically useless. We
  34159. respond by asking for enough details to enable us to investigate.
  34160. You might as well expedite matters by sending them to begin with.
  34161. </p>
  34162. <p>To enable us to fix the bug, you should include all these things:
  34163. </p>
  34164. <ul>
  34165. <li> The version of <code>as</code>. <code>as</code> announces it if you start
  34166. it with the &lsquo;<samp>--version</samp>&rsquo; argument.
  34167. <p>Without this, we will not know whether there is any point in looking for
  34168. the bug in the current version of <code>as</code>.
  34169. </p>
  34170. </li><li> Any patches you may have applied to the <code>as</code> source.
  34171. </li><li> The type of machine you are using, and the operating system name and
  34172. version number.
  34173. </li><li> What compiler (and its version) was used to compile <code>as</code>&mdash;e.g.
  34174. &ldquo;<code>gcc-2.7</code>&rdquo;.
  34175. </li><li> The command arguments you gave the assembler to assemble your example and
  34176. observe the bug. To guarantee you will not omit something important, list them
  34177. all. A copy of the Makefile (or the output from make) is sufficient.
  34178. <p>If we were to try to guess the arguments, we would probably guess wrong
  34179. and then we might not encounter the bug.
  34180. </p>
  34181. </li><li> A complete input file that will reproduce the bug. If the bug is observed when
  34182. the assembler is invoked via a compiler, send the assembler source, not the
  34183. high level language source. Most compilers will produce the assembler source
  34184. when run with the &lsquo;<samp>-S</samp>&rsquo; option. If you are using <code>gcc</code>, use
  34185. the options &lsquo;<samp>-v --save-temps</samp>&rsquo;; this will save the assembler source in a
  34186. file with an extension of <samp>.s</samp>, and also show you exactly how
  34187. <code>as</code> is being run.
  34188. </li><li> A description of what behavior you observe that you believe is
  34189. incorrect. For example, &ldquo;It gets a fatal signal.&rdquo;
  34190. <p>Of course, if the bug is that <code>as</code> gets a fatal signal, then we
  34191. will certainly notice it. But if the bug is incorrect output, we might not
  34192. notice unless it is glaringly wrong. You might as well not give us a chance to
  34193. make a mistake.
  34194. </p>
  34195. <p>Even if the problem you experience is a fatal signal, you should still say so
  34196. explicitly. Suppose something strange is going on, such as, your copy of
  34197. <code>as</code> is out of sync, or you have encountered a bug in the C
  34198. library on your system. (This has happened!) Your copy might crash and ours
  34199. would not. If you told us to expect a crash, then when ours fails to crash, we
  34200. would know that the bug was not happening for us. If you had not told us to
  34201. expect a crash, then we would not be able to draw any conclusion from our
  34202. observations.
  34203. </p>
  34204. </li><li> If you wish to suggest changes to the <code>as</code> source, send us context
  34205. diffs, as generated by <code>diff</code> with the &lsquo;<samp>-u</samp>&rsquo;, &lsquo;<samp>-c</samp>&rsquo;, or &lsquo;<samp>-p</samp>&rsquo;
  34206. option. Always send diffs from the old file to the new file. If you even
  34207. discuss something in the <code>as</code> source, refer to it by context, not
  34208. by line number.
  34209. <p>The line numbers in our development sources will not match those in your
  34210. sources. Your line numbers would convey no useful information to us.
  34211. </p></li></ul>
  34212. <p>Here are some things that are not necessary:
  34213. </p>
  34214. <ul>
  34215. <li> A description of the envelope of the bug.
  34216. <p>Often people who encounter a bug spend a lot of time investigating
  34217. which changes to the input file will make the bug go away and which
  34218. changes will not affect it.
  34219. </p>
  34220. <p>This is often time consuming and not very useful, because the way we
  34221. will find the bug is by running a single example under the debugger
  34222. with breakpoints, not by pure deduction from a series of examples.
  34223. We recommend that you save your time for something else.
  34224. </p>
  34225. <p>Of course, if you can find a simpler example to report <em>instead</em>
  34226. of the original one, that is a convenience for us. Errors in the
  34227. output will be easier to spot, running under the debugger will take
  34228. less time, and so on.
  34229. </p>
  34230. <p>However, simplification is not vital; if you do not want to do this,
  34231. report the bug anyway and send us the entire test case you used.
  34232. </p>
  34233. </li><li> A patch for the bug.
  34234. <p>A patch for the bug does help us if it is a good one. But do not omit
  34235. the necessary information, such as the test case, on the assumption that
  34236. a patch is all we need. We might see problems with your patch and decide
  34237. to fix the problem another way, or we might not understand it at all.
  34238. </p>
  34239. <p>Sometimes with a program as complicated as <code>as</code> it is very hard to
  34240. construct an example that will make the program follow a certain path through
  34241. the code. If you do not send us the example, we will not be able to construct
  34242. one, so we will not be able to verify that the bug is fixed.
  34243. </p>
  34244. <p>And if we cannot understand what bug you are trying to fix, or why your
  34245. patch should be an improvement, we will not install it. A test case will
  34246. help us to understand.
  34247. </p>
  34248. </li><li> A guess about what the bug is or what it depends on.
  34249. <p>Such guesses are usually wrong. Even we cannot guess right about such
  34250. things without first using the debugger to find the facts.
  34251. </p></li></ul>
  34252. <hr>
  34253. <span id="Acknowledgements"></span><div class="header">
  34254. <p>
  34255. Next: <a href="#GNU-Free-Documentation-License" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="#Reporting-Bugs" accesskey="p" rel="prev">Reporting Bugs</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  34256. </div>
  34257. <span id="Acknowledgements-1"></span><h2 class="chapter">11 Acknowledgements</h2>
  34258. <p>If you have contributed to GAS and your name isn&rsquo;t listed here,
  34259. it is not meant as a slight. We just don&rsquo;t know about it. Send mail to the
  34260. maintainer, and we&rsquo;ll correct the situation. Currently
  34261. the maintainer is Nick Clifton (email address <code>nickc@redhat.com</code>).
  34262. </p>
  34263. <p>Dean Elsner wrote the original <small>GNU</small> assembler for the VAX.<a id="DOCF4" href="#FOOT4"><sup>4</sup></a>
  34264. </p>
  34265. <p>Jay Fenlason maintained GAS for a while, adding support for GDB-specific debug
  34266. information and the 68k series machines, most of the preprocessing pass, and
  34267. extensive changes in <samp>messages.c</samp>, <samp>input-file.c</samp>, <samp>write.c</samp>.
  34268. </p>
  34269. <p>K. Richard Pixley maintained GAS for a while, adding various enhancements and
  34270. many bug fixes, including merging support for several processors, breaking GAS
  34271. up to handle multiple object file format back ends (including heavy rewrite,
  34272. testing, an integration of the coff and b.out back ends), adding configuration
  34273. including heavy testing and verification of cross assemblers and file splits
  34274. and renaming, converted GAS to strictly ANSI C including full prototypes, added
  34275. support for m680[34]0 and cpu32, did considerable work on i960 including a COFF
  34276. port (including considerable amounts of reverse engineering), a SPARC opcode
  34277. file rewrite, DECstation, rs6000, and hp300hpux host ports, updated &ldquo;know&rdquo;
  34278. assertions and made them work, much other reorganization, cleanup, and lint.
  34279. </p>
  34280. <p>Ken Raeburn wrote the high-level BFD interface code to replace most of the code
  34281. in format-specific I/O modules.
  34282. </p>
  34283. <p>The original VMS support was contributed by David L. Kashtan. Eric Youngdale
  34284. has done much work with it since.
  34285. </p>
  34286. <p>The Intel 80386 machine description was written by Eliot Dresselhaus.
  34287. </p>
  34288. <p>Minh Tran-Le at IntelliCorp contributed some AIX 386 support.
  34289. </p>
  34290. <p>The Motorola 88k machine description was contributed by Devon Bowen of Buffalo
  34291. University and Torbjorn Granlund of the Swedish Institute of Computer Science.
  34292. </p>
  34293. <p>Keith Knowles at the Open Software Foundation wrote the original MIPS back end
  34294. (<samp>tc-mips.c</samp>, <samp>tc-mips.h</samp>), and contributed Rose format support
  34295. (which hasn&rsquo;t been merged in yet). Ralph Campbell worked with the MIPS code to
  34296. support a.out format.
  34297. </p>
  34298. <p>Support for the Zilog Z8k and Renesas H8/300 processors (tc-z8k,
  34299. tc-h8300), and IEEE 695 object file format (obj-ieee), was written by
  34300. Steve Chamberlain of Cygnus Support. Steve also modified the COFF back end to
  34301. use BFD for some low-level operations, for use with the H8/300 and AMD 29k
  34302. targets.
  34303. </p>
  34304. <p>John Gilmore built the AMD 29000 support, added <code>.include</code> support, and
  34305. simplified the configuration of which versions accept which directives. He
  34306. updated the 68k machine description so that Motorola&rsquo;s opcodes always produced
  34307. fixed-size instructions (e.g., <code>jsr</code>), while synthetic instructions
  34308. remained shrinkable (<code>jbsr</code>). John fixed many bugs, including true tested
  34309. cross-compilation support, and one bug in relaxation that took a week and
  34310. required the proverbial one-bit fix.
  34311. </p>
  34312. <p>Ian Lance Taylor of Cygnus Support merged the Motorola and MIT syntax for the
  34313. 68k, completed support for some COFF targets (68k, i386 SVR3, and SCO Unix),
  34314. added support for MIPS ECOFF and ELF targets, wrote the initial RS/6000 and
  34315. PowerPC assembler, and made a few other minor patches.
  34316. </p>
  34317. <p>Steve Chamberlain made GAS able to generate listings.
  34318. </p>
  34319. <p>Hewlett-Packard contributed support for the HP9000/300.
  34320. </p>
  34321. <p>Jeff Law wrote GAS and BFD support for the native HPPA object format (SOM)
  34322. along with a fairly extensive HPPA testsuite (for both SOM and ELF object
  34323. formats). This work was supported by both the Center for Software Science at
  34324. the University of Utah and Cygnus Support.
  34325. </p>
  34326. <p>Support for ELF format files has been worked on by Mark Eichin of Cygnus
  34327. Support (original, incomplete implementation for SPARC), Pete Hoogenboom and
  34328. Jeff Law at the University of Utah (HPPA mainly), Michael Meissner of the Open
  34329. Software Foundation (i386 mainly), and Ken Raeburn of Cygnus Support (sparc,
  34330. and some initial 64-bit support).
  34331. </p>
  34332. <p>Linas Vepstas added GAS support for the ESA/390 &ldquo;IBM 370&rdquo; architecture.
  34333. </p>
  34334. <p>Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote GAS and BFD
  34335. support for openVMS/Alpha.
  34336. </p>
  34337. <p>Timothy Wall, Michael Hayes, and Greg Smart contributed to the various tic*
  34338. flavors.
  34339. </p>
  34340. <p>David Heine, Sterling Augustine, Bob Wilson and John Ruttenberg from Tensilica,
  34341. Inc. added support for Xtensa processors.
  34342. </p>
  34343. <p>Several engineers at Cygnus Support have also provided many small bug fixes and
  34344. configuration enhancements.
  34345. </p>
  34346. <p>Jon Beniston added support for the Lattice Mico32 architecture.
  34347. </p>
  34348. <p>Many others have contributed large or small bugfixes and enhancements. If
  34349. you have contributed significant work and are not mentioned on this list, and
  34350. want to be, let us know. Some of the history has been lost; we are not
  34351. intentionally leaving anyone out.
  34352. </p>
  34353. <hr>
  34354. <span id="GNU-Free-Documentation-License"></span><div class="header">
  34355. <p>
  34356. Next: <a href="#AS-Index" accesskey="n" rel="next">AS Index</a>, Previous: <a href="#Acknowledgements" accesskey="p" rel="prev">Acknowledgements</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  34357. </div>
  34358. <span id="GNU-Free-Documentation-License-1"></span><h2 class="appendix">Appendix A GNU Free Documentation License</h2>
  34359. <div align="center">Version 1.3, 3 November 2008
  34360. </div>
  34361. <div class="display">
  34362. <pre class="display">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
  34363. <a href="http://fsf.org/">http://fsf.org/</a>
  34364. Everyone is permitted to copy and distribute verbatim copies
  34365. of this license document, but changing it is not allowed.
  34366. </pre></div>
  34367. <ol start="0">
  34368. <li> PREAMBLE
  34369. <p>The purpose of this License is to make a manual, textbook, or other
  34370. functional and useful document <em>free</em> in the sense of freedom: to
  34371. assure everyone the effective freedom to copy and redistribute it,
  34372. with or without modifying it, either commercially or noncommercially.
  34373. Secondarily, this License preserves for the author and publisher a way
  34374. to get credit for their work, while not being considered responsible
  34375. for modifications made by others.
  34376. </p>
  34377. <p>This License is a kind of &ldquo;copyleft&rdquo;, which means that derivative
  34378. works of the document must themselves be free in the same sense. It
  34379. complements the GNU General Public License, which is a copyleft
  34380. license designed for free software.
  34381. </p>
  34382. <p>We have designed this License in order to use it for manuals for free
  34383. software, because free software needs free documentation: a free
  34384. program should come with manuals providing the same freedoms that the
  34385. software does. But this License is not limited to software manuals;
  34386. it can be used for any textual work, regardless of subject matter or
  34387. whether it is published as a printed book. We recommend this License
  34388. principally for works whose purpose is instruction or reference.
  34389. </p>
  34390. </li><li> APPLICABILITY AND DEFINITIONS
  34391. <p>This License applies to any manual or other work, in any medium, that
  34392. contains a notice placed by the copyright holder saying it can be
  34393. distributed under the terms of this License. Such a notice grants a
  34394. world-wide, royalty-free license, unlimited in duration, to use that
  34395. work under the conditions stated herein. The &ldquo;Document&rdquo;, below,
  34396. refers to any such manual or work. Any member of the public is a
  34397. licensee, and is addressed as &ldquo;you&rdquo;. You accept the license if you
  34398. copy, modify or distribute the work in a way requiring permission
  34399. under copyright law.
  34400. </p>
  34401. <p>A &ldquo;Modified Version&rdquo; of the Document means any work containing the
  34402. Document or a portion of it, either copied verbatim, or with
  34403. modifications and/or translated into another language.
  34404. </p>
  34405. <p>A &ldquo;Secondary Section&rdquo; is a named appendix or a front-matter section
  34406. of the Document that deals exclusively with the relationship of the
  34407. publishers or authors of the Document to the Document&rsquo;s overall
  34408. subject (or to related matters) and contains nothing that could fall
  34409. directly within that overall subject. (Thus, if the Document is in
  34410. part a textbook of mathematics, a Secondary Section may not explain
  34411. any mathematics.) The relationship could be a matter of historical
  34412. connection with the subject or with related matters, or of legal,
  34413. commercial, philosophical, ethical or political position regarding
  34414. them.
  34415. </p>
  34416. <p>The &ldquo;Invariant Sections&rdquo; are certain Secondary Sections whose titles
  34417. are designated, as being those of Invariant Sections, in the notice
  34418. that says that the Document is released under this License. If a
  34419. section does not fit the above definition of Secondary then it is not
  34420. allowed to be designated as Invariant. The Document may contain zero
  34421. Invariant Sections. If the Document does not identify any Invariant
  34422. Sections then there are none.
  34423. </p>
  34424. <p>The &ldquo;Cover Texts&rdquo; are certain short passages of text that are listed,
  34425. as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  34426. the Document is released under this License. A Front-Cover Text may
  34427. be at most 5 words, and a Back-Cover Text may be at most 25 words.
  34428. </p>
  34429. <p>A &ldquo;Transparent&rdquo; copy of the Document means a machine-readable copy,
  34430. represented in a format whose specification is available to the
  34431. general public, that is suitable for revising the document
  34432. straightforwardly with generic text editors or (for images composed of
  34433. pixels) generic paint programs or (for drawings) some widely available
  34434. drawing editor, and that is suitable for input to text formatters or
  34435. for automatic translation to a variety of formats suitable for input
  34436. to text formatters. A copy made in an otherwise Transparent file
  34437. format whose markup, or absence of markup, has been arranged to thwart
  34438. or discourage subsequent modification by readers is not Transparent.
  34439. An image format is not Transparent if used for any substantial amount
  34440. of text. A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
  34441. </p>
  34442. <p>Examples of suitable formats for Transparent copies include plain
  34443. <small>ASCII</small> without markup, Texinfo input format, LaTeX input
  34444. format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
  34445. <acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
  34446. PostScript or <acronym>PDF</acronym> designed for human modification. Examples
  34447. of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
  34448. <acronym>JPG</acronym>. Opaque formats include proprietary formats that can be
  34449. read and edited only by proprietary word processors, <acronym>SGML</acronym> or
  34450. <acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
  34451. not generally available, and the machine-generated <acronym>HTML</acronym>,
  34452. PostScript or <acronym>PDF</acronym> produced by some word processors for
  34453. output purposes only.
  34454. </p>
  34455. <p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
  34456. plus such following pages as are needed to hold, legibly, the material
  34457. this License requires to appear in the title page. For works in
  34458. formats which do not have any title page as such, &ldquo;Title Page&rdquo; means
  34459. the text near the most prominent appearance of the work&rsquo;s title,
  34460. preceding the beginning of the body of the text.
  34461. </p>
  34462. <p>The &ldquo;publisher&rdquo; means any person or entity that distributes copies
  34463. of the Document to the public.
  34464. </p>
  34465. <p>A section &ldquo;Entitled XYZ&rdquo; means a named subunit of the Document whose
  34466. title either is precisely XYZ or contains XYZ in parentheses following
  34467. text that translates XYZ in another language. (Here XYZ stands for a
  34468. specific section name mentioned below, such as &ldquo;Acknowledgements&rdquo;,
  34469. &ldquo;Dedications&rdquo;, &ldquo;Endorsements&rdquo;, or &ldquo;History&rdquo;.) To &ldquo;Preserve the Title&rdquo;
  34470. of such a section when you modify the Document means that it remains a
  34471. section &ldquo;Entitled XYZ&rdquo; according to this definition.
  34472. </p>
  34473. <p>The Document may include Warranty Disclaimers next to the notice which
  34474. states that this License applies to the Document. These Warranty
  34475. Disclaimers are considered to be included by reference in this
  34476. License, but only as regards disclaiming warranties: any other
  34477. implication that these Warranty Disclaimers may have is void and has
  34478. no effect on the meaning of this License.
  34479. </p>
  34480. </li><li> VERBATIM COPYING
  34481. <p>You may copy and distribute the Document in any medium, either
  34482. commercially or noncommercially, provided that this License, the
  34483. copyright notices, and the license notice saying this License applies
  34484. to the Document are reproduced in all copies, and that you add no other
  34485. conditions whatsoever to those of this License. You may not use
  34486. technical measures to obstruct or control the reading or further
  34487. copying of the copies you make or distribute. However, you may accept
  34488. compensation in exchange for copies. If you distribute a large enough
  34489. number of copies you must also follow the conditions in section 3.
  34490. </p>
  34491. <p>You may also lend copies, under the same conditions stated above, and
  34492. you may publicly display copies.
  34493. </p>
  34494. </li><li> COPYING IN QUANTITY
  34495. <p>If you publish printed copies (or copies in media that commonly have
  34496. printed covers) of the Document, numbering more than 100, and the
  34497. Document&rsquo;s license notice requires Cover Texts, you must enclose the
  34498. copies in covers that carry, clearly and legibly, all these Cover
  34499. Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
  34500. the back cover. Both covers must also clearly and legibly identify
  34501. you as the publisher of these copies. The front cover must present
  34502. the full title with all words of the title equally prominent and
  34503. visible. You may add other material on the covers in addition.
  34504. Copying with changes limited to the covers, as long as they preserve
  34505. the title of the Document and satisfy these conditions, can be treated
  34506. as verbatim copying in other respects.
  34507. </p>
  34508. <p>If the required texts for either cover are too voluminous to fit
  34509. legibly, you should put the first ones listed (as many as fit
  34510. reasonably) on the actual cover, and continue the rest onto adjacent
  34511. pages.
  34512. </p>
  34513. <p>If you publish or distribute Opaque copies of the Document numbering
  34514. more than 100, you must either include a machine-readable Transparent
  34515. copy along with each Opaque copy, or state in or with each Opaque copy
  34516. a computer-network location from which the general network-using
  34517. public has access to download using public-standard network protocols
  34518. a complete Transparent copy of the Document, free of added material.
  34519. If you use the latter option, you must take reasonably prudent steps,
  34520. when you begin distribution of Opaque copies in quantity, to ensure
  34521. that this Transparent copy will remain thus accessible at the stated
  34522. location until at least one year after the last time you distribute an
  34523. Opaque copy (directly or through your agents or retailers) of that
  34524. edition to the public.
  34525. </p>
  34526. <p>It is requested, but not required, that you contact the authors of the
  34527. Document well before redistributing any large number of copies, to give
  34528. them a chance to provide you with an updated version of the Document.
  34529. </p>
  34530. </li><li> MODIFICATIONS
  34531. <p>You may copy and distribute a Modified Version of the Document under
  34532. the conditions of sections 2 and 3 above, provided that you release
  34533. the Modified Version under precisely this License, with the Modified
  34534. Version filling the role of the Document, thus licensing distribution
  34535. and modification of the Modified Version to whoever possesses a copy
  34536. of it. In addition, you must do these things in the Modified Version:
  34537. </p>
  34538. <ol type="A" start="1">
  34539. <li> Use in the Title Page (and on the covers, if any) a title distinct
  34540. from that of the Document, and from those of previous versions
  34541. (which should, if there were any, be listed in the History section
  34542. of the Document). You may use the same title as a previous version
  34543. if the original publisher of that version gives permission.
  34544. </li><li> List on the Title Page, as authors, one or more persons or entities
  34545. responsible for authorship of the modifications in the Modified
  34546. Version, together with at least five of the principal authors of the
  34547. Document (all of its principal authors, if it has fewer than five),
  34548. unless they release you from this requirement.
  34549. </li><li> State on the Title page the name of the publisher of the
  34550. Modified Version, as the publisher.
  34551. </li><li> Preserve all the copyright notices of the Document.
  34552. </li><li> Add an appropriate copyright notice for your modifications
  34553. adjacent to the other copyright notices.
  34554. </li><li> Include, immediately after the copyright notices, a license notice
  34555. giving the public permission to use the Modified Version under the
  34556. terms of this License, in the form shown in the Addendum below.
  34557. </li><li> Preserve in that license notice the full lists of Invariant Sections
  34558. and required Cover Texts given in the Document&rsquo;s license notice.
  34559. </li><li> Include an unaltered copy of this License.
  34560. </li><li> Preserve the section Entitled &ldquo;History&rdquo;, Preserve its Title, and add
  34561. to it an item stating at least the title, year, new authors, and
  34562. publisher of the Modified Version as given on the Title Page. If
  34563. there is no section Entitled &ldquo;History&rdquo; in the Document, create one
  34564. stating the title, year, authors, and publisher of the Document as
  34565. given on its Title Page, then add an item describing the Modified
  34566. Version as stated in the previous sentence.
  34567. </li><li> Preserve the network location, if any, given in the Document for
  34568. public access to a Transparent copy of the Document, and likewise
  34569. the network locations given in the Document for previous versions
  34570. it was based on. These may be placed in the &ldquo;History&rdquo; section.
  34571. You may omit a network location for a work that was published at
  34572. least four years before the Document itself, or if the original
  34573. publisher of the version it refers to gives permission.
  34574. </li><li> For any section Entitled &ldquo;Acknowledgements&rdquo; or &ldquo;Dedications&rdquo;, Preserve
  34575. the Title of the section, and preserve in the section all the
  34576. substance and tone of each of the contributor acknowledgements and/or
  34577. dedications given therein.
  34578. </li><li> Preserve all the Invariant Sections of the Document,
  34579. unaltered in their text and in their titles. Section numbers
  34580. or the equivalent are not considered part of the section titles.
  34581. </li><li> Delete any section Entitled &ldquo;Endorsements&rdquo;. Such a section
  34582. may not be included in the Modified Version.
  34583. </li><li> Do not retitle any existing section to be Entitled &ldquo;Endorsements&rdquo; or
  34584. to conflict in title with any Invariant Section.
  34585. </li><li> Preserve any Warranty Disclaimers.
  34586. </li></ol>
  34587. <p>If the Modified Version includes new front-matter sections or
  34588. appendices that qualify as Secondary Sections and contain no material
  34589. copied from the Document, you may at your option designate some or all
  34590. of these sections as invariant. To do this, add their titles to the
  34591. list of Invariant Sections in the Modified Version&rsquo;s license notice.
  34592. These titles must be distinct from any other section titles.
  34593. </p>
  34594. <p>You may add a section Entitled &ldquo;Endorsements&rdquo;, provided it contains
  34595. nothing but endorsements of your Modified Version by various
  34596. parties&mdash;for example, statements of peer review or that the text has
  34597. been approved by an organization as the authoritative definition of a
  34598. standard.
  34599. </p>
  34600. <p>You may add a passage of up to five words as a Front-Cover Text, and a
  34601. passage of up to 25 words as a Back-Cover Text, to the end of the list
  34602. of Cover Texts in the Modified Version. Only one passage of
  34603. Front-Cover Text and one of Back-Cover Text may be added by (or
  34604. through arrangements made by) any one entity. If the Document already
  34605. includes a cover text for the same cover, previously added by you or
  34606. by arrangement made by the same entity you are acting on behalf of,
  34607. you may not add another; but you may replace the old one, on explicit
  34608. permission from the previous publisher that added the old one.
  34609. </p>
  34610. <p>The author(s) and publisher(s) of the Document do not by this License
  34611. give permission to use their names for publicity for or to assert or
  34612. imply endorsement of any Modified Version.
  34613. </p>
  34614. </li><li> COMBINING DOCUMENTS
  34615. <p>You may combine the Document with other documents released under this
  34616. License, under the terms defined in section 4 above for modified
  34617. versions, provided that you include in the combination all of the
  34618. Invariant Sections of all of the original documents, unmodified, and
  34619. list them all as Invariant Sections of your combined work in its
  34620. license notice, and that you preserve all their Warranty Disclaimers.
  34621. </p>
  34622. <p>The combined work need only contain one copy of this License, and
  34623. multiple identical Invariant Sections may be replaced with a single
  34624. copy. If there are multiple Invariant Sections with the same name but
  34625. different contents, make the title of each such section unique by
  34626. adding at the end of it, in parentheses, the name of the original
  34627. author or publisher of that section if known, or else a unique number.
  34628. Make the same adjustment to the section titles in the list of
  34629. Invariant Sections in the license notice of the combined work.
  34630. </p>
  34631. <p>In the combination, you must combine any sections Entitled &ldquo;History&rdquo;
  34632. in the various original documents, forming one section Entitled
  34633. &ldquo;History&rdquo;; likewise combine any sections Entitled &ldquo;Acknowledgements&rdquo;,
  34634. and any sections Entitled &ldquo;Dedications&rdquo;. You must delete all
  34635. sections Entitled &ldquo;Endorsements.&rdquo;
  34636. </p>
  34637. </li><li> COLLECTIONS OF DOCUMENTS
  34638. <p>You may make a collection consisting of the Document and other documents
  34639. released under this License, and replace the individual copies of this
  34640. License in the various documents with a single copy that is included in
  34641. the collection, provided that you follow the rules of this License for
  34642. verbatim copying of each of the documents in all other respects.
  34643. </p>
  34644. <p>You may extract a single document from such a collection, and distribute
  34645. it individually under this License, provided you insert a copy of this
  34646. License into the extracted document, and follow this License in all
  34647. other respects regarding verbatim copying of that document.
  34648. </p>
  34649. </li><li> AGGREGATION WITH INDEPENDENT WORKS
  34650. <p>A compilation of the Document or its derivatives with other separate
  34651. and independent documents or works, in or on a volume of a storage or
  34652. distribution medium, is called an &ldquo;aggregate&rdquo; if the copyright
  34653. resulting from the compilation is not used to limit the legal rights
  34654. of the compilation&rsquo;s users beyond what the individual works permit.
  34655. When the Document is included in an aggregate, this License does not
  34656. apply to the other works in the aggregate which are not themselves
  34657. derivative works of the Document.
  34658. </p>
  34659. <p>If the Cover Text requirement of section 3 is applicable to these
  34660. copies of the Document, then if the Document is less than one half of
  34661. the entire aggregate, the Document&rsquo;s Cover Texts may be placed on
  34662. covers that bracket the Document within the aggregate, or the
  34663. electronic equivalent of covers if the Document is in electronic form.
  34664. Otherwise they must appear on printed covers that bracket the whole
  34665. aggregate.
  34666. </p>
  34667. </li><li> TRANSLATION
  34668. <p>Translation is considered a kind of modification, so you may
  34669. distribute translations of the Document under the terms of section 4.
  34670. Replacing Invariant Sections with translations requires special
  34671. permission from their copyright holders, but you may include
  34672. translations of some or all Invariant Sections in addition to the
  34673. original versions of these Invariant Sections. You may include a
  34674. translation of this License, and all the license notices in the
  34675. Document, and any Warranty Disclaimers, provided that you also include
  34676. the original English version of this License and the original versions
  34677. of those notices and disclaimers. In case of a disagreement between
  34678. the translation and the original version of this License or a notice
  34679. or disclaimer, the original version will prevail.
  34680. </p>
  34681. <p>If a section in the Document is Entitled &ldquo;Acknowledgements&rdquo;,
  34682. &ldquo;Dedications&rdquo;, or &ldquo;History&rdquo;, the requirement (section 4) to Preserve
  34683. its Title (section 1) will typically require changing the actual
  34684. title.
  34685. </p>
  34686. </li><li> TERMINATION
  34687. <p>You may not copy, modify, sublicense, or distribute the Document
  34688. except as expressly provided under this License. Any attempt
  34689. otherwise to copy, modify, sublicense, or distribute it is void, and
  34690. will automatically terminate your rights under this License.
  34691. </p>
  34692. <p>However, if you cease all violation of this License, then your license
  34693. from a particular copyright holder is reinstated (a) provisionally,
  34694. unless and until the copyright holder explicitly and finally
  34695. terminates your license, and (b) permanently, if the copyright holder
  34696. fails to notify you of the violation by some reasonable means prior to
  34697. 60 days after the cessation.
  34698. </p>
  34699. <p>Moreover, your license from a particular copyright holder is
  34700. reinstated permanently if the copyright holder notifies you of the
  34701. violation by some reasonable means, this is the first time you have
  34702. received notice of violation of this License (for any work) from that
  34703. copyright holder, and you cure the violation prior to 30 days after
  34704. your receipt of the notice.
  34705. </p>
  34706. <p>Termination of your rights under this section does not terminate the
  34707. licenses of parties who have received copies or rights from you under
  34708. this License. If your rights have been terminated and not permanently
  34709. reinstated, receipt of a copy of some or all of the same material does
  34710. not give you any rights to use it.
  34711. </p>
  34712. </li><li> FUTURE REVISIONS OF THIS LICENSE
  34713. <p>The Free Software Foundation may publish new, revised versions
  34714. of the GNU Free Documentation License from time to time. Such new
  34715. versions will be similar in spirit to the present version, but may
  34716. differ in detail to address new problems or concerns. See
  34717. <a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
  34718. </p>
  34719. <p>Each version of the License is given a distinguishing version number.
  34720. If the Document specifies that a particular numbered version of this
  34721. License &ldquo;or any later version&rdquo; applies to it, you have the option of
  34722. following the terms and conditions either of that specified version or
  34723. of any later version that has been published (not as a draft) by the
  34724. Free Software Foundation. If the Document does not specify a version
  34725. number of this License, you may choose any version ever published (not
  34726. as a draft) by the Free Software Foundation. If the Document
  34727. specifies that a proxy can decide which future versions of this
  34728. License can be used, that proxy&rsquo;s public statement of acceptance of a
  34729. version permanently authorizes you to choose that version for the
  34730. Document.
  34731. </p>
  34732. </li><li> RELICENSING
  34733. <p>&ldquo;Massive Multiauthor Collaboration Site&rdquo; (or &ldquo;MMC Site&rdquo;) means any
  34734. World Wide Web server that publishes copyrightable works and also
  34735. provides prominent facilities for anybody to edit those works. A
  34736. public wiki that anybody can edit is an example of such a server. A
  34737. &ldquo;Massive Multiauthor Collaboration&rdquo; (or &ldquo;MMC&rdquo;) contained in the
  34738. site means any set of copyrightable works thus published on the MMC
  34739. site.
  34740. </p>
  34741. <p>&ldquo;CC-BY-SA&rdquo; means the Creative Commons Attribution-Share Alike 3.0
  34742. license published by Creative Commons Corporation, a not-for-profit
  34743. corporation with a principal place of business in San Francisco,
  34744. California, as well as future copyleft versions of that license
  34745. published by that same organization.
  34746. </p>
  34747. <p>&ldquo;Incorporate&rdquo; means to publish or republish a Document, in whole or
  34748. in part, as part of another Document.
  34749. </p>
  34750. <p>An MMC is &ldquo;eligible for relicensing&rdquo; if it is licensed under this
  34751. License, and if all works that were first published under this License
  34752. somewhere other than this MMC, and subsequently incorporated in whole
  34753. or in part into the MMC, (1) had no cover texts or invariant sections,
  34754. and (2) were thus incorporated prior to November 1, 2008.
  34755. </p>
  34756. <p>The operator of an MMC Site may republish an MMC contained in the site
  34757. under CC-BY-SA on the same site at any time before August 1, 2009,
  34758. provided the MMC is eligible for relicensing.
  34759. </p>
  34760. </li></ol>
  34761. <span id="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></span><h3 class="heading">ADDENDUM: How to use this License for your documents</h3>
  34762. <p>To use this License in a document you have written, include a copy of
  34763. the License in the document and put the following copyright and
  34764. license notices just after the title page:
  34765. </p>
  34766. <div class="example">
  34767. <pre class="example"> Copyright (C) <var>year</var> <var>your name</var>.
  34768. Permission is granted to copy, distribute and/or modify this document
  34769. under the terms of the GNU Free Documentation License, Version 1.3
  34770. or any later version published by the Free Software Foundation;
  34771. with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
  34772. Texts. A copy of the license is included in the section entitled ``GNU
  34773. Free Documentation License''.
  34774. </pre></div>
  34775. <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
  34776. replace the &ldquo;with&hellip;Texts.&rdquo; line with this:
  34777. </p>
  34778. <div class="example">
  34779. <pre class="example"> with the Invariant Sections being <var>list their titles</var>, with
  34780. the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
  34781. being <var>list</var>.
  34782. </pre></div>
  34783. <p>If you have Invariant Sections without Cover Texts, or some other
  34784. combination of the three, merge those two alternatives to suit the
  34785. situation.
  34786. </p>
  34787. <p>If your document contains nontrivial examples of program code, we
  34788. recommend releasing these examples in parallel under your choice of
  34789. free software license, such as the GNU General Public License,
  34790. to permit their use in free software.
  34791. </p>
  34792. <hr>
  34793. <span id="AS-Index"></span><div class="header">
  34794. <p>
  34795. Previous: <a href="#GNU-Free-Documentation-License" accesskey="p" rel="prev">GNU Free Documentation License</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#AS-Index" title="Index" rel="index">Index</a>]</p>
  34796. </div>
  34797. <span id="AS-Index-1"></span><h2 class="unnumbered">AS Index</h2>
  34798. <table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#AS-Index_cp_symbol-1"><b> </b></a>
  34799. &nbsp;
  34800. <a class="summary-letter" href="#AS-Index_cp_symbol-2"><b>#</b></a>
  34801. &nbsp;
  34802. <a class="summary-letter" href="#AS-Index_cp_symbol-3"><b>$</b></a>
  34803. &nbsp;
  34804. <a class="summary-letter" href="#AS-Index_cp_symbol-4"><b>%</b></a>
  34805. &nbsp;
  34806. <a class="summary-letter" href="#AS-Index_cp_symbol-5"><b>-</b></a>
  34807. &nbsp;
  34808. <a class="summary-letter" href="#AS-Index_cp_symbol-6"><b>.</b></a>
  34809. &nbsp;
  34810. <a class="summary-letter" href="#AS-Index_cp_symbol-7"><b>1</b></a>
  34811. &nbsp;
  34812. <a class="summary-letter" href="#AS-Index_cp_symbol-8"><b>2</b></a>
  34813. &nbsp;
  34814. <a class="summary-letter" href="#AS-Index_cp_symbol-9"><b>3</b></a>
  34815. &nbsp;
  34816. <a class="summary-letter" href="#AS-Index_cp_symbol-10"><b>4</b></a>
  34817. &nbsp;
  34818. <a class="summary-letter" href="#AS-Index_cp_symbol-11"><b>8</b></a>
  34819. &nbsp;
  34820. <a class="summary-letter" href="#AS-Index_cp_symbol-12"><b>:</b></a>
  34821. &nbsp;
  34822. <a class="summary-letter" href="#AS-Index_cp_symbol-13"><b>@</b></a>
  34823. &nbsp;
  34824. <a class="summary-letter" href="#AS-Index_cp_symbol-14"><b>_</b></a>
  34825. &nbsp;
  34826. <br>
  34827. <a class="summary-letter" href="#AS-Index_cp_letter-A"><b>A</b></a>
  34828. &nbsp;
  34829. <a class="summary-letter" href="#AS-Index_cp_letter-B"><b>B</b></a>
  34830. &nbsp;
  34831. <a class="summary-letter" href="#AS-Index_cp_letter-C"><b>C</b></a>
  34832. &nbsp;
  34833. <a class="summary-letter" href="#AS-Index_cp_letter-D"><b>D</b></a>
  34834. &nbsp;
  34835. <a class="summary-letter" href="#AS-Index_cp_letter-E"><b>E</b></a>
  34836. &nbsp;
  34837. <a class="summary-letter" href="#AS-Index_cp_letter-F"><b>F</b></a>
  34838. &nbsp;
  34839. <a class="summary-letter" href="#AS-Index_cp_letter-G"><b>G</b></a>
  34840. &nbsp;
  34841. <a class="summary-letter" href="#AS-Index_cp_letter-H"><b>H</b></a>
  34842. &nbsp;
  34843. <a class="summary-letter" href="#AS-Index_cp_letter-I"><b>I</b></a>
  34844. &nbsp;
  34845. <a class="summary-letter" href="#AS-Index_cp_letter-J"><b>J</b></a>
  34846. &nbsp;
  34847. <a class="summary-letter" href="#AS-Index_cp_letter-K"><b>K</b></a>
  34848. &nbsp;
  34849. <a class="summary-letter" href="#AS-Index_cp_letter-L"><b>L</b></a>
  34850. &nbsp;
  34851. <a class="summary-letter" href="#AS-Index_cp_letter-M"><b>M</b></a>
  34852. &nbsp;
  34853. <a class="summary-letter" href="#AS-Index_cp_letter-N"><b>N</b></a>
  34854. &nbsp;
  34855. <a class="summary-letter" href="#AS-Index_cp_letter-O"><b>O</b></a>
  34856. &nbsp;
  34857. <a class="summary-letter" href="#AS-Index_cp_letter-P"><b>P</b></a>
  34858. &nbsp;
  34859. <a class="summary-letter" href="#AS-Index_cp_letter-Q"><b>Q</b></a>
  34860. &nbsp;
  34861. <a class="summary-letter" href="#AS-Index_cp_letter-R"><b>R</b></a>
  34862. &nbsp;
  34863. <a class="summary-letter" href="#AS-Index_cp_letter-S"><b>S</b></a>
  34864. &nbsp;
  34865. <a class="summary-letter" href="#AS-Index_cp_letter-T"><b>T</b></a>
  34866. &nbsp;
  34867. <a class="summary-letter" href="#AS-Index_cp_letter-U"><b>U</b></a>
  34868. &nbsp;
  34869. <a class="summary-letter" href="#AS-Index_cp_letter-V"><b>V</b></a>
  34870. &nbsp;
  34871. <a class="summary-letter" href="#AS-Index_cp_letter-W"><b>W</b></a>
  34872. &nbsp;
  34873. <a class="summary-letter" href="#AS-Index_cp_letter-X"><b>X</b></a>
  34874. &nbsp;
  34875. <a class="summary-letter" href="#AS-Index_cp_letter-Z"><b>Z</b></a>
  34876. &nbsp;
  34877. </td></tr></table>
  34878. <table class="index-cp" border="0">
  34879. <tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
  34880. <tr><td colspan="4"> <hr></td></tr>
  34881. <tr><th id="AS-Index_cp_symbol-1"> </th><td></td><td></td></tr>
  34882. <tr><td></td><td valign="top"><a href="#index--_005c_0022-_0028doublequote-character_0029"><code> \&quot;</code> (doublequote character)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  34883. <tr><td></td><td valign="top"><a href="#index--_005cb-_0028backspace-character_0029"><code> \b</code> (backspace character)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  34884. <tr><td></td><td valign="top"><a href="#index--_005cddd-_0028octal-character-code_0029"><code> \<var>ddd</var></code> (octal character code)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  34885. <tr><td></td><td valign="top"><a href="#index--_005cf-_0028formfeed-character_0029"><code> \f</code> (formfeed character)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  34886. <tr><td></td><td valign="top"><a href="#index--_005cn-_0028newline-character_0029"><code> \n</code> (newline character)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  34887. <tr><td></td><td valign="top"><a href="#index--_005cr-_0028carriage-return-character_0029"><code> \r</code> (carriage return character)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  34888. <tr><td></td><td valign="top"><a href="#index--_005ct-_0028tab_0029"><code> \t</code> (tab)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  34889. <tr><td></td><td valign="top"><a href="#index--_005cxd_002e_002e_002e-_0028hex-character-code_0029"><code> \<var>xd...</var></code> (hex character code)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  34890. <tr><td></td><td valign="top"><a href="#index--_005c_005c-_0028_005c-character_0029"><code> \\</code> (&lsquo;<samp>\</samp>&rsquo; character)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  34891. <tr><td colspan="4"> <hr></td></tr>
  34892. <tr><th id="AS-Index_cp_symbol-2">#</th><td></td><td></td></tr>
  34893. <tr><td></td><td valign="top"><a href="#index-_0023"><code>#</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Comments">Comments</a></td></tr>
  34894. <tr><td></td><td valign="top"><a href="#index-_0023APP"><code>#APP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
  34895. <tr><td></td><td valign="top"><a href="#index-_0023NO_005fAPP"><code>#NO_APP</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
  34896. <tr><td colspan="4"> <hr></td></tr>
  34897. <tr><th id="AS-Index_cp_symbol-3">$</th><td></td><td></td></tr>
  34898. <tr><td></td><td valign="top"><a href="#index-_0024-in-symbol-names"><code>$</code> in symbol names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dChars">D10V-Chars</a></td></tr>
  34899. <tr><td></td><td valign="top"><a href="#index-_0024-in-symbol-names-1"><code>$</code> in symbol names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dChars">D30V-Chars</a></td></tr>
  34900. <tr><td></td><td valign="top"><a href="#index-_0024-in-symbol-names-2"><code>$</code> in symbol names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
  34901. <tr><td></td><td valign="top"><a href="#index-_0024-in-symbol-names-3"><code>$</code> in symbol names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
  34902. <tr><td></td><td valign="top"><a href="#index-_0024a"><code>$a</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Mapping-Symbols">ARM Mapping Symbols</a></td></tr>
  34903. <tr><td></td><td valign="top"><a href="#index-_0024acos-math-builtin_002c-TIC54X"><code>$acos</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34904. <tr><td></td><td valign="top"><a href="#index-_0024asin-math-builtin_002c-TIC54X"><code>$asin</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34905. <tr><td></td><td valign="top"><a href="#index-_0024atan-math-builtin_002c-TIC54X"><code>$atan</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34906. <tr><td></td><td valign="top"><a href="#index-_0024atan2-math-builtin_002c-TIC54X"><code>$atan2</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34907. <tr><td></td><td valign="top"><a href="#index-_0024ceil-math-builtin_002c-TIC54X"><code>$ceil</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34908. <tr><td></td><td valign="top"><a href="#index-_0024cos-math-builtin_002c-TIC54X"><code>$cos</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34909. <tr><td></td><td valign="top"><a href="#index-_0024cosh-math-builtin_002c-TIC54X"><code>$cosh</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34910. <tr><td></td><td valign="top"><a href="#index-_0024cvf-math-builtin_002c-TIC54X"><code>$cvf</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34911. <tr><td></td><td valign="top"><a href="#index-_0024cvi-math-builtin_002c-TIC54X"><code>$cvi</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34912. <tr><td></td><td valign="top"><a href="#index-_0024d"><code>$d</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Mapping-Symbols">AArch64 Mapping Symbols</a></td></tr>
  34913. <tr><td></td><td valign="top"><a href="#index-_0024d-1"><code>$d</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Mapping-Symbols">ARM Mapping Symbols</a></td></tr>
  34914. <tr><td></td><td valign="top"><a href="#index-_0024exp-math-builtin_002c-TIC54X"><code>$exp</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34915. <tr><td></td><td valign="top"><a href="#index-_0024fabs-math-builtin_002c-TIC54X"><code>$fabs</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34916. <tr><td></td><td valign="top"><a href="#index-_0024firstch-subsym-builtin_002c-TIC54X"><code>$firstch</code> subsym builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  34917. <tr><td></td><td valign="top"><a href="#index-_0024floor-math-builtin_002c-TIC54X"><code>$floor</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34918. <tr><td></td><td valign="top"><a href="#index-_0024fmod-math-builtin_002c-TIC54X"><code>$fmod</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34919. <tr><td></td><td valign="top"><a href="#index-_0024int-math-builtin_002c-TIC54X"><code>$int</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34920. <tr><td></td><td valign="top"><a href="#index-_0024iscons-subsym-builtin_002c-TIC54X"><code>$iscons</code> subsym builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  34921. <tr><td></td><td valign="top"><a href="#index-_0024isdefed-subsym-builtin_002c-TIC54X"><code>$isdefed</code> subsym builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  34922. <tr><td></td><td valign="top"><a href="#index-_0024ismember-subsym-builtin_002c-TIC54X"><code>$ismember</code> subsym builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  34923. <tr><td></td><td valign="top"><a href="#index-_0024isname-subsym-builtin_002c-TIC54X"><code>$isname</code> subsym builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  34924. <tr><td></td><td valign="top"><a href="#index-_0024isreg-subsym-builtin_002c-TIC54X"><code>$isreg</code> subsym builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  34925. <tr><td></td><td valign="top"><a href="#index-_0024lastch-subsym-builtin_002c-TIC54X"><code>$lastch</code> subsym builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  34926. <tr><td></td><td valign="top"><a href="#index-_0024ldexp-math-builtin_002c-TIC54X"><code>$ldexp</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34927. <tr><td></td><td valign="top"><a href="#index-_0024log-math-builtin_002c-TIC54X"><code>$log</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34928. <tr><td></td><td valign="top"><a href="#index-_0024log10-math-builtin_002c-TIC54X"><code>$log10</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34929. <tr><td></td><td valign="top"><a href="#index-_0024max-math-builtin_002c-TIC54X"><code>$max</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34930. <tr><td></td><td valign="top"><a href="#index-_0024min-math-builtin_002c-TIC54X"><code>$min</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34931. <tr><td></td><td valign="top"><a href="#index-_0024pow-math-builtin_002c-TIC54X"><code>$pow</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34932. <tr><td></td><td valign="top"><a href="#index-_0024round-math-builtin_002c-TIC54X"><code>$round</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34933. <tr><td></td><td valign="top"><a href="#index-_0024sgn-math-builtin_002c-TIC54X"><code>$sgn</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34934. <tr><td></td><td valign="top"><a href="#index-_0024sin-math-builtin_002c-TIC54X"><code>$sin</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34935. <tr><td></td><td valign="top"><a href="#index-_0024sinh-math-builtin_002c-TIC54X"><code>$sinh</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34936. <tr><td></td><td valign="top"><a href="#index-_0024sqrt-math-builtin_002c-TIC54X"><code>$sqrt</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34937. <tr><td></td><td valign="top"><a href="#index-_0024structacc-subsym-builtin_002c-TIC54X"><code>$structacc</code> subsym builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  34938. <tr><td></td><td valign="top"><a href="#index-_0024structsz-subsym-builtin_002c-TIC54X"><code>$structsz</code> subsym builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  34939. <tr><td></td><td valign="top"><a href="#index-_0024symcmp-subsym-builtin_002c-TIC54X"><code>$symcmp</code> subsym builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  34940. <tr><td></td><td valign="top"><a href="#index-_0024symlen-subsym-builtin_002c-TIC54X"><code>$symlen</code> subsym builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  34941. <tr><td></td><td valign="top"><a href="#index-_0024t"><code>$t</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Mapping-Symbols">ARM Mapping Symbols</a></td></tr>
  34942. <tr><td></td><td valign="top"><a href="#index-_0024tan-math-builtin_002c-TIC54X"><code>$tan</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34943. <tr><td></td><td valign="top"><a href="#index-_0024tanh-math-builtin_002c-TIC54X"><code>$tanh</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34944. <tr><td></td><td valign="top"><a href="#index-_0024trunc-math-builtin_002c-TIC54X"><code>$trunc</code> math builtin, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  34945. <tr><td></td><td valign="top"><a href="#index-_0024x"><code>$x</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Mapping-Symbols">AArch64 Mapping Symbols</a></td></tr>
  34946. <tr><td colspan="4"> <hr></td></tr>
  34947. <tr><th id="AS-Index_cp_symbol-4">%</th><td></td><td></td></tr>
  34948. <tr><td></td><td valign="top"><a href="#index-_0025gp">%gp</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dModifiers">RX-Modifiers</a></td></tr>
  34949. <tr><td></td><td valign="top"><a href="#index-_0025gpreg">&lsquo;<samp>%gpreg</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dModifiers">RX-Modifiers</a></td></tr>
  34950. <tr><td></td><td valign="top"><a href="#index-_0025pidreg">&lsquo;<samp>%pidreg</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dModifiers">RX-Modifiers</a></td></tr>
  34951. <tr><td colspan="4"> <hr></td></tr>
  34952. <tr><th id="AS-Index_cp_symbol-5">-</th><td></td><td></td></tr>
  34953. <tr><td></td><td valign="top"><a href="#index-_002d_002b-option_002c-VAX_002fVMS">&lsquo;<samp>-+</samp>&rsquo; option, VAX/VMS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  34954. <tr><td></td><td valign="top"><a href="#index-_002d_002d"><code>--</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Command-Line">Command Line</a></td></tr>
  34955. <tr><td></td><td valign="top"><a href="#index-_002d_002d32-option_002c-i386">&lsquo;<samp>--32</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  34956. <tr><td></td><td valign="top"><a href="#index-_002d_002d32-option_002c-x86_002d64">&lsquo;<samp>--32</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  34957. <tr><td></td><td valign="top"><a href="#index-_002d_002d64-option_002c-i386">&lsquo;<samp>--64</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  34958. <tr><td></td><td valign="top"><a href="#index-_002d_002d64-option_002c-x86_002d64">&lsquo;<samp>--64</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  34959. <tr><td></td><td valign="top"><a href="#index-_002d_002dabi_002dcall0"><code>--abi-call0</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  34960. <tr><td></td><td valign="top"><a href="#index-_002d_002dabi_002dwindowed"><code>--abi-windowed</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  34961. <tr><td></td><td valign="top"><a href="#index-_002d_002dabsolute_002dliterals"><code>--absolute-literals</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  34962. <tr><td></td><td valign="top"><a href="#index-_002d_002dall_002dsfr-option_002c-KVX">&lsquo;<samp>--all-sfr</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  34963. <tr><td></td><td valign="top"><a href="#index-_002d_002dallow_002dreg_002dprefix"><code>--allow-reg-prefix</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
  34964. <tr><td></td><td valign="top"><a href="#index-_002d_002dalternate"><code>--alternate</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#alternate">alternate</a></td></tr>
  34965. <tr><td></td><td valign="top"><a href="#index-_002d_002dauto_002dlitpools"><code>--auto-litpools</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  34966. <tr><td></td><td valign="top"><a href="#index-_002d_002dbase_002dsize_002ddefault_002d16">&lsquo;<samp>--base-size-default-16</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  34967. <tr><td></td><td valign="top"><a href="#index-_002d_002dbase_002dsize_002ddefault_002d32">&lsquo;<samp>--base-size-default-32</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  34968. <tr><td></td><td valign="top"><a href="#index-_002d_002dbig"><code>--big</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
  34969. <tr><td></td><td valign="top"><a href="#index-_002d_002dbitwise_002dor-option_002c-M680x0">&lsquo;<samp>--bitwise-or</samp>&rsquo; option, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  34970. <tr><td></td><td valign="top"><a href="#index-_002d_002dcheck_002dresources-option_002c-KVX">&lsquo;<samp>--check-resources</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  34971. <tr><td></td><td valign="top"><a href="#index-_002d_002dcompress_002ddebug_002dsections_003d-option">&lsquo;<samp>--compress-debug-sections=</samp>&rsquo; option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  34972. <tr><td></td><td valign="top"><a href="#index-_002d_002ddiagnostics-option_002c-KVX">&lsquo;<samp>--diagnostics</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  34973. <tr><td></td><td valign="top"><a href="#index-_002d_002ddisp_002dsize_002ddefault_002d16">&lsquo;<samp>--disp-size-default-16</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  34974. <tr><td></td><td valign="top"><a href="#index-_002d_002ddisp_002dsize_002ddefault_002d32">&lsquo;<samp>--disp-size-default-32</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  34975. <tr><td></td><td valign="top"><a href="#index-_002d_002ddivide-option_002c-i386">&lsquo;<samp>--divide</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  34976. <tr><td></td><td valign="top"><a href="#index-_002d_002ddsp"><code>--dsp</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
  34977. <tr><td></td><td valign="top"><a href="#index-_002d_002ddump_002dinsn-option_002c-KVX">&lsquo;<samp>--dump-insn</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  34978. <tr><td></td><td valign="top"><a href="#index-_002d_002ddump_002dtable-option_002c-KVX">&lsquo;<samp>--dump-table</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  34979. <tr><td></td><td valign="top"><a href="#index-_002d_002demulation_003dcrisaout-command_002dline-option_002c-CRIS"><samp>--emulation=crisaout</samp> command-line option, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  34980. <tr><td></td><td valign="top"><a href="#index-_002d_002demulation_003dcriself-command_002dline-option_002c-CRIS"><samp>--emulation=criself</samp> command-line option, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  34981. <tr><td></td><td valign="top"><a href="#index-_002d_002denforce_002daligned_002ddata"><code>--enforce-aligned-data</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dAligned_002dData">Sparc-Aligned-Data</a></td></tr>
  34982. <tr><td></td><td valign="top"><a href="#index-_002d_002dfatal_002dwarnings"><code>--fatal-warnings</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#W">W</a></td></tr>
  34983. <tr><td></td><td valign="top"><a href="#index-_002d_002dfdpic"><code>--fdpic</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
  34984. <tr><td></td><td valign="top"><a href="#index-_002d_002dfix_002dv4bx-command_002dline-option_002c-ARM"><code>--fix-v4bx</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  34985. <tr><td></td><td valign="top"><a href="#index-_002d_002dfixed_002dspecial_002dregister_002dnames-command_002dline-option_002c-MMIX">&lsquo;<samp>--fixed-special-register-names</samp>&rsquo; command-line option, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  34986. <tr><td></td><td valign="top"><a href="#index-_002d_002dforce_002dlong_002dbranches">&lsquo;<samp>--force-long-branches</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  34987. <tr><td></td><td valign="top"><a href="#index-_002d_002dgenerate_002dexample">&lsquo;<samp>--generate-example</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  34988. <tr><td></td><td valign="top"><a href="#index-_002d_002dgenerate_002dillegal_002dcode-option_002c-KVX">&lsquo;<samp>--generate-illegal-code</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  34989. <tr><td></td><td valign="top"><a href="#index-_002d_002dglobalize_002dsymbols-command_002dline-option_002c-MMIX">&lsquo;<samp>--globalize-symbols</samp>&rsquo; command-line option, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  34990. <tr><td></td><td valign="top"><a href="#index-_002d_002dgnu_002dsyntax-command_002dline-option_002c-MMIX">&lsquo;<samp>--gnu-syntax</samp>&rsquo; command-line option, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  34991. <tr><td></td><td valign="top"><a href="#index-_002d_002dlinker_002dallocated_002dgregs-command_002dline-option_002c-MMIX">&lsquo;<samp>--linker-allocated-gregs</samp>&rsquo; command-line option, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  34992. <tr><td></td><td valign="top"><a href="#index-_002d_002dlisting_002dcont_002dlines"><code>--listing-cont-lines</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#listing">listing</a></td></tr>
  34993. <tr><td></td><td valign="top"><a href="#index-_002d_002dlisting_002dlhs_002dwidth"><code>--listing-lhs-width</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#listing">listing</a></td></tr>
  34994. <tr><td></td><td valign="top"><a href="#index-_002d_002dlisting_002dlhs_002dwidth2"><code>--listing-lhs-width2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#listing">listing</a></td></tr>
  34995. <tr><td></td><td valign="top"><a href="#index-_002d_002dlisting_002drhs_002dwidth"><code>--listing-rhs-width</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#listing">listing</a></td></tr>
  34996. <tr><td></td><td valign="top"><a href="#index-_002d_002dlittle"><code>--little</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
  34997. <tr><td></td><td valign="top"><a href="#index-_002d_002dlongcalls"><code>--longcalls</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  34998. <tr><td></td><td valign="top"><a href="#index-_002d_002dmarch_003darchitecture-command_002dline-option_002c-CRIS"><samp>--march=<var>architecture</var></samp> command-line option, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  34999. <tr><td></td><td valign="top"><a href="#index-_002d_002dMD"><code>--MD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MD">MD</a></td></tr>
  35000. <tr><td></td><td valign="top"><a href="#index-_002d_002dmnopic-option_002c-KVX">&lsquo;<samp>--mnopic</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  35001. <tr><td></td><td valign="top"><a href="#index-_002d_002dmpic-option_002c-KVX">&lsquo;<samp>--mpic</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  35002. <tr><td></td><td valign="top"><a href="#index-_002d_002dmPIC-option_002c-KVX">&lsquo;<samp>--mPIC</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  35003. <tr><td></td><td valign="top"><a href="#index-_002d_002dmul_002dbug_002dabort-command_002dline-option_002c-CRIS"><samp>--mul-bug-abort</samp> command-line option, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  35004. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dabsolute_002dliterals"><code>--no-absolute-literals</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  35005. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dauto_002dlitpools"><code>--no-auto-litpools</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  35006. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dcheck_002dresources-option_002c-KVX">&lsquo;<samp>--no-check-resources</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  35007. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002ddiagnostics-option_002c-KVX">&lsquo;<samp>--no-diagnostics</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  35008. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dexpand-command_002dline-option_002c-MMIX">&lsquo;<samp>--no-expand</samp>&rsquo; command-line option, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  35009. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dlongcalls"><code>--no-longcalls</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  35010. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dmerge_002dgregs-command_002dline-option_002c-MMIX">&lsquo;<samp>--no-merge-gregs</samp>&rsquo; command-line option, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  35011. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dmul_002dbug_002dabort-command_002dline-option_002c-CRIS"><samp>--no-mul-bug-abort</samp> command-line option, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  35012. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dpad_002dsections"><code>--no-pad-sections</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#no_002dpad_002dsections">no-pad-sections</a></td></tr>
  35013. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dpredefined_002dsyms-command_002dline-option_002c-MMIX">&lsquo;<samp>--no-predefined-syms</samp>&rsquo; command-line option, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  35014. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dpushj_002dstubs-command_002dline-option_002c-MMIX">&lsquo;<samp>--no-pushj-stubs</samp>&rsquo; command-line option, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  35015. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dstubs-command_002dline-option_002c-MMIX">&lsquo;<samp>--no-stubs</samp>&rsquo; command-line option, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  35016. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dtarget_002dalign"><code>--no-target-align</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  35017. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dtext_002dsection_002dliterals"><code>--no-text-section-literals</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  35018. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dtrampolines"><code>--no-trampolines</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  35019. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dtransform"><code>--no-transform</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  35020. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dunderscore-command_002dline-option_002c-CRIS"><samp>--no-underscore</samp> command-line option, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  35021. <tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dwarn"><code>--no-warn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#W">W</a></td></tr>
  35022. <tr><td></td><td valign="top"><a href="#index-_002d_002dpcrel">&lsquo;<samp>--pcrel</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35023. <tr><td></td><td valign="top"><a href="#index-_002d_002dpic-command_002dline-option_002c-CRIS"><samp>--pic</samp> command-line option, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  35024. <tr><td></td><td valign="top"><a href="#index-_002d_002dprint_002dinsn_002dsyntax">&lsquo;<samp>--print-insn-syntax</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35025. <tr><td></td><td valign="top"><a href="#index-_002d_002dprint_002dinsn_002dsyntax-1">&lsquo;<samp>--print-insn-syntax</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
  35026. <tr><td></td><td valign="top"><a href="#index-_002d_002dprint_002dopcodes">&lsquo;<samp>--print-opcodes</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35027. <tr><td></td><td valign="top"><a href="#index-_002d_002dprint_002dopcodes-1">&lsquo;<samp>--print-opcodes</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
  35028. <tr><td></td><td valign="top"><a href="#index-_002d_002dregister_002dprefix_002doptional-option_002c-M680x0">&lsquo;<samp>--register-prefix-optional</samp>&rsquo; option, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35029. <tr><td></td><td valign="top"><a href="#index-_002d_002drelax"><code>--relax</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
  35030. <tr><td></td><td valign="top"><a href="#index-_002d_002drelax-command_002dline-option_002c-MMIX">&lsquo;<samp>--relax</samp>&rsquo; command-line option, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  35031. <tr><td></td><td valign="top"><a href="#index-_002d_002drename_002dsection"><code>--rename-section</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  35032. <tr><td></td><td valign="top"><a href="#index-_002d_002drenesas"><code>--renesas</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
  35033. <tr><td></td><td valign="top"><a href="#index-_002d_002dsectname_002dsubst"><code>--sectname-subst</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Section">Section</a></td></tr>
  35034. <tr><td></td><td valign="top"><a href="#index-_002d_002dshort_002dbranches">&lsquo;<samp>--short-branches</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35035. <tr><td></td><td valign="top"><a href="#index-_002d_002dsmall"><code>--small</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
  35036. <tr><td></td><td valign="top"><a href="#index-_002d_002dstatistics"><code>--statistics</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#statistics">statistics</a></td></tr>
  35037. <tr><td></td><td valign="top"><a href="#index-_002d_002dstrict_002ddirect_002dmode">&lsquo;<samp>--strict-direct-mode</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35038. <tr><td></td><td valign="top"><a href="#index-_002d_002dtarget_002dalign"><code>--target-align</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  35039. <tr><td></td><td valign="top"><a href="#index-_002d_002dtext_002dsection_002dliterals"><code>--text-section-literals</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  35040. <tr><td></td><td valign="top"><a href="#index-_002d_002dtraditional_002dformat"><code>--traditional-format</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#traditional_002dformat">traditional-format</a></td></tr>
  35041. <tr><td></td><td valign="top"><a href="#index-_002d_002dtrampolines"><code>--trampolines</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  35042. <tr><td></td><td valign="top"><a href="#index-_002d_002dtransform"><code>--transform</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Options">Xtensa Options</a></td></tr>
  35043. <tr><td></td><td valign="top"><a href="#index-_002d_002dunderscore-command_002dline-option_002c-CRIS"><samp>--underscore</samp> command-line option, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  35044. <tr><td></td><td valign="top"><a href="#index-_002d_002dwarn"><code>--warn</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#W">W</a></td></tr>
  35045. <tr><td></td><td valign="top"><a href="#index-_002d_002dx32-option_002c-i386">&lsquo;<samp>--x32</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35046. <tr><td></td><td valign="top"><a href="#index-_002d_002dx32-option_002c-x86_002d64">&lsquo;<samp>--x32</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35047. <tr><td></td><td valign="top"><a href="#index-_002d_002dxgate_002dramoffset">&lsquo;<samp>--xgate-ramoffset</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35048. <tr><td></td><td valign="top"><a href="#index-_002d1-option_002c-VAX_002fVMS">&lsquo;<samp>-1</samp>&rsquo; option, VAX/VMS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  35049. <tr><td></td><td valign="top"><a href="#index-_002d32addr-command_002dline-option_002c-Alpha"><code>-32addr</code> command-line option, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  35050. <tr><td></td><td valign="top"><a href="#index-_002da"><code>-a</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#a">a</a></td></tr>
  35051. <tr><td></td><td valign="top"><a href="#index-_002dac"><code>-ac</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#a">a</a></td></tr>
  35052. <tr><td></td><td valign="top"><a href="#index-_002dad"><code>-ad</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#a">a</a></td></tr>
  35053. <tr><td></td><td valign="top"><a href="#index-_002dag"><code>-ag</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#a">a</a></td></tr>
  35054. <tr><td></td><td valign="top"><a href="#index-_002dah"><code>-ah</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#a">a</a></td></tr>
  35055. <tr><td></td><td valign="top"><a href="#index-_002dal"><code>-al</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#a">a</a></td></tr>
  35056. <tr><td></td><td valign="top"><a href="#index-_002dAleon"><code>-Aleon</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35057. <tr><td></td><td valign="top"><a href="#index-_002dali"><code>-ali</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#a">a</a></td></tr>
  35058. <tr><td></td><td valign="top"><a href="#index-_002dan"><code>-an</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#a">a</a></td></tr>
  35059. <tr><td></td><td valign="top"><a href="#index-_002das"><code>-as</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#a">a</a></td></tr>
  35060. <tr><td></td><td valign="top"><a href="#index-_002dAsparc"><code>-Asparc</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35061. <tr><td></td><td valign="top"><a href="#index-_002dAsparcfmaf"><code>-Asparcfmaf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35062. <tr><td></td><td valign="top"><a href="#index-_002dAsparcima"><code>-Asparcima</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35063. <tr><td></td><td valign="top"><a href="#index-_002dAsparclet"><code>-Asparclet</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35064. <tr><td></td><td valign="top"><a href="#index-_002dAsparclite"><code>-Asparclite</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35065. <tr><td></td><td valign="top"><a href="#index-_002dAsparcvis"><code>-Asparcvis</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35066. <tr><td></td><td valign="top"><a href="#index-_002dAsparcvis2"><code>-Asparcvis2</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35067. <tr><td></td><td valign="top"><a href="#index-_002dAsparcvis3"><code>-Asparcvis3</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35068. <tr><td></td><td valign="top"><a href="#index-_002dAsparcvis3r"><code>-Asparcvis3r</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35069. <tr><td></td><td valign="top"><a href="#index-_002dAv6"><code>-Av6</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35070. <tr><td></td><td valign="top"><a href="#index-_002dAv7"><code>-Av7</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35071. <tr><td></td><td valign="top"><a href="#index-_002dAv8"><code>-Av8</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35072. <tr><td></td><td valign="top"><a href="#index-_002dAv9"><code>-Av9</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35073. <tr><td></td><td valign="top"><a href="#index-_002dAv9a"><code>-Av9a</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35074. <tr><td></td><td valign="top"><a href="#index-_002dAv9b"><code>-Av9b</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35075. <tr><td></td><td valign="top"><a href="#index-_002dAv9c"><code>-Av9c</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35076. <tr><td></td><td valign="top"><a href="#index-_002dAv9d"><code>-Av9d</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35077. <tr><td></td><td valign="top"><a href="#index-_002dAv9e"><code>-Av9e</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35078. <tr><td></td><td valign="top"><a href="#index-_002dAv9m"><code>-Av9m</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35079. <tr><td></td><td valign="top"><a href="#index-_002dAv9v"><code>-Av9v</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35080. <tr><td></td><td valign="top"><a href="#index-_002dbig-option_002c-M32R"><code>-big</code> option, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35081. <tr><td></td><td valign="top"><a href="#index-_002dcolonless-command_002dline-option_002c-Z80"><code>-colonless</code> command-line option, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
  35082. <tr><td></td><td valign="top"><a href="#index-_002dD"><code>-D</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#D">D</a></td></tr>
  35083. <tr><td></td><td valign="top"><a href="#index-_002dD_002c-ignored-on-VAX"><code>-D</code>, ignored on VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  35084. <tr><td></td><td valign="top"><a href="#index-_002dd_002c-VAX-option"><code>-d</code>, VAX option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  35085. <tr><td></td><td valign="top"><a href="#index-_002deabi_003d-command_002dline-option_002c-ARM"><code>-eabi=</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35086. <tr><td></td><td valign="top"><a href="#index-_002dEB-command_002dline-option_002c-AArch64"><samp>-EB</samp> command-line option, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
  35087. <tr><td></td><td valign="top"><a href="#index-_002dEB-command_002dline-option_002c-ARC"><code>-EB</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  35088. <tr><td></td><td valign="top"><a href="#index-_002dEB-command_002dline-option_002c-ARM"><code>-EB</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35089. <tr><td></td><td valign="top"><a href="#index-_002dEB-command_002dline-option_002c-BPF"><samp>-EB</samp> command-line option, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Options">BPF Options</a></td></tr>
  35090. <tr><td></td><td valign="top"><a href="#index-_002dEB-option-_0028MIPS_0029"><code>-EB</code> option (MIPS)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  35091. <tr><td></td><td valign="top"><a href="#index-_002dEB-option_002c-M32R"><code>-EB</code> option, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35092. <tr><td></td><td valign="top"><a href="#index-_002dEB-option_002c-TILE_002dGx">&lsquo;<samp>-EB</samp>&rsquo; option, TILE-Gx</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Options">TILE-Gx Options</a></td></tr>
  35093. <tr><td></td><td valign="top"><a href="#index-_002dEL-command_002dline-option_002c-AArch64"><samp>-EL</samp> command-line option, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
  35094. <tr><td></td><td valign="top"><a href="#index-_002dEL-command_002dline-option_002c-ARC"><code>-EL</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  35095. <tr><td></td><td valign="top"><a href="#index-_002dEL-command_002dline-option_002c-ARM"><code>-EL</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35096. <tr><td></td><td valign="top"><a href="#index-_002dEL-command_002dline-option_002c-BPF"><samp>-EL</samp> command-line option, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Options">BPF Options</a></td></tr>
  35097. <tr><td></td><td valign="top"><a href="#index-_002dEL-option-_0028MIPS_0029"><code>-EL</code> option (MIPS)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  35098. <tr><td></td><td valign="top"><a href="#index-_002dEL-option_002c-M32R"><code>-EL</code> option, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35099. <tr><td></td><td valign="top"><a href="#index-_002dEL-option_002c-TILE_002dGx">&lsquo;<samp>-EL</samp>&rsquo; option, TILE-Gx</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Options">TILE-Gx Options</a></td></tr>
  35100. <tr><td></td><td valign="top"><a href="#index-_002df"><code>-f</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#f">f</a></td></tr>
  35101. <tr><td></td><td valign="top"><a href="#index-_002dF-command_002dline-option_002c-Alpha"><code>-F</code> command-line option, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  35102. <tr><td></td><td valign="top"><a href="#index-_002dfno_002dpic-option_002c-RISC_002dV">&lsquo;<samp>-fno-pic</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35103. <tr><td></td><td valign="top"><a href="#index-_002dfp_002dd-command_002dline-option_002c-Z80"><code>-fp-d</code> command-line option, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
  35104. <tr><td></td><td valign="top"><a href="#index-_002dfp_002ds-command_002dline-option_002c-Z80"><code>-fp-s</code> command-line option, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
  35105. <tr><td></td><td valign="top"><a href="#index-_002dfpic-option_002c-RISC_002dV">&lsquo;<samp>-fpic</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35106. <tr><td></td><td valign="top"><a href="#index-_002dg-command_002dline-option_002c-Alpha"><code>-g</code> command-line option, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  35107. <tr><td></td><td valign="top"><a href="#index-_002dG-command_002dline-option_002c-Alpha"><code>-G</code> command-line option, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  35108. <tr><td></td><td valign="top"><a href="#index-_002dG-option-_0028MIPS_0029"><code>-G</code> option (MIPS)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  35109. <tr><td></td><td valign="top"><a href="#index-_002dh-option_002c-VAX_002fVMS">&lsquo;<samp>-h</samp>&rsquo; option, VAX/VMS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  35110. <tr><td></td><td valign="top"><a href="#index-_002dH-option_002c-VAX_002fVMS">&lsquo;<samp>-H</samp>&rsquo; option, VAX/VMS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  35111. <tr><td></td><td valign="top"><a href="#index-_002dI-path"><code>-I <var>path</var></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#I">I</a></td></tr>
  35112. <tr><td></td><td valign="top"><a href="#index-_002dignore_002dparallel_002dconflicts-option_002c-M32RX">&lsquo;<samp>-ignore-parallel-conflicts</samp>&rsquo; option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35113. <tr><td></td><td valign="top"><a href="#index-_002dIp-option_002c-M32RX">&lsquo;<samp>-Ip</samp>&rsquo; option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35114. <tr><td></td><td valign="top"><a href="#index-_002dJ_002c-ignored-on-VAX"><code>-J</code>, ignored on VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  35115. <tr><td></td><td valign="top"><a href="#index-_002dK"><code>-K</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#K">K</a></td></tr>
  35116. <tr><td></td><td valign="top"><a href="#index-_002dk-command_002dline-option_002c-ARM"><code>-k</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35117. <tr><td></td><td valign="top"><a href="#index-_002dKPIC-option_002c-M32R"><code>-KPIC</code> option, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35118. <tr><td></td><td valign="top"><a href="#index-_002dKPIC-option_002c-MIPS"><samp>-KPIC</samp> option, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  35119. <tr><td></td><td valign="top"><a href="#index-_002dL"><code>-L</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#L">L</a></td></tr>
  35120. <tr><td></td><td valign="top"><a href="#index-_002dl-option_002c-M680x0">&lsquo;<samp>-l</samp>&rsquo; option, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35121. <tr><td></td><td valign="top"><a href="#index-_002dlittle-option_002c-M32R"><code>-little</code> option, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35122. <tr><td></td><td valign="top"><a href="#index-_002dlocal_002dprefix-command_002dline-option_002c-Z80"><code>-local-prefix</code> command-line option, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
  35123. <tr><td></td><td valign="top"><a href="#index-_002dM"><code>-M</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#M">M</a></td></tr>
  35124. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f03">-m11/03</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35125. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f04">-m11/04</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35126. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f05">-m11/05</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35127. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f10">-m11/10</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35128. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f15">-m11/15</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35129. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f20">-m11/20</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35130. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f21">-m11/21</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35131. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f23">-m11/23</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35132. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f24">-m11/24</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35133. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f34">-m11/34</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35134. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f34a">-m11/34a</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35135. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f35">-m11/35</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35136. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f40">-m11/40</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35137. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f44">-m11/44</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35138. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f45">-m11/45</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35139. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f50">-m11/50</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35140. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f53">-m11/53</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35141. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f55">-m11/55</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35142. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f60">-m11/60</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35143. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f70">-m11/70</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35144. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f73">-m11/73</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35145. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f83">-m11/83</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35146. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f84">-m11/84</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35147. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f93">-m11/93</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35148. <tr><td></td><td valign="top"><a href="#index-_002dm11_002f94">-m11/94</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35149. <tr><td></td><td valign="top"><a href="#index-_002dm16c-option_002c-M16C">&lsquo;<samp>-m16c</samp>&rsquo; option, M16C</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
  35150. <tr><td></td><td valign="top"><a href="#index-_002dm31-option_002c-s390">&lsquo;<samp>-m31</samp>&rsquo; option, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
  35151. <tr><td></td><td valign="top"><a href="#index-_002dm32-option_002c-KVX">&lsquo;<samp>-m32</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  35152. <tr><td></td><td valign="top"><a href="#index-_002dm32-option_002c-TILE_002dGx">&lsquo;<samp>-m32</samp>&rsquo; option, TILE-Gx</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Options">TILE-Gx Options</a></td></tr>
  35153. <tr><td></td><td valign="top"><a href="#index-_002dm32bit_002ddoubles">&lsquo;<samp>-m32bit-doubles</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35154. <tr><td></td><td valign="top"><a href="#index-_002dm32c-option_002c-M32C">&lsquo;<samp>-m32c</samp>&rsquo; option, M32C</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
  35155. <tr><td></td><td valign="top"><a href="#index-_002dm32r-option_002c-M32R">&lsquo;<samp>-m32r</samp>&rsquo; option, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35156. <tr><td></td><td valign="top"><a href="#index-_002dm32rx-option_002c-M32R2">&lsquo;<samp>-m32rx</samp>&rsquo; option, M32R2</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35157. <tr><td></td><td valign="top"><a href="#index-_002dm32rx-option_002c-M32RX">&lsquo;<samp>-m32rx</samp>&rsquo; option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35158. <tr><td></td><td valign="top"><a href="#index-_002dm4byte_002dalign-command_002dline-option_002c-V850"><code>-m4byte-align</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35159. <tr><td></td><td valign="top"><a href="#index-_002dm64-option_002c-s390">&lsquo;<samp>-m64</samp>&rsquo; option, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
  35160. <tr><td></td><td valign="top"><a href="#index-_002dm64-option_002c-TILE_002dGx">&lsquo;<samp>-m64</samp>&rsquo; option, TILE-Gx</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Options">TILE-Gx Options</a></td></tr>
  35161. <tr><td></td><td valign="top"><a href="#index-_002dm64bit_002ddoubles">&lsquo;<samp>-m64bit-doubles</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35162. <tr><td></td><td valign="top"><a href="#index-_002dm68000-and-related-options">&lsquo;<samp>-m68000</samp>&rsquo; and related options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35163. <tr><td></td><td valign="top"><a href="#index-_002dm68hc11">&lsquo;<samp>-m68hc11</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35164. <tr><td></td><td valign="top"><a href="#index-_002dm68hc12">&lsquo;<samp>-m68hc12</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35165. <tr><td></td><td valign="top"><a href="#index-_002dm68hcs12">&lsquo;<samp>-m68hcs12</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35166. <tr><td></td><td valign="top"><a href="#index-_002dm8byte_002dalign-command_002dline-option_002c-V850"><code>-m8byte-align</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35167. <tr><td></td><td valign="top"><a href="#index-_002dmabi_003d-command_002dline-option_002c-AArch64"><samp>-mabi=</samp> command-line option, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
  35168. <tr><td></td><td valign="top"><a href="#index-_002dmabi_003dABI-option_002c-RISC_002dV">&lsquo;<samp>-mabi=ABI</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35169. <tr><td></td><td valign="top"><a href="#index-_002dmadd_002dbnd_002dprefix-option_002c-i386">&lsquo;<samp>-madd-bnd-prefix</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35170. <tr><td></td><td valign="top"><a href="#index-_002dmadd_002dbnd_002dprefix-option_002c-x86_002d64">&lsquo;<samp>-madd-bnd-prefix</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35171. <tr><td></td><td valign="top"><a href="#index-_002dmalign_002dbranch_002dboundary_003d-option_002c-i386">&lsquo;<samp>-malign-branch-boundary=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35172. <tr><td></td><td valign="top"><a href="#index-_002dmalign_002dbranch_002dboundary_003d-option_002c-x86_002d64">&lsquo;<samp>-malign-branch-boundary=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35173. <tr><td></td><td valign="top"><a href="#index-_002dmalign_002dbranch_002dprefix_002dsize_003d-option_002c-i386">&lsquo;<samp>-malign-branch-prefix-size=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35174. <tr><td></td><td valign="top"><a href="#index-_002dmalign_002dbranch_002dprefix_002dsize_003d-option_002c-x86_002d64">&lsquo;<samp>-malign-branch-prefix-size=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35175. <tr><td></td><td valign="top"><a href="#index-_002dmalign_002dbranch_003d-option_002c-i386">&lsquo;<samp>-malign-branch=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35176. <tr><td></td><td valign="top"><a href="#index-_002dmalign_002dbranch_003d-option_002c-x86_002d64">&lsquo;<samp>-malign-branch=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35177. <tr><td></td><td valign="top"><a href="#index-_002dmall">-mall</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35178. <tr><td></td><td valign="top"><a href="#index-_002dmall_002denabled-command_002dline-option_002c-LM32"><code>-mall-enabled</code> command-line option, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
  35179. <tr><td></td><td valign="top"><a href="#index-_002dmall_002dextensions">-mall-extensions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35180. <tr><td></td><td valign="top"><a href="#index-_002dmall_002dopcodes-command_002dline-option_002c-AVR"><code>-mall-opcodes</code> command-line option, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
  35181. <tr><td></td><td valign="top"><a href="#index-_002dmamd64-option_002c-x86_002d64">&lsquo;<samp>-mamd64</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35182. <tr><td></td><td valign="top"><a href="#index-_002dmapcs_002d26-command_002dline-option_002c-ARM"><code>-mapcs-26</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35183. <tr><td></td><td valign="top"><a href="#index-_002dmapcs_002d32-command_002dline-option_002c-ARM"><code>-mapcs-32</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35184. <tr><td></td><td valign="top"><a href="#index-_002dmapcs_002dfloat-command_002dline-option_002c-ARM"><code>-mapcs-float</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35185. <tr><td></td><td valign="top"><a href="#index-_002dmapcs_002dreentrant-command_002dline-option_002c-ARM"><code>-mapcs-reentrant</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35186. <tr><td></td><td valign="top"><a href="#index-_002dmarch-option_002c-KVX">&lsquo;<samp>-march</samp>&rsquo; option, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  35187. <tr><td></td><td valign="top"><a href="#index-_002dmarch_002dattr-option_002c-RISC_002dV">&lsquo;<samp>-march-attr</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35188. <tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-command_002dline-option_002c-AArch64"><samp>-march=</samp> command-line option, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
  35189. <tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-command_002dline-option_002c-ARM"><code>-march=</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35190. <tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-command_002dline-option_002c-M680x0">&lsquo;<samp>-march=</samp>&rsquo; command-line option, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35191. <tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-command_002dline-option_002c-TIC6X"><code>-march=</code> command-line option, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
  35192. <tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-command_002dline-option_002c-Z80"><code>-march=</code> command-line option, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
  35193. <tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-option_002c-i386">&lsquo;<samp>-march=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35194. <tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-option_002c-s390">&lsquo;<samp>-march=</samp>&rsquo; option, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
  35195. <tr><td></td><td valign="top"><a href="#index-_002dmarch_003d-option_002c-x86_002d64">&lsquo;<samp>-march=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35196. <tr><td></td><td valign="top"><a href="#index-_002dmarch_003dISA-option_002c-RISC_002dV">&lsquo;<samp>-march=ISA</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35197. <tr><td></td><td valign="top"><a href="#index-_002dmatpcs-command_002dline-option_002c-ARM"><code>-matpcs</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35198. <tr><td></td><td valign="top"><a href="#index-_002dmavxscalar_003d-option_002c-i386">&lsquo;<samp>-mavxscalar=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35199. <tr><td></td><td valign="top"><a href="#index-_002dmavxscalar_003d-option_002c-x86_002d64">&lsquo;<samp>-mavxscalar=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35200. <tr><td></td><td valign="top"><a href="#index-_002dmbarrel_002dshift_002denabled-command_002dline-option_002c-LM32"><code>-mbarrel-shift-enabled</code> command-line option, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
  35201. <tr><td></td><td valign="top"><a href="#index-_002dmbig_002dendian">&lsquo;<samp>-mbig-endian</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35202. <tr><td></td><td valign="top"><a href="#index-_002dmbig_002dendian-option_002c-RISC_002dV">&lsquo;<samp>-mbig-endian</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35203. <tr><td></td><td valign="top"><a href="#index-_002dmbig_002dobj-option_002c-i386">&lsquo;<samp>-mbig-obj</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35204. <tr><td></td><td valign="top"><a href="#index-_002dmbig_002dobj-option_002c-x86_002d64">&lsquo;<samp>-mbig-obj</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35205. <tr><td></td><td valign="top"><a href="#index-_002dmbranches_002dwithin_002d32B_002dboundaries-option_002c-i386">&lsquo;<samp>-mbranches-within-32B-boundaries</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35206. <tr><td></td><td valign="top"><a href="#index-_002dmbranches_002dwithin_002d32B_002dboundaries-option_002c-x86_002d64">&lsquo;<samp>-mbranches-within-32B-boundaries</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35207. <tr><td></td><td valign="top"><a href="#index-_002dmbreak_002denabled-command_002dline-option_002c-LM32"><code>-mbreak-enabled</code> command-line option, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
  35208. <tr><td></td><td valign="top"><a href="#index-_002dmccs-command_002dline-option_002c-ARM"><code>-mccs</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35209. <tr><td></td><td valign="top"><a href="#index-_002dmcis">-mcis</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35210. <tr><td></td><td valign="top"><a href="#index-_002dmcode_002ddensity-command_002dline-option_002c-ARC"><code>-mcode-density</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  35211. <tr><td></td><td valign="top"><a href="#index-_002dmconstant_002dgp-command_002dline-option_002c-IA_002d64"><code>-mconstant-gp</code> command-line option, IA-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64-Options">IA-64 Options</a></td></tr>
  35212. <tr><td></td><td valign="top"><a href="#index-_002dmcpu-command_002dline-option_002c-Alpha"><code>-m<var>cpu</var></code> command-line option, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  35213. <tr><td></td><td valign="top"><a href="#index-_002dmcpu-option_002c-cpu">&lsquo;<samp>-mcpu</samp>&rsquo; option, cpu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
  35214. <tr><td></td><td valign="top"><a href="#index-_002dmcpu_003d">&lsquo;<samp>-mcpu=</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35215. <tr><td></td><td valign="top"><a href="#index-_002dmcpu_003d-command_002dline-option_002c-AArch64"><samp>-mcpu=</samp> command-line option, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
  35216. <tr><td></td><td valign="top"><a href="#index-_002dmcpu_003d-command_002dline-option_002c-ARM"><code>-mcpu=</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35217. <tr><td></td><td valign="top"><a href="#index-_002dmcpu_003d-command_002dline-option_002c-Blackfin"><code>-mcpu=</code> command-line option, Blackfin</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Blackfin-Options">Blackfin Options</a></td></tr>
  35218. <tr><td></td><td valign="top"><a href="#index-_002dmcpu_003d-command_002dline-option_002c-M680x0">&lsquo;<samp>-mcpu=</samp>&rsquo; command-line option, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35219. <tr><td></td><td valign="top"><a href="#index-_002dmcpu_003dcpu-command_002dline-option_002c-ARC"><code>-mcpu=<var>cpu</var></code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  35220. <tr><td></td><td valign="top"><a href="#index-_002dmcsm">-mcsm</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35221. <tr><td></td><td valign="top"><a href="#index-_002dmcsr_002dcheck-option_002c-RISC_002dV">&lsquo;<samp>-mcsr-check</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35222. <tr><td></td><td valign="top"><a href="#index-_002dmdcache_002denabled-command_002dline-option_002c-LM32"><code>-mdcache-enabled</code> command-line option, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
  35223. <tr><td></td><td valign="top"><a href="#index-_002dmdebug-command_002dline-option_002c-Alpha"><code>-mdebug</code> command-line option, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  35224. <tr><td></td><td valign="top"><a href="#index-_002dmdialect-command_002dline-options_002c-BPF"><samp>-mdialect</samp> command-line options, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Options">BPF Options</a></td></tr>
  35225. <tr><td></td><td valign="top"><a href="#index-_002dmdivide_002denabled-command_002dline-option_002c-LM32"><code>-mdivide-enabled</code> command-line option, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
  35226. <tr><td></td><td valign="top"><a href="#index-_002dmdollar_002dhex-option_002c-dollar_002dhex">&lsquo;<samp>-mdollar-hex</samp>&rsquo; option, dollar-hex</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Options">S12Z Options</a></td></tr>
  35227. <tr><td></td><td valign="top"><a href="#index-_002dmdpfp-command_002dline-option_002c-ARC"><code>-mdpfp</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  35228. <tr><td></td><td valign="top"><a href="#index-_002dmdsbt-command_002dline-option_002c-TIC6X"><code>-mdsbt</code> command-line option, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
  35229. <tr><td></td><td valign="top"><a href="#index-_002dme-option_002c-stderr-redirect">&lsquo;<samp>-me</samp>&rsquo; option, stderr redirect</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
  35230. <tr><td></td><td valign="top"><a href="#index-_002dmeis">-meis</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35231. <tr><td></td><td valign="top"><a href="#index-_002dmepiphany-command_002dline-option_002c-Epiphany"><code>-mepiphany</code> command-line option, Epiphany</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Epiphany-Options">Epiphany Options</a></td></tr>
  35232. <tr><td></td><td valign="top"><a href="#index-_002dmepiphany16-command_002dline-option_002c-Epiphany"><code>-mepiphany16</code> command-line option, Epiphany</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Epiphany-Options">Epiphany Options</a></td></tr>
  35233. <tr><td></td><td valign="top"><a href="#index-_002dmerrors_002dto_002dfile-option_002c-stderr-redirect">&lsquo;<samp>-merrors-to-file</samp>&rsquo; option, stderr redirect</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
  35234. <tr><td></td><td valign="top"><a href="#index-_002dmesa-option_002c-s390">&lsquo;<samp>-mesa</samp>&rsquo; option, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
  35235. <tr><td></td><td valign="top"><a href="#index-_002dmevexlig_003d-option_002c-i386">&lsquo;<samp>-mevexlig=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35236. <tr><td></td><td valign="top"><a href="#index-_002dmevexlig_003d-option_002c-x86_002d64">&lsquo;<samp>-mevexlig=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35237. <tr><td></td><td valign="top"><a href="#index-_002dmevexrcig_003d-option_002c-i386">&lsquo;<samp>-mevexrcig=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35238. <tr><td></td><td valign="top"><a href="#index-_002dmevexrcig_003d-option_002c-x86_002d64">&lsquo;<samp>-mevexrcig=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35239. <tr><td></td><td valign="top"><a href="#index-_002dmevexwig_003d-option_002c-i386">&lsquo;<samp>-mevexwig=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35240. <tr><td></td><td valign="top"><a href="#index-_002dmevexwig_003d-option_002c-x86_002d64">&lsquo;<samp>-mevexwig=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35241. <tr><td></td><td valign="top"><a href="#index-_002dmf-option_002c-far_002dmode">&lsquo;<samp>-mf</samp>&rsquo; option, far-mode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
  35242. <tr><td></td><td valign="top"><a href="#index-_002dmf11">-mf11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35243. <tr><td></td><td valign="top"><a href="#index-_002dmfar_002dmode-option_002c-far_002dmode">&lsquo;<samp>-mfar-mode</samp>&rsquo; option, far-mode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
  35244. <tr><td></td><td valign="top"><a href="#index-_002dmfdpic-command_002dline-option_002c-Blackfin"><code>-mfdpic</code> command-line option, Blackfin</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Blackfin-Options">Blackfin Options</a></td></tr>
  35245. <tr><td></td><td valign="top"><a href="#index-_002dmfence_002das_002dlock_002dadd_003d-option_002c-i386">&lsquo;<samp>-mfence-as-lock-add=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35246. <tr><td></td><td valign="top"><a href="#index-_002dmfence_002das_002dlock_002dadd_003d-option_002c-x86_002d64">&lsquo;<samp>-mfence-as-lock-add=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35247. <tr><td></td><td valign="top"><a href="#index-_002dmfis">-mfis</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35248. <tr><td></td><td valign="top"><a href="#index-_002dmfloat_002dabi_003d-command_002dline-option_002c-ARM"><code>-mfloat-abi=</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35249. <tr><td></td><td valign="top"><a href="#index-_002dmfp_002d11">-mfp-11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35250. <tr><td></td><td valign="top"><a href="#index-_002dmfp16_002dformat_003d-command_002dline-option"><code>-mfp16-format=</code> command-line option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35251. <tr><td></td><td valign="top"><a href="#index-_002dmfpp">-mfpp</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35252. <tr><td></td><td valign="top"><a href="#index-_002dmfpu">-mfpu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35253. <tr><td></td><td valign="top"><a href="#index-_002dmfpu_003d-command_002dline-option_002c-ARM"><code>-mfpu=</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35254. <tr><td></td><td valign="top"><a href="#index-_002dmfpuda-command_002dline-option_002c-ARC"><code>-mfpuda</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  35255. <tr><td></td><td valign="top"><a href="#index-_002dmgcc_002dabi">&lsquo;<samp>-mgcc-abi</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35256. <tr><td></td><td valign="top"><a href="#index-_002dmgcc_002dabi-command_002dline-option_002c-V850"><code>-mgcc-abi</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35257. <tr><td></td><td valign="top"><a href="#index-_002dmgcc_002disr-command_002dline-option_002c-AVR"><code>-mgcc-isr</code> command-line option, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
  35258. <tr><td></td><td valign="top"><a href="#index-_002dmhard_002dfloat-command_002dline-option_002c-V850"><code>-mhard-float</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35259. <tr><td></td><td valign="top"><a href="#index-_002dmicache_002denabled-command_002dline-option_002c-LM32"><code>-micache-enabled</code> command-line option, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
  35260. <tr><td></td><td valign="top"><a href="#index-_002dmimplicit_002dit-command_002dline-option_002c-ARM"><code>-mimplicit-it</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35261. <tr><td></td><td valign="top"><a href="#index-_002dmint_002dregister">&lsquo;<samp>-mint-register</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35262. <tr><td></td><td valign="top"><a href="#index-_002dmintel64-option_002c-x86_002d64">&lsquo;<samp>-mintel64</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35263. <tr><td></td><td valign="top"><a href="#index-_002dmip2022-option_002c-IP2K">&lsquo;<samp>-mip2022</samp>&rsquo; option, IP2K</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
  35264. <tr><td></td><td valign="top"><a href="#index-_002dmip2022ext-option_002c-IP2022">&lsquo;<samp>-mip2022ext</samp>&rsquo; option, IP2022</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
  35265. <tr><td></td><td valign="top"><a href="#index-_002dmisa_002dspec-command_002dline-options_002c-BPF"><samp>-misa-spec</samp> command-line options, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Options">BPF Options</a></td></tr>
  35266. <tr><td></td><td valign="top"><a href="#index-_002dmisa_002dspec_003dISAspec-option_002c-RISC_002dV">&lsquo;<samp>-misa-spec=ISAspec</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35267. <tr><td></td><td valign="top"><a href="#index-_002dmj11">-mj11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35268. <tr><td></td><td valign="top"><a href="#index-_002dmka11">-mka11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35269. <tr><td></td><td valign="top"><a href="#index-_002dmkb11">-mkb11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35270. <tr><td></td><td valign="top"><a href="#index-_002dmkd11a">-mkd11a</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35271. <tr><td></td><td valign="top"><a href="#index-_002dmkd11b">-mkd11b</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35272. <tr><td></td><td valign="top"><a href="#index-_002dmkd11d">-mkd11d</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35273. <tr><td></td><td valign="top"><a href="#index-_002dmkd11e">-mkd11e</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35274. <tr><td></td><td valign="top"><a href="#index-_002dmkd11f">-mkd11f</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35275. <tr><td></td><td valign="top"><a href="#index-_002dmkd11h">-mkd11h</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35276. <tr><td></td><td valign="top"><a href="#index-_002dmkd11k">-mkd11k</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35277. <tr><td></td><td valign="top"><a href="#index-_002dmkd11q">-mkd11q</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35278. <tr><td></td><td valign="top"><a href="#index-_002dmkd11z">-mkd11z</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35279. <tr><td></td><td valign="top"><a href="#index-_002dmkev11">-mkev11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35280. <tr><td></td><td valign="top"><a href="#index-_002dmkev11-1">-mkev11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35281. <tr><td></td><td valign="top"><a href="#index-_002dmlfence_002dafter_002dload_003d-option_002c-i386">&lsquo;<samp>-mlfence-after-load=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35282. <tr><td></td><td valign="top"><a href="#index-_002dmlfence_002dafter_002dload_003d-option_002c-x86_002d64">&lsquo;<samp>-mlfence-after-load=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35283. <tr><td></td><td valign="top"><a href="#index-_002dmlfence_002dbefore_002dindirect_002dbranch_003d-option_002c-i386">&lsquo;<samp>-mlfence-before-indirect-branch=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35284. <tr><td></td><td valign="top"><a href="#index-_002dmlfence_002dbefore_002dindirect_002dbranch_003d-option_002c-x86_002d64">&lsquo;<samp>-mlfence-before-indirect-branch=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35285. <tr><td></td><td valign="top"><a href="#index-_002dmlfence_002dbefore_002dret_003d-option_002c-i386">&lsquo;<samp>-mlfence-before-ret=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35286. <tr><td></td><td valign="top"><a href="#index-_002dmlfence_002dbefore_002dret_003d-option_002c-x86_002d64">&lsquo;<samp>-mlfence-before-ret=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35287. <tr><td></td><td valign="top"><a href="#index-_002dmlimited_002deis">-mlimited-eis</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35288. <tr><td></td><td valign="top"><a href="#index-_002dmlink_002drelax-command_002dline-option_002c-AVR"><code>-mlink-relax</code> command-line option, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
  35289. <tr><td></td><td valign="top"><a href="#index-_002dmlittle_002dendian">&lsquo;<samp>-mlittle-endian</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35290. <tr><td></td><td valign="top"><a href="#index-_002dmlittle_002dendian-option_002c-RISC_002dV">&lsquo;<samp>-mlittle-endian</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35291. <tr><td></td><td valign="top"><a href="#index-_002dmlong">&lsquo;<samp>-mlong</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35292. <tr><td></td><td valign="top"><a href="#index-_002dmlong-1">&lsquo;<samp>-mlong</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
  35293. <tr><td></td><td valign="top"><a href="#index-_002dmlong_002ddouble">&lsquo;<samp>-mlong-double</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35294. <tr><td></td><td valign="top"><a href="#index-_002dmlong_002ddouble-1">&lsquo;<samp>-mlong-double</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
  35295. <tr><td></td><td valign="top"><a href="#index-_002dmm9s12x">&lsquo;<samp>-mm9s12x</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35296. <tr><td></td><td valign="top"><a href="#index-_002dmm9s12xg">&lsquo;<samp>-mm9s12xg</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35297. <tr><td></td><td valign="top"><a href="#index-_002dmmcu_003d-command_002dline-option_002c-AVR"><code>-mmcu=</code> command-line option, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
  35298. <tr><td></td><td valign="top"><a href="#index-_002dmmfpt">-mmfpt</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35299. <tr><td></td><td valign="top"><a href="#index-_002dmmicrocode">-mmicrocode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35300. <tr><td></td><td valign="top"><a href="#index-_002dmmnemonic_003d-option_002c-i386">&lsquo;<samp>-mmnemonic=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35301. <tr><td></td><td valign="top"><a href="#index-_002dmmnemonic_003d-option_002c-x86_002d64">&lsquo;<samp>-mmnemonic=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35302. <tr><td></td><td valign="top"><a href="#index-_002dmmultiply_002denabled-command_002dline-option_002c-LM32"><code>-mmultiply-enabled</code> command-line option, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
  35303. <tr><td></td><td valign="top"><a href="#index-_002dmmutiproc">-mmutiproc</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35304. <tr><td></td><td valign="top"><a href="#index-_002dmmxps">-mmxps</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35305. <tr><td></td><td valign="top"><a href="#index-_002dmnaked_002dreg-option_002c-i386">&lsquo;<samp>-mnaked-reg</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35306. <tr><td></td><td valign="top"><a href="#index-_002dmnaked_002dreg-option_002c-x86_002d64">&lsquo;<samp>-mnaked-reg</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35307. <tr><td></td><td valign="top"><a href="#index-_002dmnan_003d-command_002dline-option_002c-MIPS"><samp>-mnan=</samp> command-line option, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  35308. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dallow_002dstring_002dinsns">&lsquo;<samp>-mno-allow-string-insns</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35309. <tr><td></td><td valign="top"><a href="#index-_002dmno_002darch_002dattr-option_002c-RISC_002dV">&lsquo;<samp>-mno-arch-attr</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35310. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dcis">-mno-cis</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35311. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dcsm">-mno-csm</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35312. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dcsr_002dcheck-option_002c-RISC_002dV">&lsquo;<samp>-mno-csr-check</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35313. <tr><td></td><td valign="top"><a href="#index-_002dmno_002ddollar_002dline_002dseparator-command-line-option_002c-AVR"><code>-mno-dollar-line-separator</code> command line option, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
  35314. <tr><td></td><td valign="top"><a href="#index-_002dmno_002ddsbt-command_002dline-option_002c-TIC6X"><code>-mno-dsbt</code> command-line option, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
  35315. <tr><td></td><td valign="top"><a href="#index-_002dmno_002deis">-mno-eis</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35316. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dextensions">-mno-extensions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35317. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dfdpic-command_002dline-option_002c-Blackfin"><code>-mno-fdpic</code> command-line option, Blackfin</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Blackfin-Options">Blackfin Options</a></td></tr>
  35318. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dfis">-mno-fis</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35319. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dfp_002d11">-mno-fp-11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35320. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dfpp">-mno-fpp</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35321. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dfpu">-mno-fpu</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35322. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dkev11">-mno-kev11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35323. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dlimited_002deis">-mno-limited-eis</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35324. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dlink_002drelax-command_002dline-option_002c-AVR"><code>-mno-link-relax</code> command-line option, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
  35325. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dmfpt">-mno-mfpt</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35326. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dmicrocode">-mno-microcode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35327. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dmutiproc">-mno-mutiproc</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35328. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dmxps">-mno-mxps</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35329. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dpic">-mno-pic</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35330. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dpic-command_002dline-option_002c-TIC6X"><code>-mno-pic</code> command-line option, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
  35331. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dregnames-option_002c-s390">&lsquo;<samp>-mno-regnames</samp>&rsquo; option, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
  35332. <tr><td></td><td valign="top"><a href="#index-_002dmno_002drelax-command_002dline-options_002c-BPF"><samp>-mno-relax</samp> command-line options, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Options">BPF Options</a></td></tr>
  35333. <tr><td></td><td valign="top"><a href="#index-_002dmno_002drelax-option_002c-RISC_002dV">&lsquo;<samp>-mno-relax</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35334. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dskip_002dbug-command_002dline-option_002c-AVR"><code>-mno-skip-bug</code> command-line option, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
  35335. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dspl">-mno-spl</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35336. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dsym32">-mno-sym32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  35337. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dverbose_002derror-command_002dline-option_002c-AArch64"><code>-mno-verbose-error</code> command-line option, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
  35338. <tr><td></td><td valign="top"><a href="#index-_002dmno_002dwrap-command_002dline-option_002c-AVR"><code>-mno-wrap</code> command-line option, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
  35339. <tr><td></td><td valign="top"><a href="#index-_002dmnopic-command_002dline-option_002c-Blackfin"><code>-mnopic</code> command-line option, Blackfin</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Blackfin-Options">Blackfin Options</a></td></tr>
  35340. <tr><td></td><td valign="top"><a href="#index-_002dmnps400-command_002dline-option_002c-ARC"><code>-mnps400</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  35341. <tr><td></td><td valign="top"><a href="#index-_002dmomit_002dlock_002dprefix_003d-option_002c-i386">&lsquo;<samp>-momit-lock-prefix=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35342. <tr><td></td><td valign="top"><a href="#index-_002dmomit_002dlock_002dprefix_003d-option_002c-x86_002d64">&lsquo;<samp>-momit-lock-prefix=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35343. <tr><td></td><td valign="top"><a href="#index-_002dmpic">-mpic</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35344. <tr><td></td><td valign="top"><a href="#index-_002dmpic-command_002dline-option_002c-TIC6X"><code>-mpic</code> command-line option, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
  35345. <tr><td></td><td valign="top"><a href="#index-_002dmpid">&lsquo;<samp>-mpid</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35346. <tr><td></td><td valign="top"><a href="#index-_002dmpid_003d-command_002dline-option_002c-TIC6X"><code>-mpid=</code> command-line option, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
  35347. <tr><td></td><td valign="top"><a href="#index-_002dmpriv_002dspec_003dPRIVspec-option_002c-RISC_002dV">&lsquo;<samp>-mpriv-spec=PRIVspec</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35348. <tr><td></td><td valign="top"><a href="#index-_002dmreg_002dprefix_003dprefix-option_002c-reg_002dprefix">&lsquo;<samp>-mreg-prefix=<var>prefix</var></samp>&rsquo; option, reg-prefix</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Options">S12Z Options</a></td></tr>
  35349. <tr><td></td><td valign="top"><a href="#index-_002dmregnames-option_002c-s390">&lsquo;<samp>-mregnames</samp>&rsquo; option, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
  35350. <tr><td></td><td valign="top"><a href="#index-_002dmrelax-command_002dline-option_002c-ARC"><code>-mrelax</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  35351. <tr><td></td><td valign="top"><a href="#index-_002dmrelax-command_002dline-option_002c-V850"><code>-mrelax</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35352. <tr><td></td><td valign="top"><a href="#index-_002dmrelax-option_002c-RISC_002dV">&lsquo;<samp>-mrelax</samp>&rsquo; option, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dOptions">RISC-V-Options</a></td></tr>
  35353. <tr><td></td><td valign="top"><a href="#index-_002dmrelax_002drelocations_003d-option_002c-i386">&lsquo;<samp>-mrelax-relocations=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35354. <tr><td></td><td valign="top"><a href="#index-_002dmrelax_002drelocations_003d-option_002c-x86_002d64">&lsquo;<samp>-mrelax-relocations=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35355. <tr><td></td><td valign="top"><a href="#index-_002dmrh850_002dabi-command_002dline-option_002c-V850"><code>-mrh850-abi</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35356. <tr><td></td><td valign="top"><a href="#index-_002dmrmw-command_002dline-option_002c-AVR"><code>-mrmw</code> command-line option, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
  35357. <tr><td></td><td valign="top"><a href="#index-_002dmrx_002dabi">&lsquo;<samp>-mrx-abi</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35358. <tr><td></td><td valign="top"><a href="#index-_002dmshared-option_002c-i386">&lsquo;<samp>-mshared</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35359. <tr><td></td><td valign="top"><a href="#index-_002dmshared-option_002c-x86_002d64">&lsquo;<samp>-mshared</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35360. <tr><td></td><td valign="top"><a href="#index-_002dmshort">&lsquo;<samp>-mshort</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35361. <tr><td></td><td valign="top"><a href="#index-_002dmshort-1">&lsquo;<samp>-mshort</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
  35362. <tr><td></td><td valign="top"><a href="#index-_002dmshort_002ddouble">&lsquo;<samp>-mshort-double</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  35363. <tr><td></td><td valign="top"><a href="#index-_002dmshort_002ddouble-1">&lsquo;<samp>-mshort-double</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
  35364. <tr><td></td><td valign="top"><a href="#index-_002dmsign_002dextend_002denabled-command_002dline-option_002c-LM32"><code>-msign-extend-enabled</code> command-line option, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
  35365. <tr><td></td><td valign="top"><a href="#index-_002dmsmall_002ddata_002dlimit">&lsquo;<samp>-msmall-data-limit</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35366. <tr><td></td><td valign="top"><a href="#index-_002dmsoft_002dfloat-command_002dline-option_002c-V850"><code>-msoft-float</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35367. <tr><td></td><td valign="top"><a href="#index-_002dmspfp-command_002dline-option_002c-ARC"><code>-mspfp</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  35368. <tr><td></td><td valign="top"><a href="#index-_002dmspl">-mspl</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35369. <tr><td></td><td valign="top"><a href="#index-_002dmsse_002dcheck_003d-option_002c-i386">&lsquo;<samp>-msse-check=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35370. <tr><td></td><td valign="top"><a href="#index-_002dmsse_002dcheck_003d-option_002c-x86_002d64">&lsquo;<samp>-msse-check=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35371. <tr><td></td><td valign="top"><a href="#index-_002dmsse2avx-option_002c-i386">&lsquo;<samp>-msse2avx</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35372. <tr><td></td><td valign="top"><a href="#index-_002dmsse2avx-option_002c-x86_002d64">&lsquo;<samp>-msse2avx</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35373. <tr><td></td><td valign="top"><a href="#index-_002dmsym32">-msym32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  35374. <tr><td></td><td valign="top"><a href="#index-_002dmsyntax_003d-option_002c-i386">&lsquo;<samp>-msyntax=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35375. <tr><td></td><td valign="top"><a href="#index-_002dmsyntax_003d-option_002c-x86_002d64">&lsquo;<samp>-msyntax=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35376. <tr><td></td><td valign="top"><a href="#index-_002dmt11">-mt11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  35377. <tr><td></td><td valign="top"><a href="#index-_002dmthumb-command_002dline-option_002c-ARM"><code>-mthumb</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35378. <tr><td></td><td valign="top"><a href="#index-_002dmthumb_002dinterwork-command_002dline-option_002c-ARM"><code>-mthumb-interwork</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35379. <tr><td></td><td valign="top"><a href="#index-_002dmtune_003d-option_002c-i386">&lsquo;<samp>-mtune=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35380. <tr><td></td><td valign="top"><a href="#index-_002dmtune_003d-option_002c-x86_002d64">&lsquo;<samp>-mtune=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35381. <tr><td></td><td valign="top"><a href="#index-_002dmtune_003darch-command_002dline-option_002c-Visium"><code>-mtune=<var>arch</var></code> command-line option, Visium</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Visium-Options">Visium Options</a></td></tr>
  35382. <tr><td></td><td valign="top"><a href="#index-_002dmuse_002dconventional_002dsection_002dnames">&lsquo;<samp>-muse-conventional-section-names</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35383. <tr><td></td><td valign="top"><a href="#index-_002dmuse_002drenesas_002dsection_002dnames">&lsquo;<samp>-muse-renesas-section-names</samp>&rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  35384. <tr><td></td><td valign="top"><a href="#index-_002dmuse_002dunaligned_002dvector_002dmove-option_002c-i386">&lsquo;<samp>-muse-unaligned-vector-move</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35385. <tr><td></td><td valign="top"><a href="#index-_002dmuse_002dunaligned_002dvector_002dmove-option_002c-x86_002d64">&lsquo;<samp>-muse-unaligned-vector-move</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35386. <tr><td></td><td valign="top"><a href="#index-_002dmuser_002denabled-command_002dline-option_002c-LM32"><code>-muser-enabled</code> command-line option, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
  35387. <tr><td></td><td valign="top"><a href="#index-_002dmv850-command_002dline-option_002c-V850"><code>-mv850</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35388. <tr><td></td><td valign="top"><a href="#index-_002dmv850any-command_002dline-option_002c-V850"><code>-mv850any</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35389. <tr><td></td><td valign="top"><a href="#index-_002dmv850e-command_002dline-option_002c-V850"><code>-mv850e</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35390. <tr><td></td><td valign="top"><a href="#index-_002dmv850e1-command_002dline-option_002c-V850"><code>-mv850e1</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35391. <tr><td></td><td valign="top"><a href="#index-_002dmv850e2-command_002dline-option_002c-V850"><code>-mv850e2</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35392. <tr><td></td><td valign="top"><a href="#index-_002dmv850e2v3-command_002dline-option_002c-V850"><code>-mv850e2v3</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35393. <tr><td></td><td valign="top"><a href="#index-_002dmv850e2v4-command_002dline-option_002c-V850"><code>-mv850e2v4</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35394. <tr><td></td><td valign="top"><a href="#index-_002dmv850e3v5-command_002dline-option_002c-V850"><code>-mv850e3v5</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35395. <tr><td></td><td valign="top"><a href="#index-_002dmverbose_002derror-command_002dline-option_002c-AArch64"><code>-mverbose-error</code> command-line option, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
  35396. <tr><td></td><td valign="top"><a href="#index-_002dmvexwig_003d-option_002c-i386">&lsquo;<samp>-mvexwig=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35397. <tr><td></td><td valign="top"><a href="#index-_002dmvexwig_003d-option_002c-x86_002d64">&lsquo;<samp>-mvexwig=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35398. <tr><td></td><td valign="top"><a href="#index-_002dmvxworks_002dpic-option_002c-MIPS"><samp>-mvxworks-pic</samp> option, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  35399. <tr><td></td><td valign="top"><a href="#index-_002dmwarn_002dareg_002dzero-option_002c-s390">&lsquo;<samp>-mwarn-areg-zero</samp>&rsquo; option, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
  35400. <tr><td></td><td valign="top"><a href="#index-_002dmwarn_002ddeprecated-command_002dline-option_002c-ARM"><code>-mwarn-deprecated</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35401. <tr><td></td><td valign="top"><a href="#index-_002dmwarn_002dsyms-command_002dline-option_002c-ARM"><code>-mwarn-syms</code> command-line option, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35402. <tr><td></td><td valign="top"><a href="#index-_002dmx86_002dused_002dnote_003d-option_002c-i386">&lsquo;<samp>-mx86-used-note=</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35403. <tr><td></td><td valign="top"><a href="#index-_002dmx86_002dused_002dnote_003d-option_002c-x86_002d64">&lsquo;<samp>-mx86-used-note=</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35404. <tr><td></td><td valign="top"><a href="#index-_002dmzarch-option_002c-s390">&lsquo;<samp>-mzarch</samp>&rsquo; option, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
  35405. <tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005d68851-command_002dline-option_002c-M680x0">&lsquo;<samp>-m[no-]68851</samp>&rsquo; command-line option, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35406. <tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005d68881-command_002dline-option_002c-M680x0">&lsquo;<samp>-m[no-]68881</samp>&rsquo; command-line option, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35407. <tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005ddiv-command_002dline-option_002c-M680x0">&lsquo;<samp>-m[no-]div</samp>&rsquo; command-line option, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35408. <tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005demac-command_002dline-option_002c-M680x0">&lsquo;<samp>-m[no-]emac</samp>&rsquo; command-line option, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35409. <tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005dfloat-command_002dline-option_002c-M680x0">&lsquo;<samp>-m[no-]float</samp>&rsquo; command-line option, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35410. <tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005dmac-command_002dline-option_002c-M680x0">&lsquo;<samp>-m[no-]mac</samp>&rsquo; command-line option, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35411. <tr><td></td><td valign="top"><a href="#index-_002dm_005bno_002d_005dusp-command_002dline-option_002c-M680x0">&lsquo;<samp>-m[no-]usp</samp>&rsquo; command-line option, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35412. <tr><td></td><td valign="top"><a href="#index-_002dN-command_002dline-option_002c-CRIS"><samp>-N</samp> command-line option, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  35413. <tr><td></td><td valign="top"><a href="#index-_002dnIp-option_002c-M32RX">&lsquo;<samp>-nIp</samp>&rsquo; option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35414. <tr><td></td><td valign="top"><a href="#index-_002dno_002dbitinst_002c-M32R2">&lsquo;<samp>-no-bitinst</samp>&rsquo;, M32R2</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35415. <tr><td></td><td valign="top"><a href="#index-_002dno_002dignore_002dparallel_002dconflicts-option_002c-M32RX">&lsquo;<samp>-no-ignore-parallel-conflicts</samp>&rsquo; option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35416. <tr><td></td><td valign="top"><a href="#index-_002dno_002dmdebug-command_002dline-option_002c-Alpha"><code>-no-mdebug</code> command-line option, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  35417. <tr><td></td><td valign="top"><a href="#index-_002dno_002dparallel-option_002c-M32RX"><code>-no-parallel</code> option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35418. <tr><td></td><td valign="top"><a href="#index-_002dno_002dwarn_002dexplicit_002dparallel_002dconflicts-option_002c-M32RX">&lsquo;<samp>-no-warn-explicit-parallel-conflicts</samp>&rsquo; option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35419. <tr><td></td><td valign="top"><a href="#index-_002dno_002dwarn_002dunmatched_002dhigh-option_002c-M32R">&lsquo;<samp>-no-warn-unmatched-high</samp>&rsquo; option, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35420. <tr><td></td><td valign="top"><a href="#index-_002dnocpp-ignored-_0028MIPS_0029"><code>-nocpp</code> ignored (MIPS)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  35421. <tr><td></td><td valign="top"><a href="#index-_002dnoreplace-command_002dline-option_002c-Alpha"><code>-noreplace</code> command-line option, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  35422. <tr><td></td><td valign="top"><a href="#index-_002do"><code>-o</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#o">o</a></td></tr>
  35423. <tr><td></td><td valign="top"><a href="#index-_002dO-option_002c-i386">&lsquo;<samp>-O</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35424. <tr><td></td><td valign="top"><a href="#index-_002dO-option_002c-M32RX"><code>-O</code> option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35425. <tr><td></td><td valign="top"><a href="#index-_002dO-option_002c-x86_002d64">&lsquo;<samp>-O</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35426. <tr><td></td><td valign="top"><a href="#index-_002dO0-option_002c-i386">&lsquo;<samp>-O0</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35427. <tr><td></td><td valign="top"><a href="#index-_002dO0-option_002c-x86_002d64">&lsquo;<samp>-O0</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35428. <tr><td></td><td valign="top"><a href="#index-_002dO1-option_002c-i386">&lsquo;<samp>-O1</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35429. <tr><td></td><td valign="top"><a href="#index-_002dO1-option_002c-x86_002d64">&lsquo;<samp>-O1</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35430. <tr><td></td><td valign="top"><a href="#index-_002dO2-option_002c-i386">&lsquo;<samp>-O2</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35431. <tr><td></td><td valign="top"><a href="#index-_002dO2-option_002c-x86_002d64">&lsquo;<samp>-O2</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35432. <tr><td></td><td valign="top"><a href="#index-_002dOs-option_002c-i386">&lsquo;<samp>-Os</samp>&rsquo; option, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35433. <tr><td></td><td valign="top"><a href="#index-_002dOs-option_002c-x86_002d64">&lsquo;<samp>-Os</samp>&rsquo; option, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  35434. <tr><td></td><td valign="top"><a href="#index-_002dparallel-option_002c-M32RX"><code>-parallel</code> option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35435. <tr><td></td><td valign="top"><a href="#index-_002dR"><code>-R</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#R">R</a></td></tr>
  35436. <tr><td></td><td valign="top"><a href="#index-_002drelax-command_002dline-option_002c-Alpha"><code>-relax</code> command-line option, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  35437. <tr><td></td><td valign="top"><a href="#index-_002dreplace-command_002dline-option_002c-Alpha"><code>-replace</code> command-line option, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  35438. <tr><td></td><td valign="top"><a href="#index-_002dS_002c-ignored-on-VAX"><code>-S</code>, ignored on VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  35439. <tr><td></td><td valign="top"><a href="#index-_002dsdcc-command_002dline-option_002c-Z80"><code>-sdcc</code> command-line option, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
  35440. <tr><td></td><td valign="top"><a href="#index-_002dT_002c-ignored-on-VAX"><code>-T</code>, ignored on VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  35441. <tr><td></td><td valign="top"><a href="#index-_002dt_002c-ignored-on-VAX"><code>-t</code>, ignored on VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  35442. <tr><td></td><td valign="top"><a href="#index-_002dv"><code>-v</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#v">v</a></td></tr>
  35443. <tr><td></td><td valign="top"><a href="#index-_002dV_002c-redundant-on-VAX"><code>-V</code>, redundant on VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  35444. <tr><td></td><td valign="top"><a href="#index-_002dversion"><code>-version</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#v">v</a></td></tr>
  35445. <tr><td></td><td valign="top"><a href="#index-_002dW"><code>-W</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#W">W</a></td></tr>
  35446. <tr><td></td><td valign="top"><a href="#index-_002dwarn_002dexplicit_002dparallel_002dconflicts-option_002c-M32RX">&lsquo;<samp>-warn-explicit-parallel-conflicts</samp>&rsquo; option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35447. <tr><td></td><td valign="top"><a href="#index-_002dwarn_002dunmatched_002dhigh-option_002c-M32R">&lsquo;<samp>-warn-unmatched-high</samp>&rsquo; option, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35448. <tr><td></td><td valign="top"><a href="#index-_002dWnp-option_002c-M32RX">&lsquo;<samp>-Wnp</samp>&rsquo; option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35449. <tr><td></td><td valign="top"><a href="#index-_002dWnuh-option_002c-M32RX">&lsquo;<samp>-Wnuh</samp>&rsquo; option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35450. <tr><td></td><td valign="top"><a href="#index-_002dWp-option_002c-M32RX">&lsquo;<samp>-Wp</samp>&rsquo; option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35451. <tr><td></td><td valign="top"><a href="#index-_002dwsigned_005foverflow-command_002dline-option_002c-V850"><code>-wsigned_overflow</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35452. <tr><td></td><td valign="top"><a href="#index-_002dWuh-option_002c-M32RX">&lsquo;<samp>-Wuh</samp>&rsquo; option, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35453. <tr><td></td><td valign="top"><a href="#index-_002dwunsigned_005foverflow-command_002dline-option_002c-V850"><code>-wunsigned_overflow</code> command-line option, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35454. <tr><td></td><td valign="top"><a href="#index-_002dx-command_002dline-option_002c-MMIX">&lsquo;<samp>-x</samp>&rsquo; command-line option, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  35455. <tr><td></td><td valign="top"><a href="#index-_002dz8001-command_002dline-option_002c-Z8000"><code>-z8001</code> command-line option, Z8000</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Options">Z8000 Options</a></td></tr>
  35456. <tr><td></td><td valign="top"><a href="#index-_002dz8002-command_002dline-option_002c-Z8000"><code>-z8002</code> command-line option, Z8000</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Options">Z8000 Options</a></td></tr>
  35457. <tr><td colspan="4"> <hr></td></tr>
  35458. <tr><th id="AS-Index_cp_symbol-6">.</th><td></td><td></td></tr>
  35459. <tr><td></td><td valign="top"><a href="#index-_002e-_0028symbol_0029"><code>.</code> (symbol)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Dot">Dot</a></td></tr>
  35460. <tr><td></td><td valign="top"><a href="#index-_002ealign-directive_002c-ARM"><code>.align</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35461. <tr><td></td><td valign="top"><a href="#index-_002ealign-directive_002c-KVX"><code>.align</code> directive, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Directives">KVX Directives</a></td></tr>
  35462. <tr><td></td><td valign="top"><a href="#index-_002ealign-directive_002c-TILE_002dGx"><code>.align</code> directive, TILE-Gx</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Directives">TILE-Gx Directives</a></td></tr>
  35463. <tr><td></td><td valign="top"><a href="#index-_002ealign-directive_002c-TILEPro"><code>.align</code> directive, TILEPro</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Directives">TILEPro Directives</a></td></tr>
  35464. <tr><td></td><td valign="top"><a href="#index-_002eallow_005fsuspicious_005fbundles-directive_002c-TILE_002dGx"><code>.allow_suspicious_bundles</code> directive, TILE-Gx</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Directives">TILE-Gx Directives</a></td></tr>
  35465. <tr><td></td><td valign="top"><a href="#index-_002eallow_005fsuspicious_005fbundles-directive_002c-TILEPro"><code>.allow_suspicious_bundles</code> directive, TILEPro</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Directives">TILEPro Directives</a></td></tr>
  35466. <tr><td></td><td valign="top"><a href="#index-_002earch-directive_002c-AArch64"><code>.arch</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35467. <tr><td></td><td valign="top"><a href="#index-_002earch-directive_002c-ARM"><code>.arch</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35468. <tr><td></td><td valign="top"><a href="#index-_002earch-directive_002c-TIC6X"><code>.arch</code> directive, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
  35469. <tr><td></td><td valign="top"><a href="#index-_002earch_005fextension-directive_002c-AArch64"><code>.arch_extension</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35470. <tr><td></td><td valign="top"><a href="#index-_002earch_005fextension-directive_002c-ARM"><code>.arch_extension</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35471. <tr><td></td><td valign="top"><a href="#index-_002earc_005fattribute-directive_002c-ARC"><code>.arc_attribute</code> directive, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
  35472. <tr><td></td><td valign="top"><a href="#index-_002earm-directive_002c-ARM"><code>.arm</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35473. <tr><td></td><td valign="top"><a href="#index-_002eassume-directive_002c-Z80"><code>.assume</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  35474. <tr><td></td><td valign="top"><a href="#index-_002eattribute-directive_002c-RISC_002dV"><code>.attribute</code> directive, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
  35475. <tr><td></td><td valign="top"><a href="#index-_002ebig-directive_002c-M32RX"><code>.big</code> directive, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
  35476. <tr><td></td><td valign="top"><a href="#index-_002ec6xabi_005fattribute-directive_002c-TIC6X"><code>.c6xabi_attribute</code> directive, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
  35477. <tr><td></td><td valign="top"><a href="#index-_002ecantunwind-directive_002c-ARM"><code>.cantunwind</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35478. <tr><td></td><td valign="top"><a href="#index-_002ecantunwind-directive_002c-TIC6X"><code>.cantunwind</code> directive, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
  35479. <tr><td></td><td valign="top"><a href="#index-_002ecfi_005fb_005fkey_005fframe-directive_002c-AArch64"><code>.cfi_b_key_frame</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35480. <tr><td></td><td valign="top"><a href="#index-_002ecode-directive_002c-ARM"><code>.code</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35481. <tr><td></td><td valign="top"><a href="#index-_002ecpu-directive_002c-AArch64"><code>.cpu</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35482. <tr><td></td><td valign="top"><a href="#index-_002ecpu-directive_002c-ARM"><code>.cpu</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35483. <tr><td></td><td valign="top"><a href="#index-_002edn-and-_002eqn-directives_002c-ARM"><code>.dn</code> and <code>.qn</code> directives, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35484. <tr><td></td><td valign="top"><a href="#index-_002edword-directive_002c-AArch64"><code>.dword</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35485. <tr><td></td><td valign="top"><a href="#index-_002edword-directive_002c-KVX"><code>.dword</code> directive, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Directives">KVX Directives</a></td></tr>
  35486. <tr><td></td><td valign="top"><a href="#index-_002eeabi_005fattribute-directive_002c-ARM"><code>.eabi_attribute</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35487. <tr><td></td><td valign="top"><a href="#index-_002eehtype-directive_002c-TIC6X"><code>.ehtype</code> directive, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
  35488. <tr><td></td><td valign="top"><a href="#index-_002eendp-directive_002c-KVX"><code>.endp</code> directive, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Directives">KVX Directives</a></td></tr>
  35489. <tr><td></td><td valign="top"><a href="#index-_002eendp-directive_002c-TIC6X"><code>.endp</code> directive, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
  35490. <tr><td></td><td valign="top"><a href="#index-_002eeven-directive_002c-AArch64"><code>.even</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35491. <tr><td></td><td valign="top"><a href="#index-_002eeven-directive_002c-ARM"><code>.even</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35492. <tr><td></td><td valign="top"><a href="#index-_002eextend-directive_002c-ARM"><code>.extend</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35493. <tr><td></td><td valign="top"><a href="#index-_002efile-directive_002c-KVX"><code>.file</code> directive, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Directives">KVX Directives</a></td></tr>
  35494. <tr><td></td><td valign="top"><a href="#index-_002efloat16-directive_002c-AArch64"><code>.float16</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35495. <tr><td></td><td valign="top"><a href="#index-_002efloat16-directive_002c-ARM"><code>.float16</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35496. <tr><td></td><td valign="top"><a href="#index-_002efloat16_005fformat-directive_002c-ARM"><code>.float16_format</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35497. <tr><td></td><td valign="top"><a href="#index-_002efnend-directive_002c-ARM"><code>.fnend</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35498. <tr><td></td><td valign="top"><a href="#index-_002efnstart-directive_002c-ARM"><code>.fnstart</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35499. <tr><td></td><td valign="top"><a href="#index-_002eforce_005fthumb-directive_002c-ARM"><code>.force_thumb</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35500. <tr><td></td><td valign="top"><a href="#index-_002efpu-directive_002c-ARM"><code>.fpu</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35501. <tr><td></td><td valign="top"><a href="#index-_002eglobal"><code><code>.global</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-insn">MIPS insn</a></td></tr>
  35502. <tr><td></td><td valign="top"><a href="#index-_002egnu_005fattribute-4_002c-n-directive_002c-MIPS"><code>.gnu_attribute 4, <var>n</var></code> directive, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-FP-ABI-History">MIPS FP ABI History</a></td></tr>
  35503. <tr><td></td><td valign="top"><a href="#index-_002egnu_005fattribute-Tag_005fGNU_005fMIPS_005fABI_005fFP_002c-n-directive_002c-MIPS"><code>.gnu_attribute Tag_GNU_MIPS_ABI_FP, <var>n</var></code> directive, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-FP-ABI-History">MIPS FP ABI History</a></td></tr>
  35504. <tr><td></td><td valign="top"><a href="#index-_002ehandlerdata-directive_002c-ARM"><code>.handlerdata</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35505. <tr><td></td><td valign="top"><a href="#index-_002ehandlerdata-directive_002c-TIC6X"><code>.handlerdata</code> directive, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
  35506. <tr><td></td><td valign="top"><a href="#index-_002einsn"><code><code>.insn</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-insn">MIPS insn</a></td></tr>
  35507. <tr><td></td><td valign="top"><a href="#index-_002einsn-directive_002c-s390"><code>.insn</code> directive, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
  35508. <tr><td></td><td valign="top"><a href="#index-_002einst-directive_002c-AArch64"><code>.inst</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35509. <tr><td></td><td valign="top"><a href="#index-_002einst-directive_002c-ARM"><code>.inst</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35510. <tr><td></td><td valign="top"><a href="#index-_002eldouble-directive_002c-ARM"><code>.ldouble</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35511. <tr><td></td><td valign="top"><a href="#index-_002elittle-directive_002c-M32RX"><code>.little</code> directive, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
  35512. <tr><td></td><td valign="top"><a href="#index-_002eloc-directive_002c-KVX"><code>.loc</code> directive, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Directives">KVX Directives</a></td></tr>
  35513. <tr><td></td><td valign="top"><a href="#index-_002elong-directive_002c-s390"><code>.long</code> directive, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
  35514. <tr><td></td><td valign="top"><a href="#index-_002eltorg-directive_002c-AArch64"><code>.ltorg</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35515. <tr><td></td><td valign="top"><a href="#index-_002eltorg-directive_002c-ARM"><code>.ltorg</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35516. <tr><td></td><td valign="top"><a href="#index-_002eltorg-directive_002c-s390"><code>.ltorg</code> directive, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
  35517. <tr><td></td><td valign="top"><a href="#index-_002em32r-directive_002c-M32R"><code>.m32r</code> directive, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
  35518. <tr><td></td><td valign="top"><a href="#index-_002em32r2-directive_002c-M32R2"><code>.m32r2</code> directive, M32R2</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
  35519. <tr><td></td><td valign="top"><a href="#index-_002em32rx-directive_002c-M32RX"><code>.m32rx</code> directive, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
  35520. <tr><td></td><td valign="top"><a href="#index-_002emachine-directive_002c-s390"><code>.machine</code> directive, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
  35521. <tr><td></td><td valign="top"><a href="#index-_002emachinemode-directive_002c-s390"><code>.machinemode</code> directive, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
  35522. <tr><td></td><td valign="top"><a href="#index-_002emodule"><code><code>.module</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-assembly-options">MIPS assembly options</a></td></tr>
  35523. <tr><td></td><td valign="top"><a href="#index-_002emodule-fp_003dnn-directive_002c-MIPS"><code>.module fp=<var>nn</var></code> directive, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-FP-ABI-Selection">MIPS FP ABI Selection</a></td></tr>
  35524. <tr><td></td><td valign="top"><a href="#index-_002emovsp-directive_002c-ARM"><code>.movsp</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35525. <tr><td></td><td valign="top"><a href="#index-_002enan-directive_002c-MIPS"><code>.nan</code> directive, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-NaN-Encodings">MIPS NaN Encodings</a></td></tr>
  35526. <tr><td></td><td valign="top"><a href="#index-_002enocmp-directive_002c-TIC6X"><code>.nocmp</code> directive, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
  35527. <tr><td></td><td valign="top"><a href="#index-_002eno_005fpointers-directive_002c-XStormy16"><code>.no_pointers</code> directive, XStormy16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16-Directives">XStormy16 Directives</a></td></tr>
  35528. <tr><td></td><td valign="top"><a href="#index-_002eo"><code>.o</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Object">Object</a></td></tr>
  35529. <tr><td></td><td valign="top"><a href="#index-_002eobject_005farch-directive_002c-ARM"><code>.object_arch</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35530. <tr><td></td><td valign="top"><a href="#index-_002epacked-directive_002c-ARM"><code>.packed</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35531. <tr><td></td><td valign="top"><a href="#index-_002epacspval-directive_002c-ARM"><code>.pacspval</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35532. <tr><td></td><td valign="top"><a href="#index-_002epad-directive_002c-ARM"><code>.pad</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35533. <tr><td></td><td valign="top"><a href="#index-_002eparam-on-HPPA"><code>.param</code> on HPPA</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HPPA-Directives">HPPA Directives</a></td></tr>
  35534. <tr><td></td><td valign="top"><a href="#index-_002epersonality-directive_002c-ARM"><code>.personality</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35535. <tr><td></td><td valign="top"><a href="#index-_002epersonality-directive_002c-TIC6X"><code>.personality</code> directive, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
  35536. <tr><td></td><td valign="top"><a href="#index-_002epersonalityindex-directive_002c-ARM"><code>.personalityindex</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35537. <tr><td></td><td valign="top"><a href="#index-_002epersonalityindex-directive_002c-TIC6X"><code>.personalityindex</code> directive, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
  35538. <tr><td></td><td valign="top"><a href="#index-_002epool-directive_002c-AArch64"><code>.pool</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35539. <tr><td></td><td valign="top"><a href="#index-_002epool-directive_002c-ARM"><code>.pool</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35540. <tr><td></td><td valign="top"><a href="#index-_002eproc-directive_002c-KVX"><code>.proc</code> directive, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Directives">KVX Directives</a></td></tr>
  35541. <tr><td></td><td valign="top"><a href="#index-_002equad-directive_002c-s390"><code>.quad</code> directive, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
  35542. <tr><td></td><td valign="top"><a href="#index-_002ereq-directive_002c-AArch64"><code>.req</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35543. <tr><td></td><td valign="top"><a href="#index-_002ereq-directive_002c-ARM"><code>.req</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35544. <tr><td></td><td valign="top"><a href="#index-_002erequire_005fcanonical_005freg_005fnames-directive_002c-TILE_002dGx"><code>.require_canonical_reg_names</code> directive, TILE-Gx</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Directives">TILE-Gx Directives</a></td></tr>
  35545. <tr><td></td><td valign="top"><a href="#index-_002erequire_005fcanonical_005freg_005fnames-directive_002c-TILEPro"><code>.require_canonical_reg_names</code> directive, TILEPro</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Directives">TILEPro Directives</a></td></tr>
  35546. <tr><td></td><td valign="top"><a href="#index-_002esave-directive_002c-ARM"><code>.save</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35547. <tr><td></td><td valign="top"><a href="#index-_002escomm-directive_002c-TIC6X"><code>.scomm</code> directive, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
  35548. <tr><td></td><td valign="top"><a href="#index-_002esecrel32-directive_002c-ARM"><code>.secrel32</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35549. <tr><td></td><td valign="top"><a href="#index-_002eset-arch_003dcpu"><code><code>.set arch=<var>cpu</var></code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ISA">MIPS ISA</a></td></tr>
  35550. <tr><td></td><td valign="top"><a href="#index-_002eset-at"><code><code>.set at</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Macros">MIPS Macros</a></td></tr>
  35551. <tr><td></td><td valign="top"><a href="#index-_002eset-at_003dreg"><code><code>.set at=<var>reg</var></code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Macros">MIPS Macros</a></td></tr>
  35552. <tr><td></td><td valign="top"><a href="#index-_002eset-autoextend"><code><code>.set autoextend</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-autoextend">MIPS autoextend</a></td></tr>
  35553. <tr><td></td><td valign="top"><a href="#index-_002eset-crc"><code><code>.set crc</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35554. <tr><td></td><td valign="top"><a href="#index-_002eset-doublefloat"><code><code>.set doublefloat</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td></tr>
  35555. <tr><td></td><td valign="top"><a href="#index-_002eset-dsp"><code><code>.set dsp</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35556. <tr><td></td><td valign="top"><a href="#index-_002eset-dspr2"><code><code>.set dspr2</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35557. <tr><td></td><td valign="top"><a href="#index-_002eset-dspr3"><code><code>.set dspr3</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35558. <tr><td></td><td valign="top"><a href="#index-_002eset-ginv"><code><code>.set ginv</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35559. <tr><td></td><td valign="top"><a href="#index-_002eset-hardfloat"><code><code>.set hardfloat</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td></tr>
  35560. <tr><td></td><td valign="top"><a href="#index-_002eset-insn32"><code><code>.set insn32</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-assembly-options">MIPS assembly options</a></td></tr>
  35561. <tr><td></td><td valign="top"><a href="#index-_002eset-loongson_002dcam"><code><code>.set loongson-cam</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35562. <tr><td></td><td valign="top"><a href="#index-_002eset-loongson_002dext"><code><code>.set loongson-ext</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35563. <tr><td></td><td valign="top"><a href="#index-_002eset-loongson_002dext2"><code><code>.set loongson-ext2</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35564. <tr><td></td><td valign="top"><a href="#index-_002eset-loongson_002dmmi"><code><code>.set loongson-mmi</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35565. <tr><td></td><td valign="top"><a href="#index-_002eset-macro"><code><code>.set macro</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Macros">MIPS Macros</a></td></tr>
  35566. <tr><td></td><td valign="top"><a href="#index-_002eset-mcu"><code><code>.set mcu</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35567. <tr><td></td><td valign="top"><a href="#index-_002eset-mdmx"><code><code>.set mdmx</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35568. <tr><td></td><td valign="top"><a href="#index-_002eset-mips16e2"><code><code>.set mips16e2</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35569. <tr><td></td><td valign="top"><a href="#index-_002eset-mips3d"><code><code>.set mips3d</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35570. <tr><td></td><td valign="top"><a href="#index-_002eset-mipsn"><code><code>.set mips<var>n</var></code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ISA">MIPS ISA</a></td></tr>
  35571. <tr><td></td><td valign="top"><a href="#index-_002eset-msa"><code><code>.set msa</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35572. <tr><td></td><td valign="top"><a href="#index-_002eset-mt"><code><code>.set mt</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35573. <tr><td></td><td valign="top"><a href="#index-_002eset-noat"><code><code>.set noat</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Macros">MIPS Macros</a></td></tr>
  35574. <tr><td></td><td valign="top"><a href="#index-_002eset-noautoextend"><code><code>.set noautoextend</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-autoextend">MIPS autoextend</a></td></tr>
  35575. <tr><td></td><td valign="top"><a href="#index-_002eset-nocrc"><code><code>.set nocrc</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35576. <tr><td></td><td valign="top"><a href="#index-_002eset-nodsp"><code><code>.set nodsp</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35577. <tr><td></td><td valign="top"><a href="#index-_002eset-nodspr2"><code><code>.set nodspr2</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35578. <tr><td></td><td valign="top"><a href="#index-_002eset-nodspr3"><code><code>.set nodspr3</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35579. <tr><td></td><td valign="top"><a href="#index-_002eset-noginv"><code><code>.set noginv</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35580. <tr><td></td><td valign="top"><a href="#index-_002eset-noinsn32"><code><code>.set noinsn32</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-assembly-options">MIPS assembly options</a></td></tr>
  35581. <tr><td></td><td valign="top"><a href="#index-_002eset-noloongson_002dcam"><code><code>.set noloongson-cam</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35582. <tr><td></td><td valign="top"><a href="#index-_002eset-noloongson_002dext"><code><code>.set noloongson-ext</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35583. <tr><td></td><td valign="top"><a href="#index-_002eset-noloongson_002dext2"><code><code>.set noloongson-ext2</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35584. <tr><td></td><td valign="top"><a href="#index-_002eset-noloongson_002dmmi"><code><code>.set noloongson-mmi</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35585. <tr><td></td><td valign="top"><a href="#index-_002eset-nomacro"><code><code>.set nomacro</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Macros">MIPS Macros</a></td></tr>
  35586. <tr><td></td><td valign="top"><a href="#index-_002eset-nomcu"><code><code>.set nomcu</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35587. <tr><td></td><td valign="top"><a href="#index-_002eset-nomdmx"><code><code>.set nomdmx</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35588. <tr><td></td><td valign="top"><a href="#index-_002eset-nomips16e2"><code><code>.set nomips16e2</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35589. <tr><td></td><td valign="top"><a href="#index-_002eset-nomips3d"><code><code>.set nomips3d</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35590. <tr><td></td><td valign="top"><a href="#index-_002eset-nomsa"><code><code>.set nomsa</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35591. <tr><td></td><td valign="top"><a href="#index-_002eset-nomt"><code><code>.set nomt</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35592. <tr><td></td><td valign="top"><a href="#index-_002eset-nosmartmips"><code><code>.set nosmartmips</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35593. <tr><td></td><td valign="top"><a href="#index-_002eset-nosym32"><code><code>.set nosym32</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Symbol-Sizes">MIPS Symbol Sizes</a></td></tr>
  35594. <tr><td></td><td valign="top"><a href="#index-_002eset-novirt"><code><code>.set novirt</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35595. <tr><td></td><td valign="top"><a href="#index-_002eset-noxpa"><code><code>.set noxpa</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35596. <tr><td></td><td valign="top"><a href="#index-_002eset-pop"><code><code>.set pop</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Option-Stack">MIPS Option Stack</a></td></tr>
  35597. <tr><td></td><td valign="top"><a href="#index-_002eset-push"><code><code>.set push</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Option-Stack">MIPS Option Stack</a></td></tr>
  35598. <tr><td></td><td valign="top"><a href="#index-_002eset-singlefloat"><code><code>.set singlefloat</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td></tr>
  35599. <tr><td></td><td valign="top"><a href="#index-_002eset-smartmips"><code><code>.set smartmips</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35600. <tr><td></td><td valign="top"><a href="#index-_002eset-softfloat"><code><code>.set softfloat</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td></tr>
  35601. <tr><td></td><td valign="top"><a href="#index-_002eset-sym32"><code><code>.set sym32</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Symbol-Sizes">MIPS Symbol Sizes</a></td></tr>
  35602. <tr><td></td><td valign="top"><a href="#index-_002eset-virt"><code><code>.set virt</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35603. <tr><td></td><td valign="top"><a href="#index-_002eset-xpa"><code><code>.set xpa</code></code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  35604. <tr><td></td><td valign="top"><a href="#index-_002esetfp-directive_002c-ARM"><code>.setfp</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35605. <tr><td></td><td valign="top"><a href="#index-_002eshort-directive_002c-s390"><code>.short</code> directive, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Directives">s390 Directives</a></td></tr>
  35606. <tr><td></td><td valign="top"><a href="#index-_002esyntax-directive_002c-ARM"><code>.syntax</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35607. <tr><td></td><td valign="top"><a href="#index-_002ethumb-directive_002c-ARM"><code>.thumb</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35608. <tr><td></td><td valign="top"><a href="#index-_002ethumb_005ffunc-directive_002c-ARM"><code>.thumb_func</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35609. <tr><td></td><td valign="top"><a href="#index-_002ethumb_005fset-directive_002c-ARM"><code>.thumb_set</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35610. <tr><td></td><td valign="top"><a href="#index-_002etlsdescadd-directive_002c-AArch64"><code>.tlsdescadd</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35611. <tr><td></td><td valign="top"><a href="#index-_002etlsdesccall-directive_002c-AArch64"><code>.tlsdesccall</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35612. <tr><td></td><td valign="top"><a href="#index-_002etlsdescldr-directive_002c-AArch64"><code>.tlsdescldr</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35613. <tr><td></td><td valign="top"><a href="#index-_002etlsdescseq-directive_002c-ARM"><code>.tlsdescseq</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35614. <tr><td></td><td valign="top"><a href="#index-_002eunreq-directive_002c-AArch64"><code>.unreq</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35615. <tr><td></td><td valign="top"><a href="#index-_002eunreq-directive_002c-ARM"><code>.unreq</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35616. <tr><td></td><td valign="top"><a href="#index-_002eunwind_005fraw-directive_002c-ARM"><code>.unwind_raw</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35617. <tr><td></td><td valign="top"><a href="#index-_002ev850-directive_002c-V850"><code>.v850</code> directive, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
  35618. <tr><td></td><td valign="top"><a href="#index-_002ev850e-directive_002c-V850"><code>.v850e</code> directive, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
  35619. <tr><td></td><td valign="top"><a href="#index-_002ev850e1-directive_002c-V850"><code>.v850e1</code> directive, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
  35620. <tr><td></td><td valign="top"><a href="#index-_002ev850e2-directive_002c-V850"><code>.v850e2</code> directive, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
  35621. <tr><td></td><td valign="top"><a href="#index-_002ev850e2v3-directive_002c-V850"><code>.v850e2v3</code> directive, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
  35622. <tr><td></td><td valign="top"><a href="#index-_002ev850e2v4-directive_002c-V850"><code>.v850e2v4</code> directive, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
  35623. <tr><td></td><td valign="top"><a href="#index-_002ev850e3v5-directive_002c-V850"><code>.v850e3v5</code> directive, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
  35624. <tr><td></td><td valign="top"><a href="#index-_002evariant_005fpcs-directive_002c-AArch64"><code>.variant_pcs</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35625. <tr><td></td><td valign="top"><a href="#index-_002evsave-directive_002c-ARM"><code>.vsave</code> directive, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35626. <tr><td></td><td valign="top"><a href="#index-_002eword-directive_002c-KVX"><code>.word</code> directive, KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Directives">KVX Directives</a></td></tr>
  35627. <tr><td></td><td valign="top"><a href="#index-_002exword-directive_002c-AArch64"><code>.xword</code> directive, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35628. <tr><td></td><td valign="top"><a href="#index-_002ez8001"><code>.z8001</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  35629. <tr><td></td><td valign="top"><a href="#index-_002ez8002"><code>.z8002</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  35630. <tr><td colspan="4"> <hr></td></tr>
  35631. <tr><th id="AS-Index_cp_symbol-7">1</th><td></td><td></td></tr>
  35632. <tr><td></td><td valign="top"><a href="#index-16_002dbit-code_002c-i386">16-bit code, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
  35633. <tr><td></td><td valign="top"><a href="#index-16bit_005fpointers-directive_002c-XStormy16"><code>16bit_pointers</code> directive, XStormy16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16-Directives">XStormy16 Directives</a></td></tr>
  35634. <tr><td></td><td valign="top"><a href="#index-16byte-directive_002c-Nios-II"><code>16byte</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  35635. <tr><td></td><td valign="top"><a href="#index-16byte-directive_002c-PRU"><code>16byte</code> directive, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
  35636. <tr><td colspan="4"> <hr></td></tr>
  35637. <tr><th id="AS-Index_cp_symbol-8">2</th><td></td><td></td></tr>
  35638. <tr><td></td><td valign="top"><a href="#index-2byte-directive"><code>2byte</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#g_t2byte">2byte</a></td></tr>
  35639. <tr><td></td><td valign="top"><a href="#index-2byte-directive_002c-Nios-II"><code>2byte</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  35640. <tr><td></td><td valign="top"><a href="#index-2byte-directive_002c-PRU"><code>2byte</code> directive, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
  35641. <tr><td colspan="4"> <hr></td></tr>
  35642. <tr><th id="AS-Index_cp_symbol-9">3</th><td></td><td></td></tr>
  35643. <tr><td></td><td valign="top"><a href="#index-32bit_005fpointers-directive_002c-XStormy16"><code>32bit_pointers</code> directive, XStormy16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16-Directives">XStormy16 Directives</a></td></tr>
  35644. <tr><td></td><td valign="top"><a href="#index-3DNow_0021_002c-i386">3DNow!, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dSIMD">i386-SIMD</a></td></tr>
  35645. <tr><td></td><td valign="top"><a href="#index-3DNow_0021_002c-x86_002d64">3DNow!, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dSIMD">i386-SIMD</a></td></tr>
  35646. <tr><td colspan="4"> <hr></td></tr>
  35647. <tr><th id="AS-Index_cp_symbol-10">4</th><td></td><td></td></tr>
  35648. <tr><td></td><td valign="top"><a href="#index-430-support">430 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dDependent">MSP430-Dependent</a></td></tr>
  35649. <tr><td></td><td valign="top"><a href="#index-4byte-directive"><code>4byte</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#g_t4byte">4byte</a></td></tr>
  35650. <tr><td></td><td valign="top"><a href="#index-4byte-directive_002c-Nios-II"><code>4byte</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  35651. <tr><td></td><td valign="top"><a href="#index-4byte-directive_002c-PRU"><code>4byte</code> directive, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
  35652. <tr><td colspan="4"> <hr></td></tr>
  35653. <tr><th id="AS-Index_cp_symbol-11">8</th><td></td><td></td></tr>
  35654. <tr><td></td><td valign="top"><a href="#index-8byte-directive"><code>8byte</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#g_t8byte">8byte</a></td></tr>
  35655. <tr><td></td><td valign="top"><a href="#index-8byte-directive_002c-Nios-II"><code>8byte</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  35656. <tr><td></td><td valign="top"><a href="#index-8byte-directive_002c-PRU"><code>8byte</code> directive, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
  35657. <tr><td colspan="4"> <hr></td></tr>
  35658. <tr><th id="AS-Index_cp_symbol-12">:</th><td></td><td></td></tr>
  35659. <tr><td></td><td valign="top"><a href="#index-_003a-_0028label_0029"><code>:</code> (label)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Statements">Statements</a></td></tr>
  35660. <tr><td colspan="4"> <hr></td></tr>
  35661. <tr><th id="AS-Index_cp_symbol-13">@</th><td></td><td></td></tr>
  35662. <tr><td></td><td valign="top"><a href="#index-_0040gotoff_0028symbol_0029_002c-ARC-modifier">@gotoff(<var>symbol</var>), ARC modifier</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Modifiers">ARC Modifiers</a></td></tr>
  35663. <tr><td></td><td valign="top"><a href="#index-_0040gotpc_0028symbol_0029_002c-ARC-modifier">@gotpc(<var>symbol</var>), ARC modifier</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Modifiers">ARC Modifiers</a></td></tr>
  35664. <tr><td></td><td valign="top"><a href="#index-_0040hi-pseudo_002dop_002c-XStormy16"><code>@hi</code> pseudo-op, XStormy16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16-Opcodes">XStormy16 Opcodes</a></td></tr>
  35665. <tr><td></td><td valign="top"><a href="#index-_0040lo-pseudo_002dop_002c-XStormy16"><code>@lo</code> pseudo-op, XStormy16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16-Opcodes">XStormy16 Opcodes</a></td></tr>
  35666. <tr><td></td><td valign="top"><a href="#index-_0040pcl_0028symbol_0029_002c-ARC-modifier">@pcl(<var>symbol</var>), ARC modifier</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Modifiers">ARC Modifiers</a></td></tr>
  35667. <tr><td></td><td valign="top"><a href="#index-_0040plt_0028symbol_0029_002c-ARC-modifier">@plt(<var>symbol</var>), ARC modifier</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Modifiers">ARC Modifiers</a></td></tr>
  35668. <tr><td></td><td valign="top"><a href="#index-_0040sda_0028symbol_0029_002c-ARC-modifier">@sda(<var>symbol</var>), ARC modifier</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Modifiers">ARC Modifiers</a></td></tr>
  35669. <tr><td></td><td valign="top"><a href="#index-_0040word-modifier_002c-D10V">@word modifier, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dWord">D10V-Word</a></td></tr>
  35670. <tr><td colspan="4"> <hr></td></tr>
  35671. <tr><th id="AS-Index_cp_symbol-14">_</th><td></td><td></td></tr>
  35672. <tr><td></td><td valign="top"><a href="#index-_005f-opcode-prefix">_ opcode prefix</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Opcodes">Xtensa Opcodes</a></td></tr>
  35673. <tr><td></td><td valign="top"><a href="#index-_005f_005fDYNAMIC_005f_005f_002c-ARC-pre_002ddefined-symbol">__DYNAMIC__, ARC pre-defined symbol</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Symbols">ARC Symbols</a></td></tr>
  35674. <tr><td></td><td valign="top"><a href="#index-_005f_005fGLOBAL_005fOFFSET_005fTABLE_005f_005f_002c-ARC-pre_002ddefined-symbol">__GLOBAL_OFFSET_TABLE__, ARC pre-defined symbol</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Symbols">ARC Symbols</a></td></tr>
  35675. <tr><td colspan="4"> <hr></td></tr>
  35676. <tr><th id="AS-Index_cp_letter-A">A</th><td></td><td></td></tr>
  35677. <tr><td></td><td valign="top"><a href="#index-a_002eout"><code>a.out</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Object">Object</a></td></tr>
  35678. <tr><td></td><td valign="top"><a href="#index-a_002eout-symbol-attributes"><code>a.out</code> symbol attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#a_002eout-Symbols">a.out Symbols</a></td></tr>
  35679. <tr><td></td><td valign="top"><a href="#index-AArch64-floating-point-_0028IEEE_0029">AArch64 floating point (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Floating-Point">AArch64 Floating Point</a></td></tr>
  35680. <tr><td></td><td valign="top"><a href="#index-AArch64-immediate-character">AArch64 immediate character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
  35681. <tr><td></td><td valign="top"><a href="#index-AArch64-line-comment-character">AArch64 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
  35682. <tr><td></td><td valign="top"><a href="#index-AArch64-line-separator">AArch64 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
  35683. <tr><td></td><td valign="top"><a href="#index-AArch64-machine-directives">AArch64 machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  35684. <tr><td></td><td valign="top"><a href="#index-AArch64-machine-directives-1">AArch64 machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Directives">KVX Directives</a></td></tr>
  35685. <tr><td></td><td valign="top"><a href="#index-AArch64-opcodes">AArch64 opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Opcodes">AArch64 Opcodes</a></td></tr>
  35686. <tr><td></td><td valign="top"><a href="#index-AArch64-options-_0028none_0029">AArch64 options (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
  35687. <tr><td></td><td valign="top"><a href="#index-AArch64-register-names">AArch64 register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dRegs">AArch64-Regs</a></td></tr>
  35688. <tr><td></td><td valign="top"><a href="#index-AArch64-relocations">AArch64 relocations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dRelocations">AArch64-Relocations</a></td></tr>
  35689. <tr><td></td><td valign="top"><a href="#index-AArch64-support">AArch64 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dDependent">AArch64-Dependent</a></td></tr>
  35690. <tr><td></td><td valign="top"><a href="#index-abort-directive"><code>abort</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Abort">Abort</a></td></tr>
  35691. <tr><td></td><td valign="top"><a href="#index-ABORT-directive"><code>ABORT</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ABORT-_0028COFF_0029">ABORT (COFF)</a></td></tr>
  35692. <tr><td></td><td valign="top"><a href="#index-absolute-section">absolute section</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
  35693. <tr><td></td><td valign="top"><a href="#index-absolute_002dliterals-directive"><code>absolute-literals</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Absolute-Literals-Directive">Absolute Literals Directive</a></td></tr>
  35694. <tr><td></td><td valign="top"><a href="#index-ADDI-instructions_002c-relaxation"><code>ADDI</code> instructions, relaxation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  35695. <tr><td></td><td valign="top"><a href="#index-addition_002c-permitted-arguments">addition, permitted arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
  35696. <tr><td></td><td valign="top"><a href="#index-addresses">addresses</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Expressions">Expressions</a></td></tr>
  35697. <tr><td></td><td valign="top"><a href="#index-addresses_002c-format-of">addresses, format of</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Secs-Background">Secs Background</a></td></tr>
  35698. <tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-D10V">addressing modes, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dAddressing">D10V-Addressing</a></td></tr>
  35699. <tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-D30V">addressing modes, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dAddressing">D30V-Addressing</a></td></tr>
  35700. <tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-H8_002f300">addressing modes, H8/300</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300_002dAddressing">H8/300-Addressing</a></td></tr>
  35701. <tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-M680x0">addressing modes, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
  35702. <tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-M68HC11">addressing modes, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
  35703. <tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-S12Z">addressing modes, S12Z</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Addressing-Modes">S12Z Addressing Modes</a></td></tr>
  35704. <tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-SH">addressing modes, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH_002dAddressing">SH-Addressing</a></td></tr>
  35705. <tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-XGATE">addressing modes, XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
  35706. <tr><td></td><td valign="top"><a href="#index-addressing-modes_002c-Z8000">addressing modes, Z8000</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000_002dAddressing">Z8000-Addressing</a></td></tr>
  35707. <tr><td></td><td valign="top"><a href="#index-ADR-reg_002c_003clabel_003e-pseudo-op_002c-ARM"><code>ADR reg,&lt;label&gt;</code> pseudo op, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Opcodes">ARM Opcodes</a></td></tr>
  35708. <tr><td></td><td valign="top"><a href="#index-ADRL-reg_002c_003clabel_003e-pseudo-op_002c-ARM"><code>ADRL reg,&lt;label&gt;</code> pseudo op, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Opcodes">ARM Opcodes</a></td></tr>
  35709. <tr><td></td><td valign="top"><a href="#index-ADRP_002c-ADD_002c-LDR_002fSTR-group-relocations_002c-AArch64">ADRP, ADD, LDR/STR group relocations, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dRelocations">AArch64-Relocations</a></td></tr>
  35710. <tr><td></td><td valign="top"><a href="#index-advancing-location-counter">advancing location counter</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Org">Org</a></td></tr>
  35711. <tr><td></td><td valign="top"><a href="#index-align-directive"><code>align</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Align">Align</a></td></tr>
  35712. <tr><td></td><td valign="top"><a href="#index-align-directive-1"><code>align</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
  35713. <tr><td></td><td valign="top"><a href="#index-align-directive_002c-Nios-II"><code>align</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  35714. <tr><td></td><td valign="top"><a href="#index-align-directive_002c-OpenRISC"><code>align</code> directive, OpenRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
  35715. <tr><td></td><td valign="top"><a href="#index-align-directive_002c-PRU"><code>align</code> directive, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
  35716. <tr><td></td><td valign="top"><a href="#index-align-directive_002c-SPARC"><code>align</code> directive, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  35717. <tr><td></td><td valign="top"><a href="#index-align-directive_002c-TIC54X"><code>align</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  35718. <tr><td></td><td valign="top"><a href="#index-aligned-instruction-bundle">aligned instruction bundle</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
  35719. <tr><td></td><td valign="top"><a href="#index-alignment-for-NEON-instructions">alignment for NEON instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dNeon_002dAlignment">ARM-Neon-Alignment</a></td></tr>
  35720. <tr><td></td><td valign="top"><a href="#index-alignment-of-branch-targets">alignment of branch targets</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Automatic-Alignment">Xtensa Automatic Alignment</a></td></tr>
  35721. <tr><td></td><td valign="top"><a href="#index-alignment-of-LOOP-instructions">alignment of <code>LOOP</code> instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Automatic-Alignment">Xtensa Automatic Alignment</a></td></tr>
  35722. <tr><td></td><td valign="top"><a href="#index-Alpha-floating-point-_0028IEEE_0029">Alpha floating point (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Floating-Point">Alpha Floating Point</a></td></tr>
  35723. <tr><td></td><td valign="top"><a href="#index-Alpha-line-comment-character">Alpha line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha_002dChars">Alpha-Chars</a></td></tr>
  35724. <tr><td></td><td valign="top"><a href="#index-Alpha-line-separator">Alpha line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha_002dChars">Alpha-Chars</a></td></tr>
  35725. <tr><td></td><td valign="top"><a href="#index-Alpha-notes">Alpha notes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Notes">Alpha Notes</a></td></tr>
  35726. <tr><td></td><td valign="top"><a href="#index-Alpha-options">Alpha options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  35727. <tr><td></td><td valign="top"><a href="#index-Alpha-registers">Alpha registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha_002dRegs">Alpha-Regs</a></td></tr>
  35728. <tr><td></td><td valign="top"><a href="#index-Alpha-relocations">Alpha relocations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha_002dRelocs">Alpha-Relocs</a></td></tr>
  35729. <tr><td></td><td valign="top"><a href="#index-Alpha-support">Alpha support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha_002dDependent">Alpha-Dependent</a></td></tr>
  35730. <tr><td></td><td valign="top"><a href="#index-Alpha-Syntax">Alpha Syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  35731. <tr><td></td><td valign="top"><a href="#index-Alpha_002donly-directives">Alpha-only directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Directives">Alpha Directives</a></td></tr>
  35732. <tr><td></td><td valign="top"><a href="#index-Altera-Nios-II-support">Altera Nios II support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#NiosII_002dDependent">NiosII-Dependent</a></td></tr>
  35733. <tr><td></td><td valign="top"><a href="#index-altered-difference-tables">altered difference tables</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Word">Word</a></td></tr>
  35734. <tr><td></td><td valign="top"><a href="#index-alternate-syntax-for-the-680x0">alternate syntax for the 680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dMoto_002dSyntax">M68K-Moto-Syntax</a></td></tr>
  35735. <tr><td></td><td valign="top"><a href="#index-ARC-Branch-Target-Address">ARC Branch Target Address</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35736. <tr><td></td><td valign="top"><a href="#index-ARC-BTA-saved-on-exception-entry">ARC BTA saved on exception entry</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35737. <tr><td></td><td valign="top"><a href="#index-ARC-Build-configuration-for_003a-BTA-Registers">ARC Build configuration for: BTA Registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35738. <tr><td></td><td valign="top"><a href="#index-ARC-Build-configuration-for_003a-Core-Registers">ARC Build configuration for: Core Registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35739. <tr><td></td><td valign="top"><a href="#index-ARC-Build-configuration-for_003a-Interrupts">ARC Build configuration for: Interrupts</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35740. <tr><td></td><td valign="top"><a href="#index-ARC-Build-Configuration-Registers-Version">ARC Build Configuration Registers Version</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35741. <tr><td></td><td valign="top"><a href="#index-ARC-C-preprocessor-macro-separator">ARC C preprocessor macro separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
  35742. <tr><td></td><td valign="top"><a href="#index-ARC-core-general-registers">ARC core general registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35743. <tr><td></td><td valign="top"><a href="#index-ARC-DCCM-RAM-Configuration-Register">ARC DCCM RAM Configuration Register</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35744. <tr><td></td><td valign="top"><a href="#index-ARC-Exception-Cause-Register">ARC Exception Cause Register</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35745. <tr><td></td><td valign="top"><a href="#index-ARC-Exception-Return-Address">ARC Exception Return Address</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35746. <tr><td></td><td valign="top"><a href="#index-ARC-extension-core-registers">ARC extension core registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35747. <tr><td></td><td valign="top"><a href="#index-ARC-frame-pointer">ARC frame pointer</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35748. <tr><td></td><td valign="top"><a href="#index-ARC-global-pointer">ARC global pointer</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35749. <tr><td></td><td valign="top"><a href="#index-ARC-interrupt-link-register">ARC interrupt link register</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35750. <tr><td></td><td valign="top"><a href="#index-ARC-Interrupt-Vector-Base-address">ARC Interrupt Vector Base address</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35751. <tr><td></td><td valign="top"><a href="#index-ARC-level-1-interrupt-link-register">ARC level 1 interrupt link register</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35752. <tr><td></td><td valign="top"><a href="#index-ARC-level-2-interrupt-link-register">ARC level 2 interrupt link register</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35753. <tr><td></td><td valign="top"><a href="#index-ARC-line-comment-character">ARC line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
  35754. <tr><td></td><td valign="top"><a href="#index-ARC-line-separator">ARC line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
  35755. <tr><td></td><td valign="top"><a href="#index-ARC-link-register">ARC link register</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35756. <tr><td></td><td valign="top"><a href="#index-ARC-loop-counter">ARC loop counter</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35757. <tr><td></td><td valign="top"><a href="#index-ARC-machine-directives">ARC machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
  35758. <tr><td></td><td valign="top"><a href="#index-ARC-opcodes">ARC opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Opcodes">ARC Opcodes</a></td></tr>
  35759. <tr><td></td><td valign="top"><a href="#index-ARC-options">ARC options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  35760. <tr><td></td><td valign="top"><a href="#index-ARC-Processor-Identification-register">ARC Processor Identification register</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35761. <tr><td></td><td valign="top"><a href="#index-ARC-Program-Counter">ARC Program Counter</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35762. <tr><td></td><td valign="top"><a href="#index-ARC-register-name-prefix-character">ARC register name prefix character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
  35763. <tr><td></td><td valign="top"><a href="#index-ARC-register-names">ARC register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35764. <tr><td></td><td valign="top"><a href="#index-ARC-Saved-User-Stack-Pointer">ARC Saved User Stack Pointer</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35765. <tr><td></td><td valign="top"><a href="#index-ARC-stack-pointer">ARC stack pointer</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35766. <tr><td></td><td valign="top"><a href="#index-ARC-Status-register">ARC Status register</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35767. <tr><td></td><td valign="top"><a href="#index-ARC-STATUS32-saved-on-exception">ARC STATUS32 saved on exception</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35768. <tr><td></td><td valign="top"><a href="#index-ARC-Stored-STATUS32-register-on-entry-to-level-P0-interrupts">ARC Stored STATUS32 register on entry to level P0 interrupts</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35769. <tr><td></td><td valign="top"><a href="#index-ARC-support">ARC support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dDependent">ARC-Dependent</a></td></tr>
  35770. <tr><td></td><td valign="top"><a href="#index-ARC-symbol-prefix-character">ARC symbol prefix character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
  35771. <tr><td></td><td valign="top"><a href="#index-ARC-word-aligned-program-counter">ARC word aligned program counter</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35772. <tr><td></td><td valign="top"><a href="#index-arch-directive_002c-i386">arch directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dArch">i386-Arch</a></td></tr>
  35773. <tr><td></td><td valign="top"><a href="#index-arch-directive_002c-M680x0"><code>arch</code> directive, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
  35774. <tr><td></td><td valign="top"><a href="#index-arch-directive_002c-MSP-430"><code>arch</code> directive, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
  35775. <tr><td></td><td valign="top"><a href="#index-arch-directive_002c-x86_002d64">arch directive, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dArch">i386-Arch</a></td></tr>
  35776. <tr><td></td><td valign="top"><a href="#index-architecture-options_002c-IP2022">architecture options, IP2022</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
  35777. <tr><td></td><td valign="top"><a href="#index-architecture-options_002c-IP2K">architecture options, IP2K</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
  35778. <tr><td></td><td valign="top"><a href="#index-architecture-options_002c-M16C">architecture options, M16C</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
  35779. <tr><td></td><td valign="top"><a href="#index-architecture-options_002c-M32C">architecture options, M32C</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
  35780. <tr><td></td><td valign="top"><a href="#index-architecture-options_002c-M32R">architecture options, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35781. <tr><td></td><td valign="top"><a href="#index-architecture-options_002c-M32R2">architecture options, M32R2</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35782. <tr><td></td><td valign="top"><a href="#index-architecture-options_002c-M32RX">architecture options, M32RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  35783. <tr><td></td><td valign="top"><a href="#index-architecture-options_002c-M680x0">architecture options, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  35784. <tr><td></td><td valign="top"><a href="#index-Architecture-variant-option_002c-CRIS">Architecture variant option, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  35785. <tr><td></td><td valign="top"><a href="#index-architectures_002c-Meta">architectures, Meta</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta-Options">Meta Options</a></td></tr>
  35786. <tr><td></td><td valign="top"><a href="#index-architectures_002c-PowerPC">architectures, PowerPC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PowerPC_002dOpts">PowerPC-Opts</a></td></tr>
  35787. <tr><td></td><td valign="top"><a href="#index-architectures_002c-SCORE">architectures, SCORE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SCORE_002dOpts">SCORE-Opts</a></td></tr>
  35788. <tr><td></td><td valign="top"><a href="#index-architectures_002c-SPARC">architectures, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  35789. <tr><td></td><td valign="top"><a href="#index-arguments-for-addition">arguments for addition</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
  35790. <tr><td></td><td valign="top"><a href="#index-arguments-for-subtraction">arguments for subtraction</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
  35791. <tr><td></td><td valign="top"><a href="#index-arguments-in-expressions">arguments in expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Arguments">Arguments</a></td></tr>
  35792. <tr><td></td><td valign="top"><a href="#index-arithmetic-functions">arithmetic functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Operators">Operators</a></td></tr>
  35793. <tr><td></td><td valign="top"><a href="#index-arithmetic-operands">arithmetic operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Arguments">Arguments</a></td></tr>
  35794. <tr><td></td><td valign="top"><a href="#index-ARM-data-relocations">ARM data relocations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dRelocations">ARM-Relocations</a></td></tr>
  35795. <tr><td></td><td valign="top"><a href="#index-ARM-floating-point-_0028IEEE_0029">ARM floating point (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Floating-Point">ARM Floating Point</a></td></tr>
  35796. <tr><td></td><td valign="top"><a href="#index-ARM-identifiers">ARM identifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
  35797. <tr><td></td><td valign="top"><a href="#index-ARM-immediate-character">ARM immediate character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
  35798. <tr><td></td><td valign="top"><a href="#index-ARM-line-comment-character">ARM line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
  35799. <tr><td></td><td valign="top"><a href="#index-ARM-line-separator">ARM line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
  35800. <tr><td></td><td valign="top"><a href="#index-ARM-machine-directives">ARM machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  35801. <tr><td></td><td valign="top"><a href="#index-ARM-opcodes">ARM opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Opcodes">ARM Opcodes</a></td></tr>
  35802. <tr><td></td><td valign="top"><a href="#index-ARM-options-_0028none_0029">ARM options (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  35803. <tr><td></td><td valign="top"><a href="#index-ARM-register-names">ARM register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dRegs">ARM-Regs</a></td></tr>
  35804. <tr><td></td><td valign="top"><a href="#index-ARM-support">ARM support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dDependent">ARM-Dependent</a></td></tr>
  35805. <tr><td></td><td valign="top"><a href="#index-ascii-directive"><code>ascii</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ascii">Ascii</a></td></tr>
  35806. <tr><td></td><td valign="top"><a href="#index-asciz-directive"><code>asciz</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Asciz">Asciz</a></td></tr>
  35807. <tr><td></td><td valign="top"><a href="#index-asg-directive_002c-TIC54X"><code>asg</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  35808. <tr><td></td><td valign="top"><a href="#index-assembler-bugs_002c-reporting">assembler bugs, reporting</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bug-Reporting">Bug Reporting</a></td></tr>
  35809. <tr><td></td><td valign="top"><a href="#index-assembler-crash">assembler crash</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bug-Criteria">Bug Criteria</a></td></tr>
  35810. <tr><td></td><td valign="top"><a href="#index-assembler-directive-_002e3byte_002c-RX">assembler directive .3byte, RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dDirectives">RX-Directives</a></td></tr>
  35811. <tr><td></td><td valign="top"><a href="#index-assembler-directive-_002earch_002c-CRIS">assembler directive .arch, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  35812. <tr><td></td><td valign="top"><a href="#index-assembler-directive-_002edword_002c-CRIS">assembler directive .dword, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  35813. <tr><td></td><td valign="top"><a href="#index-assembler-directive-_002efar_002c-M68HC11">assembler directive .far, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  35814. <tr><td></td><td valign="top"><a href="#index-assembler-directive-_002efetchalign_002c-RX">assembler directive .fetchalign, RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dDirectives">RX-Directives</a></td></tr>
  35815. <tr><td></td><td valign="top"><a href="#index-assembler-directive-_002einterrupt_002c-M68HC11">assembler directive .interrupt, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  35816. <tr><td></td><td valign="top"><a href="#index-assembler-directive-_002emode_002c-M68HC11">assembler directive .mode, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  35817. <tr><td></td><td valign="top"><a href="#index-assembler-directive-_002erelax_002c-M68HC11">assembler directive .relax, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  35818. <tr><td></td><td valign="top"><a href="#index-assembler-directive-_002esyntax_002c-CRIS">assembler directive .syntax, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  35819. <tr><td></td><td valign="top"><a href="#index-assembler-directive-_002exrefb_002c-M68HC11">assembler directive .xrefb, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  35820. <tr><td></td><td valign="top"><a href="#index-assembler-directive-BSPEC_002c-MMIX">assembler directive BSPEC, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  35821. <tr><td></td><td valign="top"><a href="#index-assembler-directive-BYTE_002c-MMIX">assembler directive BYTE, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  35822. <tr><td></td><td valign="top"><a href="#index-assembler-directive-ESPEC_002c-MMIX">assembler directive ESPEC, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  35823. <tr><td></td><td valign="top"><a href="#index-assembler-directive-GREG_002c-MMIX">assembler directive GREG, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  35824. <tr><td></td><td valign="top"><a href="#index-assembler-directive-IS_002c-MMIX">assembler directive IS, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  35825. <tr><td></td><td valign="top"><a href="#index-assembler-directive-LOC_002c-MMIX">assembler directive LOC, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  35826. <tr><td></td><td valign="top"><a href="#index-assembler-directive-LOCAL_002c-MMIX">assembler directive LOCAL, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  35827. <tr><td></td><td valign="top"><a href="#index-assembler-directive-OCTA_002c-MMIX">assembler directive OCTA, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  35828. <tr><td></td><td valign="top"><a href="#index-assembler-directive-PREFIX_002c-MMIX">assembler directive PREFIX, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  35829. <tr><td></td><td valign="top"><a href="#index-assembler-directive-TETRA_002c-MMIX">assembler directive TETRA, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  35830. <tr><td></td><td valign="top"><a href="#index-assembler-directive-WYDE_002c-MMIX">assembler directive WYDE, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  35831. <tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-CRIS">assembler directives, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  35832. <tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-M68HC11">assembler directives, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  35833. <tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-M68HC12">assembler directives, M68HC12</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  35834. <tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-MMIX">assembler directives, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  35835. <tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-RL78">assembler directives, RL78</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RL78_002dDirectives">RL78-Directives</a></td></tr>
  35836. <tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-RX">assembler directives, RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dDirectives">RX-Directives</a></td></tr>
  35837. <tr><td></td><td valign="top"><a href="#index-assembler-directives_002c-XGATE">assembler directives, XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dDirectives">XGATE-Directives</a></td></tr>
  35838. <tr><td></td><td valign="top"><a href="#index-assembler-internal-logic-error">assembler internal logic error</a>:</td><td>&nbsp;</td><td valign="top"><a href="#As-Sections">As Sections</a></td></tr>
  35839. <tr><td></td><td valign="top"><a href="#index-assembler-version">assembler version</a>:</td><td>&nbsp;</td><td valign="top"><a href="#v">v</a></td></tr>
  35840. <tr><td></td><td valign="top"><a href="#index-assembler_002c-and-linker">assembler, and linker</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Secs-Background">Secs Background</a></td></tr>
  35841. <tr><td></td><td valign="top"><a href="#index-assembly-listings_002c-enabling">assembly listings, enabling</a>:</td><td>&nbsp;</td><td valign="top"><a href="#a">a</a></td></tr>
  35842. <tr><td></td><td valign="top"><a href="#index-assigning-values-to-symbols">assigning values to symbols</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Setting-Symbols">Setting Symbols</a></td></tr>
  35843. <tr><td></td><td valign="top"><a href="#index-assigning-values-to-symbols-1">assigning values to symbols</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Equ">Equ</a></td></tr>
  35844. <tr><td></td><td valign="top"><a href="#index-at-register_002c-MIPS"><code>at</code> register, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Macros">MIPS Macros</a></td></tr>
  35845. <tr><td></td><td valign="top"><a href="#index-attributes_002c-symbol">attributes, symbol</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Attributes">Symbol Attributes</a></td></tr>
  35846. <tr><td></td><td valign="top"><a href="#index-att_005fsyntax-pseudo-op_002c-i386">att_syntax pseudo op, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  35847. <tr><td></td><td valign="top"><a href="#index-att_005fsyntax-pseudo-op_002c-x86_002d64">att_syntax pseudo op, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  35848. <tr><td></td><td valign="top"><a href="#index-auxiliary-attributes_002c-COFF-symbols">auxiliary attributes, COFF symbols</a>:</td><td>&nbsp;</td><td valign="top"><a href="#COFF-Symbols">COFF Symbols</a></td></tr>
  35849. <tr><td></td><td valign="top"><a href="#index-auxiliary-symbol-information_002c-COFF">auxiliary symbol information, COFF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Dim">Dim</a></td></tr>
  35850. <tr><td></td><td valign="top"><a href="#index-AVR-line-comment-character">AVR line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR_002dChars">AVR-Chars</a></td></tr>
  35851. <tr><td></td><td valign="top"><a href="#index-AVR-line-separator">AVR line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR_002dChars">AVR-Chars</a></td></tr>
  35852. <tr><td></td><td valign="top"><a href="#index-AVR-modifiers">AVR modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR_002dModifiers">AVR-Modifiers</a></td></tr>
  35853. <tr><td></td><td valign="top"><a href="#index-AVR-opcode-summary">AVR opcode summary</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Opcodes">AVR Opcodes</a></td></tr>
  35854. <tr><td></td><td valign="top"><a href="#index-AVR-options-_0028none_0029">AVR options (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
  35855. <tr><td></td><td valign="top"><a href="#index-AVR-register-names">AVR register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR_002dRegs">AVR-Regs</a></td></tr>
  35856. <tr><td></td><td valign="top"><a href="#index-AVR-support">AVR support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR_002dDependent">AVR-Dependent</a></td></tr>
  35857. <tr><td></td><td valign="top"><a href="#index-A_005fDIR-environment-variable_002c-TIC54X">&lsquo;<samp>A_DIR</samp>&rsquo; environment variable, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dEnv">TIC54X-Env</a></td></tr>
  35858. <tr><td colspan="4"> <hr></td></tr>
  35859. <tr><th id="AS-Index_cp_letter-B">B</th><td></td><td></td></tr>
  35860. <tr><td></td><td valign="top"><a href="#index-backslash-_0028_005c_005c_0029">backslash (<code>\\</code>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  35861. <tr><td></td><td valign="top"><a href="#index-backspace-_0028_005cb_0029">backspace (<code>\b</code>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  35862. <tr><td></td><td valign="top"><a href="#index-balign-directive"><code>balign</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Balign">Balign</a></td></tr>
  35863. <tr><td></td><td valign="top"><a href="#index-balignl-directive"><code>balignl</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Balign">Balign</a></td></tr>
  35864. <tr><td></td><td valign="top"><a href="#index-balignw-directive"><code>balignw</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Balign">Balign</a></td></tr>
  35865. <tr><td></td><td valign="top"><a href="#index-bes-directive_002c-TIC54X"><code>bes</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  35866. <tr><td></td><td valign="top"><a href="#index-bfloat16-directive_002c-i386"><code>bfloat16</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  35867. <tr><td></td><td valign="top"><a href="#index-bfloat16-directive_002c-x86_002d64"><code>bfloat16</code> directive, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  35868. <tr><td></td><td valign="top"><a href="#index-big-endian-output_002c-MIPS">big endian output, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  35869. <tr><td></td><td valign="top"><a href="#index-big-endian-output_002c-PJ">big endian output, PJ</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  35870. <tr><td></td><td valign="top"><a href="#index-big_002dendian-output_002c-MIPS">big-endian output, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  35871. <tr><td></td><td valign="top"><a href="#index-big_002dendian-output_002c-TIC6X">big-endian output, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
  35872. <tr><td></td><td valign="top"><a href="#index-bignums">bignums</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bignums">Bignums</a></td></tr>
  35873. <tr><td></td><td valign="top"><a href="#index-binary-constants_002c-TIC54X">binary constants, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dConstants">TIC54X-Constants</a></td></tr>
  35874. <tr><td></td><td valign="top"><a href="#index-binary-files_002c-including">binary files, including</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Incbin">Incbin</a></td></tr>
  35875. <tr><td></td><td valign="top"><a href="#index-binary-integers">binary integers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Integers">Integers</a></td></tr>
  35876. <tr><td></td><td valign="top"><a href="#index-bit-names_002c-IA_002d64">bit names, IA-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64_002dBits">IA-64-Bits</a></td></tr>
  35877. <tr><td></td><td valign="top"><a href="#index-bitfields_002c-not-supported-on-VAX">bitfields, not supported on VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dno">VAX-no</a></td></tr>
  35878. <tr><td></td><td valign="top"><a href="#index-Blackfin-directives">Blackfin directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Blackfin-Directives">Blackfin Directives</a></td></tr>
  35879. <tr><td></td><td valign="top"><a href="#index-Blackfin-options-_0028none_0029">Blackfin options (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Blackfin-Options">Blackfin Options</a></td></tr>
  35880. <tr><td></td><td valign="top"><a href="#index-Blackfin-support">Blackfin support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Blackfin_002dDependent">Blackfin-Dependent</a></td></tr>
  35881. <tr><td></td><td valign="top"><a href="#index-Blackfin-syntax">Blackfin syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Blackfin-Syntax">Blackfin Syntax</a></td></tr>
  35882. <tr><td></td><td valign="top"><a href="#index-block"><code>block</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  35883. <tr><td></td><td valign="top"><a href="#index-block-comments_002c-BPF">block comments, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Special-Characters">BPF Special Characters</a></td></tr>
  35884. <tr><td></td><td valign="top"><a href="#index-BMI_002c-i386">BMI, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dBMI">i386-BMI</a></td></tr>
  35885. <tr><td></td><td valign="top"><a href="#index-BMI_002c-x86_002d64">BMI, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dBMI">i386-BMI</a></td></tr>
  35886. <tr><td></td><td valign="top"><a href="#index-BPF-block-comments">BPF block comments</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Special-Characters">BPF Special Characters</a></td></tr>
  35887. <tr><td></td><td valign="top"><a href="#index-BPF-line-comment-character">BPF line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Special-Characters">BPF Special Characters</a></td></tr>
  35888. <tr><td></td><td valign="top"><a href="#index-BPF-opcodes">BPF opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Instructions">BPF Instructions</a></td></tr>
  35889. <tr><td></td><td valign="top"><a href="#index-BPF-options-_0028none_0029">BPF options (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Options">BPF Options</a></td></tr>
  35890. <tr><td></td><td valign="top"><a href="#index-BPF-register-names">BPF register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Registers">BPF Registers</a></td></tr>
  35891. <tr><td></td><td valign="top"><a href="#index-BPF-support">BPF support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF_002dDependent">BPF-Dependent</a></td></tr>
  35892. <tr><td></td><td valign="top"><a href="#index-branch-improvement_002c-M680x0">branch improvement, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dBranch">M68K-Branch</a></td></tr>
  35893. <tr><td></td><td valign="top"><a href="#index-branch-improvement_002c-M68HC11">branch improvement, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dBranch">M68HC11-Branch</a></td></tr>
  35894. <tr><td></td><td valign="top"><a href="#index-branch-improvement_002c-VAX">branch improvement, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dbranch">VAX-branch</a></td></tr>
  35895. <tr><td></td><td valign="top"><a href="#index-branch-instructions_002c-relaxation">branch instructions, relaxation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Branch-Relaxation">Xtensa Branch Relaxation</a></td></tr>
  35896. <tr><td></td><td valign="top"><a href="#index-Branch-Target-Address_002c-ARC">Branch Target Address, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35897. <tr><td></td><td valign="top"><a href="#index-branch-target-alignment">branch target alignment</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Automatic-Alignment">Xtensa Automatic Alignment</a></td></tr>
  35898. <tr><td></td><td valign="top"><a href="#index-break-directive_002c-TIC54X"><code>break</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  35899. <tr><td></td><td valign="top"><a href="#index-BSD-syntax">BSD syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
  35900. <tr><td></td><td valign="top"><a href="#index-bss-directive"><code>bss</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bss">Bss</a></td></tr>
  35901. <tr><td></td><td valign="top"><a href="#index-bss-directive_002c-TIC54X"><code>bss</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  35902. <tr><td></td><td valign="top"><a href="#index-bss-section">bss section</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
  35903. <tr><td></td><td valign="top"><a href="#index-bss-section-1">bss section</a>:</td><td>&nbsp;</td><td valign="top"><a href="#bss">bss</a></td></tr>
  35904. <tr><td></td><td valign="top"><a href="#index-BTA-saved-on-exception-entry_002c-ARC">BTA saved on exception entry, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35905. <tr><td></td><td valign="top"><a href="#index-bug-criteria">bug criteria</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bug-Criteria">Bug Criteria</a></td></tr>
  35906. <tr><td></td><td valign="top"><a href="#index-bug-reports">bug reports</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bug-Reporting">Bug Reporting</a></td></tr>
  35907. <tr><td></td><td valign="top"><a href="#index-bugs-in-assembler">bugs in assembler</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Reporting-Bugs">Reporting Bugs</a></td></tr>
  35908. <tr><td></td><td valign="top"><a href="#index-Build-configuration-for_003a-BTA-Registers_002c-ARC">Build configuration for: BTA Registers, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35909. <tr><td></td><td valign="top"><a href="#index-Build-configuration-for_003a-Core-Registers_002c-ARC">Build configuration for: Core Registers, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35910. <tr><td></td><td valign="top"><a href="#index-Build-configuration-for_003a-Interrupts_002c-ARC">Build configuration for: Interrupts, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35911. <tr><td></td><td valign="top"><a href="#index-Build-Configuration-Registers-Version_002c-ARC">Build Configuration Registers Version, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35912. <tr><td></td><td valign="top"><a href="#index-Built_002din-symbols_002c-CRIS">Built-in symbols, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dSymbols">CRIS-Symbols</a></td></tr>
  35913. <tr><td></td><td valign="top"><a href="#index-builtin-math-functions_002c-TIC54X">builtin math functions, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  35914. <tr><td></td><td valign="top"><a href="#index-builtin-subsym-functions_002c-TIC54X">builtin subsym functions, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  35915. <tr><td></td><td valign="top"><a href="#index-bundle">bundle</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
  35916. <tr><td></td><td valign="top"><a href="#index-bundle_002dlocked">bundle-locked</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
  35917. <tr><td></td><td valign="top"><a href="#index-bundle_005falign_005fmode-directive"><code>bundle_align_mode</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
  35918. <tr><td></td><td valign="top"><a href="#index-bundle_005flock-directive"><code>bundle_lock</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
  35919. <tr><td></td><td valign="top"><a href="#index-bundle_005funlock-directive"><code>bundle_unlock</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
  35920. <tr><td></td><td valign="top"><a href="#index-bus-lock-prefixes_002c-i386">bus lock prefixes, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
  35921. <tr><td></td><td valign="top"><a href="#index-bval"><code>bval</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  35922. <tr><td></td><td valign="top"><a href="#index-byte-directive"><code>byte</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Byte">Byte</a></td></tr>
  35923. <tr><td></td><td valign="top"><a href="#index-byte-directive_002c-TIC54X"><code>byte</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  35924. <tr><td colspan="4"> <hr></td></tr>
  35925. <tr><th id="AS-Index_cp_letter-C">C</th><td></td><td></td></tr>
  35926. <tr><td></td><td valign="top"><a href="#index-C-preprocessor-macro-separator_002c-ARC">C preprocessor macro separator, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
  35927. <tr><td></td><td valign="top"><a href="#index-C_002dSKY-options">C-SKY options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  35928. <tr><td></td><td valign="top"><a href="#index-C_002dSKY-support">C-SKY support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY_002dDependent">C-SKY-Dependent</a></td></tr>
  35929. <tr><td></td><td valign="top"><a href="#index-C54XDSP_005fDIR-environment-variable_002c-TIC54X">&lsquo;<samp>C54XDSP_DIR</samp>&rsquo; environment variable, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dEnv">TIC54X-Env</a></td></tr>
  35930. <tr><td></td><td valign="top"><a href="#index-call-directive_002c-Nios-II"><code>call</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  35931. <tr><td></td><td valign="top"><a href="#index-call-instructions_002c-i386">call instructions, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  35932. <tr><td></td><td valign="top"><a href="#index-call-instructions_002c-relaxation">call instructions, relaxation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Call-Relaxation">Xtensa Call Relaxation</a></td></tr>
  35933. <tr><td></td><td valign="top"><a href="#index-call-instructions_002c-x86_002d64">call instructions, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  35934. <tr><td></td><td valign="top"><a href="#index-call_005fhiadj-directive_002c-Nios-II"><code>call_hiadj</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  35935. <tr><td></td><td valign="top"><a href="#index-call_005flo-directive_002c-Nios-II"><code>call_lo</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  35936. <tr><td></td><td valign="top"><a href="#index-carriage-return-_0028backslash_002dr_0029">carriage return (<code>backslash-r</code>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  35937. <tr><td></td><td valign="top"><a href="#index-case-sensitivity_002c-Z80">case sensitivity, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dCase">Z80-Case</a></td></tr>
  35938. <tr><td></td><td valign="top"><a href="#index-cfi_005fendproc-directive"><code>cfi_endproc</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CFI-directives">CFI directives</a></td></tr>
  35939. <tr><td></td><td valign="top"><a href="#index-cfi_005ffde_005fdata-directive"><code>cfi_fde_data</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CFI-directives">CFI directives</a></td></tr>
  35940. <tr><td></td><td valign="top"><a href="#index-cfi_005fpersonality-directive"><code>cfi_personality</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CFI-directives">CFI directives</a></td></tr>
  35941. <tr><td></td><td valign="top"><a href="#index-cfi_005fpersonality_005fid-directive"><code>cfi_personality_id</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CFI-directives">CFI directives</a></td></tr>
  35942. <tr><td></td><td valign="top"><a href="#index-cfi_005fsections-directive"><code>cfi_sections</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CFI-directives">CFI directives</a></td></tr>
  35943. <tr><td></td><td valign="top"><a href="#index-cfi_005fstartproc-directive"><code>cfi_startproc</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CFI-directives">CFI directives</a></td></tr>
  35944. <tr><td></td><td valign="top"><a href="#index-char-directive_002c-TIC54X"><code>char</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  35945. <tr><td></td><td valign="top"><a href="#index-character-constant_002c-Z80">character constant, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  35946. <tr><td></td><td valign="top"><a href="#index-character-constants">character constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Characters">Characters</a></td></tr>
  35947. <tr><td></td><td valign="top"><a href="#index-character-escape-codes">character escape codes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  35948. <tr><td></td><td valign="top"><a href="#index-character-escapes_002c-Z80">character escapes, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  35949. <tr><td></td><td valign="top"><a href="#index-character_002c-single">character, single</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Chars">Chars</a></td></tr>
  35950. <tr><td></td><td valign="top"><a href="#index-characters-used-in-symbols">characters used in symbols</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Intro">Symbol Intro</a></td></tr>
  35951. <tr><td></td><td valign="top"><a href="#index-clink-directive_002c-TIC54X"><code>clink</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  35952. <tr><td></td><td valign="top"><a href="#index-code16-directive_002c-i386"><code>code16</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
  35953. <tr><td></td><td valign="top"><a href="#index-code16gcc-directive_002c-i386"><code>code16gcc</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
  35954. <tr><td></td><td valign="top"><a href="#index-code32-directive_002c-i386"><code>code32</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
  35955. <tr><td></td><td valign="top"><a href="#index-code64-directive_002c-i386"><code>code64</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
  35956. <tr><td></td><td valign="top"><a href="#index-code64-directive_002c-x86_002d64"><code>code64</code> directive, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
  35957. <tr><td></td><td valign="top"><a href="#index-COFF-auxiliary-symbol-information">COFF auxiliary symbol information</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Dim">Dim</a></td></tr>
  35958. <tr><td></td><td valign="top"><a href="#index-COFF-structure-debugging">COFF structure debugging</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Tag">Tag</a></td></tr>
  35959. <tr><td></td><td valign="top"><a href="#index-COFF-symbol-attributes">COFF symbol attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#COFF-Symbols">COFF Symbols</a></td></tr>
  35960. <tr><td></td><td valign="top"><a href="#index-COFF-symbol-descriptor">COFF symbol descriptor</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Desc">Desc</a></td></tr>
  35961. <tr><td></td><td valign="top"><a href="#index-COFF-symbol-storage-class">COFF symbol storage class</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Scl">Scl</a></td></tr>
  35962. <tr><td></td><td valign="top"><a href="#index-COFF-symbol-type">COFF symbol type</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Type">Type</a></td></tr>
  35963. <tr><td></td><td valign="top"><a href="#index-COFF-symbols_002c-debugging">COFF symbols, debugging</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Def">Def</a></td></tr>
  35964. <tr><td></td><td valign="top"><a href="#index-COFF-value-attribute">COFF value attribute</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Val">Val</a></td></tr>
  35965. <tr><td></td><td valign="top"><a href="#index-COMDAT">COMDAT</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Linkonce">Linkonce</a></td></tr>
  35966. <tr><td></td><td valign="top"><a href="#index-comm-directive"><code>comm</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Comm">Comm</a></td></tr>
  35967. <tr><td></td><td valign="top"><a href="#index-command-line-conventions">command line conventions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Command-Line">Command Line</a></td></tr>
  35968. <tr><td></td><td valign="top"><a href="#index-command_002dline-options-ignored_002c-VAX">command-line options ignored, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  35969. <tr><td></td><td valign="top"><a href="#index-command_002dline-options_002c-V850">command-line options, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  35970. <tr><td></td><td valign="top"><a href="#index-comment-character_002c-XStormy16">comment character, XStormy16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
  35971. <tr><td></td><td valign="top"><a href="#index-comments">comments</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Comments">Comments</a></td></tr>
  35972. <tr><td></td><td valign="top"><a href="#index-comments_002c-M680x0">comments, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
  35973. <tr><td></td><td valign="top"><a href="#index-comments_002c-removed-by-preprocessor">comments, removed by preprocessor</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
  35974. <tr><td></td><td valign="top"><a href="#index-common-directive_002c-SPARC"><code>common</code> directive, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  35975. <tr><td></td><td valign="top"><a href="#index-common-sections">common sections</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Linkonce">Linkonce</a></td></tr>
  35976. <tr><td></td><td valign="top"><a href="#index-common-variable-storage">common variable storage</a>:</td><td>&nbsp;</td><td valign="top"><a href="#bss">bss</a></td></tr>
  35977. <tr><td></td><td valign="top"><a href="#index-comparison-expressions">comparison expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
  35978. <tr><td></td><td valign="top"><a href="#index-conditional-assembly">conditional assembly</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  35979. <tr><td></td><td valign="top"><a href="#index-constant_002c-single-character">constant, single character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Chars">Chars</a></td></tr>
  35980. <tr><td></td><td valign="top"><a href="#index-constants">constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Constants">Constants</a></td></tr>
  35981. <tr><td></td><td valign="top"><a href="#index-constants_002c-bignum">constants, bignum</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bignums">Bignums</a></td></tr>
  35982. <tr><td></td><td valign="top"><a href="#index-constants_002c-character">constants, character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Characters">Characters</a></td></tr>
  35983. <tr><td></td><td valign="top"><a href="#index-constants_002c-converted-by-preprocessor">constants, converted by preprocessor</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
  35984. <tr><td></td><td valign="top"><a href="#index-constants_002c-floating-point">constants, floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Flonums">Flonums</a></td></tr>
  35985. <tr><td></td><td valign="top"><a href="#index-constants_002c-integer">constants, integer</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Integers">Integers</a></td></tr>
  35986. <tr><td></td><td valign="top"><a href="#index-constants_002c-number">constants, number</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Numbers">Numbers</a></td></tr>
  35987. <tr><td></td><td valign="top"><a href="#index-constants_002c-Sparc">constants, Sparc</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dConstants">Sparc-Constants</a></td></tr>
  35988. <tr><td></td><td valign="top"><a href="#index-constants_002c-string">constants, string</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  35989. <tr><td></td><td valign="top"><a href="#index-constants_002c-TIC54X">constants, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dConstants">TIC54X-Constants</a></td></tr>
  35990. <tr><td></td><td valign="top"><a href="#index-conversion-instructions_002c-i386">conversion instructions, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  35991. <tr><td></td><td valign="top"><a href="#index-conversion-instructions_002c-x86_002d64">conversion instructions, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  35992. <tr><td></td><td valign="top"><a href="#index-coprocessor-wait_002c-i386">coprocessor wait, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
  35993. <tr><td></td><td valign="top"><a href="#index-copy-directive_002c-TIC54X"><code>copy</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  35994. <tr><td></td><td valign="top"><a href="#index-core-general-registers_002c-ARC">core general registers, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  35995. <tr><td></td><td valign="top"><a href="#index-cpu-directive_002c-ARC"><code>cpu</code> directive, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
  35996. <tr><td></td><td valign="top"><a href="#index-cpu-directive_002c-M680x0"><code>cpu</code> directive, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
  35997. <tr><td></td><td valign="top"><a href="#index-cpu-directive_002c-MSP-430"><code>cpu</code> directive, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
  35998. <tr><td></td><td valign="top"><a href="#index-CR16-line-comment-character">CR16 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CR16_002dChars">CR16-Chars</a></td></tr>
  35999. <tr><td></td><td valign="top"><a href="#index-CR16-line-separator">CR16 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CR16_002dChars">CR16-Chars</a></td></tr>
  36000. <tr><td></td><td valign="top"><a href="#index-CR16-Operand-Qualifiers">CR16 Operand Qualifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CR16-Operand-Qualifiers">CR16 Operand Qualifiers</a></td></tr>
  36001. <tr><td></td><td valign="top"><a href="#index-CR16-support">CR16 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CR16_002dDependent">CR16-Dependent</a></td></tr>
  36002. <tr><td></td><td valign="top"><a href="#index-crash-of-assembler">crash of assembler</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bug-Criteria">Bug Criteria</a></td></tr>
  36003. <tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002demulation_003dcrisaout-command_002dline-option">CRIS <samp>--emulation=crisaout</samp> command-line option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  36004. <tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002demulation_003dcriself-command_002dline-option">CRIS <samp>--emulation=criself</samp> command-line option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  36005. <tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002dmarch_003darchitecture-command_002dline-option">CRIS <samp>--march=<var>architecture</var></samp> command-line option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  36006. <tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002dmul_002dbug_002dabort-command_002dline-option">CRIS <samp>--mul-bug-abort</samp> command-line option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  36007. <tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002dno_002dmul_002dbug_002dabort-command_002dline-option">CRIS <samp>--no-mul-bug-abort</samp> command-line option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  36008. <tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002dno_002dunderscore-command_002dline-option">CRIS <samp>--no-underscore</samp> command-line option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  36009. <tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002dpic-command_002dline-option">CRIS <samp>--pic</samp> command-line option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  36010. <tr><td></td><td valign="top"><a href="#index-CRIS-_002d_002dunderscore-command_002dline-option">CRIS <samp>--underscore</samp> command-line option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  36011. <tr><td></td><td valign="top"><a href="#index-CRIS-_002dN-command_002dline-option">CRIS <samp>-N</samp> command-line option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  36012. <tr><td></td><td valign="top"><a href="#index-CRIS-architecture-variant-option">CRIS architecture variant option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  36013. <tr><td></td><td valign="top"><a href="#index-CRIS-assembler-directive-_002earch">CRIS assembler directive .arch</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  36014. <tr><td></td><td valign="top"><a href="#index-CRIS-assembler-directive-_002edword">CRIS assembler directive .dword</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  36015. <tr><td></td><td valign="top"><a href="#index-CRIS-assembler-directive-_002esyntax">CRIS assembler directive .syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  36016. <tr><td></td><td valign="top"><a href="#index-CRIS-assembler-directives">CRIS assembler directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  36017. <tr><td></td><td valign="top"><a href="#index-CRIS-built_002din-symbols">CRIS built-in symbols</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dSymbols">CRIS-Symbols</a></td></tr>
  36018. <tr><td></td><td valign="top"><a href="#index-CRIS-instruction-expansion">CRIS instruction expansion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dExpand">CRIS-Expand</a></td></tr>
  36019. <tr><td></td><td valign="top"><a href="#index-CRIS-line-comment-characters">CRIS line comment characters</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dChars">CRIS-Chars</a></td></tr>
  36020. <tr><td></td><td valign="top"><a href="#index-CRIS-options">CRIS options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  36021. <tr><td></td><td valign="top"><a href="#index-CRIS-position_002dindependent-code">CRIS position-independent code</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  36022. <tr><td></td><td valign="top"><a href="#index-CRIS-pseudo_002dop-_002earch">CRIS pseudo-op .arch</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  36023. <tr><td></td><td valign="top"><a href="#index-CRIS-pseudo_002dop-_002edword">CRIS pseudo-op .dword</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  36024. <tr><td></td><td valign="top"><a href="#index-CRIS-pseudo_002dop-_002esyntax">CRIS pseudo-op .syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  36025. <tr><td></td><td valign="top"><a href="#index-CRIS-pseudo_002dops">CRIS pseudo-ops</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  36026. <tr><td></td><td valign="top"><a href="#index-CRIS-register-names">CRIS register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dRegs">CRIS-Regs</a></td></tr>
  36027. <tr><td></td><td valign="top"><a href="#index-CRIS-support">CRIS support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dDependent">CRIS-Dependent</a></td></tr>
  36028. <tr><td></td><td valign="top"><a href="#index-CRIS-symbols-in-position_002dindependent-code">CRIS symbols in position-independent code</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPic">CRIS-Pic</a></td></tr>
  36029. <tr><td></td><td valign="top"><a href="#index-ctbp-register_002c-V850"><code>ctbp</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36030. <tr><td></td><td valign="top"><a href="#index-ctoff-pseudo_002dop_002c-V850"><code>ctoff</code> pseudo-op, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
  36031. <tr><td></td><td valign="top"><a href="#index-ctpc-register_002c-V850"><code>ctpc</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36032. <tr><td></td><td valign="top"><a href="#index-ctpsw-register_002c-V850"><code>ctpsw</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36033. <tr><td></td><td valign="top"><a href="#index-current-address">current address</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Dot">Dot</a></td></tr>
  36034. <tr><td></td><td valign="top"><a href="#index-current-address_002c-advancing">current address, advancing</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Org">Org</a></td></tr>
  36035. <tr><td></td><td valign="top"><a href="#index-custom-_0028vendor_002ddefined_0029-extensions_002c-RISC_002dV">custom (vendor-defined) extensions, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dCustomExts">RISC-V-CustomExts</a></td></tr>
  36036. <tr><td></td><td valign="top"><a href="#index-c_005fmode-directive_002c-TIC54X"><code>c_mode</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36037. <tr><td colspan="4"> <hr></td></tr>
  36038. <tr><th id="AS-Index_cp_letter-D">D</th><td></td><td></td></tr>
  36039. <tr><td></td><td valign="top"><a href="#index-D10V-_0040word-modifier">D10V @word modifier</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dWord">D10V-Word</a></td></tr>
  36040. <tr><td></td><td valign="top"><a href="#index-D10V-addressing-modes">D10V addressing modes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dAddressing">D10V-Addressing</a></td></tr>
  36041. <tr><td></td><td valign="top"><a href="#index-D10V-floating-point">D10V floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dFloat">D10V-Float</a></td></tr>
  36042. <tr><td></td><td valign="top"><a href="#index-D10V-line-comment-character">D10V line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dChars">D10V-Chars</a></td></tr>
  36043. <tr><td></td><td valign="top"><a href="#index-D10V-opcode-summary">D10V opcode summary</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dOpcodes">D10V-Opcodes</a></td></tr>
  36044. <tr><td></td><td valign="top"><a href="#index-D10V-optimization">D10V optimization</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  36045. <tr><td></td><td valign="top"><a href="#index-D10V-options">D10V options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dOpts">D10V-Opts</a></td></tr>
  36046. <tr><td></td><td valign="top"><a href="#index-D10V-registers">D10V registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dRegs">D10V-Regs</a></td></tr>
  36047. <tr><td></td><td valign="top"><a href="#index-D10V-size-modifiers">D10V size modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dSize">D10V-Size</a></td></tr>
  36048. <tr><td></td><td valign="top"><a href="#index-D10V-sub_002dinstruction-ordering">D10V sub-instruction ordering</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dChars">D10V-Chars</a></td></tr>
  36049. <tr><td></td><td valign="top"><a href="#index-D10V-sub_002dinstructions">D10V sub-instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dSubs">D10V-Subs</a></td></tr>
  36050. <tr><td></td><td valign="top"><a href="#index-D10V-support">D10V support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dDependent">D10V-Dependent</a></td></tr>
  36051. <tr><td></td><td valign="top"><a href="#index-D10V-syntax">D10V syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dSyntax">D10V-Syntax</a></td></tr>
  36052. <tr><td></td><td valign="top"><a href="#index-d24-directive_002c-Z80"><code>d24</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36053. <tr><td></td><td valign="top"><a href="#index-D30V-addressing-modes">D30V addressing modes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dAddressing">D30V-Addressing</a></td></tr>
  36054. <tr><td></td><td valign="top"><a href="#index-D30V-floating-point">D30V floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dFloat">D30V-Float</a></td></tr>
  36055. <tr><td></td><td valign="top"><a href="#index-D30V-Guarded-Execution">D30V Guarded Execution</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dGuarded">D30V-Guarded</a></td></tr>
  36056. <tr><td></td><td valign="top"><a href="#index-D30V-line-comment-character">D30V line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dChars">D30V-Chars</a></td></tr>
  36057. <tr><td></td><td valign="top"><a href="#index-D30V-nops">D30V nops</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  36058. <tr><td></td><td valign="top"><a href="#index-D30V-nops-after-32_002dbit-multiply">D30V nops after 32-bit multiply</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  36059. <tr><td></td><td valign="top"><a href="#index-D30V-opcode-summary">D30V opcode summary</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dOpcodes">D30V-Opcodes</a></td></tr>
  36060. <tr><td></td><td valign="top"><a href="#index-D30V-optimization">D30V optimization</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  36061. <tr><td></td><td valign="top"><a href="#index-D30V-options">D30V options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dOpts">D30V-Opts</a></td></tr>
  36062. <tr><td></td><td valign="top"><a href="#index-D30V-registers">D30V registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dRegs">D30V-Regs</a></td></tr>
  36063. <tr><td></td><td valign="top"><a href="#index-D30V-size-modifiers">D30V size modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dSize">D30V-Size</a></td></tr>
  36064. <tr><td></td><td valign="top"><a href="#index-D30V-sub_002dinstruction-ordering">D30V sub-instruction ordering</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dChars">D30V-Chars</a></td></tr>
  36065. <tr><td></td><td valign="top"><a href="#index-D30V-sub_002dinstructions">D30V sub-instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dSubs">D30V-Subs</a></td></tr>
  36066. <tr><td></td><td valign="top"><a href="#index-D30V-support">D30V support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dDependent">D30V-Dependent</a></td></tr>
  36067. <tr><td></td><td valign="top"><a href="#index-D30V-syntax">D30V syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dSyntax">D30V-Syntax</a></td></tr>
  36068. <tr><td></td><td valign="top"><a href="#index-d32-directive_002c-Z80"><code>d32</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36069. <tr><td></td><td valign="top"><a href="#index-data-alignment-on-SPARC">data alignment on SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dAligned_002dData">Sparc-Aligned-Data</a></td></tr>
  36070. <tr><td></td><td valign="top"><a href="#index-data-and-text-sections_002c-joining">data and text sections, joining</a>:</td><td>&nbsp;</td><td valign="top"><a href="#R">R</a></td></tr>
  36071. <tr><td></td><td valign="top"><a href="#index-data-directive"><code>data</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Data">Data</a></td></tr>
  36072. <tr><td></td><td valign="top"><a href="#index-data-directive_002c-TIC54X"><code>data</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36073. <tr><td></td><td valign="top"><a href="#index-Data-directives">Data directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
  36074. <tr><td></td><td valign="top"><a href="#index-data-relocations_002c-ARM">data relocations, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dRelocations">ARM-Relocations</a></td></tr>
  36075. <tr><td></td><td valign="top"><a href="#index-data-section">data section</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
  36076. <tr><td></td><td valign="top"><a href="#index-data1-directive_002c-M680x0"><code>data1</code> directive, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
  36077. <tr><td></td><td valign="top"><a href="#index-data2-directive_002c-M680x0"><code>data2</code> directive, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
  36078. <tr><td></td><td valign="top"><a href="#index-db-directive_002c-Z80"><code>db</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36079. <tr><td></td><td valign="top"><a href="#index-dbpc-register_002c-V850"><code>dbpc</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36080. <tr><td></td><td valign="top"><a href="#index-dbpsw-register_002c-V850"><code>dbpsw</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36081. <tr><td></td><td valign="top"><a href="#index-dc-directive"><code>dc</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Dc">Dc</a></td></tr>
  36082. <tr><td></td><td valign="top"><a href="#index-dcb-directive"><code>dcb</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Dcb">Dcb</a></td></tr>
  36083. <tr><td></td><td valign="top"><a href="#index-DCCM-RAM-Configuration-Register_002c-ARC">DCCM RAM Configuration Register, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  36084. <tr><td></td><td valign="top"><a href="#index-debuggers_002c-and-symbol-order">debuggers, and symbol order</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbols">Symbols</a></td></tr>
  36085. <tr><td></td><td valign="top"><a href="#index-debugging-COFF-symbols">debugging COFF symbols</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Def">Def</a></td></tr>
  36086. <tr><td></td><td valign="top"><a href="#index-DEC-syntax">DEC syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
  36087. <tr><td></td><td valign="top"><a href="#index-decimal-integers">decimal integers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Integers">Integers</a></td></tr>
  36088. <tr><td></td><td valign="top"><a href="#index-def-directive"><code>def</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Def">Def</a></td></tr>
  36089. <tr><td></td><td valign="top"><a href="#index-def-directive_002c-TIC54X"><code>def</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36090. <tr><td></td><td valign="top"><a href="#index-def24-directive_002c-Z80"><code>def24</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36091. <tr><td></td><td valign="top"><a href="#index-def32-directive_002c-Z80"><code>def32</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36092. <tr><td></td><td valign="top"><a href="#index-defb-directive_002c-Z80"><code>defb</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36093. <tr><td></td><td valign="top"><a href="#index-defl-directive_002c-Z80"><code>defl</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36094. <tr><td></td><td valign="top"><a href="#index-defm-directive_002c-Z80"><code>defm</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36095. <tr><td></td><td valign="top"><a href="#index-defs-directive_002c-Z80"><code>defs</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36096. <tr><td></td><td valign="top"><a href="#index-defw-directive_002c-Z80"><code>defw</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36097. <tr><td></td><td valign="top"><a href="#index-density-instructions">density instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Density-Instructions">Density Instructions</a></td></tr>
  36098. <tr><td></td><td valign="top"><a href="#index-dependency-tracking">dependency tracking</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MD">MD</a></td></tr>
  36099. <tr><td></td><td valign="top"><a href="#index-deprecated-directives">deprecated directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Deprecated">Deprecated</a></td></tr>
  36100. <tr><td></td><td valign="top"><a href="#index-desc-directive"><code>desc</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Desc">Desc</a></td></tr>
  36101. <tr><td></td><td valign="top"><a href="#index-descriptor_002c-of-a_002eout-symbol">descriptor, of <code>a.out</code> symbol</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Desc">Symbol Desc</a></td></tr>
  36102. <tr><td></td><td valign="top"><a href="#index-dfloat-directive_002c-VAX"><code>dfloat</code> directive, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
  36103. <tr><td></td><td valign="top"><a href="#index-difference-tables-altered">difference tables altered</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Word">Word</a></td></tr>
  36104. <tr><td></td><td valign="top"><a href="#index-difference-tables_002c-warning">difference tables, warning</a>:</td><td>&nbsp;</td><td valign="top"><a href="#K">K</a></td></tr>
  36105. <tr><td></td><td valign="top"><a href="#index-differences_002c-mmixal">differences, mmixal</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dmmixal">MMIX-mmixal</a></td></tr>
  36106. <tr><td></td><td valign="top"><a href="#index-dim-directive"><code>dim</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Dim">Dim</a></td></tr>
  36107. <tr><td></td><td valign="top"><a href="#index-directives-and-instructions">directives and instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Statements">Statements</a></td></tr>
  36108. <tr><td></td><td valign="top"><a href="#index-directives-for-PowerPC">directives for PowerPC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PowerPC_002dPseudo">PowerPC-Pseudo</a></td></tr>
  36109. <tr><td></td><td valign="top"><a href="#index-directives-for-SCORE">directives for SCORE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SCORE_002dPseudo">SCORE-Pseudo</a></td></tr>
  36110. <tr><td></td><td valign="top"><a href="#index-directives_002c-Blackfin">directives, Blackfin</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Blackfin-Directives">Blackfin Directives</a></td></tr>
  36111. <tr><td></td><td valign="top"><a href="#index-directives_002c-M32R">directives, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
  36112. <tr><td></td><td valign="top"><a href="#index-directives_002c-M680x0">directives, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
  36113. <tr><td></td><td valign="top"><a href="#index-directives_002c-machine-independent">directives, machine independent</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Pseudo-Ops">Pseudo Ops</a></td></tr>
  36114. <tr><td></td><td valign="top"><a href="#index-directives_002c-Xtensa">directives, Xtensa</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Directives">Xtensa Directives</a></td></tr>
  36115. <tr><td></td><td valign="top"><a href="#index-directives_002c-Z8000">directives, Z8000</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  36116. <tr><td></td><td valign="top"><a href="#index-Disable-floating_002dpoint-instructions">Disable floating-point instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td></tr>
  36117. <tr><td></td><td valign="top"><a href="#index-Disable-single_002dprecision-floating_002dpoint-operations">Disable single-precision floating-point operations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Floating_002dPoint">MIPS Floating-Point</a></td></tr>
  36118. <tr><td></td><td valign="top"><a href="#index-displacement-sizing-character_002c-VAX">displacement sizing character, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
  36119. <tr><td></td><td valign="top"><a href="#index-dollar-local-symbols">dollar local symbols</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
  36120. <tr><td></td><td valign="top"><a href="#index-dot-_0028symbol_0029">dot (symbol)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Dot">Dot</a></td></tr>
  36121. <tr><td></td><td valign="top"><a href="#index-double-directive"><code>double</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Double">Double</a></td></tr>
  36122. <tr><td></td><td valign="top"><a href="#index-double-directive_002c-i386"><code>double</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36123. <tr><td></td><td valign="top"><a href="#index-double-directive_002c-M680x0"><code>double</code> directive, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dFloat">M68K-Float</a></td></tr>
  36124. <tr><td></td><td valign="top"><a href="#index-double-directive_002c-M68HC11"><code>double</code> directive, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dFloat">M68HC11-Float</a></td></tr>
  36125. <tr><td></td><td valign="top"><a href="#index-double-directive_002c-RX"><code>double</code> directive, RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dFloat">RX-Float</a></td></tr>
  36126. <tr><td></td><td valign="top"><a href="#index-double-directive_002c-TIC54X"><code>double</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36127. <tr><td></td><td valign="top"><a href="#index-double-directive_002c-VAX"><code>double</code> directive, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dfloat">VAX-float</a></td></tr>
  36128. <tr><td></td><td valign="top"><a href="#index-double-directive_002c-x86_002d64"><code>double</code> directive, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36129. <tr><td></td><td valign="top"><a href="#index-double-directive_002c-XGATE"><code>double</code> directive, XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dFloat">XGATE-Float</a></td></tr>
  36130. <tr><td></td><td valign="top"><a href="#index-doublequote-_0028_005c_0022_0029">doublequote (<code>\&quot;</code>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  36131. <tr><td></td><td valign="top"><a href="#index-drlist-directive_002c-TIC54X"><code>drlist</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36132. <tr><td></td><td valign="top"><a href="#index-drnolist-directive_002c-TIC54X"><code>drnolist</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36133. <tr><td></td><td valign="top"><a href="#index-ds-directive"><code>ds</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ds">Ds</a></td></tr>
  36134. <tr><td></td><td valign="top"><a href="#index-ds-directive_002c-Z80"><code>ds</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36135. <tr><td></td><td valign="top"><a href="#index-DTP_002drelative-data-directives">DTP-relative data directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
  36136. <tr><td></td><td valign="top"><a href="#index-dw-directive_002c-Z80"><code>dw</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36137. <tr><td></td><td valign="top"><a href="#index-dword-directive_002c-BPF"><code>dword</code> directive, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Directives">BPF Directives</a></td></tr>
  36138. <tr><td></td><td valign="top"><a href="#index-dword-directive_002c-Nios-II"><code>dword</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  36139. <tr><td></td><td valign="top"><a href="#index-dword-directive_002c-PRU"><code>dword</code> directive, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
  36140. <tr><td colspan="4"> <hr></td></tr>
  36141. <tr><th id="AS-Index_cp_letter-E">E</th><td></td><td></td></tr>
  36142. <tr><td></td><td valign="top"><a href="#index-EB-command_002dline-option_002c-C_002dSKY"><code>EB</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36143. <tr><td></td><td valign="top"><a href="#index-EB-command_002dline-option_002c-Nios-II"><code>EB</code> command-line option, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
  36144. <tr><td></td><td valign="top"><a href="#index-ecr-register_002c-V850"><code>ecr</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36145. <tr><td></td><td valign="top"><a href="#index-eight_002dbyte-integer">eight-byte integer</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Quad">Quad</a></td></tr>
  36146. <tr><td></td><td valign="top"><a href="#index-eight_002dbyte-integer-1">eight-byte integer</a>:</td><td>&nbsp;</td><td valign="top"><a href="#g_t8byte">8byte</a></td></tr>
  36147. <tr><td></td><td valign="top"><a href="#index-eipc-register_002c-V850"><code>eipc</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36148. <tr><td></td><td valign="top"><a href="#index-eipsw-register_002c-V850"><code>eipsw</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36149. <tr><td></td><td valign="top"><a href="#index-eject-directive"><code>eject</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Eject">Eject</a></td></tr>
  36150. <tr><td></td><td valign="top"><a href="#index-EL-command_002dline-option_002c-C_002dSKY"><code>EL</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36151. <tr><td></td><td valign="top"><a href="#index-EL-command_002dline-option_002c-Nios-II"><code>EL</code> command-line option, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
  36152. <tr><td></td><td valign="top"><a href="#index-ELF-symbol-type">ELF symbol type</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Type">Type</a></td></tr>
  36153. <tr><td></td><td valign="top"><a href="#index-else-directive"><code>else</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Else">Else</a></td></tr>
  36154. <tr><td></td><td valign="top"><a href="#index-elseif-directive"><code>elseif</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Elseif">Elseif</a></td></tr>
  36155. <tr><td></td><td valign="top"><a href="#index-empty-expressions">empty expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Empty-Exprs">Empty Exprs</a></td></tr>
  36156. <tr><td></td><td valign="top"><a href="#index-emsg-directive_002c-TIC54X"><code>emsg</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36157. <tr><td></td><td valign="top"><a href="#index-emulation">emulation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  36158. <tr><td></td><td valign="top"><a href="#index-encoding-options_002c-i386">encoding options, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36159. <tr><td></td><td valign="top"><a href="#index-encoding-options_002c-x86_002d64">encoding options, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36160. <tr><td></td><td valign="top"><a href="#index-end-directive"><code>end</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#End">End</a></td></tr>
  36161. <tr><td></td><td valign="top"><a href="#index-endef-directive"><code>endef</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Endef">Endef</a></td></tr>
  36162. <tr><td></td><td valign="top"><a href="#index-endfunc-directive"><code>endfunc</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Endfunc">Endfunc</a></td></tr>
  36163. <tr><td></td><td valign="top"><a href="#index-endianness_002c-MIPS">endianness, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  36164. <tr><td></td><td valign="top"><a href="#index-endianness_002c-PJ">endianness, PJ</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  36165. <tr><td></td><td valign="top"><a href="#index-endif-directive"><code>endif</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Endif">Endif</a></td></tr>
  36166. <tr><td></td><td valign="top"><a href="#index-endloop-directive_002c-TIC54X"><code>endloop</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36167. <tr><td></td><td valign="top"><a href="#index-endm-directive"><code>endm</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Macro">Macro</a></td></tr>
  36168. <tr><td></td><td valign="top"><a href="#index-endm-directive_002c-TIC54X"><code>endm</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36169. <tr><td></td><td valign="top"><a href="#index-endproc-directive_002c-OpenRISC"><code>endproc</code> directive, OpenRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
  36170. <tr><td></td><td valign="top"><a href="#index-endstruct-directive_002c-TIC54X"><code>endstruct</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36171. <tr><td></td><td valign="top"><a href="#index-endunion-directive_002c-TIC54X"><code>endunion</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36172. <tr><td></td><td valign="top"><a href="#index-environment-settings_002c-TIC54X">environment settings, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dEnv">TIC54X-Env</a></td></tr>
  36173. <tr><td></td><td valign="top"><a href="#index-EOF_002c-newline-must-precede">EOF, newline must precede</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Statements">Statements</a></td></tr>
  36174. <tr><td></td><td valign="top"><a href="#index-ep-register_002c-V850"><code>ep</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36175. <tr><td></td><td valign="top"><a href="#index-Epiphany-line-comment-character">Epiphany line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Epiphany_002dChars">Epiphany-Chars</a></td></tr>
  36176. <tr><td></td><td valign="top"><a href="#index-Epiphany-line-separator">Epiphany line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Epiphany_002dChars">Epiphany-Chars</a></td></tr>
  36177. <tr><td></td><td valign="top"><a href="#index-Epiphany-options">Epiphany options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Epiphany-Options">Epiphany Options</a></td></tr>
  36178. <tr><td></td><td valign="top"><a href="#index-Epiphany-support">Epiphany support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Epiphany_002dDependent">Epiphany-Dependent</a></td></tr>
  36179. <tr><td></td><td valign="top"><a href="#index-equ-directive"><code>equ</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Equ">Equ</a></td></tr>
  36180. <tr><td></td><td valign="top"><a href="#index-equ-directive_002c-TIC54X"><code>equ</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36181. <tr><td></td><td valign="top"><a href="#index-equ-directive_002c-Z80"><code>equ</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  36182. <tr><td></td><td valign="top"><a href="#index-equiv-directive"><code>equiv</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Equiv">Equiv</a></td></tr>
  36183. <tr><td></td><td valign="top"><a href="#index-eqv-directive"><code>eqv</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Eqv">Eqv</a></td></tr>
  36184. <tr><td></td><td valign="top"><a href="#index-err-directive"><code>err</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Err">Err</a></td></tr>
  36185. <tr><td></td><td valign="top"><a href="#index-error-directive">error directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Error">Error</a></td></tr>
  36186. <tr><td></td><td valign="top"><a href="#index-error-messages">error messages</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Errors">Errors</a></td></tr>
  36187. <tr><td></td><td valign="top"><a href="#index-error-on-valid-input">error on valid input</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bug-Criteria">Bug Criteria</a></td></tr>
  36188. <tr><td></td><td valign="top"><a href="#index-errors_002c-caused-by-warnings">errors, caused by warnings</a>:</td><td>&nbsp;</td><td valign="top"><a href="#W">W</a></td></tr>
  36189. <tr><td></td><td valign="top"><a href="#index-errors_002c-continuing-after">errors, continuing after</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z">Z</a></td></tr>
  36190. <tr><td></td><td valign="top"><a href="#index-escape-codes_002c-character">escape codes, character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  36191. <tr><td></td><td valign="top"><a href="#index-eval-directive_002c-TIC54X"><code>eval</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36192. <tr><td></td><td valign="top"><a href="#index-even"><code>even</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  36193. <tr><td></td><td valign="top"><a href="#index-even-directive_002c-M680x0"><code>even</code> directive, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
  36194. <tr><td></td><td valign="top"><a href="#index-even-directive_002c-TIC54X"><code>even</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36195. <tr><td></td><td valign="top"><a href="#index-Exception-Cause-Register_002c-ARC">Exception Cause Register, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  36196. <tr><td></td><td valign="top"><a href="#index-Exception-Return-Address_002c-ARC">Exception Return Address, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  36197. <tr><td></td><td valign="top"><a href="#index-exitm-directive"><code>exitm</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Macro">Macro</a></td></tr>
  36198. <tr><td></td><td valign="top"><a href="#index-expr-_0028internal-section_0029">expr (internal section)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#As-Sections">As Sections</a></td></tr>
  36199. <tr><td></td><td valign="top"><a href="#index-expression-arguments">expression arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Arguments">Arguments</a></td></tr>
  36200. <tr><td></td><td valign="top"><a href="#index-expressions">expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Expressions">Expressions</a></td></tr>
  36201. <tr><td></td><td valign="top"><a href="#index-expressions_002c-comparison">expressions, comparison</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
  36202. <tr><td></td><td valign="top"><a href="#index-expressions_002c-empty">expressions, empty</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Empty-Exprs">Empty Exprs</a></td></tr>
  36203. <tr><td></td><td valign="top"><a href="#index-expressions_002c-integer">expressions, integer</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Integer-Exprs">Integer Exprs</a></td></tr>
  36204. <tr><td></td><td valign="top"><a href="#index-extAuxRegister-directive_002c-ARC"><code>extAuxRegister</code> directive, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
  36205. <tr><td></td><td valign="top"><a href="#index-extCondCode-directive_002c-ARC"><code>extCondCode</code> directive, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
  36206. <tr><td></td><td valign="top"><a href="#index-extCoreRegister-directive_002c-ARC"><code>extCoreRegister</code> directive, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
  36207. <tr><td></td><td valign="top"><a href="#index-extend-directive-M680x0"><code>extend</code> directive M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dFloat">M68K-Float</a></td></tr>
  36208. <tr><td></td><td valign="top"><a href="#index-extend-directive-M68HC11"><code>extend</code> directive M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dFloat">M68HC11-Float</a></td></tr>
  36209. <tr><td></td><td valign="top"><a href="#index-extend-directive-XGATE"><code>extend</code> directive XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dFloat">XGATE-Float</a></td></tr>
  36210. <tr><td></td><td valign="top"><a href="#index-extension-core-registers_002c-ARC">extension core registers, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  36211. <tr><td></td><td valign="top"><a href="#index-extension-instructions_002c-i386">extension instructions, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36212. <tr><td></td><td valign="top"><a href="#index-extension-instructions_002c-x86_002d64">extension instructions, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36213. <tr><td></td><td valign="top"><a href="#index-extern-directive"><code>extern</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Extern">Extern</a></td></tr>
  36214. <tr><td></td><td valign="top"><a href="#index-extInstruction-directive_002c-ARC"><code>extInstruction</code> directive, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
  36215. <tr><td colspan="4"> <hr></td></tr>
  36216. <tr><th id="AS-Index_cp_letter-F">F</th><td></td><td></td></tr>
  36217. <tr><td></td><td valign="top"><a href="#index-fail-directive"><code>fail</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Fail">Fail</a></td></tr>
  36218. <tr><td></td><td valign="top"><a href="#index-far_005fmode-directive_002c-TIC54X"><code>far_mode</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36219. <tr><td></td><td valign="top"><a href="#index-faster-processing-_0028_002df_0029">faster processing (<samp>-f</samp>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#f">f</a></td></tr>
  36220. <tr><td></td><td valign="top"><a href="#index-fatal-signal">fatal signal</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bug-Criteria">Bug Criteria</a></td></tr>
  36221. <tr><td></td><td valign="top"><a href="#index-fclist-directive_002c-TIC54X"><code>fclist</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36222. <tr><td></td><td valign="top"><a href="#index-fcnolist-directive_002c-TIC54X"><code>fcnolist</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36223. <tr><td></td><td valign="top"><a href="#index-fepc-register_002c-V850"><code>fepc</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36224. <tr><td></td><td valign="top"><a href="#index-fepsw-register_002c-V850"><code>fepsw</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36225. <tr><td></td><td valign="top"><a href="#index-ffloat-directive_002c-VAX"><code>ffloat</code> directive, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
  36226. <tr><td></td><td valign="top"><a href="#index-field-directive_002c-TIC54X"><code>field</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36227. <tr><td></td><td valign="top"><a href="#index-file-directive"><code>file</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#File">File</a></td></tr>
  36228. <tr><td></td><td valign="top"><a href="#index-file-directive_002c-MSP-430"><code>file</code> directive, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
  36229. <tr><td></td><td valign="top"><a href="#index-file-name_002c-logical">file name, logical</a>:</td><td>&nbsp;</td><td valign="top"><a href="#File">File</a></td></tr>
  36230. <tr><td></td><td valign="top"><a href="#index-file-names-and-line-numbers_002c-in-warnings_002ferrors">file names and line numbers, in warnings/errors</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Errors">Errors</a></td></tr>
  36231. <tr><td></td><td valign="top"><a href="#index-files_002c-including">files, including</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Include">Include</a></td></tr>
  36232. <tr><td></td><td valign="top"><a href="#index-files_002c-input">files, input</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Input-Files">Input Files</a></td></tr>
  36233. <tr><td></td><td valign="top"><a href="#index-fill-directive"><code>fill</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Fill">Fill</a></td></tr>
  36234. <tr><td></td><td valign="top"><a href="#index-filling-memory">filling memory</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Skip">Skip</a></td></tr>
  36235. <tr><td></td><td valign="top"><a href="#index-filling-memory-1">filling memory</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Space">Space</a></td></tr>
  36236. <tr><td></td><td valign="top"><a href="#index-filling-memory-with-no_002dop-instructions">filling memory with no-op instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nop">Nop</a></td></tr>
  36237. <tr><td></td><td valign="top"><a href="#index-filling-memory-with-no_002dop-instructions-1">filling memory with no-op instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nops">Nops</a></td></tr>
  36238. <tr><td></td><td valign="top"><a href="#index-filling-memory-with-zero-bytes">filling memory with zero bytes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Zero">Zero</a></td></tr>
  36239. <tr><td></td><td valign="top"><a href="#index-FLIX-syntax">FLIX syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Syntax">Xtensa Syntax</a></td></tr>
  36240. <tr><td></td><td valign="top"><a href="#index-float-directive"><code>float</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Float">Float</a></td></tr>
  36241. <tr><td></td><td valign="top"><a href="#index-float-directive_002c-i386"><code>float</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36242. <tr><td></td><td valign="top"><a href="#index-float-directive_002c-M680x0"><code>float</code> directive, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dFloat">M68K-Float</a></td></tr>
  36243. <tr><td></td><td valign="top"><a href="#index-float-directive_002c-M68HC11"><code>float</code> directive, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dFloat">M68HC11-Float</a></td></tr>
  36244. <tr><td></td><td valign="top"><a href="#index-float-directive_002c-RX"><code>float</code> directive, RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dFloat">RX-Float</a></td></tr>
  36245. <tr><td></td><td valign="top"><a href="#index-float-directive_002c-TIC54X"><code>float</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36246. <tr><td></td><td valign="top"><a href="#index-float-directive_002c-VAX"><code>float</code> directive, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dfloat">VAX-float</a></td></tr>
  36247. <tr><td></td><td valign="top"><a href="#index-float-directive_002c-x86_002d64"><code>float</code> directive, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36248. <tr><td></td><td valign="top"><a href="#index-float-directive_002c-XGATE"><code>float</code> directive, XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dFloat">XGATE-Float</a></td></tr>
  36249. <tr><td></td><td valign="top"><a href="#index-floating-point-numbers">floating point numbers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Flonums">Flonums</a></td></tr>
  36250. <tr><td></td><td valign="top"><a href="#index-floating-point-numbers-_0028double_0029">floating point numbers (double)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Double">Double</a></td></tr>
  36251. <tr><td></td><td valign="top"><a href="#index-floating-point-numbers-_0028single_0029">floating point numbers (single)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Float">Float</a></td></tr>
  36252. <tr><td></td><td valign="top"><a href="#index-floating-point-numbers-_0028single_0029-1">floating point numbers (single)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Single">Single</a></td></tr>
  36253. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-AArch64-_0028IEEE_0029">floating point, AArch64 (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Floating-Point">AArch64 Floating Point</a></td></tr>
  36254. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-Alpha-_0028IEEE_0029">floating point, Alpha (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Floating-Point">Alpha Floating Point</a></td></tr>
  36255. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-ARM-_0028IEEE_0029">floating point, ARM (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Floating-Point">ARM Floating Point</a></td></tr>
  36256. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-D10V">floating point, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dFloat">D10V-Float</a></td></tr>
  36257. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-D30V">floating point, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dFloat">D30V-Float</a></td></tr>
  36258. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-H8_002f300-_0028IEEE_0029">floating point, H8/300 (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Floating-Point">H8/300 Floating Point</a></td></tr>
  36259. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-HPPA-_0028IEEE_0029">floating point, HPPA (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HPPA-Floating-Point">HPPA Floating Point</a></td></tr>
  36260. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-i386">floating point, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36261. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-M680x0">floating point, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dFloat">M68K-Float</a></td></tr>
  36262. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-M68HC11">floating point, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dFloat">M68HC11-Float</a></td></tr>
  36263. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-MSP-430-_0028IEEE_0029">floating point, MSP 430 (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Floating-Point">MSP430 Floating Point</a></td></tr>
  36264. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-OPENRISC-_0028IEEE_0029">floating point, OPENRISC (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dFloat">OpenRISC-Float</a></td></tr>
  36265. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-risc_002dv-_0028IEEE_0029">floating point, risc-v (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dFloating_002dPoint">RISC-V-Floating-Point</a></td></tr>
  36266. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-RX">floating point, RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dFloat">RX-Float</a></td></tr>
  36267. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-s390">floating point, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Floating-Point">s390 Floating Point</a></td></tr>
  36268. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-SH-_0028IEEE_0029">floating point, SH (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Floating-Point">SH Floating Point</a></td></tr>
  36269. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-SPARC-_0028IEEE_0029">floating point, SPARC (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dFloat">Sparc-Float</a></td></tr>
  36270. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-V850-_0028IEEE_0029">floating point, V850 (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Floating-Point">V850 Floating Point</a></td></tr>
  36271. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-VAX">floating point, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dfloat">VAX-float</a></td></tr>
  36272. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-WebAssembly-_0028IEEE_0029">floating point, WebAssembly (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dFloating_002dPoint">WebAssembly-Floating-Point</a></td></tr>
  36273. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-x86_002d64">floating point, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36274. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-XGATE">floating point, XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dFloat">XGATE-Float</a></td></tr>
  36275. <tr><td></td><td valign="top"><a href="#index-floating-point_002c-Z80">floating point, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Floating-Point">Z80 Floating Point</a></td></tr>
  36276. <tr><td></td><td valign="top"><a href="#index-flonums">flonums</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Flonums">Flonums</a></td></tr>
  36277. <tr><td></td><td valign="top"><a href="#index-force2bsr-command_002dline-option_002c-C_002dSKY"><code>force2bsr</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36278. <tr><td></td><td valign="top"><a href="#index-format-of-error-messages">format of error messages</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Errors">Errors</a></td></tr>
  36279. <tr><td></td><td valign="top"><a href="#index-format-of-warning-messages">format of warning messages</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Errors">Errors</a></td></tr>
  36280. <tr><td></td><td valign="top"><a href="#index-formfeed-_0028_005cf_0029">formfeed (<code>\f</code>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  36281. <tr><td></td><td valign="top"><a href="#index-four_002dbyte-integer">four-byte integer</a>:</td><td>&nbsp;</td><td valign="top"><a href="#g_t4byte">4byte</a></td></tr>
  36282. <tr><td></td><td valign="top"><a href="#index-fpic-command_002dline-option_002c-C_002dSKY"><code>fpic</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36283. <tr><td></td><td valign="top"><a href="#index-frame-pointer_002c-ARC">frame pointer, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  36284. <tr><td></td><td valign="top"><a href="#index-func-directive"><code>func</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Func">Func</a></td></tr>
  36285. <tr><td></td><td valign="top"><a href="#index-functions_002c-in-expressions">functions, in expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Operators">Operators</a></td></tr>
  36286. <tr><td colspan="4"> <hr></td></tr>
  36287. <tr><th id="AS-Index_cp_letter-G">G</th><td></td><td></td></tr>
  36288. <tr><td></td><td valign="top"><a href="#index-gfloat-directive_002c-VAX"><code>gfloat</code> directive, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
  36289. <tr><td></td><td valign="top"><a href="#index-global"><code>global</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  36290. <tr><td></td><td valign="top"><a href="#index-global-directive"><code>global</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Global">Global</a></td></tr>
  36291. <tr><td></td><td valign="top"><a href="#index-global-directive_002c-TIC54X"><code>global</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36292. <tr><td></td><td valign="top"><a href="#index-global-pointer_002c-ARC">global pointer, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  36293. <tr><td></td><td valign="top"><a href="#index-got-directive_002c-Nios-II"><code>got</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  36294. <tr><td></td><td valign="top"><a href="#index-gotoff-directive_002c-Nios-II"><code>gotoff</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  36295. <tr><td></td><td valign="top"><a href="#index-gotoff_005fhiadj-directive_002c-Nios-II"><code>gotoff_hiadj</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  36296. <tr><td></td><td valign="top"><a href="#index-gotoff_005flo-directive_002c-Nios-II"><code>gotoff_lo</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  36297. <tr><td></td><td valign="top"><a href="#index-got_005fhiadj-directive_002c-Nios-II"><code>got_hiadj</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  36298. <tr><td></td><td valign="top"><a href="#index-got_005flo-directive_002c-Nios-II"><code>got_lo</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  36299. <tr><td></td><td valign="top"><a href="#index-gp-register_002c-MIPS"><code>gp</code> register, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Small-Data">MIPS Small Data</a></td></tr>
  36300. <tr><td></td><td valign="top"><a href="#index-gp-register_002c-V850"><code>gp</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36301. <tr><td></td><td valign="top"><a href="#index-gprel-directive_002c-Nios-II"><code>gprel</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  36302. <tr><td></td><td valign="top"><a href="#index-grouping-data">grouping data</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sub_002dSections">Sub-Sections</a></td></tr>
  36303. <tr><td colspan="4"> <hr></td></tr>
  36304. <tr><th id="AS-Index_cp_letter-H">H</th><td></td><td></td></tr>
  36305. <tr><td></td><td valign="top"><a href="#index-H8_002f300-addressing-modes">H8/300 addressing modes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300_002dAddressing">H8/300-Addressing</a></td></tr>
  36306. <tr><td></td><td valign="top"><a href="#index-H8_002f300-floating-point-_0028IEEE_0029">H8/300 floating point (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Floating-Point">H8/300 Floating Point</a></td></tr>
  36307. <tr><td></td><td valign="top"><a href="#index-H8_002f300-line-comment-character">H8/300 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300_002dChars">H8/300-Chars</a></td></tr>
  36308. <tr><td></td><td valign="top"><a href="#index-H8_002f300-line-separator">H8/300 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300_002dChars">H8/300-Chars</a></td></tr>
  36309. <tr><td></td><td valign="top"><a href="#index-H8_002f300-machine-directives-_0028none_0029">H8/300 machine directives (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Directives">H8/300 Directives</a></td></tr>
  36310. <tr><td></td><td valign="top"><a href="#index-H8_002f300-opcode-summary">H8/300 opcode summary</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Opcodes">H8/300 Opcodes</a></td></tr>
  36311. <tr><td></td><td valign="top"><a href="#index-H8_002f300-options">H8/300 options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Options">H8/300 Options</a></td></tr>
  36312. <tr><td></td><td valign="top"><a href="#index-H8_002f300-registers">H8/300 registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300_002dRegs">H8/300-Regs</a></td></tr>
  36313. <tr><td></td><td valign="top"><a href="#index-H8_002f300-size-suffixes">H8/300 size suffixes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Opcodes">H8/300 Opcodes</a></td></tr>
  36314. <tr><td></td><td valign="top"><a href="#index-H8_002f300-support">H8/300 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300_002dDependent">H8/300-Dependent</a></td></tr>
  36315. <tr><td></td><td valign="top"><a href="#index-H8_002f300H_002c-assembling-for">H8/300H, assembling for</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Directives">H8/300 Directives</a></td></tr>
  36316. <tr><td></td><td valign="top"><a href="#index-half-directive_002c-BPF"><code>half</code> directive, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Directives">BPF Directives</a></td></tr>
  36317. <tr><td></td><td valign="top"><a href="#index-half-directive_002c-Nios-II"><code>half</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  36318. <tr><td></td><td valign="top"><a href="#index-half-directive_002c-SPARC"><code>half</code> directive, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  36319. <tr><td></td><td valign="top"><a href="#index-half-directive_002c-TIC54X"><code>half</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36320. <tr><td></td><td valign="top"><a href="#index-hex-character-code-_0028_005cxd_002e_002e_002e_0029">hex character code (<code>\<var>xd...</var></code>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  36321. <tr><td></td><td valign="top"><a href="#index-hexadecimal-integers">hexadecimal integers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Integers">Integers</a></td></tr>
  36322. <tr><td></td><td valign="top"><a href="#index-hexadecimal-prefix_002c-S12Z">hexadecimal prefix, S12Z</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Options">S12Z Options</a></td></tr>
  36323. <tr><td></td><td valign="top"><a href="#index-hexadecimal-prefix_002c-Z80">hexadecimal prefix, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  36324. <tr><td></td><td valign="top"><a href="#index-hfloat-directive_002c-i386"><code>hfloat</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36325. <tr><td></td><td valign="top"><a href="#index-hfloat-directive_002c-VAX"><code>hfloat</code> directive, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
  36326. <tr><td></td><td valign="top"><a href="#index-hfloat-directive_002c-x86_002d64"><code>hfloat</code> directive, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36327. <tr><td></td><td valign="top"><a href="#index-hi-directive_002c-Nios-II"><code>hi</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  36328. <tr><td></td><td valign="top"><a href="#index-hi-pseudo_002dop_002c-V850"><code>hi</code> pseudo-op, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
  36329. <tr><td></td><td valign="top"><a href="#index-hi0-pseudo_002dop_002c-V850"><code>hi0</code> pseudo-op, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
  36330. <tr><td></td><td valign="top"><a href="#index-hiadj-directive_002c-Nios-II"><code>hiadj</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  36331. <tr><td></td><td valign="top"><a href="#index-hidden-directive"><code>hidden</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Hidden">Hidden</a></td></tr>
  36332. <tr><td></td><td valign="top"><a href="#index-high-directive_002c-M32R"><code>high</code> directive, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
  36333. <tr><td></td><td valign="top"><a href="#index-hilo-pseudo_002dop_002c-V850"><code>hilo</code> pseudo-op, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
  36334. <tr><td></td><td valign="top"><a href="#index-HPPA-directives-not-supported">HPPA directives not supported</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HPPA-Directives">HPPA Directives</a></td></tr>
  36335. <tr><td></td><td valign="top"><a href="#index-HPPA-floating-point-_0028IEEE_0029">HPPA floating point (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HPPA-Floating-Point">HPPA Floating Point</a></td></tr>
  36336. <tr><td></td><td valign="top"><a href="#index-HPPA-Syntax">HPPA Syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HPPA-Options">HPPA Options</a></td></tr>
  36337. <tr><td></td><td valign="top"><a href="#index-HPPA_002donly-directives">HPPA-only directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HPPA-Directives">HPPA Directives</a></td></tr>
  36338. <tr><td></td><td valign="top"><a href="#index-hword-directive"><code>hword</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#hword">hword</a></td></tr>
  36339. <tr><td colspan="4"> <hr></td></tr>
  36340. <tr><th id="AS-Index_cp_letter-I">I</th><td></td><td></td></tr>
  36341. <tr><td></td><td valign="top"><a href="#index-i386-16_002dbit-code">i386 16-bit code</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
  36342. <tr><td></td><td valign="top"><a href="#index-i386-arch-directive">i386 arch directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dArch">i386-Arch</a></td></tr>
  36343. <tr><td></td><td valign="top"><a href="#index-i386-att_005fsyntax-pseudo-op">i386 att_syntax pseudo op</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36344. <tr><td></td><td valign="top"><a href="#index-i386-conversion-instructions">i386 conversion instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36345. <tr><td></td><td valign="top"><a href="#index-i386-extension-instructions">i386 extension instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36346. <tr><td></td><td valign="top"><a href="#index-i386-floating-point">i386 floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36347. <tr><td></td><td valign="top"><a href="#index-i386-immediate-operands">i386 immediate operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36348. <tr><td></td><td valign="top"><a href="#index-i386-instruction-naming">i386 instruction naming</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36349. <tr><td></td><td valign="top"><a href="#index-i386-instruction-prefixes">i386 instruction prefixes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
  36350. <tr><td></td><td valign="top"><a href="#index-i386-intel_005fsyntax-pseudo-op">i386 intel_syntax pseudo op</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36351. <tr><td></td><td valign="top"><a href="#index-i386-jump-optimization">i386 jump optimization</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dJumps">i386-Jumps</a></td></tr>
  36352. <tr><td></td><td valign="top"><a href="#index-i386-jump_002c-call_002c-return">i386 jump, call, return</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36353. <tr><td></td><td valign="top"><a href="#index-i386-jump_002fcall-operands">i386 jump/call operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36354. <tr><td></td><td valign="top"><a href="#index-i386-line-comment-character">i386 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dChars">i386-Chars</a></td></tr>
  36355. <tr><td></td><td valign="top"><a href="#index-i386-line-separator">i386 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dChars">i386-Chars</a></td></tr>
  36356. <tr><td></td><td valign="top"><a href="#index-i386-memory-references">i386 memory references</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMemory">i386-Memory</a></td></tr>
  36357. <tr><td></td><td valign="top"><a href="#index-i386-mnemonic-compatibility">i386 mnemonic compatibility</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36358. <tr><td></td><td valign="top"><a href="#index-i386-mul_002c-imul-instructions">i386 <code>mul</code>, <code>imul</code> instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dNotes">i386-Notes</a></td></tr>
  36359. <tr><td></td><td valign="top"><a href="#index-i386-options">i386 options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  36360. <tr><td></td><td valign="top"><a href="#index-i386-register-operands">i386 register operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36361. <tr><td></td><td valign="top"><a href="#index-i386-registers">i386 registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dRegs">i386-Regs</a></td></tr>
  36362. <tr><td></td><td valign="top"><a href="#index-i386-sections">i386 sections</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36363. <tr><td></td><td valign="top"><a href="#index-i386-size-suffixes">i386 size suffixes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36364. <tr><td></td><td valign="top"><a href="#index-i386-source_002c-destination-operands">i386 source, destination operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36365. <tr><td></td><td valign="top"><a href="#index-i386-support">i386 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dDependent">i386-Dependent</a></td></tr>
  36366. <tr><td></td><td valign="top"><a href="#index-i386-syntax-compatibility">i386 syntax compatibility</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36367. <tr><td></td><td valign="top"><a href="#index-i80386-support">i80386 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dDependent">i386-Dependent</a></td></tr>
  36368. <tr><td></td><td valign="top"><a href="#index-IA_002d64-line-comment-character">IA-64 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64_002dChars">IA-64-Chars</a></td></tr>
  36369. <tr><td></td><td valign="top"><a href="#index-IA_002d64-line-separator">IA-64 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64_002dChars">IA-64-Chars</a></td></tr>
  36370. <tr><td></td><td valign="top"><a href="#index-IA_002d64-options">IA-64 options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64-Options">IA-64 Options</a></td></tr>
  36371. <tr><td></td><td valign="top"><a href="#index-IA_002d64-Processor_002dstatus_002dRegister-bit-names">IA-64 Processor-status-Register bit names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64_002dBits">IA-64-Bits</a></td></tr>
  36372. <tr><td></td><td valign="top"><a href="#index-IA_002d64-registers">IA-64 registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64_002dRegs">IA-64-Regs</a></td></tr>
  36373. <tr><td></td><td valign="top"><a href="#index-IA_002d64-relocations">IA-64 relocations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64_002dRelocs">IA-64-Relocs</a></td></tr>
  36374. <tr><td></td><td valign="top"><a href="#index-IA_002d64-support">IA-64 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64_002dDependent">IA-64-Dependent</a></td></tr>
  36375. <tr><td></td><td valign="top"><a href="#index-IA_002d64-Syntax">IA-64 Syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64-Options">IA-64 Options</a></td></tr>
  36376. <tr><td></td><td valign="top"><a href="#index-ident-directive"><code>ident</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ident">Ident</a></td></tr>
  36377. <tr><td></td><td valign="top"><a href="#index-identifiers_002c-ARM">identifiers, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
  36378. <tr><td></td><td valign="top"><a href="#index-identifiers_002c-MSP-430">identifiers, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
  36379. <tr><td></td><td valign="top"><a href="#index-if-directive"><code>if</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36380. <tr><td></td><td valign="top"><a href="#index-ifb-directive"><code>ifb</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36381. <tr><td></td><td valign="top"><a href="#index-ifc-directive"><code>ifc</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36382. <tr><td></td><td valign="top"><a href="#index-ifdef-directive"><code>ifdef</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36383. <tr><td></td><td valign="top"><a href="#index-ifeq-directive"><code>ifeq</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36384. <tr><td></td><td valign="top"><a href="#index-ifeqs-directive"><code>ifeqs</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36385. <tr><td></td><td valign="top"><a href="#index-ifge-directive"><code>ifge</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36386. <tr><td></td><td valign="top"><a href="#index-ifgt-directive"><code>ifgt</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36387. <tr><td></td><td valign="top"><a href="#index-ifle-directive"><code>ifle</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36388. <tr><td></td><td valign="top"><a href="#index-iflt-directive"><code>iflt</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36389. <tr><td></td><td valign="top"><a href="#index-ifnb-directive"><code>ifnb</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36390. <tr><td></td><td valign="top"><a href="#index-ifnc-directive"><code>ifnc</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36391. <tr><td></td><td valign="top"><a href="#index-ifndef-directive"><code>ifndef</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36392. <tr><td></td><td valign="top"><a href="#index-ifne-directive"><code>ifne</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36393. <tr><td></td><td valign="top"><a href="#index-ifnes-directive"><code>ifnes</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36394. <tr><td></td><td valign="top"><a href="#index-ifnotdef-directive"><code>ifnotdef</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#If">If</a></td></tr>
  36395. <tr><td></td><td valign="top"><a href="#index-immediate-character_002c-AArch64">immediate character, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
  36396. <tr><td></td><td valign="top"><a href="#index-immediate-character_002c-ARM">immediate character, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
  36397. <tr><td></td><td valign="top"><a href="#index-immediate-character_002c-M680x0">immediate character, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
  36398. <tr><td></td><td valign="top"><a href="#index-immediate-character_002c-VAX">immediate character, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
  36399. <tr><td></td><td valign="top"><a href="#index-immediate-fields_002c-relaxation">immediate fields, relaxation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  36400. <tr><td></td><td valign="top"><a href="#index-immediate-operands_002c-i386">immediate operands, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36401. <tr><td></td><td valign="top"><a href="#index-immediate-operands_002c-x86_002d64">immediate operands, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36402. <tr><td></td><td valign="top"><a href="#index-imul-instruction_002c-i386"><code>imul</code> instruction, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dNotes">i386-Notes</a></td></tr>
  36403. <tr><td></td><td valign="top"><a href="#index-imul-instruction_002c-x86_002d64"><code>imul</code> instruction, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dNotes">i386-Notes</a></td></tr>
  36404. <tr><td></td><td valign="top"><a href="#index-incbin-directive"><code>incbin</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Incbin">Incbin</a></td></tr>
  36405. <tr><td></td><td valign="top"><a href="#index-include-directive"><code>include</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Include">Include</a></td></tr>
  36406. <tr><td></td><td valign="top"><a href="#index-include-directive-search-path"><code>include</code> directive search path</a>:</td><td>&nbsp;</td><td valign="top"><a href="#I">I</a></td></tr>
  36407. <tr><td></td><td valign="top"><a href="#index-indirect-character_002c-VAX">indirect character, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
  36408. <tr><td></td><td valign="top"><a href="#index-infix-operators">infix operators</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
  36409. <tr><td></td><td valign="top"><a href="#index-inhibiting-interrupts_002c-i386">inhibiting interrupts, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
  36410. <tr><td></td><td valign="top"><a href="#index-input">input</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Input-Files">Input Files</a></td></tr>
  36411. <tr><td></td><td valign="top"><a href="#index-input-file-linenumbers">input file linenumbers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Input-Files">Input Files</a></td></tr>
  36412. <tr><td></td><td valign="top"><a href="#index-insn-directive"><code>insn</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dDirectives">i386-Directives</a></td></tr>
  36413. <tr><td></td><td valign="top"><a href="#index-INSN-directives">INSN directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
  36414. <tr><td></td><td valign="top"><a href="#index-instruction-aliases_002c-s390">instruction aliases, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Aliases">s390 Aliases</a></td></tr>
  36415. <tr><td></td><td valign="top"><a href="#index-instruction-bundle">instruction bundle</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bundle-directives">Bundle directives</a></td></tr>
  36416. <tr><td></td><td valign="top"><a href="#index-instruction-expansion_002c-CRIS">instruction expansion, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dExpand">CRIS-Expand</a></td></tr>
  36417. <tr><td></td><td valign="top"><a href="#index-instruction-expansion_002c-MMIX">instruction expansion, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dExpand">MMIX-Expand</a></td></tr>
  36418. <tr><td></td><td valign="top"><a href="#index-instruction-formats_002c-risc_002dv">instruction formats, risc-v</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dFormats">RISC-V-Formats</a></td></tr>
  36419. <tr><td></td><td valign="top"><a href="#index-instruction-formats_002c-s390">instruction formats, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Formats">s390 Formats</a></td></tr>
  36420. <tr><td></td><td valign="top"><a href="#index-instruction-marker_002c-s390">instruction marker, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Instruction-Marker">s390 Instruction Marker</a></td></tr>
  36421. <tr><td></td><td valign="top"><a href="#index-instruction-mnemonics_002c-s390">instruction mnemonics, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Mnemonics">s390 Mnemonics</a></td></tr>
  36422. <tr><td></td><td valign="top"><a href="#index-instruction-naming_002c-i386">instruction naming, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36423. <tr><td></td><td valign="top"><a href="#index-instruction-naming_002c-x86_002d64">instruction naming, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36424. <tr><td></td><td valign="top"><a href="#index-instruction-operand-modifier_002c-s390">instruction operand modifier, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Operand-Modifier">s390 Operand Modifier</a></td></tr>
  36425. <tr><td></td><td valign="top"><a href="#index-instruction-operands_002c-s390">instruction operands, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Operands">s390 Operands</a></td></tr>
  36426. <tr><td></td><td valign="top"><a href="#index-instruction-prefixes_002c-i386">instruction prefixes, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
  36427. <tr><td></td><td valign="top"><a href="#index-instruction-set_002c-M680x0">instruction set, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dopcodes">M68K-opcodes</a></td></tr>
  36428. <tr><td></td><td valign="top"><a href="#index-instruction-set_002c-M68HC11">instruction set, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dopcodes">M68HC11-opcodes</a></td></tr>
  36429. <tr><td></td><td valign="top"><a href="#index-instruction-set_002c-XGATE">instruction set, XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dopcodes">XGATE-opcodes</a></td></tr>
  36430. <tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-AVR">instruction summary, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Opcodes">AVR Opcodes</a></td></tr>
  36431. <tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-D10V">instruction summary, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dOpcodes">D10V-Opcodes</a></td></tr>
  36432. <tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-D30V">instruction summary, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dOpcodes">D30V-Opcodes</a></td></tr>
  36433. <tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-H8_002f300">instruction summary, H8/300</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Opcodes">H8/300 Opcodes</a></td></tr>
  36434. <tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-LM32">instruction summary, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Opcodes">LM32 Opcodes</a></td></tr>
  36435. <tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-LM32-1">instruction summary, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dOpcodes">OpenRISC-Opcodes</a></td></tr>
  36436. <tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-SH">instruction summary, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Opcodes">SH Opcodes</a></td></tr>
  36437. <tr><td></td><td valign="top"><a href="#index-instruction-summary_002c-Z8000">instruction summary, Z8000</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Opcodes">Z8000 Opcodes</a></td></tr>
  36438. <tr><td></td><td valign="top"><a href="#index-instruction-syntax_002c-s390">instruction syntax, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Syntax">s390 Syntax</a></td></tr>
  36439. <tr><td></td><td valign="top"><a href="#index-instructions-and-directives">instructions and directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Statements">Statements</a></td></tr>
  36440. <tr><td></td><td valign="top"><a href="#index-int-directive"><code>int</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Int">Int</a></td></tr>
  36441. <tr><td></td><td valign="top"><a href="#index-int-directive_002c-H8_002f300"><code>int</code> directive, H8/300</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Directives">H8/300 Directives</a></td></tr>
  36442. <tr><td></td><td valign="top"><a href="#index-int-directive_002c-i386"><code>int</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36443. <tr><td></td><td valign="top"><a href="#index-int-directive_002c-TIC54X"><code>int</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36444. <tr><td></td><td valign="top"><a href="#index-int-directive_002c-x86_002d64"><code>int</code> directive, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36445. <tr><td></td><td valign="top"><a href="#index-integer-expressions">integer expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Integer-Exprs">Integer Exprs</a></td></tr>
  36446. <tr><td></td><td valign="top"><a href="#index-integer_002c-16_002dbyte">integer, 16-byte</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Octa">Octa</a></td></tr>
  36447. <tr><td></td><td valign="top"><a href="#index-integer_002c-2_002dbyte">integer, 2-byte</a>:</td><td>&nbsp;</td><td valign="top"><a href="#g_t2byte">2byte</a></td></tr>
  36448. <tr><td></td><td valign="top"><a href="#index-integer_002c-4_002dbyte">integer, 4-byte</a>:</td><td>&nbsp;</td><td valign="top"><a href="#g_t4byte">4byte</a></td></tr>
  36449. <tr><td></td><td valign="top"><a href="#index-integer_002c-8_002dbyte">integer, 8-byte</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Quad">Quad</a></td></tr>
  36450. <tr><td></td><td valign="top"><a href="#index-integer_002c-8_002dbyte-1">integer, 8-byte</a>:</td><td>&nbsp;</td><td valign="top"><a href="#g_t8byte">8byte</a></td></tr>
  36451. <tr><td></td><td valign="top"><a href="#index-integers">integers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Integers">Integers</a></td></tr>
  36452. <tr><td></td><td valign="top"><a href="#index-integers_002c-16_002dbit">integers, 16-bit</a>:</td><td>&nbsp;</td><td valign="top"><a href="#hword">hword</a></td></tr>
  36453. <tr><td></td><td valign="top"><a href="#index-integers_002c-32_002dbit">integers, 32-bit</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Int">Int</a></td></tr>
  36454. <tr><td></td><td valign="top"><a href="#index-integers_002c-binary">integers, binary</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Integers">Integers</a></td></tr>
  36455. <tr><td></td><td valign="top"><a href="#index-integers_002c-decimal">integers, decimal</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Integers">Integers</a></td></tr>
  36456. <tr><td></td><td valign="top"><a href="#index-integers_002c-hexadecimal">integers, hexadecimal</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Integers">Integers</a></td></tr>
  36457. <tr><td></td><td valign="top"><a href="#index-integers_002c-octal">integers, octal</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Integers">Integers</a></td></tr>
  36458. <tr><td></td><td valign="top"><a href="#index-integers_002c-one-byte">integers, one byte</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Byte">Byte</a></td></tr>
  36459. <tr><td></td><td valign="top"><a href="#index-intel_005fsyntax-pseudo-op_002c-i386">intel_syntax pseudo op, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36460. <tr><td></td><td valign="top"><a href="#index-intel_005fsyntax-pseudo-op_002c-x86_002d64">intel_syntax pseudo op, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36461. <tr><td></td><td valign="top"><a href="#index-internal-assembler-sections">internal assembler sections</a>:</td><td>&nbsp;</td><td valign="top"><a href="#As-Sections">As Sections</a></td></tr>
  36462. <tr><td></td><td valign="top"><a href="#index-internal-directive"><code>internal</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Internal">Internal</a></td></tr>
  36463. <tr><td></td><td valign="top"><a href="#index-interrupt-link-register_002c-ARC">interrupt link register, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  36464. <tr><td></td><td valign="top"><a href="#index-Interrupt-Vector-Base-address_002c-ARC">Interrupt Vector Base address, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  36465. <tr><td></td><td valign="top"><a href="#index-invalid-input">invalid input</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bug-Criteria">Bug Criteria</a></td></tr>
  36466. <tr><td></td><td valign="top"><a href="#index-invocation-summary">invocation summary</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  36467. <tr><td></td><td valign="top"><a href="#index-IP2K-architecture-options">IP2K architecture options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
  36468. <tr><td></td><td valign="top"><a href="#index-IP2K-architecture-options-1">IP2K architecture options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
  36469. <tr><td></td><td valign="top"><a href="#index-IP2K-line-comment-character">IP2K line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dChars">IP2K-Chars</a></td></tr>
  36470. <tr><td></td><td valign="top"><a href="#index-IP2K-line-separator">IP2K line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dChars">IP2K-Chars</a></td></tr>
  36471. <tr><td></td><td valign="top"><a href="#index-IP2K-options">IP2K options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
  36472. <tr><td></td><td valign="top"><a href="#index-IP2K-support">IP2K support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dDependent">IP2K-Dependent</a></td></tr>
  36473. <tr><td></td><td valign="top"><a href="#index-irp-directive"><code>irp</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Irp">Irp</a></td></tr>
  36474. <tr><td></td><td valign="top"><a href="#index-irpc-directive"><code>irpc</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Irpc">Irpc</a></td></tr>
  36475. <tr><td colspan="4"> <hr></td></tr>
  36476. <tr><th id="AS-Index_cp_letter-J">J</th><td></td><td></td></tr>
  36477. <tr><td></td><td valign="top"><a href="#index-joining-text-and-data-sections">joining text and data sections</a>:</td><td>&nbsp;</td><td valign="top"><a href="#R">R</a></td></tr>
  36478. <tr><td></td><td valign="top"><a href="#index-jsri2bsr-command_002dline-option_002c-C_002dSKY"><code>jsri2bsr</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36479. <tr><td></td><td valign="top"><a href="#index-jump-instructions_002c-i386">jump instructions, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36480. <tr><td></td><td valign="top"><a href="#index-jump-instructions_002c-relaxation">jump instructions, relaxation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Jump-Relaxation">Xtensa Jump Relaxation</a></td></tr>
  36481. <tr><td></td><td valign="top"><a href="#index-jump-instructions_002c-x86_002d64">jump instructions, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36482. <tr><td></td><td valign="top"><a href="#index-jump-optimization_002c-i386">jump optimization, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dJumps">i386-Jumps</a></td></tr>
  36483. <tr><td></td><td valign="top"><a href="#index-jump-optimization_002c-x86_002d64">jump optimization, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dJumps">i386-Jumps</a></td></tr>
  36484. <tr><td></td><td valign="top"><a href="#index-jump_002fcall-operands_002c-i386">jump/call operands, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36485. <tr><td></td><td valign="top"><a href="#index-jump_002fcall-operands_002c-x86_002d64">jump/call operands, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36486. <tr><td colspan="4"> <hr></td></tr>
  36487. <tr><th id="AS-Index_cp_letter-K">K</th><td></td><td></td></tr>
  36488. <tr><td></td><td valign="top"><a href="#index-KVX-Options">KVX Options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  36489. <tr><td></td><td valign="top"><a href="#index-KVX-support">KVX support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX_002dDependent">KVX-Dependent</a></td></tr>
  36490. <tr><td colspan="4"> <hr></td></tr>
  36491. <tr><th id="AS-Index_cp_letter-L">L</th><td></td><td></td></tr>
  36492. <tr><td></td><td valign="top"><a href="#index-L16SI-instructions_002c-relaxation"><code>L16SI</code> instructions, relaxation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  36493. <tr><td></td><td valign="top"><a href="#index-L16UI-instructions_002c-relaxation"><code>L16UI</code> instructions, relaxation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  36494. <tr><td></td><td valign="top"><a href="#index-L32I-instructions_002c-relaxation"><code>L32I</code> instructions, relaxation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  36495. <tr><td></td><td valign="top"><a href="#index-L8UI-instructions_002c-relaxation"><code>L8UI</code> instructions, relaxation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  36496. <tr><td></td><td valign="top"><a href="#index-label-_0028_003a_0029">label (<code>:</code>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Statements">Statements</a></td></tr>
  36497. <tr><td></td><td valign="top"><a href="#index-label-directive_002c-TIC54X"><code>label</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36498. <tr><td></td><td valign="top"><a href="#index-labels">labels</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Labels">Labels</a></td></tr>
  36499. <tr><td></td><td valign="top"><a href="#index-labels_002c-Z80">labels, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dLabels">Z80-Labels</a></td></tr>
  36500. <tr><td></td><td valign="top"><a href="#index-largecomm-directive_002c-ELF"><code>largecomm</code> directive, ELF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dDirectives">i386-Directives</a></td></tr>
  36501. <tr><td></td><td valign="top"><a href="#index-lcomm-directive"><code>lcomm</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Lcomm">Lcomm</a></td></tr>
  36502. <tr><td></td><td valign="top"><a href="#index-lcomm-directive-1"><code>lcomm</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
  36503. <tr><td></td><td valign="top"><a href="#index-lcomm-directive_002c-COFF"><code>lcomm</code> directive, COFF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dDirectives">i386-Directives</a></td></tr>
  36504. <tr><td></td><td valign="top"><a href="#index-lcommon-directive_002c-ARC"><code>lcommon</code> directive, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
  36505. <tr><td></td><td valign="top"><a href="#index-ld"><code>ld</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Object">Object</a></td></tr>
  36506. <tr><td></td><td valign="top"><a href="#index-ldouble-directive-M680x0"><code>ldouble</code> directive M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dFloat">M68K-Float</a></td></tr>
  36507. <tr><td></td><td valign="top"><a href="#index-ldouble-directive-M68HC11"><code>ldouble</code> directive M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dFloat">M68HC11-Float</a></td></tr>
  36508. <tr><td></td><td valign="top"><a href="#index-ldouble-directive-XGATE"><code>ldouble</code> directive XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dFloat">XGATE-Float</a></td></tr>
  36509. <tr><td></td><td valign="top"><a href="#index-ldouble-directive_002c-TIC54X"><code>ldouble</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36510. <tr><td></td><td valign="top"><a href="#index-LDR-reg_002c_003d_003cexpr_003e-pseudo-op_002c-AArch64"><code>LDR reg,=&lt;expr&gt;</code> pseudo op, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Opcodes">AArch64 Opcodes</a></td></tr>
  36511. <tr><td></td><td valign="top"><a href="#index-LDR-reg_002c_003d_003clabel_003e-pseudo-op_002c-ARM"><code>LDR reg,=&lt;label&gt;</code> pseudo op, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Opcodes">ARM Opcodes</a></td></tr>
  36512. <tr><td></td><td valign="top"><a href="#index-LEB128-directives">LEB128 directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
  36513. <tr><td></td><td valign="top"><a href="#index-length-directive_002c-TIC54X"><code>length</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36514. <tr><td></td><td valign="top"><a href="#index-length-of-symbols">length of symbols</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Intro">Symbol Intro</a></td></tr>
  36515. <tr><td></td><td valign="top"><a href="#index-level-1-interrupt-link-register_002c-ARC">level 1 interrupt link register, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  36516. <tr><td></td><td valign="top"><a href="#index-level-2-interrupt-link-register_002c-ARC">level 2 interrupt link register, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  36517. <tr><td></td><td valign="top"><a href="#index-lflags-directive-_0028ignored_0029"><code>lflags</code> directive (ignored)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Lflags">Lflags</a></td></tr>
  36518. <tr><td></td><td valign="top"><a href="#index-line">line</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
  36519. <tr><td></td><td valign="top"><a href="#index-line-comment-character">line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Comments">Comments</a></td></tr>
  36520. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-AArch64">line comment character, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
  36521. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Alpha">line comment character, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha_002dChars">Alpha-Chars</a></td></tr>
  36522. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-ARC">line comment character, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
  36523. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-ARM">line comment character, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
  36524. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-AVR">line comment character, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR_002dChars">AVR-Chars</a></td></tr>
  36525. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-BPF">line comment character, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Special-Characters">BPF Special Characters</a></td></tr>
  36526. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-CR16">line comment character, CR16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CR16_002dChars">CR16-Chars</a></td></tr>
  36527. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-D10V">line comment character, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dChars">D10V-Chars</a></td></tr>
  36528. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-D30V">line comment character, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dChars">D30V-Chars</a></td></tr>
  36529. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Epiphany">line comment character, Epiphany</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Epiphany_002dChars">Epiphany-Chars</a></td></tr>
  36530. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-H8_002f300">line comment character, H8/300</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300_002dChars">H8/300-Chars</a></td></tr>
  36531. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-i386">line comment character, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dChars">i386-Chars</a></td></tr>
  36532. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-IA_002d64">line comment character, IA-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64_002dChars">IA-64-Chars</a></td></tr>
  36533. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-IP2K">line comment character, IP2K</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dChars">IP2K-Chars</a></td></tr>
  36534. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-LM32">line comment character, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32_002dChars">LM32-Chars</a></td></tr>
  36535. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-M32C">line comment character, M32C</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dChars">M32C-Chars</a></td></tr>
  36536. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-M680x0">line comment character, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
  36537. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-M68HC11">line comment character, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
  36538. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Meta">line comment character, Meta</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
  36539. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-MicroBlaze">line comment character, MicroBlaze</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MicroBlaze_002dChars">MicroBlaze-Chars</a></td></tr>
  36540. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-MIPS">line comment character, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS_002dChars">MIPS-Chars</a></td></tr>
  36541. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-MSP-430">line comment character, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
  36542. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Nios-II">line comment character, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Chars">Nios II Chars</a></td></tr>
  36543. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-NS32K">line comment character, NS32K</a>:</td><td>&nbsp;</td><td valign="top"><a href="#NS32K_002dChars">NS32K-Chars</a></td></tr>
  36544. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-OpenRISC">line comment character, OpenRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dChars">OpenRISC-Chars</a></td></tr>
  36545. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-PJ">line comment character, PJ</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PJ_002dChars">PJ-Chars</a></td></tr>
  36546. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-PowerPC">line comment character, PowerPC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PowerPC_002dChars">PowerPC-Chars</a></td></tr>
  36547. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-PRU">line comment character, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Chars">PRU Chars</a></td></tr>
  36548. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-RL78">line comment character, RL78</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RL78_002dChars">RL78-Chars</a></td></tr>
  36549. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-RX">line comment character, RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dChars">RX-Chars</a></td></tr>
  36550. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-S12Z">line comment character, S12Z</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Syntax-Overview">S12Z Syntax Overview</a></td></tr>
  36551. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-s390">line comment character, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Characters">s390 Characters</a></td></tr>
  36552. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-SCORE">line comment character, SCORE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SCORE_002dChars">SCORE-Chars</a></td></tr>
  36553. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-SH">line comment character, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
  36554. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Sparc">line comment character, Sparc</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dChars">Sparc-Chars</a></td></tr>
  36555. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-TIC54X">line comment character, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dChars">TIC54X-Chars</a></td></tr>
  36556. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-TIC6X">line comment character, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Syntax">TIC6X Syntax</a></td></tr>
  36557. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-V850">line comment character, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dChars">V850-Chars</a></td></tr>
  36558. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-VAX">line comment character, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dChars">VAX-Chars</a></td></tr>
  36559. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Visium">line comment character, Visium</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Visium-Characters">Visium Characters</a></td></tr>
  36560. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-WebAssembly">line comment character, WebAssembly</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dChars">WebAssembly-Chars</a></td></tr>
  36561. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-XGATE">line comment character, XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
  36562. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-XStormy16">line comment character, XStormy16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
  36563. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Z80">line comment character, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  36564. <tr><td></td><td valign="top"><a href="#index-line-comment-character_002c-Z8000">line comment character, Z8000</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000_002dChars">Z8000-Chars</a></td></tr>
  36565. <tr><td></td><td valign="top"><a href="#index-line-comment-characters_002c-CRIS">line comment characters, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dChars">CRIS-Chars</a></td></tr>
  36566. <tr><td></td><td valign="top"><a href="#index-line-comment-characters_002c-MMIX">line comment characters, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dChars">MMIX-Chars</a></td></tr>
  36567. <tr><td></td><td valign="top"><a href="#index-line-directive"><code>line</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Line">Line</a></td></tr>
  36568. <tr><td></td><td valign="top"><a href="#index-line-directive_002c-MSP-430"><code>line</code> directive, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
  36569. <tr><td></td><td valign="top"><a href="#index-line-numbers_002c-in-input-files">line numbers, in input files</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Input-Files">Input Files</a></td></tr>
  36570. <tr><td></td><td valign="top"><a href="#index-line-separator-character">line separator character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Statements">Statements</a></td></tr>
  36571. <tr><td></td><td valign="top"><a href="#index-line-separator-character_002c-Nios-II">line separator character, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Chars">Nios II Chars</a></td></tr>
  36572. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-AArch64">line separator, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
  36573. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-Alpha">line separator, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha_002dChars">Alpha-Chars</a></td></tr>
  36574. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-ARC">line separator, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
  36575. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-ARM">line separator, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
  36576. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-AVR">line separator, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR_002dChars">AVR-Chars</a></td></tr>
  36577. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-CR16">line separator, CR16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CR16_002dChars">CR16-Chars</a></td></tr>
  36578. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-Epiphany">line separator, Epiphany</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Epiphany_002dChars">Epiphany-Chars</a></td></tr>
  36579. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-H8_002f300">line separator, H8/300</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300_002dChars">H8/300-Chars</a></td></tr>
  36580. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-i386">line separator, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dChars">i386-Chars</a></td></tr>
  36581. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-IA_002d64">line separator, IA-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64_002dChars">IA-64-Chars</a></td></tr>
  36582. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-IP2K">line separator, IP2K</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dChars">IP2K-Chars</a></td></tr>
  36583. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-LM32">line separator, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32_002dChars">LM32-Chars</a></td></tr>
  36584. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-M32C">line separator, M32C</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dChars">M32C-Chars</a></td></tr>
  36585. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-M680x0">line separator, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
  36586. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-M68HC11">line separator, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
  36587. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-Meta">line separator, Meta</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
  36588. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-MicroBlaze">line separator, MicroBlaze</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MicroBlaze_002dChars">MicroBlaze-Chars</a></td></tr>
  36589. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-MIPS">line separator, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS_002dChars">MIPS-Chars</a></td></tr>
  36590. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-MSP-430">line separator, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
  36591. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-NS32K">line separator, NS32K</a>:</td><td>&nbsp;</td><td valign="top"><a href="#NS32K_002dChars">NS32K-Chars</a></td></tr>
  36592. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-OpenRISC">line separator, OpenRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dChars">OpenRISC-Chars</a></td></tr>
  36593. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-PJ">line separator, PJ</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PJ_002dChars">PJ-Chars</a></td></tr>
  36594. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-PowerPC">line separator, PowerPC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PowerPC_002dChars">PowerPC-Chars</a></td></tr>
  36595. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-RL78">line separator, RL78</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RL78_002dChars">RL78-Chars</a></td></tr>
  36596. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-RX">line separator, RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dChars">RX-Chars</a></td></tr>
  36597. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-S12Z">line separator, S12Z</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Syntax-Overview">S12Z Syntax Overview</a></td></tr>
  36598. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-s390">line separator, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Characters">s390 Characters</a></td></tr>
  36599. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-SCORE">line separator, SCORE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SCORE_002dChars">SCORE-Chars</a></td></tr>
  36600. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-SH">line separator, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
  36601. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-Sparc">line separator, Sparc</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dChars">Sparc-Chars</a></td></tr>
  36602. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-TIC54X">line separator, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dChars">TIC54X-Chars</a></td></tr>
  36603. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-TIC6X">line separator, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Syntax">TIC6X Syntax</a></td></tr>
  36604. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-V850">line separator, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dChars">V850-Chars</a></td></tr>
  36605. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-VAX">line separator, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dChars">VAX-Chars</a></td></tr>
  36606. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-Visium">line separator, Visium</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Visium-Characters">Visium Characters</a></td></tr>
  36607. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-XGATE">line separator, XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
  36608. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-XStormy16">line separator, XStormy16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
  36609. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-Z80">line separator, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  36610. <tr><td></td><td valign="top"><a href="#index-line-separator_002c-Z8000">line separator, Z8000</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000_002dChars">Z8000-Chars</a></td></tr>
  36611. <tr><td></td><td valign="top"><a href="#index-lines-starting-with-_0023">lines starting with <code>#</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Comments">Comments</a></td></tr>
  36612. <tr><td></td><td valign="top"><a href="#index-link-register_002c-ARC">link register, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  36613. <tr><td></td><td valign="top"><a href="#index-linker">linker</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Object">Object</a></td></tr>
  36614. <tr><td></td><td valign="top"><a href="#index-linker_002c-and-assembler">linker, and assembler</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Secs-Background">Secs Background</a></td></tr>
  36615. <tr><td></td><td valign="top"><a href="#index-linkonce-directive"><code>linkonce</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Linkonce">Linkonce</a></td></tr>
  36616. <tr><td></td><td valign="top"><a href="#index-list-directive"><code>list</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#List">List</a></td></tr>
  36617. <tr><td></td><td valign="top"><a href="#index-list-directive_002c-TIC54X"><code>list</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36618. <tr><td></td><td valign="top"><a href="#index-listing-control_002c-turning-off">listing control, turning off</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nolist">Nolist</a></td></tr>
  36619. <tr><td></td><td valign="top"><a href="#index-listing-control_002c-turning-on">listing control, turning on</a>:</td><td>&nbsp;</td><td valign="top"><a href="#List">List</a></td></tr>
  36620. <tr><td></td><td valign="top"><a href="#index-listing-control_003a-new-page">listing control: new page</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Eject">Eject</a></td></tr>
  36621. <tr><td></td><td valign="top"><a href="#index-listing-control_003a-paper-size">listing control: paper size</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Psize">Psize</a></td></tr>
  36622. <tr><td></td><td valign="top"><a href="#index-listing-control_003a-subtitle">listing control: subtitle</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sbttl">Sbttl</a></td></tr>
  36623. <tr><td></td><td valign="top"><a href="#index-listing-control_003a-title-line">listing control: title line</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Title">Title</a></td></tr>
  36624. <tr><td></td><td valign="top"><a href="#index-listings_002c-enabling">listings, enabling</a>:</td><td>&nbsp;</td><td valign="top"><a href="#a">a</a></td></tr>
  36625. <tr><td></td><td valign="top"><a href="#index-literal-directive"><code>literal</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Literal-Directive">Literal Directive</a></td></tr>
  36626. <tr><td></td><td valign="top"><a href="#index-literal-pool-entries_002c-s390">literal pool entries, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Literal-Pool-Entries">s390 Literal Pool Entries</a></td></tr>
  36627. <tr><td></td><td valign="top"><a href="#index-literal_005fposition-directive"><code>literal_position</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Literal-Position-Directive">Literal Position Directive</a></td></tr>
  36628. <tr><td></td><td valign="top"><a href="#index-literal_005fprefix-directive"><code>literal_prefix</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Literal-Prefix-Directive">Literal Prefix Directive</a></td></tr>
  36629. <tr><td></td><td valign="top"><a href="#index-little-endian-output_002c-MIPS">little endian output, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  36630. <tr><td></td><td valign="top"><a href="#index-little-endian-output_002c-PJ">little endian output, PJ</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  36631. <tr><td></td><td valign="top"><a href="#index-little_002dendian-output_002c-MIPS">little-endian output, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  36632. <tr><td></td><td valign="top"><a href="#index-little_002dendian-output_002c-TIC6X">little-endian output, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
  36633. <tr><td></td><td valign="top"><a href="#index-LM32-line-comment-character">LM32 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32_002dChars">LM32-Chars</a></td></tr>
  36634. <tr><td></td><td valign="top"><a href="#index-LM32-line-separator">LM32 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32_002dChars">LM32-Chars</a></td></tr>
  36635. <tr><td></td><td valign="top"><a href="#index-LM32-modifiers">LM32 modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32_002dModifiers">LM32-Modifiers</a></td></tr>
  36636. <tr><td></td><td valign="top"><a href="#index-LM32-opcode-summary">LM32 opcode summary</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Opcodes">LM32 Opcodes</a></td></tr>
  36637. <tr><td></td><td valign="top"><a href="#index-LM32-options-_0028none_0029">LM32 options (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
  36638. <tr><td></td><td valign="top"><a href="#index-LM32-register-names">LM32 register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32_002dRegs">LM32-Regs</a></td></tr>
  36639. <tr><td></td><td valign="top"><a href="#index-LM32-support">LM32 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32_002dDependent">LM32-Dependent</a></td></tr>
  36640. <tr><td></td><td valign="top"><a href="#index-ln-directive"><code>ln</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ln">Ln</a></td></tr>
  36641. <tr><td></td><td valign="top"><a href="#index-lo-directive_002c-Nios-II"><code>lo</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  36642. <tr><td></td><td valign="top"><a href="#index-lo-pseudo_002dop_002c-V850"><code>lo</code> pseudo-op, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
  36643. <tr><td></td><td valign="top"><a href="#index-loc-directive"><code>loc</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Loc">Loc</a></td></tr>
  36644. <tr><td></td><td valign="top"><a href="#index-local-common-symbols">local common symbols</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Lcomm">Lcomm</a></td></tr>
  36645. <tr><td></td><td valign="top"><a href="#index-local-directive"><code>local</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Local">Local</a></td></tr>
  36646. <tr><td></td><td valign="top"><a href="#index-local-labels">local labels</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
  36647. <tr><td></td><td valign="top"><a href="#index-local-symbol-names">local symbol names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
  36648. <tr><td></td><td valign="top"><a href="#index-local-symbols_002c-retaining-in-output">local symbols, retaining in output</a>:</td><td>&nbsp;</td><td valign="top"><a href="#L">L</a></td></tr>
  36649. <tr><td></td><td valign="top"><a href="#index-location-counter">location counter</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Dot">Dot</a></td></tr>
  36650. <tr><td></td><td valign="top"><a href="#index-location-counter_002c-advancing">location counter, advancing</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Org">Org</a></td></tr>
  36651. <tr><td></td><td valign="top"><a href="#index-location-counter_002c-Z80">location counter, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  36652. <tr><td></td><td valign="top"><a href="#index-loc_005fmark_005flabels-directive"><code>loc_mark_labels</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Loc_005fmark_005flabels">Loc_mark_labels</a></td></tr>
  36653. <tr><td></td><td valign="top"><a href="#index-logical-file-name">logical file name</a>:</td><td>&nbsp;</td><td valign="top"><a href="#File">File</a></td></tr>
  36654. <tr><td></td><td valign="top"><a href="#index-logical-line-number">logical line number</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Line">Line</a></td></tr>
  36655. <tr><td></td><td valign="top"><a href="#index-logical-line-numbers">logical line numbers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Comments">Comments</a></td></tr>
  36656. <tr><td></td><td valign="top"><a href="#index-long-directive"><code>long</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Long">Long</a></td></tr>
  36657. <tr><td></td><td valign="top"><a href="#index-long-directive_002c-i386"><code>long</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36658. <tr><td></td><td valign="top"><a href="#index-long-directive_002c-TIC54X"><code>long</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36659. <tr><td></td><td valign="top"><a href="#index-long-directive_002c-x86_002d64"><code>long</code> directive, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  36660. <tr><td></td><td valign="top"><a href="#index-longcall-pseudo_002dop_002c-V850"><code>longcall</code> pseudo-op, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
  36661. <tr><td></td><td valign="top"><a href="#index-longcalls-directive"><code>longcalls</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Longcalls-Directive">Longcalls Directive</a></td></tr>
  36662. <tr><td></td><td valign="top"><a href="#index-longjump-pseudo_002dop_002c-V850"><code>longjump</code> pseudo-op, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
  36663. <tr><td></td><td valign="top"><a href="#index-Loongson-Content-Address-Memory-_0028CAM_0029-generation-override">Loongson Content Address Memory (CAM) generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36664. <tr><td></td><td valign="top"><a href="#index-Loongson-EXTensions-_0028EXT_0029-instructions-generation-override">Loongson EXTensions (EXT) instructions generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36665. <tr><td></td><td valign="top"><a href="#index-Loongson-EXTensions-R2-_0028EXT2_0029-instructions-generation-override">Loongson EXTensions R2 (EXT2) instructions generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36666. <tr><td></td><td valign="top"><a href="#index-Loongson-MultiMedia-extensions-Instructions-_0028MMI_0029-generation-override">Loongson MultiMedia extensions Instructions (MMI) generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36667. <tr><td></td><td valign="top"><a href="#index-loop-counter_002c-ARC">loop counter, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  36668. <tr><td></td><td valign="top"><a href="#index-loop-directive_002c-TIC54X"><code>loop</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36669. <tr><td></td><td valign="top"><a href="#index-LOOP-instructions_002c-alignment"><code>LOOP</code> instructions, alignment</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Automatic-Alignment">Xtensa Automatic Alignment</a></td></tr>
  36670. <tr><td></td><td valign="top"><a href="#index-low-directive_002c-M32R"><code>low</code> directive, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
  36671. <tr><td></td><td valign="top"><a href="#index-lp-register_002c-V850"><code>lp</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  36672. <tr><td></td><td valign="top"><a href="#index-lval"><code>lval</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  36673. <tr><td></td><td valign="top"><a href="#index-LWP_002c-i386">LWP, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dLWP">i386-LWP</a></td></tr>
  36674. <tr><td></td><td valign="top"><a href="#index-LWP_002c-x86_002d64">LWP, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dLWP">i386-LWP</a></td></tr>
  36675. <tr><td colspan="4"> <hr></td></tr>
  36676. <tr><th id="AS-Index_cp_letter-M">M</th><td></td><td></td></tr>
  36677. <tr><td></td><td valign="top"><a href="#index-M16C-architecture-option">M16C architecture option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
  36678. <tr><td></td><td valign="top"><a href="#index-M32C-architecture-option">M32C architecture option</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
  36679. <tr><td></td><td valign="top"><a href="#index-M32C-line-comment-character">M32C line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dChars">M32C-Chars</a></td></tr>
  36680. <tr><td></td><td valign="top"><a href="#index-M32C-line-separator">M32C line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dChars">M32C-Chars</a></td></tr>
  36681. <tr><td></td><td valign="top"><a href="#index-M32C-modifiers">M32C modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dModifiers">M32C-Modifiers</a></td></tr>
  36682. <tr><td></td><td valign="top"><a href="#index-M32C-options">M32C options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
  36683. <tr><td></td><td valign="top"><a href="#index-M32C-support">M32C support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dDependent">M32C-Dependent</a></td></tr>
  36684. <tr><td></td><td valign="top"><a href="#index-M32R-architecture-options">M32R architecture options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  36685. <tr><td></td><td valign="top"><a href="#index-M32R-architecture-options-1">M32R architecture options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  36686. <tr><td></td><td valign="top"><a href="#index-M32R-architecture-options-2">M32R architecture options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  36687. <tr><td></td><td valign="top"><a href="#index-M32R-directives">M32R directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
  36688. <tr><td></td><td valign="top"><a href="#index-M32R-options">M32R options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  36689. <tr><td></td><td valign="top"><a href="#index-M32R-support">M32R support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dDependent">M32R-Dependent</a></td></tr>
  36690. <tr><td></td><td valign="top"><a href="#index-M32R-warnings">M32R warnings</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dWarnings">M32R-Warnings</a></td></tr>
  36691. <tr><td></td><td valign="top"><a href="#index-M680x0-addressing-modes">M680x0 addressing modes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
  36692. <tr><td></td><td valign="top"><a href="#index-M680x0-architecture-options">M680x0 architecture options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  36693. <tr><td></td><td valign="top"><a href="#index-M680x0-branch-improvement">M680x0 branch improvement</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dBranch">M68K-Branch</a></td></tr>
  36694. <tr><td></td><td valign="top"><a href="#index-M680x0-directives">M680x0 directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
  36695. <tr><td></td><td valign="top"><a href="#index-M680x0-floating-point">M680x0 floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dFloat">M68K-Float</a></td></tr>
  36696. <tr><td></td><td valign="top"><a href="#index-M680x0-immediate-character">M680x0 immediate character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
  36697. <tr><td></td><td valign="top"><a href="#index-M680x0-line-comment-character">M680x0 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
  36698. <tr><td></td><td valign="top"><a href="#index-M680x0-line-separator">M680x0 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
  36699. <tr><td></td><td valign="top"><a href="#index-M680x0-opcodes">M680x0 opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dopcodes">M68K-opcodes</a></td></tr>
  36700. <tr><td></td><td valign="top"><a href="#index-M680x0-options">M680x0 options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  36701. <tr><td></td><td valign="top"><a href="#index-M680x0-pseudo_002dopcodes">M680x0 pseudo-opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dBranch">M68K-Branch</a></td></tr>
  36702. <tr><td></td><td valign="top"><a href="#index-M680x0-size-modifiers">M680x0 size modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
  36703. <tr><td></td><td valign="top"><a href="#index-M680x0-support">M680x0 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dDependent">M68K-Dependent</a></td></tr>
  36704. <tr><td></td><td valign="top"><a href="#index-M680x0-syntax">M680x0 syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
  36705. <tr><td></td><td valign="top"><a href="#index-M68HC11-addressing-modes">M68HC11 addressing modes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
  36706. <tr><td></td><td valign="top"><a href="#index-M68HC11-and-M68HC12-support">M68HC11 and M68HC12 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDependent">M68HC11-Dependent</a></td></tr>
  36707. <tr><td></td><td valign="top"><a href="#index-M68HC11-assembler-directive-_002efar">M68HC11 assembler directive .far</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  36708. <tr><td></td><td valign="top"><a href="#index-M68HC11-assembler-directive-_002einterrupt">M68HC11 assembler directive .interrupt</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  36709. <tr><td></td><td valign="top"><a href="#index-M68HC11-assembler-directive-_002emode">M68HC11 assembler directive .mode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  36710. <tr><td></td><td valign="top"><a href="#index-M68HC11-assembler-directive-_002erelax">M68HC11 assembler directive .relax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  36711. <tr><td></td><td valign="top"><a href="#index-M68HC11-assembler-directive-_002exrefb">M68HC11 assembler directive .xrefb</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  36712. <tr><td></td><td valign="top"><a href="#index-M68HC11-assembler-directives">M68HC11 assembler directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  36713. <tr><td></td><td valign="top"><a href="#index-M68HC11-branch-improvement">M68HC11 branch improvement</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dBranch">M68HC11-Branch</a></td></tr>
  36714. <tr><td></td><td valign="top"><a href="#index-M68HC11-floating-point">M68HC11 floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dFloat">M68HC11-Float</a></td></tr>
  36715. <tr><td></td><td valign="top"><a href="#index-M68HC11-line-comment-character">M68HC11 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
  36716. <tr><td></td><td valign="top"><a href="#index-M68HC11-line-separator">M68HC11 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
  36717. <tr><td></td><td valign="top"><a href="#index-M68HC11-modifiers">M68HC11 modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dModifiers">M68HC11-Modifiers</a></td></tr>
  36718. <tr><td></td><td valign="top"><a href="#index-M68HC11-opcodes">M68HC11 opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dopcodes">M68HC11-opcodes</a></td></tr>
  36719. <tr><td></td><td valign="top"><a href="#index-M68HC11-options">M68HC11 options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  36720. <tr><td></td><td valign="top"><a href="#index-M68HC11-pseudo_002dopcodes">M68HC11 pseudo-opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dBranch">M68HC11-Branch</a></td></tr>
  36721. <tr><td></td><td valign="top"><a href="#index-M68HC11-syntax">M68HC11 syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
  36722. <tr><td></td><td valign="top"><a href="#index-M68HC12-assembler-directives">M68HC12 assembler directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dDirectives">M68HC11-Directives</a></td></tr>
  36723. <tr><td></td><td valign="top"><a href="#index-mA6-command_002dline-option_002c-ARC"><code>mA6</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  36724. <tr><td></td><td valign="top"><a href="#index-mA7-command_002dline-option_002c-ARC"><code>mA7</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  36725. <tr><td></td><td valign="top"><a href="#index-machine-dependencies">machine dependencies</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Machine-Dependencies">Machine Dependencies</a></td></tr>
  36726. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-AArch64">machine directives, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Directives">AArch64 Directives</a></td></tr>
  36727. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-AArch64-1">machine directives, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Directives">KVX Directives</a></td></tr>
  36728. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-ARC">machine directives, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Directives">ARC Directives</a></td></tr>
  36729. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-ARM">machine directives, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Directives">ARM Directives</a></td></tr>
  36730. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-BPF">machine directives, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Directives">BPF Directives</a></td></tr>
  36731. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-H8_002f300-_0028none_0029">machine directives, H8/300 (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Directives">H8/300 Directives</a></td></tr>
  36732. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-MSP-430">machine directives, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
  36733. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-Nios-II">machine directives, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  36734. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-OPENRISC">machine directives, OPENRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
  36735. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-PRU">machine directives, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
  36736. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-RISC_002dV">machine directives, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
  36737. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-SH">machine directives, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Directives">SH Directives</a></td></tr>
  36738. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-SPARC">machine directives, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  36739. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-TIC54X">machine directives, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36740. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-TIC6X">machine directives, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
  36741. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-TILE_002dGx">machine directives, TILE-Gx</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Directives">TILE-Gx Directives</a></td></tr>
  36742. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-TILEPro">machine directives, TILEPro</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Directives">TILEPro Directives</a></td></tr>
  36743. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-V850">machine directives, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
  36744. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-VAX">machine directives, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
  36745. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-x86">machine directives, x86</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dDirectives">i386-Directives</a></td></tr>
  36746. <tr><td></td><td valign="top"><a href="#index-machine-directives_002c-XStormy16">machine directives, XStormy16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16-Directives">XStormy16 Directives</a></td></tr>
  36747. <tr><td></td><td valign="top"><a href="#index-machine-independent-directives">machine independent directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Pseudo-Ops">Pseudo Ops</a></td></tr>
  36748. <tr><td></td><td valign="top"><a href="#index-machine-instructions-_0028not-covered_0029">machine instructions (not covered)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Manual">Manual</a></td></tr>
  36749. <tr><td></td><td valign="top"><a href="#index-machine-relocations_002c-Nios-II">machine relocations, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  36750. <tr><td></td><td valign="top"><a href="#index-machine-relocations_002c-PRU">machine relocations, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Relocations">PRU Relocations</a></td></tr>
  36751. <tr><td></td><td valign="top"><a href="#index-machine_002dindependent-syntax">machine-independent syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Syntax">Syntax</a></td></tr>
  36752. <tr><td></td><td valign="top"><a href="#index-macro-directive"><code>macro</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Macro">Macro</a></td></tr>
  36753. <tr><td></td><td valign="top"><a href="#index-macro-directive_002c-TIC54X"><code>macro</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36754. <tr><td></td><td valign="top"><a href="#index-macros">macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Macro">Macro</a></td></tr>
  36755. <tr><td></td><td valign="top"><a href="#index-macros_002c-count-executed">macros, count executed</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Macro">Macro</a></td></tr>
  36756. <tr><td></td><td valign="top"><a href="#index-Macros_002c-MSP-430">Macros, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dMacros">MSP430-Macros</a></td></tr>
  36757. <tr><td></td><td valign="top"><a href="#index-macros_002c-TIC54X">macros, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  36758. <tr><td></td><td valign="top"><a href="#index-make-rules">make rules</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MD">MD</a></td></tr>
  36759. <tr><td></td><td valign="top"><a href="#index-manual_002c-structure-and-purpose">manual, structure and purpose</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Manual">Manual</a></td></tr>
  36760. <tr><td></td><td valign="top"><a href="#index-marc600-command_002dline-option_002c-ARC"><code>marc600</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  36761. <tr><td></td><td valign="top"><a href="#index-mARC601-command_002dline-option_002c-ARC"><code>mARC601</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  36762. <tr><td></td><td valign="top"><a href="#index-mARC700-command_002dline-option_002c-ARC"><code>mARC700</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  36763. <tr><td></td><td valign="top"><a href="#index-march-command_002dline-option_002c-C_002dSKY"><code>march</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36764. <tr><td></td><td valign="top"><a href="#index-march-command_002dline-option_002c-Nios-II"><code>march</code> command-line option, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
  36765. <tr><td></td><td valign="top"><a href="#index-math-builtins_002c-TIC54X">math builtins, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  36766. <tr><td></td><td valign="top"><a href="#index-Maximum-number-of-continuation-lines">Maximum number of continuation lines</a>:</td><td>&nbsp;</td><td valign="top"><a href="#listing">listing</a></td></tr>
  36767. <tr><td></td><td valign="top"><a href="#index-mbig_002dendian-command_002dline-option_002c-C_002dSKY"><code>mbig-endian</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36768. <tr><td></td><td valign="top"><a href="#index-mbranch_002dstub-command_002dline-option_002c-C_002dSKY"><code>mbranch-stub</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36769. <tr><td></td><td valign="top"><a href="#index-mcache-command_002dline-option_002c-C_002dSKY"><code>mcache</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36770. <tr><td></td><td valign="top"><a href="#index-mcp-command_002dline-option_002c-C_002dSKY"><code>mcp</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36771. <tr><td></td><td valign="top"><a href="#index-mcpu-command_002dline-option_002c-C_002dSKY"><code>mcpu</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36772. <tr><td></td><td valign="top"><a href="#index-mdsp-command_002dline-option_002c-C_002dSKY"><code>mdsp</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36773. <tr><td></td><td valign="top"><a href="#index-medsp-command_002dline-option_002c-C_002dSKY"><code>medsp</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36774. <tr><td></td><td valign="top"><a href="#index-melrw-command_002dline-option_002c-C_002dSKY"><code>melrw</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36775. <tr><td></td><td valign="top"><a href="#index-mEM-command_002dline-option_002c-ARC"><code>mEM</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  36776. <tr><td></td><td valign="top"><a href="#index-memory-references_002c-i386">memory references, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMemory">i386-Memory</a></td></tr>
  36777. <tr><td></td><td valign="top"><a href="#index-memory-references_002c-x86_002d64">memory references, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMemory">i386-Memory</a></td></tr>
  36778. <tr><td></td><td valign="top"><a href="#index-memory_002dmapped-registers_002c-TIC54X">memory-mapped registers, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMMRegs">TIC54X-MMRegs</a></td></tr>
  36779. <tr><td></td><td valign="top"><a href="#index-merging-text-and-data-sections">merging text and data sections</a>:</td><td>&nbsp;</td><td valign="top"><a href="#R">R</a></td></tr>
  36780. <tr><td></td><td valign="top"><a href="#index-messages-from-assembler">messages from assembler</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Errors">Errors</a></td></tr>
  36781. <tr><td></td><td valign="top"><a href="#index-Meta-architectures">Meta architectures</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta-Options">Meta Options</a></td></tr>
  36782. <tr><td></td><td valign="top"><a href="#index-Meta-line-comment-character">Meta line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
  36783. <tr><td></td><td valign="top"><a href="#index-Meta-line-separator">Meta line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
  36784. <tr><td></td><td valign="top"><a href="#index-Meta-options">Meta options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta-Options">Meta Options</a></td></tr>
  36785. <tr><td></td><td valign="top"><a href="#index-Meta-registers">Meta registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta_002dRegs">Meta-Regs</a></td></tr>
  36786. <tr><td></td><td valign="top"><a href="#index-Meta-support">Meta support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta_002dDependent">Meta-Dependent</a></td></tr>
  36787. <tr><td></td><td valign="top"><a href="#index-mforce2bsr-command_002dline-option_002c-C_002dSKY"><code>mforce2bsr</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36788. <tr><td></td><td valign="top"><a href="#index-mhard_002dfloat-command_002dline-option_002c-C_002dSKY"><code>mhard-float</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36789. <tr><td></td><td valign="top"><a href="#index-mHS-command_002dline-option_002c-ARC"><code>mHS</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  36790. <tr><td></td><td valign="top"><a href="#index-MicroBlaze-architectures">MicroBlaze architectures</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MicroBlaze_002dDependent">MicroBlaze-Dependent</a></td></tr>
  36791. <tr><td></td><td valign="top"><a href="#index-MicroBlaze-directives">MicroBlaze directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MicroBlaze-Directives">MicroBlaze Directives</a></td></tr>
  36792. <tr><td></td><td valign="top"><a href="#index-MicroBlaze-line-comment-character">MicroBlaze line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MicroBlaze_002dChars">MicroBlaze-Chars</a></td></tr>
  36793. <tr><td></td><td valign="top"><a href="#index-MicroBlaze-line-separator">MicroBlaze line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MicroBlaze_002dChars">MicroBlaze-Chars</a></td></tr>
  36794. <tr><td></td><td valign="top"><a href="#index-MicroBlaze-Options">MicroBlaze Options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MicroBlaze-Options">MicroBlaze Options</a></td></tr>
  36795. <tr><td></td><td valign="top"><a href="#index-MicroBlaze-support">MicroBlaze support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MicroBlaze_002dDependent">MicroBlaze-Dependent</a></td></tr>
  36796. <tr><td></td><td valign="top"><a href="#index-minus_002c-permitted-arguments">minus, permitted arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
  36797. <tr><td></td><td valign="top"><a href="#index-MIPS-32_002dbit-microMIPS-instruction-generation-override">MIPS 32-bit microMIPS instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-assembly-options">MIPS assembly options</a></td></tr>
  36798. <tr><td></td><td valign="top"><a href="#index-MIPS-architecture-options">MIPS architecture options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  36799. <tr><td></td><td valign="top"><a href="#index-MIPS-big_002dendian-output">MIPS big-endian output</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  36800. <tr><td></td><td valign="top"><a href="#index-MIPS-CPU-override">MIPS CPU override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ISA">MIPS ISA</a></td></tr>
  36801. <tr><td></td><td valign="top"><a href="#index-MIPS-cyclic-redundancy-check-_0028CRC_0029-instruction-generation-override">MIPS cyclic redundancy check (CRC) instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36802. <tr><td></td><td valign="top"><a href="#index-MIPS-directives-to-override-command_002dline-options">MIPS directives to override command-line options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-assembly-options">MIPS assembly options</a></td></tr>
  36803. <tr><td></td><td valign="top"><a href="#index-MIPS-DSP-Release-1-instruction-generation-override">MIPS DSP Release 1 instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36804. <tr><td></td><td valign="top"><a href="#index-MIPS-DSP-Release-2-instruction-generation-override">MIPS DSP Release 2 instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36805. <tr><td></td><td valign="top"><a href="#index-MIPS-DSP-Release-3-instruction-generation-override">MIPS DSP Release 3 instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36806. <tr><td></td><td valign="top"><a href="#index-MIPS-endianness">MIPS endianness</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  36807. <tr><td></td><td valign="top"><a href="#index-MIPS-eXtended-Physical-Address-_0028XPA_0029-instruction-generation-override">MIPS eXtended Physical Address (XPA) instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36808. <tr><td></td><td valign="top"><a href="#index-MIPS-Global-INValidate-_0028GINV_0029-instruction-generation-override">MIPS Global INValidate (GINV) instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36809. <tr><td></td><td valign="top"><a href="#index-MIPS-IEEE-754-NaN-data-encoding-selection">MIPS IEEE 754 NaN data encoding selection</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-NaN-Encodings">MIPS NaN Encodings</a></td></tr>
  36810. <tr><td></td><td valign="top"><a href="#index-MIPS-ISA">MIPS ISA</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  36811. <tr><td></td><td valign="top"><a href="#index-MIPS-ISA-override">MIPS ISA override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ISA">MIPS ISA</a></td></tr>
  36812. <tr><td></td><td valign="top"><a href="#index-MIPS-line-comment-character">MIPS line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS_002dChars">MIPS-Chars</a></td></tr>
  36813. <tr><td></td><td valign="top"><a href="#index-MIPS-line-separator">MIPS line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS_002dChars">MIPS-Chars</a></td></tr>
  36814. <tr><td></td><td valign="top"><a href="#index-MIPS-little_002dendian-output">MIPS little-endian output</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  36815. <tr><td></td><td valign="top"><a href="#index-MIPS-MCU-instruction-generation-override">MIPS MCU instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36816. <tr><td></td><td valign="top"><a href="#index-MIPS-MDMX-instruction-generation-override">MIPS MDMX instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36817. <tr><td></td><td valign="top"><a href="#index-MIPS-MIPS_002d3D-instruction-generation-override">MIPS MIPS-3D instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36818. <tr><td></td><td valign="top"><a href="#index-MIPS-MT-instruction-generation-override">MIPS MT instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36819. <tr><td></td><td valign="top"><a href="#index-MIPS-option-stack">MIPS option stack</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Option-Stack">MIPS Option Stack</a></td></tr>
  36820. <tr><td></td><td valign="top"><a href="#index-MIPS-processor">MIPS processor</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS_002dDependent">MIPS-Dependent</a></td></tr>
  36821. <tr><td></td><td valign="top"><a href="#index-MIPS-SIMD-Architecture-instruction-generation-override">MIPS SIMD Architecture instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36822. <tr><td></td><td valign="top"><a href="#index-MIPS16e2-instruction-generation-override">MIPS16e2 instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  36823. <tr><td></td><td valign="top"><a href="#index-mistack-command_002dline-option_002c-C_002dSKY"><code>mistack</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36824. <tr><td></td><td valign="top"><a href="#index-MIT"><small>MIT</small></a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
  36825. <tr><td></td><td valign="top"><a href="#index-mjsri2bsr-command_002dline-option_002c-C_002dSKY"><code>mjsri2bsr</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36826. <tr><td></td><td valign="top"><a href="#index-mlabr-command_002dline-option_002c-C_002dSKY"><code>mlabr</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36827. <tr><td></td><td valign="top"><a href="#index-mlaf-command_002dline-option_002c-C_002dSKY"><code>mlaf</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36828. <tr><td></td><td valign="top"><a href="#index-mlib-directive_002c-TIC54X"><code>mlib</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36829. <tr><td></td><td valign="top"><a href="#index-mlink_002drelax-command_002dline-option_002c-PRU"><code>mlink-relax</code> command-line option, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Options">PRU Options</a></td></tr>
  36830. <tr><td></td><td valign="top"><a href="#index-mlist-directive_002c-TIC54X"><code>mlist</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36831. <tr><td></td><td valign="top"><a href="#index-mliterals_002dafter_002dbr-command_002dline-option_002c-C_002dSKY"><code>mliterals-after-br</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36832. <tr><td></td><td valign="top"><a href="#index-mliterals_002dafter_002dfunc-command_002dline-option_002c-C_002dSKY"><code>mliterals-after-func</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36833. <tr><td></td><td valign="top"><a href="#index-mlittle_002dendian-command_002dline-option_002c-C_002dSKY"><code>mlittle-endian</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36834. <tr><td></td><td valign="top"><a href="#index-mljump-command_002dline-option_002c-C_002dSKY"><code>mljump</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36835. <tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-BSPEC">MMIX assembler directive BSPEC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36836. <tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-BYTE">MMIX assembler directive BYTE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36837. <tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-ESPEC">MMIX assembler directive ESPEC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36838. <tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-GREG">MMIX assembler directive GREG</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36839. <tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-IS">MMIX assembler directive IS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36840. <tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-LOC">MMIX assembler directive LOC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36841. <tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-LOCAL">MMIX assembler directive LOCAL</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36842. <tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-OCTA">MMIX assembler directive OCTA</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36843. <tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-PREFIX">MMIX assembler directive PREFIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36844. <tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-TETRA">MMIX assembler directive TETRA</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36845. <tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directive-WYDE">MMIX assembler directive WYDE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36846. <tr><td></td><td valign="top"><a href="#index-MMIX-assembler-directives">MMIX assembler directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36847. <tr><td></td><td valign="top"><a href="#index-MMIX-line-comment-characters">MMIX line comment characters</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dChars">MMIX-Chars</a></td></tr>
  36848. <tr><td></td><td valign="top"><a href="#index-MMIX-options">MMIX options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  36849. <tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-BSPEC">MMIX pseudo-op BSPEC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36850. <tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-BYTE">MMIX pseudo-op BYTE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36851. <tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-ESPEC">MMIX pseudo-op ESPEC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36852. <tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-GREG">MMIX pseudo-op GREG</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36853. <tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-IS">MMIX pseudo-op IS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36854. <tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-LOC">MMIX pseudo-op LOC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36855. <tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-LOCAL">MMIX pseudo-op LOCAL</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36856. <tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-OCTA">MMIX pseudo-op OCTA</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36857. <tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-PREFIX">MMIX pseudo-op PREFIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36858. <tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-TETRA">MMIX pseudo-op TETRA</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36859. <tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dop-WYDE">MMIX pseudo-op WYDE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36860. <tr><td></td><td valign="top"><a href="#index-MMIX-pseudo_002dops">MMIX pseudo-ops</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  36861. <tr><td></td><td valign="top"><a href="#index-MMIX-register-names">MMIX register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dRegs">MMIX-Regs</a></td></tr>
  36862. <tr><td></td><td valign="top"><a href="#index-MMIX-support">MMIX support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dDependent">MMIX-Dependent</a></td></tr>
  36863. <tr><td></td><td valign="top"><a href="#index-mmixal-differences">mmixal differences</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dmmixal">MMIX-mmixal</a></td></tr>
  36864. <tr><td></td><td valign="top"><a href="#index-mmp-command_002dline-option_002c-C_002dSKY"><code>mmp</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36865. <tr><td></td><td valign="top"><a href="#index-mmregs-directive_002c-TIC54X"><code>mmregs</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36866. <tr><td></td><td valign="top"><a href="#index-mmsg-directive_002c-TIC54X"><code>mmsg</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36867. <tr><td></td><td valign="top"><a href="#index-MMX_002c-i386">MMX, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dSIMD">i386-SIMD</a></td></tr>
  36868. <tr><td></td><td valign="top"><a href="#index-MMX_002c-x86_002d64">MMX, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dSIMD">i386-SIMD</a></td></tr>
  36869. <tr><td></td><td valign="top"><a href="#index-mnemonic-compatibility_002c-i386">mnemonic compatibility, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  36870. <tr><td></td><td valign="top"><a href="#index-mnemonic-suffixes_002c-i386">mnemonic suffixes, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36871. <tr><td></td><td valign="top"><a href="#index-mnemonic-suffixes_002c-x86_002d64">mnemonic suffixes, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  36872. <tr><td></td><td valign="top"><a href="#index-mnemonics-for-opcodes_002c-VAX">mnemonics for opcodes, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dopcodes">VAX-opcodes</a></td></tr>
  36873. <tr><td></td><td valign="top"><a href="#index-mnemonics_002c-AVR">mnemonics, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Opcodes">AVR Opcodes</a></td></tr>
  36874. <tr><td></td><td valign="top"><a href="#index-mnemonics_002c-D10V">mnemonics, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dOpcodes">D10V-Opcodes</a></td></tr>
  36875. <tr><td></td><td valign="top"><a href="#index-mnemonics_002c-D30V">mnemonics, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dOpcodes">D30V-Opcodes</a></td></tr>
  36876. <tr><td></td><td valign="top"><a href="#index-mnemonics_002c-H8_002f300">mnemonics, H8/300</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Opcodes">H8/300 Opcodes</a></td></tr>
  36877. <tr><td></td><td valign="top"><a href="#index-mnemonics_002c-LM32">mnemonics, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Opcodes">LM32 Opcodes</a></td></tr>
  36878. <tr><td></td><td valign="top"><a href="#index-mnemonics_002c-OpenRISC">mnemonics, OpenRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dOpcodes">OpenRISC-Opcodes</a></td></tr>
  36879. <tr><td></td><td valign="top"><a href="#index-mnemonics_002c-SH">mnemonics, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Opcodes">SH Opcodes</a></td></tr>
  36880. <tr><td></td><td valign="top"><a href="#index-mnemonics_002c-Z8000">mnemonics, Z8000</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Opcodes">Z8000 Opcodes</a></td></tr>
  36881. <tr><td></td><td valign="top"><a href="#index-mno_002dbranch_002dstub-command_002dline-option_002c-C_002dSKY"><code>mno-branch-stub</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36882. <tr><td></td><td valign="top"><a href="#index-mno_002delrw-command_002dline-option_002c-C_002dSKY"><code>mno-elrw</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36883. <tr><td></td><td valign="top"><a href="#index-mno_002dforce2bsr-command_002dline-option_002c-C_002dSKY"><code>mno-force2bsr</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36884. <tr><td></td><td valign="top"><a href="#index-mno_002distack-command_002dline-option_002c-C_002dSKY"><code>mno-istack</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36885. <tr><td></td><td valign="top"><a href="#index-mno_002djsri2bsr-command_002dline-option_002c-C_002dSKY"><code>mno-jsri2bsr</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36886. <tr><td></td><td valign="top"><a href="#index-mno_002dlabr-command_002dline-option_002c-C_002dSKY"><code>mno-labr</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36887. <tr><td></td><td valign="top"><a href="#index-mno_002dlaf-command_002dline-option_002c-C_002dSKY"><code>mno-laf</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36888. <tr><td></td><td valign="top"><a href="#index-mno_002dlink_002drelax-command_002dline-option_002c-PRU"><code>mno-link-relax</code> command-line option, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Options">PRU Options</a></td></tr>
  36889. <tr><td></td><td valign="top"><a href="#index-mno_002dliterals_002dafter_002dfunc-command_002dline-option_002c-C_002dSKY"><code>mno-literals-after-func</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36890. <tr><td></td><td valign="top"><a href="#index-mno_002dljump-command_002dline-option_002c-C_002dSKY"><code>mno-ljump</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36891. <tr><td></td><td valign="top"><a href="#index-mno_002dlrw-command_002dline-option_002c-C_002dSKY"><code>mno-lrw</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36892. <tr><td></td><td valign="top"><a href="#index-mno_002dwarn_002dregname_002dlabel-command_002dline-option_002c-PRU"><code>mno-warn-regname-label</code> command-line option, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Options">PRU Options</a></td></tr>
  36893. <tr><td></td><td valign="top"><a href="#index-mnolist-directive_002c-TIC54X"><code>mnolist</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36894. <tr><td></td><td valign="top"><a href="#index-mnoliterals_002dafter_002dbr-command_002dline-option_002c-C_002dSKY"><code>mnoliterals-after-br</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36895. <tr><td></td><td valign="top"><a href="#index-mnolrw-command_002dline-option_002c-C_002dSKY"><code>mnolrw</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36896. <tr><td></td><td valign="top"><a href="#index-mnps400-command_002dline-option_002c-ARC"><code>mnps400</code> command-line option, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  36897. <tr><td></td><td valign="top"><a href="#index-modifiers_002c-M32C">modifiers, M32C</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dModifiers">M32C-Modifiers</a></td></tr>
  36898. <tr><td></td><td valign="top"><a href="#index-module-layout_002c-WebAssembly">module layout, WebAssembly</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dmodule_002dlayout">WebAssembly-module-layout</a></td></tr>
  36899. <tr><td></td><td valign="top"><a href="#index-Motorola-syntax-for-the-680x0">Motorola syntax for the 680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dMoto_002dSyntax">M68K-Moto-Syntax</a></td></tr>
  36900. <tr><td></td><td valign="top"><a href="#index-MOVI-instructions_002c-relaxation"><code>MOVI</code> instructions, relaxation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  36901. <tr><td></td><td valign="top"><a href="#index-MOVN_002c-MOVZ-and-MOVK-group-relocations_002c-AArch64">MOVN, MOVZ and MOVK group relocations, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dRelocations">AArch64-Relocations</a></td></tr>
  36902. <tr><td></td><td valign="top"><a href="#index-MOVW-and-MOVT-relocations_002c-ARM">MOVW and MOVT relocations, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dRelocations">ARM-Relocations</a></td></tr>
  36903. <tr><td></td><td valign="top"><a href="#index-MRI-compatibility-mode">MRI compatibility mode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M">M</a></td></tr>
  36904. <tr><td></td><td valign="top"><a href="#index-mri-directive"><code>mri</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MRI">MRI</a></td></tr>
  36905. <tr><td></td><td valign="top"><a href="#index-MRI-mode_002c-temporarily">MRI mode, temporarily</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MRI">MRI</a></td></tr>
  36906. <tr><td></td><td valign="top"><a href="#index-msecurity-command_002dline-option_002c-C_002dSKY"><code>msecurity</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36907. <tr><td></td><td valign="top"><a href="#index-MSP-430-floating-point-_0028IEEE_0029">MSP 430 floating point (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Floating-Point">MSP430 Floating Point</a></td></tr>
  36908. <tr><td></td><td valign="top"><a href="#index-MSP-430-identifiers">MSP 430 identifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
  36909. <tr><td></td><td valign="top"><a href="#index-MSP-430-line-comment-character">MSP 430 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
  36910. <tr><td></td><td valign="top"><a href="#index-MSP-430-line-separator">MSP 430 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
  36911. <tr><td></td><td valign="top"><a href="#index-MSP-430-machine-directives">MSP 430 machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
  36912. <tr><td></td><td valign="top"><a href="#index-MSP-430-macros">MSP 430 macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dMacros">MSP430-Macros</a></td></tr>
  36913. <tr><td></td><td valign="top"><a href="#index-MSP-430-opcodes">MSP 430 opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Opcodes">MSP430 Opcodes</a></td></tr>
  36914. <tr><td></td><td valign="top"><a href="#index-MSP-430-options-_0028none_0029">MSP 430 options (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Options">MSP430 Options</a></td></tr>
  36915. <tr><td></td><td valign="top"><a href="#index-MSP-430-profiling-capability">MSP 430 profiling capability</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Profiling-Capability">MSP430 Profiling Capability</a></td></tr>
  36916. <tr><td></td><td valign="top"><a href="#index-MSP-430-register-names">MSP 430 register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dRegs">MSP430-Regs</a></td></tr>
  36917. <tr><td></td><td valign="top"><a href="#index-MSP-430-support">MSP 430 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dDependent">MSP430-Dependent</a></td></tr>
  36918. <tr><td></td><td valign="top"><a href="#index-MSP430-Assembler-Extensions">MSP430 Assembler Extensions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dExt">MSP430-Ext</a></td></tr>
  36919. <tr><td></td><td valign="top"><a href="#index-mspabi_005fattribute-directive_002c-MSP430"><code>mspabi_attribute</code> directive, MSP430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
  36920. <tr><td></td><td valign="top"><a href="#index-mtrust-command_002dline-option_002c-C_002dSKY"><code>mtrust</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36921. <tr><td></td><td valign="top"><a href="#index-mul-instruction_002c-i386"><code>mul</code> instruction, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dNotes">i386-Notes</a></td></tr>
  36922. <tr><td></td><td valign="top"><a href="#index-mul-instruction_002c-x86_002d64"><code>mul</code> instruction, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dNotes">i386-Notes</a></td></tr>
  36923. <tr><td></td><td valign="top"><a href="#index-mvdsp-command_002dline-option_002c-C_002dSKY"><code>mvdsp</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36924. <tr><td colspan="4"> <hr></td></tr>
  36925. <tr><th id="AS-Index_cp_letter-N">N</th><td></td><td></td></tr>
  36926. <tr><td></td><td valign="top"><a href="#index-N32K-support">N32K support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#NS32K_002dDependent">NS32K-Dependent</a></td></tr>
  36927. <tr><td></td><td valign="top"><a href="#index-name"><code>name</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  36928. <tr><td></td><td valign="top"><a href="#index-named-section">named section</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Section">Section</a></td></tr>
  36929. <tr><td></td><td valign="top"><a href="#index-named-sections">named sections</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
  36930. <tr><td></td><td valign="top"><a href="#index-names_002c-symbol">names, symbol</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
  36931. <tr><td></td><td valign="top"><a href="#index-naming-object-file">naming object file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#o">o</a></td></tr>
  36932. <tr><td></td><td valign="top"><a href="#index-NDS32-options">NDS32 options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#NDS32-Options">NDS32 Options</a></td></tr>
  36933. <tr><td></td><td valign="top"><a href="#index-NDS32-processor">NDS32 processor</a>:</td><td>&nbsp;</td><td valign="top"><a href="#NDS32_002dDependent">NDS32-Dependent</a></td></tr>
  36934. <tr><td></td><td valign="top"><a href="#index-new-page_002c-in-listings">new page, in listings</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Eject">Eject</a></td></tr>
  36935. <tr><td></td><td valign="top"><a href="#index-newblock-directive_002c-TIC54X"><code>newblock</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36936. <tr><td></td><td valign="top"><a href="#index-newline-_0028_005cn_0029">newline (<code>\n</code>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  36937. <tr><td></td><td valign="top"><a href="#index-newline_002c-required-at-file-end">newline, required at file end</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Statements">Statements</a></td></tr>
  36938. <tr><td></td><td valign="top"><a href="#index-Nios-II-line-comment-character">Nios II line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Chars">Nios II Chars</a></td></tr>
  36939. <tr><td></td><td valign="top"><a href="#index-Nios-II-line-separator-character">Nios II line separator character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Chars">Nios II Chars</a></td></tr>
  36940. <tr><td></td><td valign="top"><a href="#index-Nios-II-machine-directives">Nios II machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  36941. <tr><td></td><td valign="top"><a href="#index-Nios-II-machine-relocations">Nios II machine relocations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  36942. <tr><td></td><td valign="top"><a href="#index-Nios-II-opcodes">Nios II opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Opcodes">Nios II Opcodes</a></td></tr>
  36943. <tr><td></td><td valign="top"><a href="#index-Nios-II-options">Nios II options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
  36944. <tr><td></td><td valign="top"><a href="#index-Nios-II-support">Nios II support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#NiosII_002dDependent">NiosII-Dependent</a></td></tr>
  36945. <tr><td></td><td valign="top"><a href="#index-Nios-support">Nios support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#NiosII_002dDependent">NiosII-Dependent</a></td></tr>
  36946. <tr><td></td><td valign="top"><a href="#index-no_002dabsolute_002dliterals-directive"><code>no-absolute-literals</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Absolute-Literals-Directive">Absolute Literals Directive</a></td></tr>
  36947. <tr><td></td><td valign="top"><a href="#index-no_002dforce2bsr-command_002dline-option_002c-C_002dSKY"><code>no-force2bsr</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36948. <tr><td></td><td valign="top"><a href="#index-no_002djsri2bsr-command_002dline-option_002c-C_002dSKY"><code>no-jsri2bsr</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  36949. <tr><td></td><td valign="top"><a href="#index-no_002dlongcalls-directive"><code>no-longcalls</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Longcalls-Directive">Longcalls Directive</a></td></tr>
  36950. <tr><td></td><td valign="top"><a href="#index-no_002drelax-command_002dline-option_002c-Nios-II"><code>no-relax</code> command-line option, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
  36951. <tr><td></td><td valign="top"><a href="#index-no_002dschedule-directive"><code>no-schedule</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Schedule-Directive">Schedule Directive</a></td></tr>
  36952. <tr><td></td><td valign="top"><a href="#index-no_002dtransform-directive"><code>no-transform</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Transform-Directive">Transform Directive</a></td></tr>
  36953. <tr><td></td><td valign="top"><a href="#index-nodelay-directive_002c-OpenRISC"><code>nodelay</code> directive, OpenRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
  36954. <tr><td></td><td valign="top"><a href="#index-nolist-directive"><code>nolist</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nolist">Nolist</a></td></tr>
  36955. <tr><td></td><td valign="top"><a href="#index-nolist-directive_002c-TIC54X"><code>nolist</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  36956. <tr><td></td><td valign="top"><a href="#index-nop-directive"><code>nop</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nop">Nop</a></td></tr>
  36957. <tr><td></td><td valign="top"><a href="#index-NOP-pseudo-op_002c-ARM"><code>NOP</code> pseudo op, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Opcodes">ARM Opcodes</a></td></tr>
  36958. <tr><td></td><td valign="top"><a href="#index-nops-directive"><code>nops</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nops">Nops</a></td></tr>
  36959. <tr><td></td><td valign="top"><a href="#index-notes-for-Alpha">notes for Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Notes">Alpha Notes</a></td></tr>
  36960. <tr><td></td><td valign="top"><a href="#index-notes-for-WebAssembly">notes for WebAssembly</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dNotes">WebAssembly-Notes</a></td></tr>
  36961. <tr><td></td><td valign="top"><a href="#index-NS32K-line-comment-character">NS32K line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#NS32K_002dChars">NS32K-Chars</a></td></tr>
  36962. <tr><td></td><td valign="top"><a href="#index-NS32K-line-separator">NS32K line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#NS32K_002dChars">NS32K-Chars</a></td></tr>
  36963. <tr><td></td><td valign="top"><a href="#index-null_002dterminated-strings">null-terminated strings</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Asciz">Asciz</a></td></tr>
  36964. <tr><td></td><td valign="top"><a href="#index-number-constants">number constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Numbers">Numbers</a></td></tr>
  36965. <tr><td></td><td valign="top"><a href="#index-number-of-macros-executed">number of macros executed</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Macro">Macro</a></td></tr>
  36966. <tr><td></td><td valign="top"><a href="#index-numbered-subsections">numbered subsections</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sub_002dSections">Sub-Sections</a></td></tr>
  36967. <tr><td></td><td valign="top"><a href="#index-numbers_002c-16_002dbit">numbers, 16-bit</a>:</td><td>&nbsp;</td><td valign="top"><a href="#hword">hword</a></td></tr>
  36968. <tr><td></td><td valign="top"><a href="#index-numeric-values">numeric values</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Expressions">Expressions</a></td></tr>
  36969. <tr><td></td><td valign="top"><a href="#index-nword-directive_002c-SPARC"><code>nword</code> directive, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  36970. <tr><td colspan="4"> <hr></td></tr>
  36971. <tr><th id="AS-Index_cp_letter-O">O</th><td></td><td></td></tr>
  36972. <tr><td></td><td valign="top"><a href="#index-Object-Attribute_002c-RISC_002dV">Object Attribute, RISC-V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dATTRIBUTE">RISC-V-ATTRIBUTE</a></td></tr>
  36973. <tr><td></td><td valign="top"><a href="#index-object-attributes">object attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Object-Attributes">Object Attributes</a></td></tr>
  36974. <tr><td></td><td valign="top"><a href="#index-object-file">object file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Object">Object</a></td></tr>
  36975. <tr><td></td><td valign="top"><a href="#index-object-file-format">object file format</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Object-Formats">Object Formats</a></td></tr>
  36976. <tr><td></td><td valign="top"><a href="#index-object-file-name">object file name</a>:</td><td>&nbsp;</td><td valign="top"><a href="#o">o</a></td></tr>
  36977. <tr><td></td><td valign="top"><a href="#index-object-file_002c-after-errors">object file, after errors</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z">Z</a></td></tr>
  36978. <tr><td></td><td valign="top"><a href="#index-obsolescent-directives">obsolescent directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Deprecated">Deprecated</a></td></tr>
  36979. <tr><td></td><td valign="top"><a href="#index-octa-directive"><code>octa</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Octa">Octa</a></td></tr>
  36980. <tr><td></td><td valign="top"><a href="#index-octal-character-code-_0028_005cddd_0029">octal character code (<code>\<var>ddd</var></code>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  36981. <tr><td></td><td valign="top"><a href="#index-octal-integers">octal integers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Integers">Integers</a></td></tr>
  36982. <tr><td></td><td valign="top"><a href="#index-offset-directive"><code>offset</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Offset">Offset</a></td></tr>
  36983. <tr><td></td><td valign="top"><a href="#index-offset-directive_002c-V850"><code>offset</code> directive, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
  36984. <tr><td></td><td valign="top"><a href="#index-opcode-mnemonics_002c-VAX">opcode mnemonics, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dopcodes">VAX-opcodes</a></td></tr>
  36985. <tr><td></td><td valign="top"><a href="#index-opcode-names_002c-TILE_002dGx">opcode names, TILE-Gx</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Opcodes">TILE-Gx Opcodes</a></td></tr>
  36986. <tr><td></td><td valign="top"><a href="#index-opcode-names_002c-TILEPro">opcode names, TILEPro</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Opcodes">TILEPro Opcodes</a></td></tr>
  36987. <tr><td></td><td valign="top"><a href="#index-opcode-names_002c-Xtensa">opcode names, Xtensa</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Opcodes">Xtensa Opcodes</a></td></tr>
  36988. <tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-AVR">opcode summary, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Opcodes">AVR Opcodes</a></td></tr>
  36989. <tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-D10V">opcode summary, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dOpcodes">D10V-Opcodes</a></td></tr>
  36990. <tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-D30V">opcode summary, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dOpcodes">D30V-Opcodes</a></td></tr>
  36991. <tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-H8_002f300">opcode summary, H8/300</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Opcodes">H8/300 Opcodes</a></td></tr>
  36992. <tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-LM32">opcode summary, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Opcodes">LM32 Opcodes</a></td></tr>
  36993. <tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-OpenRISC">opcode summary, OpenRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dOpcodes">OpenRISC-Opcodes</a></td></tr>
  36994. <tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-SH">opcode summary, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Opcodes">SH Opcodes</a></td></tr>
  36995. <tr><td></td><td valign="top"><a href="#index-opcode-summary_002c-Z8000">opcode summary, Z8000</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Opcodes">Z8000 Opcodes</a></td></tr>
  36996. <tr><td></td><td valign="top"><a href="#index-opcodes-for-AArch64">opcodes for AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Opcodes">AArch64 Opcodes</a></td></tr>
  36997. <tr><td></td><td valign="top"><a href="#index-opcodes-for-ARC">opcodes for ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Opcodes">ARC Opcodes</a></td></tr>
  36998. <tr><td></td><td valign="top"><a href="#index-opcodes-for-ARM">opcodes for ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Opcodes">ARM Opcodes</a></td></tr>
  36999. <tr><td></td><td valign="top"><a href="#index-opcodes-for-BPF">opcodes for BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Instructions">BPF Instructions</a></td></tr>
  37000. <tr><td></td><td valign="top"><a href="#index-opcodes-for-MSP-430">opcodes for MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Opcodes">MSP430 Opcodes</a></td></tr>
  37001. <tr><td></td><td valign="top"><a href="#index-opcodes-for-Nios-II">opcodes for Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Opcodes">Nios II Opcodes</a></td></tr>
  37002. <tr><td></td><td valign="top"><a href="#index-opcodes-for-PRU">opcodes for PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Opcodes">PRU Opcodes</a></td></tr>
  37003. <tr><td></td><td valign="top"><a href="#index-opcodes-for-V850">opcodes for V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
  37004. <tr><td></td><td valign="top"><a href="#index-opcodes_002c-M680x0">opcodes, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dopcodes">M68K-opcodes</a></td></tr>
  37005. <tr><td></td><td valign="top"><a href="#index-opcodes_002c-M68HC11">opcodes, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dopcodes">M68HC11-opcodes</a></td></tr>
  37006. <tr><td></td><td valign="top"><a href="#index-opcodes_002c-WebAssembly">opcodes, WebAssembly</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dOpcodes">WebAssembly-Opcodes</a></td></tr>
  37007. <tr><td></td><td valign="top"><a href="#index-OPENRISC-floating-point-_0028IEEE_0029">OPENRISC floating point (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dFloat">OpenRISC-Float</a></td></tr>
  37008. <tr><td></td><td valign="top"><a href="#index-OpenRISC-line-comment-character">OpenRISC line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dChars">OpenRISC-Chars</a></td></tr>
  37009. <tr><td></td><td valign="top"><a href="#index-OpenRISC-line-separator">OpenRISC line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dChars">OpenRISC-Chars</a></td></tr>
  37010. <tr><td></td><td valign="top"><a href="#index-OPENRISC-machine-directives">OPENRISC machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
  37011. <tr><td></td><td valign="top"><a href="#index-OpenRISC-opcode-summary">OpenRISC opcode summary</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dOpcodes">OpenRISC-Opcodes</a></td></tr>
  37012. <tr><td></td><td valign="top"><a href="#index-OpenRISC-registers">OpenRISC registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dRegs">OpenRISC-Regs</a></td></tr>
  37013. <tr><td></td><td valign="top"><a href="#index-OpenRISC-relocations">OpenRISC relocations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dRelocs">OpenRISC-Relocs</a></td></tr>
  37014. <tr><td></td><td valign="top"><a href="#index-OPENRISC-support">OPENRISC support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dDependent">OpenRISC-Dependent</a></td></tr>
  37015. <tr><td></td><td valign="top"><a href="#index-OPENRISC-syntax">OPENRISC syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dDependent">OpenRISC-Dependent</a></td></tr>
  37016. <tr><td></td><td valign="top"><a href="#index-operand-delimiters_002c-i386">operand delimiters, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37017. <tr><td></td><td valign="top"><a href="#index-operand-delimiters_002c-x86_002d64">operand delimiters, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37018. <tr><td></td><td valign="top"><a href="#index-operand-notation_002c-VAX">operand notation, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
  37019. <tr><td></td><td valign="top"><a href="#index-operands-in-expressions">operands in expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Arguments">Arguments</a></td></tr>
  37020. <tr><td></td><td valign="top"><a href="#index-operator-precedence">operator precedence</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
  37021. <tr><td></td><td valign="top"><a href="#index-operators_002c-in-expressions">operators, in expressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Operators">Operators</a></td></tr>
  37022. <tr><td></td><td valign="top"><a href="#index-operators_002c-permitted-arguments">operators, permitted arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
  37023. <tr><td></td><td valign="top"><a href="#index-optimization_002c-D10V">optimization, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  37024. <tr><td></td><td valign="top"><a href="#index-optimization_002c-D30V">optimization, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  37025. <tr><td></td><td valign="top"><a href="#index-optimizations">optimizations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Optimizations">Xtensa Optimizations</a></td></tr>
  37026. <tr><td></td><td valign="top"><a href="#index-Option-directive">Option directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
  37027. <tr><td></td><td valign="top"><a href="#index-option-directive"><code>option</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
  37028. <tr><td></td><td valign="top"><a href="#index-option-directive_002c-TIC54X"><code>option</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37029. <tr><td></td><td valign="top"><a href="#index-option-summary">option summary</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  37030. <tr><td></td><td valign="top"><a href="#index-options-for-AArch64-_0028none_0029">options for AArch64 (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64-Options">AArch64 Options</a></td></tr>
  37031. <tr><td></td><td valign="top"><a href="#index-options-for-Alpha">options for Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha-Options">Alpha Options</a></td></tr>
  37032. <tr><td></td><td valign="top"><a href="#index-options-for-ARC">options for ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC-Options">ARC Options</a></td></tr>
  37033. <tr><td></td><td valign="top"><a href="#index-options-for-ARM-_0028none_0029">options for ARM (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  37034. <tr><td></td><td valign="top"><a href="#index-options-for-AVR-_0028none_0029">options for AVR (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR-Options">AVR Options</a></td></tr>
  37035. <tr><td></td><td valign="top"><a href="#index-options-for-Blackfin-_0028none_0029">options for Blackfin (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Blackfin-Options">Blackfin Options</a></td></tr>
  37036. <tr><td></td><td valign="top"><a href="#index-options-for-BPF-_0028none_0029">options for BPF (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Options">BPF Options</a></td></tr>
  37037. <tr><td></td><td valign="top"><a href="#index-options-for-C_002dSKY">options for C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  37038. <tr><td></td><td valign="top"><a href="#index-options-for-i386">options for i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  37039. <tr><td></td><td valign="top"><a href="#index-options-for-IA_002d64">options for IA-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64-Options">IA-64 Options</a></td></tr>
  37040. <tr><td></td><td valign="top"><a href="#index-options-for-KVX">options for KVX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#KVX-Options">KVX Options</a></td></tr>
  37041. <tr><td></td><td valign="top"><a href="#index-options-for-LM32-_0028none_0029">options for LM32 (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32-Options">LM32 Options</a></td></tr>
  37042. <tr><td></td><td valign="top"><a href="#index-options-for-Meta">options for Meta</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta-Options">Meta Options</a></td></tr>
  37043. <tr><td></td><td valign="top"><a href="#index-options-for-MSP430-_0028none_0029">options for MSP430 (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Options">MSP430 Options</a></td></tr>
  37044. <tr><td></td><td valign="top"><a href="#index-options-for-NDS32">options for NDS32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#NDS32-Options">NDS32 Options</a></td></tr>
  37045. <tr><td></td><td valign="top"><a href="#index-options-for-Nios-II">options for Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
  37046. <tr><td></td><td valign="top"><a href="#index-options-for-PDP_002d11">options for PDP-11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dOptions">PDP-11-Options</a></td></tr>
  37047. <tr><td></td><td valign="top"><a href="#index-options-for-PowerPC">options for PowerPC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PowerPC_002dOpts">PowerPC-Opts</a></td></tr>
  37048. <tr><td></td><td valign="top"><a href="#index-options-for-PRU">options for PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Options">PRU Options</a></td></tr>
  37049. <tr><td></td><td valign="top"><a href="#index-options-for-s390">options for s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
  37050. <tr><td></td><td valign="top"><a href="#index-options-for-SCORE">options for SCORE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SCORE_002dOpts">SCORE-Opts</a></td></tr>
  37051. <tr><td></td><td valign="top"><a href="#index-options-for-SPARC">options for SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  37052. <tr><td></td><td valign="top"><a href="#index-options-for-TIC6X">options for TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
  37053. <tr><td></td><td valign="top"><a href="#index-options-for-V850-_0028none_0029">options for V850 (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  37054. <tr><td></td><td valign="top"><a href="#index-options-for-VAX_002fVMS">options for VAX/VMS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  37055. <tr><td></td><td valign="top"><a href="#index-options-for-Visium">options for Visium</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Visium-Options">Visium Options</a></td></tr>
  37056. <tr><td></td><td valign="top"><a href="#index-options-for-x86_002d64">options for x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  37057. <tr><td></td><td valign="top"><a href="#index-options-for-Z80">options for Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
  37058. <tr><td></td><td valign="top"><a href="#index-options_002c-all-versions-of-assembler">options, all versions of assembler</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Invoking">Invoking</a></td></tr>
  37059. <tr><td></td><td valign="top"><a href="#index-options_002c-command-line">options, command line</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Command-Line">Command Line</a></td></tr>
  37060. <tr><td></td><td valign="top"><a href="#index-options_002c-CRIS">options, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  37061. <tr><td></td><td valign="top"><a href="#index-options_002c-D10V">options, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dOpts">D10V-Opts</a></td></tr>
  37062. <tr><td></td><td valign="top"><a href="#index-options_002c-D30V">options, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dOpts">D30V-Opts</a></td></tr>
  37063. <tr><td></td><td valign="top"><a href="#index-options_002c-Epiphany">options, Epiphany</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Epiphany-Options">Epiphany Options</a></td></tr>
  37064. <tr><td></td><td valign="top"><a href="#index-options_002c-H8_002f300">options, H8/300</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Options">H8/300 Options</a></td></tr>
  37065. <tr><td></td><td valign="top"><a href="#index-options_002c-IP2K">options, IP2K</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dOpts">IP2K-Opts</a></td></tr>
  37066. <tr><td></td><td valign="top"><a href="#index-options_002c-M32C">options, M32C</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dOpts">M32C-Opts</a></td></tr>
  37067. <tr><td></td><td valign="top"><a href="#index-options_002c-M32R">options, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  37068. <tr><td></td><td valign="top"><a href="#index-options_002c-M680x0">options, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dOpts">M68K-Opts</a></td></tr>
  37069. <tr><td></td><td valign="top"><a href="#index-options_002c-M68HC11">options, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dOpts">M68HC11-Opts</a></td></tr>
  37070. <tr><td></td><td valign="top"><a href="#index-options_002c-MMIX">options, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dOpts">MMIX-Opts</a></td></tr>
  37071. <tr><td></td><td valign="top"><a href="#index-options_002c-PJ">options, PJ</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PJ-Options">PJ Options</a></td></tr>
  37072. <tr><td></td><td valign="top"><a href="#index-options_002c-RL78">options, RL78</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RL78_002dOpts">RL78-Opts</a></td></tr>
  37073. <tr><td></td><td valign="top"><a href="#index-options_002c-RX">options, RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  37074. <tr><td></td><td valign="top"><a href="#index-options_002c-S12Z">options, S12Z</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Options">S12Z Options</a></td></tr>
  37075. <tr><td></td><td valign="top"><a href="#index-options_002c-SH">options, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
  37076. <tr><td></td><td valign="top"><a href="#index-options_002c-TIC54X">options, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
  37077. <tr><td></td><td valign="top"><a href="#index-options_002c-XGATE">options, XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
  37078. <tr><td></td><td valign="top"><a href="#index-options_002c-Z8000">options, Z8000</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Options">Z8000 Options</a></td></tr>
  37079. <tr><td></td><td valign="top"><a href="#index-org-directive"><code>org</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Org">Org</a></td></tr>
  37080. <tr><td></td><td valign="top"><a href="#index-other-attribute_002c-of-a_002eout-symbol">other attribute, of <code>a.out</code> symbol</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Other">Symbol Other</a></td></tr>
  37081. <tr><td></td><td valign="top"><a href="#index-output-file">output file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Object">Object</a></td></tr>
  37082. <tr><td></td><td valign="top"><a href="#index-output-section-padding">output section padding</a>:</td><td>&nbsp;</td><td valign="top"><a href="#no_002dpad_002dsections">no-pad-sections</a></td></tr>
  37083. <tr><td colspan="4"> <hr></td></tr>
  37084. <tr><th id="AS-Index_cp_letter-P">P</th><td></td><td></td></tr>
  37085. <tr><td></td><td valign="top"><a href="#index-p2align-directive"><code>p2align</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#P2align">P2align</a></td></tr>
  37086. <tr><td></td><td valign="top"><a href="#index-p2alignl-directive"><code>p2alignl</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#P2align">P2align</a></td></tr>
  37087. <tr><td></td><td valign="top"><a href="#index-p2alignw-directive"><code>p2alignw</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#P2align">P2align</a></td></tr>
  37088. <tr><td></td><td valign="top"><a href="#index-padding-the-location-counter">padding the location counter</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Align">Align</a></td></tr>
  37089. <tr><td></td><td valign="top"><a href="#index-padding-the-location-counter-given-a-power-of-two">padding the location counter given a power of two</a>:</td><td>&nbsp;</td><td valign="top"><a href="#P2align">P2align</a></td></tr>
  37090. <tr><td></td><td valign="top"><a href="#index-padding-the-location-counter-given-number-of-bytes">padding the location counter given number of bytes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Balign">Balign</a></td></tr>
  37091. <tr><td></td><td valign="top"><a href="#index-page_002c-in-listings">page, in listings</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Eject">Eject</a></td></tr>
  37092. <tr><td></td><td valign="top"><a href="#index-paper-size_002c-for-listings">paper size, for listings</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Psize">Psize</a></td></tr>
  37093. <tr><td></td><td valign="top"><a href="#index-paths-for-_002einclude">paths for <code>.include</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#I">I</a></td></tr>
  37094. <tr><td></td><td valign="top"><a href="#index-patterns_002c-writing-in-memory">patterns, writing in memory</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Fill">Fill</a></td></tr>
  37095. <tr><td></td><td valign="top"><a href="#index-PDP_002d11-comments">PDP-11 comments</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
  37096. <tr><td></td><td valign="top"><a href="#index-PDP_002d11-floating_002dpoint-register-syntax">PDP-11 floating-point register syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
  37097. <tr><td></td><td valign="top"><a href="#index-PDP_002d11-general_002dpurpose-register-syntax">PDP-11 general-purpose register syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
  37098. <tr><td></td><td valign="top"><a href="#index-PDP_002d11-instruction-naming">PDP-11 instruction naming</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dMnemonics">PDP-11-Mnemonics</a></td></tr>
  37099. <tr><td></td><td valign="top"><a href="#index-PDP_002d11-line-separator">PDP-11 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
  37100. <tr><td></td><td valign="top"><a href="#index-PDP_002d11-support">PDP-11 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dDependent">PDP-11-Dependent</a></td></tr>
  37101. <tr><td></td><td valign="top"><a href="#index-PDP_002d11-syntax">PDP-11 syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PDP_002d11_002dSyntax">PDP-11-Syntax</a></td></tr>
  37102. <tr><td></td><td valign="top"><a href="#index-PIC-code-generation-for-ARM">PIC code generation for ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM-Options">ARM Options</a></td></tr>
  37103. <tr><td></td><td valign="top"><a href="#index-PIC-code-generation-for-M32R">PIC code generation for M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dOpts">M32R-Opts</a></td></tr>
  37104. <tr><td></td><td valign="top"><a href="#index-pic-command_002dline-option_002c-C_002dSKY"><code>pic</code> command-line option, C-SKY</a>:</td><td>&nbsp;</td><td valign="top"><a href="#C_002dSKY-Options">C-SKY Options</a></td></tr>
  37105. <tr><td></td><td valign="top"><a href="#index-PIC-selection_002c-MIPS">PIC selection, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Options">MIPS Options</a></td></tr>
  37106. <tr><td></td><td valign="top"><a href="#index-PJ-endianness">PJ endianness</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  37107. <tr><td></td><td valign="top"><a href="#index-PJ-line-comment-character">PJ line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PJ_002dChars">PJ-Chars</a></td></tr>
  37108. <tr><td></td><td valign="top"><a href="#index-PJ-line-separator">PJ line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PJ_002dChars">PJ-Chars</a></td></tr>
  37109. <tr><td></td><td valign="top"><a href="#index-PJ-options">PJ options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PJ-Options">PJ Options</a></td></tr>
  37110. <tr><td></td><td valign="top"><a href="#index-PJ-support">PJ support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PJ_002dDependent">PJ-Dependent</a></td></tr>
  37111. <tr><td></td><td valign="top"><a href="#index-plus_002c-permitted-arguments">plus, permitted arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
  37112. <tr><td></td><td valign="top"><a href="#index-pmem-directive_002c-PRU"><code>pmem</code> directive, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Relocations">PRU Relocations</a></td></tr>
  37113. <tr><td></td><td valign="top"><a href="#index-popsection-directive"><code>popsection</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PopSection">PopSection</a></td></tr>
  37114. <tr><td></td><td valign="top"><a href="#index-Position_002dindependent-code_002c-CRIS">Position-independent code, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dOpts">CRIS-Opts</a></td></tr>
  37115. <tr><td></td><td valign="top"><a href="#index-Position_002dindependent-code_002c-symbols-in_002c-CRIS">Position-independent code, symbols in, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPic">CRIS-Pic</a></td></tr>
  37116. <tr><td></td><td valign="top"><a href="#index-PowerPC-architectures">PowerPC architectures</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PowerPC_002dOpts">PowerPC-Opts</a></td></tr>
  37117. <tr><td></td><td valign="top"><a href="#index-PowerPC-directives">PowerPC directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PowerPC_002dPseudo">PowerPC-Pseudo</a></td></tr>
  37118. <tr><td></td><td valign="top"><a href="#index-PowerPC-line-comment-character">PowerPC line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PowerPC_002dChars">PowerPC-Chars</a></td></tr>
  37119. <tr><td></td><td valign="top"><a href="#index-PowerPC-line-separator">PowerPC line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PowerPC_002dChars">PowerPC-Chars</a></td></tr>
  37120. <tr><td></td><td valign="top"><a href="#index-PowerPC-options">PowerPC options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PowerPC_002dOpts">PowerPC-Opts</a></td></tr>
  37121. <tr><td></td><td valign="top"><a href="#index-PowerPC-support">PowerPC support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PPC_002dDependent">PPC-Dependent</a></td></tr>
  37122. <tr><td></td><td valign="top"><a href="#index-precedence-of-operators">precedence of operators</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
  37123. <tr><td></td><td valign="top"><a href="#index-precision_002c-floating-point">precision, floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Flonums">Flonums</a></td></tr>
  37124. <tr><td></td><td valign="top"><a href="#index-prefix-operators">prefix operators</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Prefix-Ops">Prefix Ops</a></td></tr>
  37125. <tr><td></td><td valign="top"><a href="#index-prefixes_002c-i386">prefixes, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
  37126. <tr><td></td><td valign="top"><a href="#index-preprocessing">preprocessing</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
  37127. <tr><td></td><td valign="top"><a href="#index-preprocessing_002c-turning-on-and-off">preprocessing, turning on and off</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
  37128. <tr><td></td><td valign="top"><a href="#index-previous-directive"><code>previous</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Previous">Previous</a></td></tr>
  37129. <tr><td></td><td valign="top"><a href="#index-primary-attributes_002c-COFF-symbols">primary attributes, COFF symbols</a>:</td><td>&nbsp;</td><td valign="top"><a href="#COFF-Symbols">COFF Symbols</a></td></tr>
  37130. <tr><td></td><td valign="top"><a href="#index-print-directive"><code>print</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Print">Print</a></td></tr>
  37131. <tr><td></td><td valign="top"><a href="#index-proc-directive_002c-OpenRISC"><code>proc</code> directive, OpenRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
  37132. <tr><td></td><td valign="top"><a href="#index-proc-directive_002c-SPARC"><code>proc</code> directive, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  37133. <tr><td></td><td valign="top"><a href="#index-Processor-Identification-register_002c-ARC">Processor Identification register, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  37134. <tr><td></td><td valign="top"><a href="#index-profiler-directive_002c-MSP-430"><code>profiler</code> directive, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
  37135. <tr><td></td><td valign="top"><a href="#index-profiling-capability-for-MSP-430">profiling capability for MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Profiling-Capability">MSP430 Profiling Capability</a></td></tr>
  37136. <tr><td></td><td valign="top"><a href="#index-Program-Counter_002c-ARC">Program Counter, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  37137. <tr><td></td><td valign="top"><a href="#index-protected-directive"><code>protected</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Protected">Protected</a></td></tr>
  37138. <tr><td></td><td valign="top"><a href="#index-PRU-line-comment-character">PRU line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Chars">PRU Chars</a></td></tr>
  37139. <tr><td></td><td valign="top"><a href="#index-PRU-machine-directives">PRU machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
  37140. <tr><td></td><td valign="top"><a href="#index-PRU-machine-relocations">PRU machine relocations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Relocations">PRU Relocations</a></td></tr>
  37141. <tr><td></td><td valign="top"><a href="#index-PRU-opcodes">PRU opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Opcodes">PRU Opcodes</a></td></tr>
  37142. <tr><td></td><td valign="top"><a href="#index-PRU-options">PRU options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Options">PRU Options</a></td></tr>
  37143. <tr><td></td><td valign="top"><a href="#index-PRU-support">PRU support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU_002dDependent">PRU-Dependent</a></td></tr>
  37144. <tr><td></td><td valign="top"><a href="#index-psect-directive_002c-Z80"><code>psect</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  37145. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-_002earch_002c-CRIS">pseudo-op .arch, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  37146. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-_002edword_002c-CRIS">pseudo-op .dword, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  37147. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-_002esyntax_002c-CRIS">pseudo-op .syntax, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  37148. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-BSPEC_002c-MMIX">pseudo-op BSPEC, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  37149. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-BYTE_002c-MMIX">pseudo-op BYTE, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  37150. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-ESPEC_002c-MMIX">pseudo-op ESPEC, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  37151. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-GREG_002c-MMIX">pseudo-op GREG, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  37152. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-IS_002c-MMIX">pseudo-op IS, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  37153. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-LOC_002c-MMIX">pseudo-op LOC, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  37154. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-LOCAL_002c-MMIX">pseudo-op LOCAL, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  37155. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-OCTA_002c-MMIX">pseudo-op OCTA, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  37156. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-PREFIX_002c-MMIX">pseudo-op PREFIX, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  37157. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-TETRA_002c-MMIX">pseudo-op TETRA, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  37158. <tr><td></td><td valign="top"><a href="#index-pseudo_002dop-WYDE_002c-MMIX">pseudo-op WYDE, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  37159. <tr><td></td><td valign="top"><a href="#index-pseudo_002dopcodes-for-XStormy16">pseudo-opcodes for XStormy16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16-Opcodes">XStormy16 Opcodes</a></td></tr>
  37160. <tr><td></td><td valign="top"><a href="#index-pseudo_002dopcodes_002c-M680x0">pseudo-opcodes, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dBranch">M68K-Branch</a></td></tr>
  37161. <tr><td></td><td valign="top"><a href="#index-pseudo_002dopcodes_002c-M68HC11">pseudo-opcodes, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dBranch">M68HC11-Branch</a></td></tr>
  37162. <tr><td></td><td valign="top"><a href="#index-pseudo_002dops-for-branch_002c-VAX">pseudo-ops for branch, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dbranch">VAX-branch</a></td></tr>
  37163. <tr><td></td><td valign="top"><a href="#index-pseudo_002dops_002c-CRIS">pseudo-ops, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPseudos">CRIS-Pseudos</a></td></tr>
  37164. <tr><td></td><td valign="top"><a href="#index-pseudo_002dops_002c-machine-independent">pseudo-ops, machine independent</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Pseudo-Ops">Pseudo Ops</a></td></tr>
  37165. <tr><td></td><td valign="top"><a href="#index-pseudo_002dops_002c-MMIX">pseudo-ops, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dPseudos">MMIX-Pseudos</a></td></tr>
  37166. <tr><td></td><td valign="top"><a href="#index-psize-directive"><code>psize</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Psize">Psize</a></td></tr>
  37167. <tr><td></td><td valign="top"><a href="#index-PSR-bits">PSR bits</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64_002dBits">IA-64-Bits</a></td></tr>
  37168. <tr><td></td><td valign="top"><a href="#index-pstring-directive_002c-TIC54X"><code>pstring</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37169. <tr><td></td><td valign="top"><a href="#index-psw-register_002c-V850"><code>psw</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  37170. <tr><td></td><td valign="top"><a href="#index-purgem-directive"><code>purgem</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Purgem">Purgem</a></td></tr>
  37171. <tr><td></td><td valign="top"><a href="#index-purpose-of-GNU-assembler">purpose of <small>GNU</small> assembler</a>:</td><td>&nbsp;</td><td valign="top"><a href="#GNU-Assembler">GNU Assembler</a></td></tr>
  37172. <tr><td></td><td valign="top"><a href="#index-pushsection-directive"><code>pushsection</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PushSection">PushSection</a></td></tr>
  37173. <tr><td colspan="4"> <hr></td></tr>
  37174. <tr><th id="AS-Index_cp_letter-Q">Q</th><td></td><td></td></tr>
  37175. <tr><td></td><td valign="top"><a href="#index-quad-directive"><code>quad</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Quad">Quad</a></td></tr>
  37176. <tr><td></td><td valign="top"><a href="#index-quad-directive_002c-i386"><code>quad</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  37177. <tr><td></td><td valign="top"><a href="#index-quad-directive_002c-x86_002d64"><code>quad</code> directive, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  37178. <tr><td colspan="4"> <hr></td></tr>
  37179. <tr><th id="AS-Index_cp_letter-R">R</th><td></td><td></td></tr>
  37180. <tr><td></td><td valign="top"><a href="#index-real_002dmode-code_002c-i386">real-mode code, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002d16bit">i386-16bit</a></td></tr>
  37181. <tr><td></td><td valign="top"><a href="#index-ref-directive_002c-TIC54X"><code>ref</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37182. <tr><td></td><td valign="top"><a href="#index-refsym-directive_002c-MSP-430"><code>refsym</code> directive, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430-Directives">MSP430 Directives</a></td></tr>
  37183. <tr><td></td><td valign="top"><a href="#index-register-directive_002c-SPARC"><code>register</code> directive, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  37184. <tr><td></td><td valign="top"><a href="#index-register-name-prefix-character_002c-ARC">register name prefix character, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
  37185. <tr><td></td><td valign="top"><a href="#index-register-names_002c-AArch64">register names, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dRegs">AArch64-Regs</a></td></tr>
  37186. <tr><td></td><td valign="top"><a href="#index-register-names_002c-Alpha">register names, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha_002dRegs">Alpha-Regs</a></td></tr>
  37187. <tr><td></td><td valign="top"><a href="#index-register-names_002c-ARC">register names, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  37188. <tr><td></td><td valign="top"><a href="#index-register-names_002c-ARM">register names, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dRegs">ARM-Regs</a></td></tr>
  37189. <tr><td></td><td valign="top"><a href="#index-register-names_002c-AVR">register names, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR_002dRegs">AVR-Regs</a></td></tr>
  37190. <tr><td></td><td valign="top"><a href="#index-register-names_002c-BPF">register names, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Registers">BPF Registers</a></td></tr>
  37191. <tr><td></td><td valign="top"><a href="#index-register-names_002c-CRIS">register names, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dRegs">CRIS-Regs</a></td></tr>
  37192. <tr><td></td><td valign="top"><a href="#index-register-names_002c-H8_002f300">register names, H8/300</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300_002dRegs">H8/300-Regs</a></td></tr>
  37193. <tr><td></td><td valign="top"><a href="#index-register-names_002c-IA_002d64">register names, IA-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64_002dRegs">IA-64-Regs</a></td></tr>
  37194. <tr><td></td><td valign="top"><a href="#index-register-names_002c-LM32">register names, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32_002dRegs">LM32-Regs</a></td></tr>
  37195. <tr><td></td><td valign="top"><a href="#index-register-names_002c-MMIX">register names, MMIX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MMIX_002dRegs">MMIX-Regs</a></td></tr>
  37196. <tr><td></td><td valign="top"><a href="#index-register-names_002c-MSP-430">register names, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dRegs">MSP430-Regs</a></td></tr>
  37197. <tr><td></td><td valign="top"><a href="#index-register-names_002c-OpenRISC">register names, OpenRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dRegs">OpenRISC-Regs</a></td></tr>
  37198. <tr><td></td><td valign="top"><a href="#index-register-names_002c-S12Z">register names, S12Z</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Addressing-Modes">S12Z Addressing Modes</a></td></tr>
  37199. <tr><td></td><td valign="top"><a href="#index-register-names_002c-Sparc">register names, Sparc</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dRegs">Sparc-Regs</a></td></tr>
  37200. <tr><td></td><td valign="top"><a href="#index-register-names_002c-TILE_002dGx">register names, TILE-Gx</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Registers">TILE-Gx Registers</a></td></tr>
  37201. <tr><td></td><td valign="top"><a href="#index-register-names_002c-TILEPro">register names, TILEPro</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Registers">TILEPro Registers</a></td></tr>
  37202. <tr><td></td><td valign="top"><a href="#index-register-names_002c-V850">register names, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  37203. <tr><td></td><td valign="top"><a href="#index-register-names_002c-VAX">register names, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
  37204. <tr><td></td><td valign="top"><a href="#index-register-names_002c-Visium">register names, Visium</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Visium-Registers">Visium Registers</a></td></tr>
  37205. <tr><td></td><td valign="top"><a href="#index-register-names_002c-Xtensa">register names, Xtensa</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Registers">Xtensa Registers</a></td></tr>
  37206. <tr><td></td><td valign="top"><a href="#index-register-names_002c-Z80">register names, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dRegs">Z80-Regs</a></td></tr>
  37207. <tr><td></td><td valign="top"><a href="#index-register-naming_002c-s390">register naming, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Register">s390 Register</a></td></tr>
  37208. <tr><td></td><td valign="top"><a href="#index-register-notation_002c-S12Z">register notation, S12Z</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Register-Notation">S12Z Register Notation</a></td></tr>
  37209. <tr><td></td><td valign="top"><a href="#index-register-operands_002c-i386">register operands, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37210. <tr><td></td><td valign="top"><a href="#index-register-operands_002c-x86_002d64">register operands, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37211. <tr><td></td><td valign="top"><a href="#index-registers_002c-D10V">registers, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dRegs">D10V-Regs</a></td></tr>
  37212. <tr><td></td><td valign="top"><a href="#index-registers_002c-D30V">registers, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dRegs">D30V-Regs</a></td></tr>
  37213. <tr><td></td><td valign="top"><a href="#index-registers_002c-i386">registers, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dRegs">i386-Regs</a></td></tr>
  37214. <tr><td></td><td valign="top"><a href="#index-registers_002c-Meta">registers, Meta</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta_002dRegs">Meta-Regs</a></td></tr>
  37215. <tr><td></td><td valign="top"><a href="#index-registers_002c-SH">registers, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH_002dRegs">SH-Regs</a></td></tr>
  37216. <tr><td></td><td valign="top"><a href="#index-registers_002c-TIC54X-memory_002dmapped">registers, TIC54X memory-mapped</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMMRegs">TIC54X-MMRegs</a></td></tr>
  37217. <tr><td></td><td valign="top"><a href="#index-registers_002c-x86_002d64">registers, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dRegs">i386-Regs</a></td></tr>
  37218. <tr><td></td><td valign="top"><a href="#index-registers_002c-Z8000">registers, Z8000</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000_002dRegs">Z8000-Regs</a></td></tr>
  37219. <tr><td></td><td valign="top"><a href="#index-relax_002dall-command_002dline-option_002c-Nios-II"><code>relax-all</code> command-line option, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
  37220. <tr><td></td><td valign="top"><a href="#index-relax_002dsection-command_002dline-option_002c-Nios-II"><code>relax-section</code> command-line option, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Options">Nios II Options</a></td></tr>
  37221. <tr><td></td><td valign="top"><a href="#index-relaxation">relaxation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Relaxation">Xtensa Relaxation</a></td></tr>
  37222. <tr><td></td><td valign="top"><a href="#index-relaxation-of-ADDI-instructions">relaxation of <code>ADDI</code> instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  37223. <tr><td></td><td valign="top"><a href="#index-relaxation-of-branch-instructions">relaxation of branch instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Branch-Relaxation">Xtensa Branch Relaxation</a></td></tr>
  37224. <tr><td></td><td valign="top"><a href="#index-relaxation-of-call-instructions">relaxation of call instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Call-Relaxation">Xtensa Call Relaxation</a></td></tr>
  37225. <tr><td></td><td valign="top"><a href="#index-relaxation-of-immediate-fields">relaxation of immediate fields</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  37226. <tr><td></td><td valign="top"><a href="#index-relaxation-of-jump-instructions">relaxation of jump instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Jump-Relaxation">Xtensa Jump Relaxation</a></td></tr>
  37227. <tr><td></td><td valign="top"><a href="#index-relaxation-of-L16SI-instructions">relaxation of <code>L16SI</code> instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  37228. <tr><td></td><td valign="top"><a href="#index-relaxation-of-L16UI-instructions">relaxation of <code>L16UI</code> instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  37229. <tr><td></td><td valign="top"><a href="#index-relaxation-of-L32I-instructions">relaxation of <code>L32I</code> instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  37230. <tr><td></td><td valign="top"><a href="#index-relaxation-of-L8UI-instructions">relaxation of <code>L8UI</code> instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  37231. <tr><td></td><td valign="top"><a href="#index-relaxation-of-MOVI-instructions">relaxation of <code>MOVI</code> instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Immediate-Relaxation">Xtensa Immediate Relaxation</a></td></tr>
  37232. <tr><td></td><td valign="top"><a href="#index-reloc-directive"><code>reloc</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Reloc">Reloc</a></td></tr>
  37233. <tr><td></td><td valign="top"><a href="#index-relocation">relocation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sections">Sections</a></td></tr>
  37234. <tr><td></td><td valign="top"><a href="#index-relocation-example">relocation example</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
  37235. <tr><td></td><td valign="top"><a href="#index-relocations_002c-AArch64">relocations, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dRelocations">AArch64-Relocations</a></td></tr>
  37236. <tr><td></td><td valign="top"><a href="#index-relocations_002c-Alpha">relocations, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha_002dRelocs">Alpha-Relocs</a></td></tr>
  37237. <tr><td></td><td valign="top"><a href="#index-relocations_002c-OpenRISC">relocations, OpenRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dRelocs">OpenRISC-Relocs</a></td></tr>
  37238. <tr><td></td><td valign="top"><a href="#index-relocations_002c-Sparc">relocations, Sparc</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dRelocs">Sparc-Relocs</a></td></tr>
  37239. <tr><td></td><td valign="top"><a href="#index-relocations_002c-WebAssembly">relocations, WebAssembly</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dRelocs">WebAssembly-Relocs</a></td></tr>
  37240. <tr><td></td><td valign="top"><a href="#index-repeat-prefixes_002c-i386">repeat prefixes, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
  37241. <tr><td></td><td valign="top"><a href="#index-reporting-bugs-in-assembler">reporting bugs in assembler</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Reporting-Bugs">Reporting Bugs</a></td></tr>
  37242. <tr><td></td><td valign="top"><a href="#index-rept-directive"><code>rept</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Rept">Rept</a></td></tr>
  37243. <tr><td></td><td valign="top"><a href="#index-reserve-directive_002c-SPARC"><code>reserve</code> directive, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  37244. <tr><td></td><td valign="top"><a href="#index-return-instructions_002c-i386">return instructions, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37245. <tr><td></td><td valign="top"><a href="#index-return-instructions_002c-x86_002d64">return instructions, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37246. <tr><td></td><td valign="top"><a href="#index-REX-prefixes_002c-i386">REX prefixes, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
  37247. <tr><td></td><td valign="top"><a href="#index-RISC_002dV-custom-_0028vendor_002ddefined_0029-extensions">RISC-V custom (vendor-defined) extensions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dCustomExts">RISC-V-CustomExts</a></td></tr>
  37248. <tr><td></td><td valign="top"><a href="#index-RISC_002dV-floating-point-_0028IEEE_0029">RISC-V floating point (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dFloating_002dPoint">RISC-V-Floating-Point</a></td></tr>
  37249. <tr><td></td><td valign="top"><a href="#index-RISC_002dV-instruction-formats">RISC-V instruction formats</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dFormats">RISC-V-Formats</a></td></tr>
  37250. <tr><td></td><td valign="top"><a href="#index-RISC_002dV-machine-directives">RISC-V machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dDirectives">RISC-V-Directives</a></td></tr>
  37251. <tr><td></td><td valign="top"><a href="#index-RISC_002dV-support">RISC-V support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RISC_002dV_002dDependent">RISC-V-Dependent</a></td></tr>
  37252. <tr><td></td><td valign="top"><a href="#index-RL78-assembler-directives">RL78 assembler directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RL78_002dDirectives">RL78-Directives</a></td></tr>
  37253. <tr><td></td><td valign="top"><a href="#index-RL78-line-comment-character">RL78 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RL78_002dChars">RL78-Chars</a></td></tr>
  37254. <tr><td></td><td valign="top"><a href="#index-RL78-line-separator">RL78 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RL78_002dChars">RL78-Chars</a></td></tr>
  37255. <tr><td></td><td valign="top"><a href="#index-RL78-modifiers">RL78 modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RL78_002dModifiers">RL78-Modifiers</a></td></tr>
  37256. <tr><td></td><td valign="top"><a href="#index-RL78-options">RL78 options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RL78_002dOpts">RL78-Opts</a></td></tr>
  37257. <tr><td></td><td valign="top"><a href="#index-RL78-support">RL78 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RL78_002dDependent">RL78-Dependent</a></td></tr>
  37258. <tr><td></td><td valign="top"><a href="#index-rsect"><code>rsect</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  37259. <tr><td></td><td valign="top"><a href="#index-RX-assembler-directive-_002e3byte">RX assembler directive .3byte</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dDirectives">RX-Directives</a></td></tr>
  37260. <tr><td></td><td valign="top"><a href="#index-RX-assembler-directive-_002efetchalign">RX assembler directive .fetchalign</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dDirectives">RX-Directives</a></td></tr>
  37261. <tr><td></td><td valign="top"><a href="#index-RX-assembler-directives">RX assembler directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dDirectives">RX-Directives</a></td></tr>
  37262. <tr><td></td><td valign="top"><a href="#index-RX-floating-point">RX floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dFloat">RX-Float</a></td></tr>
  37263. <tr><td></td><td valign="top"><a href="#index-RX-line-comment-character">RX line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dChars">RX-Chars</a></td></tr>
  37264. <tr><td></td><td valign="top"><a href="#index-RX-line-separator">RX line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dChars">RX-Chars</a></td></tr>
  37265. <tr><td></td><td valign="top"><a href="#index-RX-modifiers">RX modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dModifiers">RX-Modifiers</a></td></tr>
  37266. <tr><td></td><td valign="top"><a href="#index-RX-options">RX options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dOpts">RX-Opts</a></td></tr>
  37267. <tr><td></td><td valign="top"><a href="#index-RX-support">RX support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dDependent">RX-Dependent</a></td></tr>
  37268. <tr><td colspan="4"> <hr></td></tr>
  37269. <tr><th id="AS-Index_cp_letter-S">S</th><td></td><td></td></tr>
  37270. <tr><td></td><td valign="top"><a href="#index-S12Z-addressing-modes">S12Z addressing modes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Addressing-Modes">S12Z Addressing Modes</a></td></tr>
  37271. <tr><td></td><td valign="top"><a href="#index-S12Z-line-separator">S12Z line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Syntax-Overview">S12Z Syntax Overview</a></td></tr>
  37272. <tr><td></td><td valign="top"><a href="#index-S12Z-options">S12Z options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Options">S12Z Options</a></td></tr>
  37273. <tr><td></td><td valign="top"><a href="#index-S12Z-support">S12Z support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z_002dDependent">S12Z-Dependent</a></td></tr>
  37274. <tr><td></td><td valign="top"><a href="#index-S12Z-syntax">S12Z syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Syntax">S12Z Syntax</a></td></tr>
  37275. <tr><td></td><td valign="top"><a href="#index-s390-floating-point">s390 floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Floating-Point">s390 Floating Point</a></td></tr>
  37276. <tr><td></td><td valign="top"><a href="#index-s390-instruction-aliases">s390 instruction aliases</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Aliases">s390 Aliases</a></td></tr>
  37277. <tr><td></td><td valign="top"><a href="#index-s390-instruction-formats">s390 instruction formats</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Formats">s390 Formats</a></td></tr>
  37278. <tr><td></td><td valign="top"><a href="#index-s390-instruction-marker">s390 instruction marker</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Instruction-Marker">s390 Instruction Marker</a></td></tr>
  37279. <tr><td></td><td valign="top"><a href="#index-s390-instruction-mnemonics">s390 instruction mnemonics</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Mnemonics">s390 Mnemonics</a></td></tr>
  37280. <tr><td></td><td valign="top"><a href="#index-s390-instruction-operand-modifier">s390 instruction operand modifier</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Operand-Modifier">s390 Operand Modifier</a></td></tr>
  37281. <tr><td></td><td valign="top"><a href="#index-s390-instruction-operands">s390 instruction operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Operands">s390 Operands</a></td></tr>
  37282. <tr><td></td><td valign="top"><a href="#index-s390-instruction-syntax">s390 instruction syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Syntax">s390 Syntax</a></td></tr>
  37283. <tr><td></td><td valign="top"><a href="#index-s390-line-comment-character">s390 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Characters">s390 Characters</a></td></tr>
  37284. <tr><td></td><td valign="top"><a href="#index-s390-line-separator">s390 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Characters">s390 Characters</a></td></tr>
  37285. <tr><td></td><td valign="top"><a href="#index-s390-literal-pool-entries">s390 literal pool entries</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Literal-Pool-Entries">s390 Literal Pool Entries</a></td></tr>
  37286. <tr><td></td><td valign="top"><a href="#index-s390-options">s390 options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Options">s390 Options</a></td></tr>
  37287. <tr><td></td><td valign="top"><a href="#index-s390-register-naming">s390 register naming</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Register">s390 Register</a></td></tr>
  37288. <tr><td></td><td valign="top"><a href="#index-s390-support">s390 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S_002f390_002dDependent">S/390-Dependent</a></td></tr>
  37289. <tr><td></td><td valign="top"><a href="#index-Saved-User-Stack-Pointer_002c-ARC">Saved User Stack Pointer, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  37290. <tr><td></td><td valign="top"><a href="#index-sblock-directive_002c-TIC54X"><code>sblock</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37291. <tr><td></td><td valign="top"><a href="#index-sbttl-directive"><code>sbttl</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sbttl">Sbttl</a></td></tr>
  37292. <tr><td></td><td valign="top"><a href="#index-schedule-directive"><code>schedule</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Schedule-Directive">Schedule Directive</a></td></tr>
  37293. <tr><td></td><td valign="top"><a href="#index-scl-directive"><code>scl</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Scl">Scl</a></td></tr>
  37294. <tr><td></td><td valign="top"><a href="#index-SCORE-architectures">SCORE architectures</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SCORE_002dOpts">SCORE-Opts</a></td></tr>
  37295. <tr><td></td><td valign="top"><a href="#index-SCORE-directives">SCORE directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SCORE_002dPseudo">SCORE-Pseudo</a></td></tr>
  37296. <tr><td></td><td valign="top"><a href="#index-SCORE-line-comment-character">SCORE line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SCORE_002dChars">SCORE-Chars</a></td></tr>
  37297. <tr><td></td><td valign="top"><a href="#index-SCORE-line-separator">SCORE line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SCORE_002dChars">SCORE-Chars</a></td></tr>
  37298. <tr><td></td><td valign="top"><a href="#index-SCORE-options">SCORE options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SCORE_002dOpts">SCORE-Opts</a></td></tr>
  37299. <tr><td></td><td valign="top"><a href="#index-SCORE-processor">SCORE processor</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SCORE_002dDependent">SCORE-Dependent</a></td></tr>
  37300. <tr><td></td><td valign="top"><a href="#index-sdaoff-pseudo_002dop_002c-V850"><code>sdaoff</code> pseudo-op, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
  37301. <tr><td></td><td valign="top"><a href="#index-search-path-for-_002einclude">search path for <code>.include</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#I">I</a></td></tr>
  37302. <tr><td></td><td valign="top"><a href="#index-sect-directive_002c-TIC54X"><code>sect</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37303. <tr><td></td><td valign="top"><a href="#index-section-directive-_0028COFF-version_0029"><code>section</code> directive (COFF version)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Section">Section</a></td></tr>
  37304. <tr><td></td><td valign="top"><a href="#index-section-directive-_0028ELF-version_0029"><code>section</code> directive (ELF version)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Section">Section</a></td></tr>
  37305. <tr><td></td><td valign="top"><a href="#index-section-directive_002c-V850"><code>section</code> directive, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
  37306. <tr><td></td><td valign="top"><a href="#index-section-name-substitution">section name substitution</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Section">Section</a></td></tr>
  37307. <tr><td></td><td valign="top"><a href="#index-section-override-prefixes_002c-i386">section override prefixes, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
  37308. <tr><td></td><td valign="top"><a href="#index-Section-Stack">Section Stack</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PopSection">PopSection</a></td></tr>
  37309. <tr><td></td><td valign="top"><a href="#index-Section-Stack-1">Section Stack</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Previous">Previous</a></td></tr>
  37310. <tr><td></td><td valign="top"><a href="#index-Section-Stack-2">Section Stack</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PushSection">PushSection</a></td></tr>
  37311. <tr><td></td><td valign="top"><a href="#index-Section-Stack-3">Section Stack</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Section">Section</a></td></tr>
  37312. <tr><td></td><td valign="top"><a href="#index-Section-Stack-4">Section Stack</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SubSection">SubSection</a></td></tr>
  37313. <tr><td></td><td valign="top"><a href="#index-section_002drelative-addressing">section-relative addressing</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Secs-Background">Secs Background</a></td></tr>
  37314. <tr><td></td><td valign="top"><a href="#index-sections">sections</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sections">Sections</a></td></tr>
  37315. <tr><td></td><td valign="top"><a href="#index-sections-in-messages_002c-internal">sections in messages, internal</a>:</td><td>&nbsp;</td><td valign="top"><a href="#As-Sections">As Sections</a></td></tr>
  37316. <tr><td></td><td valign="top"><a href="#index-sections_002c-i386">sections, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37317. <tr><td></td><td valign="top"><a href="#index-sections_002c-named">sections, named</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
  37318. <tr><td></td><td valign="top"><a href="#index-sections_002c-x86_002d64">sections, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37319. <tr><td></td><td valign="top"><a href="#index-seg-directive_002c-SPARC"><code>seg</code> directive, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  37320. <tr><td></td><td valign="top"><a href="#index-segm"><code>segm</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  37321. <tr><td></td><td valign="top"><a href="#index-set-at-directive_002c-Nios-II"><code>set at</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  37322. <tr><td></td><td valign="top"><a href="#index-set-break-directive_002c-Nios-II"><code>set break</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  37323. <tr><td></td><td valign="top"><a href="#index-set-directive"><code>set</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Set">Set</a></td></tr>
  37324. <tr><td></td><td valign="top"><a href="#index-set-directive_002c-Nios-II"><code>set</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  37325. <tr><td></td><td valign="top"><a href="#index-set-directive_002c-TIC54X"><code>set</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37326. <tr><td></td><td valign="top"><a href="#index-set-noat-directive_002c-Nios-II"><code>set noat</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  37327. <tr><td></td><td valign="top"><a href="#index-set-nobreak-directive_002c-Nios-II"><code>set nobreak</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  37328. <tr><td></td><td valign="top"><a href="#index-set-norelax-directive_002c-Nios-II"><code>set norelax</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  37329. <tr><td></td><td valign="top"><a href="#index-set-no_005fwarn_005fregname_005flabel-directive_002c-PRU"><code>set no_warn_regname_label</code> directive, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
  37330. <tr><td></td><td valign="top"><a href="#index-set-relaxall-directive_002c-Nios-II"><code>set relaxall</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  37331. <tr><td></td><td valign="top"><a href="#index-set-relaxsection-directive_002c-Nios-II"><code>set relaxsection</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  37332. <tr><td></td><td valign="top"><a href="#index-SH-addressing-modes">SH addressing modes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH_002dAddressing">SH-Addressing</a></td></tr>
  37333. <tr><td></td><td valign="top"><a href="#index-SH-floating-point-_0028IEEE_0029">SH floating point (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Floating-Point">SH Floating Point</a></td></tr>
  37334. <tr><td></td><td valign="top"><a href="#index-SH-line-comment-character">SH line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
  37335. <tr><td></td><td valign="top"><a href="#index-SH-line-separator">SH line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
  37336. <tr><td></td><td valign="top"><a href="#index-SH-machine-directives">SH machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Directives">SH Directives</a></td></tr>
  37337. <tr><td></td><td valign="top"><a href="#index-SH-opcode-summary">SH opcode summary</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Opcodes">SH Opcodes</a></td></tr>
  37338. <tr><td></td><td valign="top"><a href="#index-SH-options">SH options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Options">SH Options</a></td></tr>
  37339. <tr><td></td><td valign="top"><a href="#index-SH-registers">SH registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH_002dRegs">SH-Regs</a></td></tr>
  37340. <tr><td></td><td valign="top"><a href="#index-SH-support">SH support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH_002dDependent">SH-Dependent</a></td></tr>
  37341. <tr><td></td><td valign="top"><a href="#index-shigh-directive_002c-M32R"><code>shigh</code> directive, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dDirectives">M32R-Directives</a></td></tr>
  37342. <tr><td></td><td valign="top"><a href="#index-short-directive"><code>short</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Short">Short</a></td></tr>
  37343. <tr><td></td><td valign="top"><a href="#index-short-directive_002c-TIC54X"><code>short</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37344. <tr><td></td><td valign="top"><a href="#index-signatures_002c-WebAssembly">signatures, WebAssembly</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dSignatures">WebAssembly-Signatures</a></td></tr>
  37345. <tr><td></td><td valign="top"><a href="#index-SIMD_002c-i386">SIMD, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dSIMD">i386-SIMD</a></td></tr>
  37346. <tr><td></td><td valign="top"><a href="#index-SIMD_002c-x86_002d64">SIMD, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dSIMD">i386-SIMD</a></td></tr>
  37347. <tr><td></td><td valign="top"><a href="#index-single-character-constant">single character constant</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Chars">Chars</a></td></tr>
  37348. <tr><td></td><td valign="top"><a href="#index-single-directive"><code>single</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Single">Single</a></td></tr>
  37349. <tr><td></td><td valign="top"><a href="#index-single-directive_002c-i386"><code>single</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  37350. <tr><td></td><td valign="top"><a href="#index-single-directive_002c-x86_002d64"><code>single</code> directive, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  37351. <tr><td></td><td valign="top"><a href="#index-single-quote_002c-Z80">single quote, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  37352. <tr><td></td><td valign="top"><a href="#index-sixteen-bit-integers">sixteen bit integers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#hword">hword</a></td></tr>
  37353. <tr><td></td><td valign="top"><a href="#index-sixteen-byte-integer">sixteen byte integer</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Octa">Octa</a></td></tr>
  37354. <tr><td></td><td valign="top"><a href="#index-size-directive-_0028COFF-version_0029"><code>size</code> directive (COFF version)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Size">Size</a></td></tr>
  37355. <tr><td></td><td valign="top"><a href="#index-size-directive-_0028ELF-version_0029"><code>size</code> directive (ELF version)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Size">Size</a></td></tr>
  37356. <tr><td></td><td valign="top"><a href="#index-size-modifiers_002c-D10V">size modifiers, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dSize">D10V-Size</a></td></tr>
  37357. <tr><td></td><td valign="top"><a href="#index-size-modifiers_002c-D30V">size modifiers, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dSize">D30V-Size</a></td></tr>
  37358. <tr><td></td><td valign="top"><a href="#index-size-modifiers_002c-M680x0">size modifiers, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
  37359. <tr><td></td><td valign="top"><a href="#index-size-prefixes_002c-i386">size prefixes, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dPrefixes">i386-Prefixes</a></td></tr>
  37360. <tr><td></td><td valign="top"><a href="#index-size-suffixes_002c-H8_002f300">size suffixes, H8/300</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Opcodes">H8/300 Opcodes</a></td></tr>
  37361. <tr><td></td><td valign="top"><a href="#index-size_002c-translations_002c-Sparc">size, translations, Sparc</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dSize_002dTranslations">Sparc-Size-Translations</a></td></tr>
  37362. <tr><td></td><td valign="top"><a href="#index-sizes-operands_002c-i386">sizes operands, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37363. <tr><td></td><td valign="top"><a href="#index-sizes-operands_002c-x86_002d64">sizes operands, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37364. <tr><td></td><td valign="top"><a href="#index-skip-directive"><code>skip</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Skip">Skip</a></td></tr>
  37365. <tr><td></td><td valign="top"><a href="#index-skip-directive_002c-M680x0"><code>skip</code> directive, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dDirectives">M68K-Directives</a></td></tr>
  37366. <tr><td></td><td valign="top"><a href="#index-skip-directive_002c-SPARC"><code>skip</code> directive, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  37367. <tr><td></td><td valign="top"><a href="#index-sleb128-directive"><code>sleb128</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sleb128">Sleb128</a></td></tr>
  37368. <tr><td></td><td valign="top"><a href="#index-small-data_002c-MIPS">small data, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-Small-Data">MIPS Small Data</a></td></tr>
  37369. <tr><td></td><td valign="top"><a href="#index-SmartMIPS-instruction-generation-override">SmartMIPS instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  37370. <tr><td></td><td valign="top"><a href="#index-SOM-symbol-attributes">SOM symbol attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SOM-Symbols">SOM Symbols</a></td></tr>
  37371. <tr><td></td><td valign="top"><a href="#index-source-program">source program</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Input-Files">Input Files</a></td></tr>
  37372. <tr><td></td><td valign="top"><a href="#index-source_002c-destination-operands_003b-i386">source, destination operands; i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37373. <tr><td></td><td valign="top"><a href="#index-source_002c-destination-operands_003b-x86_002d64">source, destination operands; x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37374. <tr><td></td><td valign="top"><a href="#index-sp-register">sp register</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Registers">Xtensa Registers</a></td></tr>
  37375. <tr><td></td><td valign="top"><a href="#index-sp-register_002c-V850"><code>sp</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  37376. <tr><td></td><td valign="top"><a href="#index-space-directive"><code>space</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Space">Space</a></td></tr>
  37377. <tr><td></td><td valign="top"><a href="#index-space-directive_002c-TIC54X"><code>space</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37378. <tr><td></td><td valign="top"><a href="#index-space-used_002c-maximum-for-assembly">space used, maximum for assembly</a>:</td><td>&nbsp;</td><td valign="top"><a href="#statistics">statistics</a></td></tr>
  37379. <tr><td></td><td valign="top"><a href="#index-SPARC-architectures">SPARC architectures</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  37380. <tr><td></td><td valign="top"><a href="#index-Sparc-constants">Sparc constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dConstants">Sparc-Constants</a></td></tr>
  37381. <tr><td></td><td valign="top"><a href="#index-SPARC-data-alignment">SPARC data alignment</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dAligned_002dData">Sparc-Aligned-Data</a></td></tr>
  37382. <tr><td></td><td valign="top"><a href="#index-SPARC-floating-point-_0028IEEE_0029">SPARC floating point (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dFloat">Sparc-Float</a></td></tr>
  37383. <tr><td></td><td valign="top"><a href="#index-Sparc-line-comment-character">Sparc line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dChars">Sparc-Chars</a></td></tr>
  37384. <tr><td></td><td valign="top"><a href="#index-Sparc-line-separator">Sparc line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dChars">Sparc-Chars</a></td></tr>
  37385. <tr><td></td><td valign="top"><a href="#index-SPARC-machine-directives">SPARC machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  37386. <tr><td></td><td valign="top"><a href="#index-SPARC-options">SPARC options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dOpts">Sparc-Opts</a></td></tr>
  37387. <tr><td></td><td valign="top"><a href="#index-Sparc-registers">Sparc registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dRegs">Sparc-Regs</a></td></tr>
  37388. <tr><td></td><td valign="top"><a href="#index-Sparc-relocations">Sparc relocations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dRelocs">Sparc-Relocs</a></td></tr>
  37389. <tr><td></td><td valign="top"><a href="#index-Sparc-size-translations">Sparc size translations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dSize_002dTranslations">Sparc-Size-Translations</a></td></tr>
  37390. <tr><td></td><td valign="top"><a href="#index-SPARC-support">SPARC support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDependent">Sparc-Dependent</a></td></tr>
  37391. <tr><td></td><td valign="top"><a href="#index-SPARC-syntax">SPARC syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dAligned_002dData">Sparc-Aligned-Data</a></td></tr>
  37392. <tr><td></td><td valign="top"><a href="#index-special-characters_002c-M680x0">special characters, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dChars">M68K-Chars</a></td></tr>
  37393. <tr><td></td><td valign="top"><a href="#index-special-purpose-registers_002c-MSP-430">special purpose registers, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dRegs">MSP430-Regs</a></td></tr>
  37394. <tr><td></td><td valign="top"><a href="#index-sslist-directive_002c-TIC54X"><code>sslist</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37395. <tr><td></td><td valign="top"><a href="#index-ssnolist-directive_002c-TIC54X"><code>ssnolist</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37396. <tr><td></td><td valign="top"><a href="#index-stabd-directive"><code>stabd</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Stab">Stab</a></td></tr>
  37397. <tr><td></td><td valign="top"><a href="#index-stabn-directive"><code>stabn</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Stab">Stab</a></td></tr>
  37398. <tr><td></td><td valign="top"><a href="#index-stabs-directive"><code>stabs</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Stab">Stab</a></td></tr>
  37399. <tr><td></td><td valign="top"><a href="#index-stabx-directives"><code>stab<var>x</var></code> directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Stab">Stab</a></td></tr>
  37400. <tr><td></td><td valign="top"><a href="#index-stack-pointer_002c-ARC">stack pointer, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  37401. <tr><td></td><td valign="top"><a href="#index-standard-assembler-sections">standard assembler sections</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Secs-Background">Secs Background</a></td></tr>
  37402. <tr><td></td><td valign="top"><a href="#index-standard-input_002c-as-input-file">standard input, as input file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Command-Line">Command Line</a></td></tr>
  37403. <tr><td></td><td valign="top"><a href="#index-statement-separator-character">statement separator character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Statements">Statements</a></td></tr>
  37404. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-AArch64">statement separator, AArch64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AArch64_002dChars">AArch64-Chars</a></td></tr>
  37405. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Alpha">statement separator, Alpha</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alpha_002dChars">Alpha-Chars</a></td></tr>
  37406. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-ARC">statement separator, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
  37407. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-ARM">statement separator, ARM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dChars">ARM-Chars</a></td></tr>
  37408. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-AVR">statement separator, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR_002dChars">AVR-Chars</a></td></tr>
  37409. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-BPF">statement separator, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Special-Characters">BPF Special Characters</a></td></tr>
  37410. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-CR16">statement separator, CR16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CR16_002dChars">CR16-Chars</a></td></tr>
  37411. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Epiphany">statement separator, Epiphany</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Epiphany_002dChars">Epiphany-Chars</a></td></tr>
  37412. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-H8_002f300">statement separator, H8/300</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300_002dChars">H8/300-Chars</a></td></tr>
  37413. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-i386">statement separator, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dChars">i386-Chars</a></td></tr>
  37414. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-IA_002d64">statement separator, IA-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IA_002d64_002dChars">IA-64-Chars</a></td></tr>
  37415. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-IP2K">statement separator, IP2K</a>:</td><td>&nbsp;</td><td valign="top"><a href="#IP2K_002dChars">IP2K-Chars</a></td></tr>
  37416. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-LM32">statement separator, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32_002dChars">LM32-Chars</a></td></tr>
  37417. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-M32C">statement separator, M32C</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dChars">M32C-Chars</a></td></tr>
  37418. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-M68HC11">statement separator, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
  37419. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Meta">statement separator, Meta</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
  37420. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-MicroBlaze">statement separator, MicroBlaze</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MicroBlaze_002dChars">MicroBlaze-Chars</a></td></tr>
  37421. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-MIPS">statement separator, MIPS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS_002dChars">MIPS-Chars</a></td></tr>
  37422. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-MSP-430">statement separator, MSP 430</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MSP430_002dChars">MSP430-Chars</a></td></tr>
  37423. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-NS32K">statement separator, NS32K</a>:</td><td>&nbsp;</td><td valign="top"><a href="#NS32K_002dChars">NS32K-Chars</a></td></tr>
  37424. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-OpenRISC">statement separator, OpenRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dChars">OpenRISC-Chars</a></td></tr>
  37425. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-PJ">statement separator, PJ</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PJ_002dChars">PJ-Chars</a></td></tr>
  37426. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-PowerPC">statement separator, PowerPC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PowerPC_002dChars">PowerPC-Chars</a></td></tr>
  37427. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-RL78">statement separator, RL78</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RL78_002dChars">RL78-Chars</a></td></tr>
  37428. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-RX">statement separator, RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dChars">RX-Chars</a></td></tr>
  37429. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-S12Z">statement separator, S12Z</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Syntax-Overview">S12Z Syntax Overview</a></td></tr>
  37430. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-s390">statement separator, s390</a>:</td><td>&nbsp;</td><td valign="top"><a href="#s390-Characters">s390 Characters</a></td></tr>
  37431. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-SCORE">statement separator, SCORE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SCORE_002dChars">SCORE-Chars</a></td></tr>
  37432. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-SH">statement separator, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
  37433. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Sparc">statement separator, Sparc</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dChars">Sparc-Chars</a></td></tr>
  37434. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-TIC54X">statement separator, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dChars">TIC54X-Chars</a></td></tr>
  37435. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-TIC6X">statement separator, TIC6X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Syntax">TIC6X Syntax</a></td></tr>
  37436. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-V850">statement separator, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dChars">V850-Chars</a></td></tr>
  37437. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-VAX">statement separator, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dChars">VAX-Chars</a></td></tr>
  37438. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Visium">statement separator, Visium</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Visium-Characters">Visium Characters</a></td></tr>
  37439. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-XGATE">statement separator, XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
  37440. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-XStormy16">statement separator, XStormy16</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
  37441. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Z80">statement separator, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  37442. <tr><td></td><td valign="top"><a href="#index-statement-separator_002c-Z8000">statement separator, Z8000</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000_002dChars">Z8000-Chars</a></td></tr>
  37443. <tr><td></td><td valign="top"><a href="#index-statements_002c-structure-of">statements, structure of</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Statements">Statements</a></td></tr>
  37444. <tr><td></td><td valign="top"><a href="#index-statistics_002c-about-assembly">statistics, about assembly</a>:</td><td>&nbsp;</td><td valign="top"><a href="#statistics">statistics</a></td></tr>
  37445. <tr><td></td><td valign="top"><a href="#index-Status-register_002c-ARC">Status register, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  37446. <tr><td></td><td valign="top"><a href="#index-STATUS32-saved-on-exception_002c-ARC">STATUS32 saved on exception, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  37447. <tr><td></td><td valign="top"><a href="#index-stopping-the-assembly">stopping the assembly</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Abort">Abort</a></td></tr>
  37448. <tr><td></td><td valign="top"><a href="#index-Stored-STATUS32-register-on-entry-to-level-P0-interrupts_002c-ARC">Stored STATUS32 register on entry to level P0 interrupts, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  37449. <tr><td></td><td valign="top"><a href="#index-string-constants">string constants</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  37450. <tr><td></td><td valign="top"><a href="#index-string-directive"><code>string</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#String">String</a></td></tr>
  37451. <tr><td></td><td valign="top"><a href="#index-string-directive-on-HPPA"><code>string</code> directive on HPPA</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HPPA-Directives">HPPA Directives</a></td></tr>
  37452. <tr><td></td><td valign="top"><a href="#index-string-directive_002c-TIC54X"><code>string</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37453. <tr><td></td><td valign="top"><a href="#index-string-literals">string literals</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ascii">Ascii</a></td></tr>
  37454. <tr><td></td><td valign="top"><a href="#index-string_002c-copying-to-object-file">string, copying to object file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#String">String</a></td></tr>
  37455. <tr><td></td><td valign="top"><a href="#index-string16-directive"><code>string16</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#String">String</a></td></tr>
  37456. <tr><td></td><td valign="top"><a href="#index-string16_002c-copying-to-object-file">string16, copying to object file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#String">String</a></td></tr>
  37457. <tr><td></td><td valign="top"><a href="#index-string32-directive"><code>string32</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#String">String</a></td></tr>
  37458. <tr><td></td><td valign="top"><a href="#index-string32_002c-copying-to-object-file">string32, copying to object file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#String">String</a></td></tr>
  37459. <tr><td></td><td valign="top"><a href="#index-string64-directive"><code>string64</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#String">String</a></td></tr>
  37460. <tr><td></td><td valign="top"><a href="#index-string64_002c-copying-to-object-file">string64, copying to object file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#String">String</a></td></tr>
  37461. <tr><td></td><td valign="top"><a href="#index-string8-directive"><code>string8</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#String">String</a></td></tr>
  37462. <tr><td></td><td valign="top"><a href="#index-string8_002c-copying-to-object-file">string8, copying to object file</a>:</td><td>&nbsp;</td><td valign="top"><a href="#String">String</a></td></tr>
  37463. <tr><td></td><td valign="top"><a href="#index-struct-directive"><code>struct</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Struct">Struct</a></td></tr>
  37464. <tr><td></td><td valign="top"><a href="#index-struct-directive_002c-TIC54X"><code>struct</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37465. <tr><td></td><td valign="top"><a href="#index-structure-debugging_002c-COFF">structure debugging, COFF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Tag">Tag</a></td></tr>
  37466. <tr><td></td><td valign="top"><a href="#index-sub_002dinstruction-ordering_002c-D10V">sub-instruction ordering, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dChars">D10V-Chars</a></td></tr>
  37467. <tr><td></td><td valign="top"><a href="#index-sub_002dinstruction-ordering_002c-D30V">sub-instruction ordering, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dChars">D30V-Chars</a></td></tr>
  37468. <tr><td></td><td valign="top"><a href="#index-sub_002dinstructions_002c-D10V">sub-instructions, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dSubs">D10V-Subs</a></td></tr>
  37469. <tr><td></td><td valign="top"><a href="#index-sub_002dinstructions_002c-D30V">sub-instructions, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dSubs">D30V-Subs</a></td></tr>
  37470. <tr><td></td><td valign="top"><a href="#index-subexpressions">subexpressions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Arguments">Arguments</a></td></tr>
  37471. <tr><td></td><td valign="top"><a href="#index-subsection-directive"><code>subsection</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SubSection">SubSection</a></td></tr>
  37472. <tr><td></td><td valign="top"><a href="#index-subsym-builtins_002c-TIC54X">subsym builtins, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  37473. <tr><td></td><td valign="top"><a href="#index-subtitles-for-listings">subtitles for listings</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sbttl">Sbttl</a></td></tr>
  37474. <tr><td></td><td valign="top"><a href="#index-subtraction_002c-permitted-arguments">subtraction, permitted arguments</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Infix-Ops">Infix Ops</a></td></tr>
  37475. <tr><td></td><td valign="top"><a href="#index-summary-of-options">summary of options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Overview">Overview</a></td></tr>
  37476. <tr><td></td><td valign="top"><a href="#index-support">support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#HPPA_002dDependent">HPPA-Dependent</a></td></tr>
  37477. <tr><td></td><td valign="top"><a href="#index-supporting-files_002c-including">supporting files, including</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Include">Include</a></td></tr>
  37478. <tr><td></td><td valign="top"><a href="#index-suppressing-warnings">suppressing warnings</a>:</td><td>&nbsp;</td><td valign="top"><a href="#W">W</a></td></tr>
  37479. <tr><td></td><td valign="top"><a href="#index-sval"><code>sval</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  37480. <tr><td></td><td valign="top"><a href="#index-symbol-attributes">symbol attributes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Attributes">Symbol Attributes</a></td></tr>
  37481. <tr><td></td><td valign="top"><a href="#index-symbol-attributes_002c-a_002eout">symbol attributes, <code>a.out</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#a_002eout-Symbols">a.out Symbols</a></td></tr>
  37482. <tr><td></td><td valign="top"><a href="#index-symbol-attributes_002c-COFF">symbol attributes, COFF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#COFF-Symbols">COFF Symbols</a></td></tr>
  37483. <tr><td></td><td valign="top"><a href="#index-symbol-attributes_002c-SOM">symbol attributes, SOM</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SOM-Symbols">SOM Symbols</a></td></tr>
  37484. <tr><td></td><td valign="top"><a href="#index-symbol-descriptor_002c-COFF">symbol descriptor, COFF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Desc">Desc</a></td></tr>
  37485. <tr><td></td><td valign="top"><a href="#index-symbol-modifiers">symbol modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR_002dModifiers">AVR-Modifiers</a></td></tr>
  37486. <tr><td></td><td valign="top"><a href="#index-symbol-modifiers-1">symbol modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32_002dModifiers">LM32-Modifiers</a></td></tr>
  37487. <tr><td></td><td valign="top"><a href="#index-symbol-modifiers-2">symbol modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32C_002dModifiers">M32C-Modifiers</a></td></tr>
  37488. <tr><td></td><td valign="top"><a href="#index-symbol-modifiers-3">symbol modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dModifiers">M68HC11-Modifiers</a></td></tr>
  37489. <tr><td></td><td valign="top"><a href="#index-symbol-modifiers_002c-TILE_002dGx">symbol modifiers, TILE-Gx</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Modifiers">TILE-Gx Modifiers</a></td></tr>
  37490. <tr><td></td><td valign="top"><a href="#index-symbol-modifiers_002c-TILEPro">symbol modifiers, TILEPro</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Modifiers">TILEPro Modifiers</a></td></tr>
  37491. <tr><td></td><td valign="top"><a href="#index-symbol-names">symbol names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
  37492. <tr><td></td><td valign="top"><a href="#index-symbol-names_002c-_0024-in">symbol names, &lsquo;<samp>$</samp>&rsquo; in</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dChars">D10V-Chars</a></td></tr>
  37493. <tr><td></td><td valign="top"><a href="#index-symbol-names_002c-_0024-in-1">symbol names, &lsquo;<samp>$</samp>&rsquo; in</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dChars">D30V-Chars</a></td></tr>
  37494. <tr><td></td><td valign="top"><a href="#index-symbol-names_002c-_0024-in-2">symbol names, &lsquo;<samp>$</samp>&rsquo; in</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Meta_002dChars">Meta-Chars</a></td></tr>
  37495. <tr><td></td><td valign="top"><a href="#index-symbol-names_002c-_0024-in-3">symbol names, &lsquo;<samp>$</samp>&rsquo; in</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH_002dChars">SH-Chars</a></td></tr>
  37496. <tr><td></td><td valign="top"><a href="#index-symbol-names_002c-local">symbol names, local</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
  37497. <tr><td></td><td valign="top"><a href="#index-symbol-names_002c-temporary">symbol names, temporary</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
  37498. <tr><td></td><td valign="top"><a href="#index-symbol-prefix-character_002c-ARC">symbol prefix character, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dChars">ARC-Chars</a></td></tr>
  37499. <tr><td></td><td valign="top"><a href="#index-symbol-storage-class-_0028COFF_0029">symbol storage class (COFF)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Scl">Scl</a></td></tr>
  37500. <tr><td></td><td valign="top"><a href="#index-symbol-type">symbol type</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Type">Symbol Type</a></td></tr>
  37501. <tr><td></td><td valign="top"><a href="#index-symbol-type_002c-COFF">symbol type, COFF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Type">Type</a></td></tr>
  37502. <tr><td></td><td valign="top"><a href="#index-symbol-type_002c-ELF">symbol type, ELF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Type">Type</a></td></tr>
  37503. <tr><td></td><td valign="top"><a href="#index-symbol-value">symbol value</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Value">Symbol Value</a></td></tr>
  37504. <tr><td></td><td valign="top"><a href="#index-symbol-value_002c-setting">symbol value, setting</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Set">Set</a></td></tr>
  37505. <tr><td></td><td valign="top"><a href="#index-symbol-values_002c-assigning">symbol values, assigning</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Setting-Symbols">Setting Symbols</a></td></tr>
  37506. <tr><td></td><td valign="top"><a href="#index-symbol-versioning">symbol versioning</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symver">Symver</a></td></tr>
  37507. <tr><td></td><td valign="top"><a href="#index-symbol_002c-common">symbol, common</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Comm">Comm</a></td></tr>
  37508. <tr><td></td><td valign="top"><a href="#index-symbol_002c-making-visible-to-linker">symbol, making visible to linker</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Global">Global</a></td></tr>
  37509. <tr><td></td><td valign="top"><a href="#index-symbolic-debuggers_002c-information-for">symbolic debuggers, information for</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Stab">Stab</a></td></tr>
  37510. <tr><td></td><td valign="top"><a href="#index-symbols">symbols</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbols">Symbols</a></td></tr>
  37511. <tr><td></td><td valign="top"><a href="#index-Symbols-in-position_002dindependent-code_002c-CRIS">Symbols in position-independent code, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dPic">CRIS-Pic</a></td></tr>
  37512. <tr><td></td><td valign="top"><a href="#index-symbols-with-uppercase_002c-VAX_002fVMS">symbols with uppercase, VAX/VMS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  37513. <tr><td></td><td valign="top"><a href="#index-symbols_002c-assigning-values-to">symbols, assigning values to</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Equ">Equ</a></td></tr>
  37514. <tr><td></td><td valign="top"><a href="#index-Symbols_002c-built_002din_002c-CRIS">Symbols, built-in, CRIS</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dSymbols">CRIS-Symbols</a></td></tr>
  37515. <tr><td></td><td valign="top"><a href="#index-Symbols_002c-CRIS_002c-built_002din">Symbols, CRIS, built-in</a>:</td><td>&nbsp;</td><td valign="top"><a href="#CRIS_002dSymbols">CRIS-Symbols</a></td></tr>
  37516. <tr><td></td><td valign="top"><a href="#index-symbols_002c-local-common">symbols, local common</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Lcomm">Lcomm</a></td></tr>
  37517. <tr><td></td><td valign="top"><a href="#index-symver-directive"><code>symver</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symver">Symver</a></td></tr>
  37518. <tr><td></td><td valign="top"><a href="#index-syntax-compatibility_002c-i386">syntax compatibility, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37519. <tr><td></td><td valign="top"><a href="#index-syntax-compatibility_002c-x86_002d64">syntax compatibility, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37520. <tr><td></td><td valign="top"><a href="#index-syntax_002c-AVR">syntax, AVR</a>:</td><td>&nbsp;</td><td valign="top"><a href="#AVR_002dModifiers">AVR-Modifiers</a></td></tr>
  37521. <tr><td></td><td valign="top"><a href="#index-syntax_002c-Blackfin">syntax, Blackfin</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Blackfin-Syntax">Blackfin Syntax</a></td></tr>
  37522. <tr><td></td><td valign="top"><a href="#index-syntax_002c-D10V">syntax, D10V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D10V_002dSyntax">D10V-Syntax</a></td></tr>
  37523. <tr><td></td><td valign="top"><a href="#index-syntax_002c-D30V">syntax, D30V</a>:</td><td>&nbsp;</td><td valign="top"><a href="#D30V_002dSyntax">D30V-Syntax</a></td></tr>
  37524. <tr><td></td><td valign="top"><a href="#index-syntax_002c-LM32">syntax, LM32</a>:</td><td>&nbsp;</td><td valign="top"><a href="#LM32_002dModifiers">LM32-Modifiers</a></td></tr>
  37525. <tr><td></td><td valign="top"><a href="#index-syntax_002c-M680x0">syntax, M680x0</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68K_002dSyntax">M68K-Syntax</a></td></tr>
  37526. <tr><td></td><td valign="top"><a href="#index-syntax_002c-M68HC11">syntax, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dSyntax">M68HC11-Syntax</a></td></tr>
  37527. <tr><td></td><td valign="top"><a href="#index-syntax_002c-M68HC11-1">syntax, M68HC11</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M68HC11_002dModifiers">M68HC11-Modifiers</a></td></tr>
  37528. <tr><td></td><td valign="top"><a href="#index-syntax_002c-machine_002dindependent">syntax, machine-independent</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Syntax">Syntax</a></td></tr>
  37529. <tr><td></td><td valign="top"><a href="#index-syntax_002c-OPENRISC">syntax, OPENRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dDependent">OpenRISC-Dependent</a></td></tr>
  37530. <tr><td></td><td valign="top"><a href="#index-syntax_002c-RL78">syntax, RL78</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RL78_002dModifiers">RL78-Modifiers</a></td></tr>
  37531. <tr><td></td><td valign="top"><a href="#index-syntax_002c-RX">syntax, RX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#RX_002dModifiers">RX-Modifiers</a></td></tr>
  37532. <tr><td></td><td valign="top"><a href="#index-syntax_002c-S12Z">syntax, S12Z</a>:</td><td>&nbsp;</td><td valign="top"><a href="#S12Z-Syntax">S12Z Syntax</a></td></tr>
  37533. <tr><td></td><td valign="top"><a href="#index-syntax_002c-SPARC">syntax, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dAligned_002dData">Sparc-Aligned-Data</a></td></tr>
  37534. <tr><td></td><td valign="top"><a href="#index-syntax_002c-TILE_002dGx">syntax, TILE-Gx</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Syntax">TILE-Gx Syntax</a></td></tr>
  37535. <tr><td></td><td valign="top"><a href="#index-syntax_002c-TILEPro">syntax, TILEPro</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Syntax">TILEPro Syntax</a></td></tr>
  37536. <tr><td></td><td valign="top"><a href="#index-syntax_002c-XGATE">syntax, XGATE</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
  37537. <tr><td></td><td valign="top"><a href="#index-syntax_002c-Xtensa-assembler">syntax, Xtensa assembler</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Syntax">Xtensa Syntax</a></td></tr>
  37538. <tr><td colspan="4"> <hr></td></tr>
  37539. <tr><th id="AS-Index_cp_letter-T">T</th><td></td><td></td></tr>
  37540. <tr><td></td><td valign="top"><a href="#index-tab-_0028_005ct_0029">tab (<code>\t</code>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Strings">Strings</a></td></tr>
  37541. <tr><td></td><td valign="top"><a href="#index-tab-directive_002c-TIC54X"><code>tab</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37542. <tr><td></td><td valign="top"><a href="#index-tag-directive"><code>tag</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Tag">Tag</a></td></tr>
  37543. <tr><td></td><td valign="top"><a href="#index-tag-directive_002c-TIC54X"><code>tag</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37544. <tr><td></td><td valign="top"><a href="#index-tag-directive_002c-TIC54X-1"><code>tag</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37545. <tr><td></td><td valign="top"><a href="#index-TBM_002c-i386">TBM, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dTBM">i386-TBM</a></td></tr>
  37546. <tr><td></td><td valign="top"><a href="#index-TBM_002c-x86_002d64">TBM, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dTBM">i386-TBM</a></td></tr>
  37547. <tr><td></td><td valign="top"><a href="#index-tdaoff-pseudo_002dop_002c-V850"><code>tdaoff</code> pseudo-op, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
  37548. <tr><td></td><td valign="top"><a href="#index-temporary-symbol-names">temporary symbol names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Names">Symbol Names</a></td></tr>
  37549. <tr><td></td><td valign="top"><a href="#index-text-and-data-sections_002c-joining">text and data sections, joining</a>:</td><td>&nbsp;</td><td valign="top"><a href="#R">R</a></td></tr>
  37550. <tr><td></td><td valign="top"><a href="#index-text-directive"><code>text</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Text">Text</a></td></tr>
  37551. <tr><td></td><td valign="top"><a href="#index-text-section">text section</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
  37552. <tr><td></td><td valign="top"><a href="#index-tfloat-directive_002c-i386"><code>tfloat</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  37553. <tr><td></td><td valign="top"><a href="#index-tfloat-directive_002c-x86_002d64"><code>tfloat</code> directive, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  37554. <tr><td></td><td valign="top"><a href="#index-Thumb-support">Thumb support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARM_002dDependent">ARM-Dependent</a></td></tr>
  37555. <tr><td></td><td valign="top"><a href="#index-TIC54X-builtin-math-functions">TIC54X builtin math functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dBuiltins">TIC54X-Builtins</a></td></tr>
  37556. <tr><td></td><td valign="top"><a href="#index-TIC54X-line-comment-character">TIC54X line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dChars">TIC54X-Chars</a></td></tr>
  37557. <tr><td></td><td valign="top"><a href="#index-TIC54X-line-separator">TIC54X line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dChars">TIC54X-Chars</a></td></tr>
  37558. <tr><td></td><td valign="top"><a href="#index-TIC54X-machine-directives">TIC54X machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37559. <tr><td></td><td valign="top"><a href="#index-TIC54X-memory_002dmapped-registers">TIC54X memory-mapped registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMMRegs">TIC54X-MMRegs</a></td></tr>
  37560. <tr><td></td><td valign="top"><a href="#index-TIC54X-options">TIC54X options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dOpts">TIC54X-Opts</a></td></tr>
  37561. <tr><td></td><td valign="top"><a href="#index-TIC54X-subsym-builtins">TIC54X subsym builtins</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  37562. <tr><td></td><td valign="top"><a href="#index-TIC54X-support">TIC54X support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDependent">TIC54X-Dependent</a></td></tr>
  37563. <tr><td></td><td valign="top"><a href="#index-TIC54X_002dspecific-macros">TIC54X-specific macros</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dMacros">TIC54X-Macros</a></td></tr>
  37564. <tr><td></td><td valign="top"><a href="#index-TIC6X-big_002dendian-output">TIC6X big-endian output</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
  37565. <tr><td></td><td valign="top"><a href="#index-TIC6X-line-comment-character">TIC6X line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Syntax">TIC6X Syntax</a></td></tr>
  37566. <tr><td></td><td valign="top"><a href="#index-TIC6X-line-separator">TIC6X line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Syntax">TIC6X Syntax</a></td></tr>
  37567. <tr><td></td><td valign="top"><a href="#index-TIC6X-little_002dendian-output">TIC6X little-endian output</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
  37568. <tr><td></td><td valign="top"><a href="#index-TIC6X-machine-directives">TIC6X machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Directives">TIC6X Directives</a></td></tr>
  37569. <tr><td></td><td valign="top"><a href="#index-TIC6X-options">TIC6X options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X-Options">TIC6X Options</a></td></tr>
  37570. <tr><td></td><td valign="top"><a href="#index-TIC6X-support">TIC6X support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X_002dDependent">TIC6X-Dependent</a></td></tr>
  37571. <tr><td></td><td valign="top"><a href="#index-TILE_002dGx-machine-directives">TILE-Gx machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Directives">TILE-Gx Directives</a></td></tr>
  37572. <tr><td></td><td valign="top"><a href="#index-TILE_002dGx-modifiers">TILE-Gx modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Modifiers">TILE-Gx Modifiers</a></td></tr>
  37573. <tr><td></td><td valign="top"><a href="#index-TILE_002dGx-opcode-names">TILE-Gx opcode names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Opcodes">TILE-Gx Opcodes</a></td></tr>
  37574. <tr><td></td><td valign="top"><a href="#index-TILE_002dGx-register-names">TILE-Gx register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Registers">TILE-Gx Registers</a></td></tr>
  37575. <tr><td></td><td valign="top"><a href="#index-TILE_002dGx-support">TILE-Gx support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx_002dDependent">TILE-Gx-Dependent</a></td></tr>
  37576. <tr><td></td><td valign="top"><a href="#index-TILE_002dGx-syntax">TILE-Gx syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILE_002dGx-Syntax">TILE-Gx Syntax</a></td></tr>
  37577. <tr><td></td><td valign="top"><a href="#index-TILEPro-machine-directives">TILEPro machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Directives">TILEPro Directives</a></td></tr>
  37578. <tr><td></td><td valign="top"><a href="#index-TILEPro-modifiers">TILEPro modifiers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Modifiers">TILEPro Modifiers</a></td></tr>
  37579. <tr><td></td><td valign="top"><a href="#index-TILEPro-opcode-names">TILEPro opcode names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Opcodes">TILEPro Opcodes</a></td></tr>
  37580. <tr><td></td><td valign="top"><a href="#index-TILEPro-register-names">TILEPro register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Registers">TILEPro Registers</a></td></tr>
  37581. <tr><td></td><td valign="top"><a href="#index-TILEPro-support">TILEPro support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro_002dDependent">TILEPro-Dependent</a></td></tr>
  37582. <tr><td></td><td valign="top"><a href="#index-TILEPro-syntax">TILEPro syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TILEPro-Syntax">TILEPro Syntax</a></td></tr>
  37583. <tr><td></td><td valign="top"><a href="#index-time_002c-total-for-assembly">time, total for assembly</a>:</td><td>&nbsp;</td><td valign="top"><a href="#statistics">statistics</a></td></tr>
  37584. <tr><td></td><td valign="top"><a href="#index-title-directive"><code>title</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Title">Title</a></td></tr>
  37585. <tr><td></td><td valign="top"><a href="#index-tls_005fcommon-directive"><code>tls_common</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Tls_005fcommon">Tls_common</a></td></tr>
  37586. <tr><td></td><td valign="top"><a href="#index-tls_005fgd-directive_002c-Nios-II"><code>tls_gd</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  37587. <tr><td></td><td valign="top"><a href="#index-tls_005fie-directive_002c-Nios-II"><code>tls_ie</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  37588. <tr><td></td><td valign="top"><a href="#index-tls_005fldm-directive_002c-Nios-II"><code>tls_ldm</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  37589. <tr><td></td><td valign="top"><a href="#index-tls_005fldo-directive_002c-Nios-II"><code>tls_ldo</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  37590. <tr><td></td><td valign="top"><a href="#index-tls_005fle-directive_002c-Nios-II"><code>tls_le</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Relocations">Nios II Relocations</a></td></tr>
  37591. <tr><td></td><td valign="top"><a href="#index-TMS320C6X-support">TMS320C6X support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC6X_002dDependent">TIC6X-Dependent</a></td></tr>
  37592. <tr><td></td><td valign="top"><a href="#index-tp-register_002c-V850"><code>tp</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  37593. <tr><td></td><td valign="top"><a href="#index-transform-directive"><code>transform</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Transform-Directive">Transform Directive</a></td></tr>
  37594. <tr><td></td><td valign="top"><a href="#index-trusted-compiler">trusted compiler</a>:</td><td>&nbsp;</td><td valign="top"><a href="#f">f</a></td></tr>
  37595. <tr><td></td><td valign="top"><a href="#index-turning-preprocessing-on-and-off">turning preprocessing on and off</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
  37596. <tr><td></td><td valign="top"><a href="#index-two_002dbyte-integer">two-byte integer</a>:</td><td>&nbsp;</td><td valign="top"><a href="#g_t2byte">2byte</a></td></tr>
  37597. <tr><td></td><td valign="top"><a href="#index-type-directive-_0028COFF-version_0029"><code>type</code> directive (COFF version)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Type">Type</a></td></tr>
  37598. <tr><td></td><td valign="top"><a href="#index-type-directive-_0028ELF-version_0029"><code>type</code> directive (ELF version)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Type">Type</a></td></tr>
  37599. <tr><td></td><td valign="top"><a href="#index-type-of-a-symbol">type of a symbol</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Type">Symbol Type</a></td></tr>
  37600. <tr><td colspan="4"> <hr></td></tr>
  37601. <tr><th id="AS-Index_cp_letter-U">U</th><td></td><td></td></tr>
  37602. <tr><td></td><td valign="top"><a href="#index-ualong-directive_002c-SH"><code>ualong</code> directive, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Directives">SH Directives</a></td></tr>
  37603. <tr><td></td><td valign="top"><a href="#index-uaquad-directive_002c-SH"><code>uaquad</code> directive, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Directives">SH Directives</a></td></tr>
  37604. <tr><td></td><td valign="top"><a href="#index-uaword-directive_002c-SH"><code>uaword</code> directive, SH</a>:</td><td>&nbsp;</td><td valign="top"><a href="#SH-Directives">SH Directives</a></td></tr>
  37605. <tr><td></td><td valign="top"><a href="#index-ubyte-directive_002c-TIC54X"><code>ubyte</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37606. <tr><td></td><td valign="top"><a href="#index-uchar-directive_002c-TIC54X"><code>uchar</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37607. <tr><td></td><td valign="top"><a href="#index-uhalf-directive_002c-TIC54X"><code>uhalf</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37608. <tr><td></td><td valign="top"><a href="#index-uint-directive_002c-TIC54X"><code>uint</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37609. <tr><td></td><td valign="top"><a href="#index-uleb128-directive"><code>uleb128</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Uleb128">Uleb128</a></td></tr>
  37610. <tr><td></td><td valign="top"><a href="#index-ulong-directive_002c-TIC54X"><code>ulong</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37611. <tr><td></td><td valign="top"><a href="#index-undefined-section">undefined section</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Ld-Sections">Ld Sections</a></td></tr>
  37612. <tr><td></td><td valign="top"><a href="#index-union-directive_002c-TIC54X"><code>union</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37613. <tr><td></td><td valign="top"><a href="#index-unsegm"><code>unsegm</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  37614. <tr><td></td><td valign="top"><a href="#index-usect-directive_002c-TIC54X"><code>usect</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37615. <tr><td></td><td valign="top"><a href="#index-ushort-directive_002c-TIC54X"><code>ushort</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37616. <tr><td></td><td valign="top"><a href="#index-uword-directive_002c-TIC54X"><code>uword</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37617. <tr><td colspan="4"> <hr></td></tr>
  37618. <tr><th id="AS-Index_cp_letter-V">V</th><td></td><td></td></tr>
  37619. <tr><td></td><td valign="top"><a href="#index-V850-command_002dline-options">V850 command-line options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  37620. <tr><td></td><td valign="top"><a href="#index-V850-floating-point-_0028IEEE_0029">V850 floating point (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Floating-Point">V850 Floating Point</a></td></tr>
  37621. <tr><td></td><td valign="top"><a href="#index-V850-line-comment-character">V850 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dChars">V850-Chars</a></td></tr>
  37622. <tr><td></td><td valign="top"><a href="#index-V850-line-separator">V850 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dChars">V850-Chars</a></td></tr>
  37623. <tr><td></td><td valign="top"><a href="#index-V850-machine-directives">V850 machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Directives">V850 Directives</a></td></tr>
  37624. <tr><td></td><td valign="top"><a href="#index-V850-opcodes">V850 opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
  37625. <tr><td></td><td valign="top"><a href="#index-V850-options-_0028none_0029">V850 options (none)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Options">V850 Options</a></td></tr>
  37626. <tr><td></td><td valign="top"><a href="#index-V850-register-names">V850 register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  37627. <tr><td></td><td valign="top"><a href="#index-V850-support">V850 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dDependent">V850-Dependent</a></td></tr>
  37628. <tr><td></td><td valign="top"><a href="#index-val-directive"><code>val</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Val">Val</a></td></tr>
  37629. <tr><td></td><td valign="top"><a href="#index-value-attribute_002c-COFF">value attribute, COFF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Val">Val</a></td></tr>
  37630. <tr><td></td><td valign="top"><a href="#index-value-directive"><code>value</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dDirectives">i386-Directives</a></td></tr>
  37631. <tr><td></td><td valign="top"><a href="#index-value-of-a-symbol">value of a symbol</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symbol-Value">Symbol Value</a></td></tr>
  37632. <tr><td></td><td valign="top"><a href="#index-var-directive_002c-TIC54X"><code>var</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37633. <tr><td></td><td valign="top"><a href="#index-VAX-bitfields-not-supported">VAX bitfields not supported</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dno">VAX-no</a></td></tr>
  37634. <tr><td></td><td valign="top"><a href="#index-VAX-branch-improvement">VAX branch improvement</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dbranch">VAX-branch</a></td></tr>
  37635. <tr><td></td><td valign="top"><a href="#index-VAX-command_002dline-options-ignored">VAX command-line options ignored</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  37636. <tr><td></td><td valign="top"><a href="#index-VAX-displacement-sizing-character">VAX displacement sizing character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
  37637. <tr><td></td><td valign="top"><a href="#index-VAX-floating-point">VAX floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dfloat">VAX-float</a></td></tr>
  37638. <tr><td></td><td valign="top"><a href="#index-VAX-immediate-character">VAX immediate character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
  37639. <tr><td></td><td valign="top"><a href="#index-VAX-indirect-character">VAX indirect character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
  37640. <tr><td></td><td valign="top"><a href="#index-VAX-line-comment-character">VAX line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dChars">VAX-Chars</a></td></tr>
  37641. <tr><td></td><td valign="top"><a href="#index-VAX-line-separator">VAX line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dChars">VAX-Chars</a></td></tr>
  37642. <tr><td></td><td valign="top"><a href="#index-VAX-machine-directives">VAX machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
  37643. <tr><td></td><td valign="top"><a href="#index-VAX-opcode-mnemonics">VAX opcode mnemonics</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dopcodes">VAX-opcodes</a></td></tr>
  37644. <tr><td></td><td valign="top"><a href="#index-VAX-operand-notation">VAX operand notation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
  37645. <tr><td></td><td valign="top"><a href="#index-VAX-register-names">VAX register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002doperands">VAX-operands</a></td></tr>
  37646. <tr><td></td><td valign="top"><a href="#index-VAX-support">VAX support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Vax_002dDependent">Vax-Dependent</a></td></tr>
  37647. <tr><td></td><td valign="top"><a href="#index-Vax_002d11-C-compatibility">Vax-11 C compatibility</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  37648. <tr><td></td><td valign="top"><a href="#index-VAX_002fVMS-options">VAX/VMS options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  37649. <tr><td></td><td valign="top"><a href="#index-version-directive"><code>version</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Version">Version</a></td></tr>
  37650. <tr><td></td><td valign="top"><a href="#index-version-directive_002c-TIC54X"><code>version</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37651. <tr><td></td><td valign="top"><a href="#index-version-of-assembler">version of assembler</a>:</td><td>&nbsp;</td><td valign="top"><a href="#v">v</a></td></tr>
  37652. <tr><td></td><td valign="top"><a href="#index-versions-of-symbols">versions of symbols</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Symver">Symver</a></td></tr>
  37653. <tr><td></td><td valign="top"><a href="#index-Virtualization-instruction-generation-override">Virtualization instruction generation override</a>:</td><td>&nbsp;</td><td valign="top"><a href="#MIPS-ASE-Instruction-Generation-Overrides">MIPS ASE Instruction Generation Overrides</a></td></tr>
  37654. <tr><td></td><td valign="top"><a href="#index-visibility">visibility</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Hidden">Hidden</a></td></tr>
  37655. <tr><td></td><td valign="top"><a href="#index-visibility-1">visibility</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Internal">Internal</a></td></tr>
  37656. <tr><td></td><td valign="top"><a href="#index-visibility-2">visibility</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Protected">Protected</a></td></tr>
  37657. <tr><td></td><td valign="top"><a href="#index-Visium-line-comment-character">Visium line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Visium-Characters">Visium Characters</a></td></tr>
  37658. <tr><td></td><td valign="top"><a href="#index-Visium-line-separator">Visium line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Visium-Characters">Visium Characters</a></td></tr>
  37659. <tr><td></td><td valign="top"><a href="#index-Visium-options">Visium options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Visium-Options">Visium Options</a></td></tr>
  37660. <tr><td></td><td valign="top"><a href="#index-Visium-registers">Visium registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Visium-Registers">Visium Registers</a></td></tr>
  37661. <tr><td></td><td valign="top"><a href="#index-Visium-support">Visium support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Visium_002dDependent">Visium-Dependent</a></td></tr>
  37662. <tr><td></td><td valign="top"><a href="#index-VMS-_0028VAX_0029-options">VMS (VAX) options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002dOpts">VAX-Opts</a></td></tr>
  37663. <tr><td></td><td valign="top"><a href="#index-vtable_005fentry-directive"><code>vtable_entry</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VTableEntry">VTableEntry</a></td></tr>
  37664. <tr><td></td><td valign="top"><a href="#index-vtable_005finherit-directive"><code>vtable_inherit</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VTableInherit">VTableInherit</a></td></tr>
  37665. <tr><td colspan="4"> <hr></td></tr>
  37666. <tr><th id="AS-Index_cp_letter-W">W</th><td></td><td></td></tr>
  37667. <tr><td></td><td valign="top"><a href="#index-warning-directive">warning directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Warning">Warning</a></td></tr>
  37668. <tr><td></td><td valign="top"><a href="#index-warning-for-altered-difference-tables">warning for altered difference tables</a>:</td><td>&nbsp;</td><td valign="top"><a href="#K">K</a></td></tr>
  37669. <tr><td></td><td valign="top"><a href="#index-warning-messages">warning messages</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Errors">Errors</a></td></tr>
  37670. <tr><td></td><td valign="top"><a href="#index-warnings_002c-causing-error">warnings, causing error</a>:</td><td>&nbsp;</td><td valign="top"><a href="#W">W</a></td></tr>
  37671. <tr><td></td><td valign="top"><a href="#index-warnings_002c-M32R">warnings, M32R</a>:</td><td>&nbsp;</td><td valign="top"><a href="#M32R_002dWarnings">M32R-Warnings</a></td></tr>
  37672. <tr><td></td><td valign="top"><a href="#index-warnings_002c-suppressing">warnings, suppressing</a>:</td><td>&nbsp;</td><td valign="top"><a href="#W">W</a></td></tr>
  37673. <tr><td></td><td valign="top"><a href="#index-warnings_002c-switching-on">warnings, switching on</a>:</td><td>&nbsp;</td><td valign="top"><a href="#W">W</a></td></tr>
  37674. <tr><td></td><td valign="top"><a href="#index-weak-directive"><code>weak</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Weak">Weak</a></td></tr>
  37675. <tr><td></td><td valign="top"><a href="#index-weakref-directive"><code>weakref</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Weakref">Weakref</a></td></tr>
  37676. <tr><td></td><td valign="top"><a href="#index-WebAssembly-floating-point-_0028IEEE_0029">WebAssembly floating point (<small>IEEE</small>)</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dFloating_002dPoint">WebAssembly-Floating-Point</a></td></tr>
  37677. <tr><td></td><td valign="top"><a href="#index-WebAssembly-line-comment-character">WebAssembly line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dChars">WebAssembly-Chars</a></td></tr>
  37678. <tr><td></td><td valign="top"><a href="#index-WebAssembly-module-layout">WebAssembly module layout</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dmodule_002dlayout">WebAssembly-module-layout</a></td></tr>
  37679. <tr><td></td><td valign="top"><a href="#index-WebAssembly-notes">WebAssembly notes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dNotes">WebAssembly-Notes</a></td></tr>
  37680. <tr><td></td><td valign="top"><a href="#index-WebAssembly-opcodes">WebAssembly opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dOpcodes">WebAssembly-Opcodes</a></td></tr>
  37681. <tr><td></td><td valign="top"><a href="#index-WebAssembly-relocations">WebAssembly relocations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dRelocs">WebAssembly-Relocs</a></td></tr>
  37682. <tr><td></td><td valign="top"><a href="#index-WebAssembly-signatures">WebAssembly signatures</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dSignatures">WebAssembly-Signatures</a></td></tr>
  37683. <tr><td></td><td valign="top"><a href="#index-WebAssembly-support">WebAssembly support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dDependent">WebAssembly-Dependent</a></td></tr>
  37684. <tr><td></td><td valign="top"><a href="#index-WebAssembly-Syntax">WebAssembly Syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#WebAssembly_002dSyntax">WebAssembly-Syntax</a></td></tr>
  37685. <tr><td></td><td valign="top"><a href="#index-whitespace">whitespace</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Whitespace">Whitespace</a></td></tr>
  37686. <tr><td></td><td valign="top"><a href="#index-whitespace_002c-removed-by-preprocessor">whitespace, removed by preprocessor</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Preprocessing">Preprocessing</a></td></tr>
  37687. <tr><td></td><td valign="top"><a href="#index-wide-floating-point-directives_002c-VAX">wide floating point directives, VAX</a>:</td><td>&nbsp;</td><td valign="top"><a href="#VAX_002ddirectives">VAX-directives</a></td></tr>
  37688. <tr><td></td><td valign="top"><a href="#index-width-directive_002c-TIC54X"><code>width</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37689. <tr><td></td><td valign="top"><a href="#index-Width-of-continuation-lines-of-disassembly-output">Width of continuation lines of disassembly output</a>:</td><td>&nbsp;</td><td valign="top"><a href="#listing">listing</a></td></tr>
  37690. <tr><td></td><td valign="top"><a href="#index-Width-of-first-line-disassembly-output">Width of first line disassembly output</a>:</td><td>&nbsp;</td><td valign="top"><a href="#listing">listing</a></td></tr>
  37691. <tr><td></td><td valign="top"><a href="#index-Width-of-source-line-output">Width of source line output</a>:</td><td>&nbsp;</td><td valign="top"><a href="#listing">listing</a></td></tr>
  37692. <tr><td></td><td valign="top"><a href="#index-wmsg-directive_002c-TIC54X"><code>wmsg</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37693. <tr><td></td><td valign="top"><a href="#index-word-aligned-program-counter_002c-ARC">word aligned program counter, ARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ARC_002dRegs">ARC-Regs</a></td></tr>
  37694. <tr><td></td><td valign="top"><a href="#index-word-directive"><code>word</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Word">Word</a></td></tr>
  37695. <tr><td></td><td valign="top"><a href="#index-word-directive_002c-BPF"><code>word</code> directive, BPF</a>:</td><td>&nbsp;</td><td valign="top"><a href="#BPF-Directives">BPF Directives</a></td></tr>
  37696. <tr><td></td><td valign="top"><a href="#index-word-directive_002c-H8_002f300"><code>word</code> directive, H8/300</a>:</td><td>&nbsp;</td><td valign="top"><a href="#H8_002f300-Directives">H8/300 Directives</a></td></tr>
  37697. <tr><td></td><td valign="top"><a href="#index-word-directive_002c-i386"><code>word</code> directive, i386</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  37698. <tr><td></td><td valign="top"><a href="#index-word-directive_002c-Nios-II"><code>word</code> directive, Nios II</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Nios-II-Directives">Nios II Directives</a></td></tr>
  37699. <tr><td></td><td valign="top"><a href="#index-word-directive_002c-OpenRISC"><code>word</code> directive, OpenRISC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#OpenRISC_002dDirectives">OpenRISC-Directives</a></td></tr>
  37700. <tr><td></td><td valign="top"><a href="#index-word-directive_002c-PRU"><code>word</code> directive, PRU</a>:</td><td>&nbsp;</td><td valign="top"><a href="#PRU-Directives">PRU Directives</a></td></tr>
  37701. <tr><td></td><td valign="top"><a href="#index-word-directive_002c-SPARC"><code>word</code> directive, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  37702. <tr><td></td><td valign="top"><a href="#index-word-directive_002c-TIC54X"><code>word</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37703. <tr><td></td><td valign="top"><a href="#index-word-directive_002c-x86_002d64"><code>word</code> directive, x86-64</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  37704. <tr><td></td><td valign="top"><a href="#index-writing-patterns-in-memory">writing patterns in memory</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Fill">Fill</a></td></tr>
  37705. <tr><td></td><td valign="top"><a href="#index-wval"><code>wval</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  37706. <tr><td colspan="4"> <hr></td></tr>
  37707. <tr><th id="AS-Index_cp_letter-X">X</th><td></td><td></td></tr>
  37708. <tr><td></td><td valign="top"><a href="#index-x86-machine-directives">x86 machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dDirectives">i386-Directives</a></td></tr>
  37709. <tr><td></td><td valign="top"><a href="#index-x86_002d64-arch-directive">x86-64 arch directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dArch">i386-Arch</a></td></tr>
  37710. <tr><td></td><td valign="top"><a href="#index-x86_002d64-att_005fsyntax-pseudo-op">x86-64 att_syntax pseudo op</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37711. <tr><td></td><td valign="top"><a href="#index-x86_002d64-conversion-instructions">x86-64 conversion instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  37712. <tr><td></td><td valign="top"><a href="#index-x86_002d64-extension-instructions">x86-64 extension instructions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  37713. <tr><td></td><td valign="top"><a href="#index-x86_002d64-floating-point">x86-64 floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dFloat">i386-Float</a></td></tr>
  37714. <tr><td></td><td valign="top"><a href="#index-x86_002d64-immediate-operands">x86-64 immediate operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37715. <tr><td></td><td valign="top"><a href="#index-x86_002d64-instruction-naming">x86-64 instruction naming</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMnemonics">i386-Mnemonics</a></td></tr>
  37716. <tr><td></td><td valign="top"><a href="#index-x86_002d64-intel_005fsyntax-pseudo-op">x86-64 intel_syntax pseudo op</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37717. <tr><td></td><td valign="top"><a href="#index-x86_002d64-jump-optimization">x86-64 jump optimization</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dJumps">i386-Jumps</a></td></tr>
  37718. <tr><td></td><td valign="top"><a href="#index-x86_002d64-jump_002c-call_002c-return">x86-64 jump, call, return</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37719. <tr><td></td><td valign="top"><a href="#index-x86_002d64-jump_002fcall-operands">x86-64 jump/call operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37720. <tr><td></td><td valign="top"><a href="#index-x86_002d64-memory-references">x86-64 memory references</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dMemory">i386-Memory</a></td></tr>
  37721. <tr><td></td><td valign="top"><a href="#index-x86_002d64-options">x86-64 options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dOptions">i386-Options</a></td></tr>
  37722. <tr><td></td><td valign="top"><a href="#index-x86_002d64-register-operands">x86-64 register operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37723. <tr><td></td><td valign="top"><a href="#index-x86_002d64-registers">x86-64 registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dRegs">i386-Regs</a></td></tr>
  37724. <tr><td></td><td valign="top"><a href="#index-x86_002d64-sections">x86-64 sections</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37725. <tr><td></td><td valign="top"><a href="#index-x86_002d64-size-suffixes">x86-64 size suffixes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37726. <tr><td></td><td valign="top"><a href="#index-x86_002d64-source_002c-destination-operands">x86-64 source, destination operands</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37727. <tr><td></td><td valign="top"><a href="#index-x86_002d64-support">x86-64 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dDependent">i386-Dependent</a></td></tr>
  37728. <tr><td></td><td valign="top"><a href="#index-x86_002d64-syntax-compatibility">x86-64 syntax compatibility</a>:</td><td>&nbsp;</td><td valign="top"><a href="#i386_002dVariations">i386-Variations</a></td></tr>
  37729. <tr><td></td><td valign="top"><a href="#index-xdef-directive_002c-Z80"><code>xdef</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  37730. <tr><td></td><td valign="top"><a href="#index-xfloat-directive_002c-TIC54X"><code>xfloat</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37731. <tr><td></td><td valign="top"><a href="#index-XGATE-addressing-modes">XGATE addressing modes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
  37732. <tr><td></td><td valign="top"><a href="#index-XGATE-assembler-directives">XGATE assembler directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dDirectives">XGATE-Directives</a></td></tr>
  37733. <tr><td></td><td valign="top"><a href="#index-XGATE-floating-point">XGATE floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dFloat">XGATE-Float</a></td></tr>
  37734. <tr><td></td><td valign="top"><a href="#index-XGATE-line-comment-character">XGATE line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
  37735. <tr><td></td><td valign="top"><a href="#index-XGATE-line-separator">XGATE line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
  37736. <tr><td></td><td valign="top"><a href="#index-XGATE-opcodes">XGATE opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dopcodes">XGATE-opcodes</a></td></tr>
  37737. <tr><td></td><td valign="top"><a href="#index-XGATE-options">XGATE options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dOpts">XGATE-Opts</a></td></tr>
  37738. <tr><td></td><td valign="top"><a href="#index-XGATE-support">XGATE support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dDependent">XGATE-Dependent</a></td></tr>
  37739. <tr><td></td><td valign="top"><a href="#index-XGATE-syntax">XGATE syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XGATE_002dSyntax">XGATE-Syntax</a></td></tr>
  37740. <tr><td></td><td valign="top"><a href="#index-xlong-directive_002c-TIC54X"><code>xlong</code> directive, TIC54X</a>:</td><td>&nbsp;</td><td valign="top"><a href="#TIC54X_002dDirectives">TIC54X-Directives</a></td></tr>
  37741. <tr><td></td><td valign="top"><a href="#index-xref-directive_002c-Z80"><code>xref</code> directive, Z80</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  37742. <tr><td></td><td valign="top"><a href="#index-XStormy16-comment-character">XStormy16 comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
  37743. <tr><td></td><td valign="top"><a href="#index-XStormy16-line-comment-character">XStormy16 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
  37744. <tr><td></td><td valign="top"><a href="#index-XStormy16-line-separator">XStormy16 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16_002dChars">XStormy16-Chars</a></td></tr>
  37745. <tr><td></td><td valign="top"><a href="#index-XStormy16-machine-directives">XStormy16 machine directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16-Directives">XStormy16 Directives</a></td></tr>
  37746. <tr><td></td><td valign="top"><a href="#index-XStormy16-pseudo_002dopcodes">XStormy16 pseudo-opcodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XStormy16-Opcodes">XStormy16 Opcodes</a></td></tr>
  37747. <tr><td></td><td valign="top"><a href="#index-XStormy16-support">XStormy16 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#XSTORMY16_002dDependent">XSTORMY16-Dependent</a></td></tr>
  37748. <tr><td></td><td valign="top"><a href="#index-Xtensa-architecture">Xtensa architecture</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa_002dDependent">Xtensa-Dependent</a></td></tr>
  37749. <tr><td></td><td valign="top"><a href="#index-Xtensa-assembler-syntax">Xtensa assembler syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Syntax">Xtensa Syntax</a></td></tr>
  37750. <tr><td></td><td valign="top"><a href="#index-Xtensa-directives">Xtensa directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Directives">Xtensa Directives</a></td></tr>
  37751. <tr><td></td><td valign="top"><a href="#index-Xtensa-opcode-names">Xtensa opcode names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Opcodes">Xtensa Opcodes</a></td></tr>
  37752. <tr><td></td><td valign="top"><a href="#index-Xtensa-register-names">Xtensa register names</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Xtensa-Registers">Xtensa Registers</a></td></tr>
  37753. <tr><td></td><td valign="top"><a href="#index-xword-directive_002c-SPARC"><code>xword</code> directive, SPARC</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Sparc_002dDirectives">Sparc-Directives</a></td></tr>
  37754. <tr><td colspan="4"> <hr></td></tr>
  37755. <tr><th id="AS-Index_cp_letter-Z">Z</th><td></td><td></td></tr>
  37756. <tr><td></td><td valign="top"><a href="#index-Z80-_0024">Z80 $</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  37757. <tr><td></td><td valign="top"><a href="#index-Z80-_0027">Z80 &rsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  37758. <tr><td></td><td valign="top"><a href="#index-Z80-floating-point">Z80 floating point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Floating-Point">Z80 Floating Point</a></td></tr>
  37759. <tr><td></td><td valign="top"><a href="#index-Z80-labels">Z80 labels</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dLabels">Z80-Labels</a></td></tr>
  37760. <tr><td></td><td valign="top"><a href="#index-Z80-line-comment-character">Z80 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  37761. <tr><td></td><td valign="top"><a href="#index-Z80-line-separator">Z80 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  37762. <tr><td></td><td valign="top"><a href="#index-Z80-options">Z80 options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
  37763. <tr><td></td><td valign="top"><a href="#index-Z80-registers">Z80 registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dRegs">Z80-Regs</a></td></tr>
  37764. <tr><td></td><td valign="top"><a href="#index-Z80-support">Z80 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dDependent">Z80-Dependent</a></td></tr>
  37765. <tr><td></td><td valign="top"><a href="#index-Z80-Syntax">Z80 Syntax</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Options">Z80 Options</a></td></tr>
  37766. <tr><td></td><td valign="top"><a href="#index-Z80_002c-case-sensitivity">Z80, case sensitivity</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dCase">Z80-Case</a></td></tr>
  37767. <tr><td></td><td valign="top"><a href="#index-Z80_002c-_005c">Z80, \</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80_002dChars">Z80-Chars</a></td></tr>
  37768. <tr><td></td><td valign="top"><a href="#index-Z80_002donly-directives">Z80-only directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z80-Directives">Z80 Directives</a></td></tr>
  37769. <tr><td></td><td valign="top"><a href="#index-Z800-addressing-modes">Z800 addressing modes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000_002dAddressing">Z8000-Addressing</a></td></tr>
  37770. <tr><td></td><td valign="top"><a href="#index-Z8000-directives">Z8000 directives</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Directives">Z8000 Directives</a></td></tr>
  37771. <tr><td></td><td valign="top"><a href="#index-Z8000-line-comment-character">Z8000 line comment character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000_002dChars">Z8000-Chars</a></td></tr>
  37772. <tr><td></td><td valign="top"><a href="#index-Z8000-line-separator">Z8000 line separator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000_002dChars">Z8000-Chars</a></td></tr>
  37773. <tr><td></td><td valign="top"><a href="#index-Z8000-opcode-summary">Z8000 opcode summary</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Opcodes">Z8000 Opcodes</a></td></tr>
  37774. <tr><td></td><td valign="top"><a href="#index-Z8000-options">Z8000 options</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000-Options">Z8000 Options</a></td></tr>
  37775. <tr><td></td><td valign="top"><a href="#index-Z8000-registers">Z8000 registers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000_002dRegs">Z8000-Regs</a></td></tr>
  37776. <tr><td></td><td valign="top"><a href="#index-Z8000-support">Z8000 support</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Z8000_002dDependent">Z8000-Dependent</a></td></tr>
  37777. <tr><td></td><td valign="top"><a href="#index-zdaoff-pseudo_002dop_002c-V850"><code>zdaoff</code> pseudo-op, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850-Opcodes">V850 Opcodes</a></td></tr>
  37778. <tr><td></td><td valign="top"><a href="#index-zero-directive"><code>zero</code> directive</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Zero">Zero</a></td></tr>
  37779. <tr><td></td><td valign="top"><a href="#index-zero-register_002c-V850"><code>zero</code> register, V850</a>:</td><td>&nbsp;</td><td valign="top"><a href="#V850_002dRegs">V850-Regs</a></td></tr>
  37780. <tr><td></td><td valign="top"><a href="#index-zero_002dterminated-strings">zero-terminated strings</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Asciz">Asciz</a></td></tr>
  37781. <tr><td colspan="4"> <hr></td></tr>
  37782. </table>
  37783. <table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#AS-Index_cp_symbol-1"><b> </b></a>
  37784. &nbsp;
  37785. <a class="summary-letter" href="#AS-Index_cp_symbol-2"><b>#</b></a>
  37786. &nbsp;
  37787. <a class="summary-letter" href="#AS-Index_cp_symbol-3"><b>$</b></a>
  37788. &nbsp;
  37789. <a class="summary-letter" href="#AS-Index_cp_symbol-4"><b>%</b></a>
  37790. &nbsp;
  37791. <a class="summary-letter" href="#AS-Index_cp_symbol-5"><b>-</b></a>
  37792. &nbsp;
  37793. <a class="summary-letter" href="#AS-Index_cp_symbol-6"><b>.</b></a>
  37794. &nbsp;
  37795. <a class="summary-letter" href="#AS-Index_cp_symbol-7"><b>1</b></a>
  37796. &nbsp;
  37797. <a class="summary-letter" href="#AS-Index_cp_symbol-8"><b>2</b></a>
  37798. &nbsp;
  37799. <a class="summary-letter" href="#AS-Index_cp_symbol-9"><b>3</b></a>
  37800. &nbsp;
  37801. <a class="summary-letter" href="#AS-Index_cp_symbol-10"><b>4</b></a>
  37802. &nbsp;
  37803. <a class="summary-letter" href="#AS-Index_cp_symbol-11"><b>8</b></a>
  37804. &nbsp;
  37805. <a class="summary-letter" href="#AS-Index_cp_symbol-12"><b>:</b></a>
  37806. &nbsp;
  37807. <a class="summary-letter" href="#AS-Index_cp_symbol-13"><b>@</b></a>
  37808. &nbsp;
  37809. <a class="summary-letter" href="#AS-Index_cp_symbol-14"><b>_</b></a>
  37810. &nbsp;
  37811. <br>
  37812. <a class="summary-letter" href="#AS-Index_cp_letter-A"><b>A</b></a>
  37813. &nbsp;
  37814. <a class="summary-letter" href="#AS-Index_cp_letter-B"><b>B</b></a>
  37815. &nbsp;
  37816. <a class="summary-letter" href="#AS-Index_cp_letter-C"><b>C</b></a>
  37817. &nbsp;
  37818. <a class="summary-letter" href="#AS-Index_cp_letter-D"><b>D</b></a>
  37819. &nbsp;
  37820. <a class="summary-letter" href="#AS-Index_cp_letter-E"><b>E</b></a>
  37821. &nbsp;
  37822. <a class="summary-letter" href="#AS-Index_cp_letter-F"><b>F</b></a>
  37823. &nbsp;
  37824. <a class="summary-letter" href="#AS-Index_cp_letter-G"><b>G</b></a>
  37825. &nbsp;
  37826. <a class="summary-letter" href="#AS-Index_cp_letter-H"><b>H</b></a>
  37827. &nbsp;
  37828. <a class="summary-letter" href="#AS-Index_cp_letter-I"><b>I</b></a>
  37829. &nbsp;
  37830. <a class="summary-letter" href="#AS-Index_cp_letter-J"><b>J</b></a>
  37831. &nbsp;
  37832. <a class="summary-letter" href="#AS-Index_cp_letter-K"><b>K</b></a>
  37833. &nbsp;
  37834. <a class="summary-letter" href="#AS-Index_cp_letter-L"><b>L</b></a>
  37835. &nbsp;
  37836. <a class="summary-letter" href="#AS-Index_cp_letter-M"><b>M</b></a>
  37837. &nbsp;
  37838. <a class="summary-letter" href="#AS-Index_cp_letter-N"><b>N</b></a>
  37839. &nbsp;
  37840. <a class="summary-letter" href="#AS-Index_cp_letter-O"><b>O</b></a>
  37841. &nbsp;
  37842. <a class="summary-letter" href="#AS-Index_cp_letter-P"><b>P</b></a>
  37843. &nbsp;
  37844. <a class="summary-letter" href="#AS-Index_cp_letter-Q"><b>Q</b></a>
  37845. &nbsp;
  37846. <a class="summary-letter" href="#AS-Index_cp_letter-R"><b>R</b></a>
  37847. &nbsp;
  37848. <a class="summary-letter" href="#AS-Index_cp_letter-S"><b>S</b></a>
  37849. &nbsp;
  37850. <a class="summary-letter" href="#AS-Index_cp_letter-T"><b>T</b></a>
  37851. &nbsp;
  37852. <a class="summary-letter" href="#AS-Index_cp_letter-U"><b>U</b></a>
  37853. &nbsp;
  37854. <a class="summary-letter" href="#AS-Index_cp_letter-V"><b>V</b></a>
  37855. &nbsp;
  37856. <a class="summary-letter" href="#AS-Index_cp_letter-W"><b>W</b></a>
  37857. &nbsp;
  37858. <a class="summary-letter" href="#AS-Index_cp_letter-X"><b>X</b></a>
  37859. &nbsp;
  37860. <a class="summary-letter" href="#AS-Index_cp_letter-Z"><b>Z</b></a>
  37861. &nbsp;
  37862. </td></tr></table>
  37863. <div class="footnote">
  37864. <hr>
  37865. <h4 class="footnotes-heading">Footnotes</h4>
  37866. <h5><a id="FOOT1" href="#DOCF1">(1)</a></h3>
  37867. <p>This
  37868. is not the same as the executable image file alignment controlled by <code>ld</code>&rsquo;s
  37869. &lsquo;<samp>--section-alignment</samp>&rsquo; option; image file sections in PE are aligned to
  37870. multiples of 4096, which is far too large an alignment for ordinary variables.
  37871. It is rather the default alignment for (non-debug) sections within object
  37872. (&lsquo;<samp>*.o</samp>&rsquo;) files, which are less strictly aligned.</p>
  37873. <h5><a id="FOOT2" href="#DOCF2">(2)</a></h3>
  37874. <p>The term &ldquo;macro&rdquo; is somewhat overloaded here, since
  37875. these macros have no relation to those defined by <code>.macro</code>,
  37876. see <a href="#Macro"><code>.macro</code></a>.</p>
  37877. <h5><a id="FOOT3" href="#DOCF3">(3)</a></h3>
  37878. <p>Literals for the
  37879. <code>.init</code> and <code>.fini</code> sections are always placed in separate
  37880. sections, even when &lsquo;<samp>--text-section-literals</samp>&rsquo; is enabled.</p>
  37881. <h5><a id="FOOT4" href="#DOCF4">(4)</a></h3>
  37882. <p>Any
  37883. more details?</p>
  37884. </div>
  37885. <hr>
  37886. </body>
  37887. </html>