OPCODES.LST 434 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370
  1. OPCODE LIST Release 60 Last change 03jan99
  2. ------------------ OPCODE.LST ----------------------------
  3. This is DOC 'bout undocument command and document command
  4. of any last processors. And 'bout some registers and
  5. Chips specific stuffs.
  6. -----------------------------------------------------------
  7. (C) (P) Potemkin's Hackers Group 1994...1998
  8. -----------------------------------------------------------
  9. Revision 4.00 PRELIMINARY 27 Sep 1998
  10. -----------------------------------------------------------
  11. Latest versions available on Web:
  12. http://www.chat.ru/~phg
  13. Our contact E-mail:
  14. avp@gdev.msk.ru
  15. ICQ:
  16. 17806489
  17. ------------------------------------------------------------
  18. [New In revision 3.90]
  19. o Update steppings
  20. o Update Katmai Info
  21. o Some reformating :)
  22. -----------------------------------------------------------
  23. [New In revision 3.81]
  24. o Update steppings
  25. o Add Vendor-specified instruction times
  26. o Add some new info in appendix G.
  27. o Some bugfixes
  28. -----------------------------------------------------------
  29. [New In revision 3.80]
  30. o Cyrix EMMX instructions
  31. o AMD 3D instructions
  32. o IA-MMX2 codes
  33. o News in CPUID
  34. o Update Steppings
  35. ------------------------------------------------------------
  36. [New In revision 3.51]
  37. o Some new Merced Instructions (IA-32 and IA-64)
  38. o Some Katmai instructions (IA MMX-2)
  39. o IDT C6 MSRs
  40. o News in CPUID
  41. o News in CR4
  42. o Update Cyrix CPUs Info
  43. o New operations codes (AMD-3D,Cyrix EMMX)
  44. o More Pentium-II MSRs
  45. o Some SMM Info
  46. -------------------------------------------------------------
  47. ----------O-AAA------------------------------------
  48. OPCODE AAA - ASCII adjust AX after addition
  49. CPU: 8086+
  50. Type of Instruction: User
  51. Instruction: AAA ; (no operands)
  52. Description:
  53. IF ((( AL and 0FH ) > 9 ) or (AF==1)
  54. THEN {
  55. IF CPU<286 THEN { AL <- AL+6 }
  56. ELSE { AX <- AX+6 }
  57. AH <- AH+1
  58. CF <- 1
  59. AF <- 1
  60. } ELSE {
  61. CF <- 0
  62. AF <- 0
  63. }
  64. AL <- AL and 0Fh
  65. Note: This istruction incorrectly documented in Intel's materials.
  66. See description field.
  67. Flags Affected: AF,CF (modified)
  68. OF,SF,ZF,PF (undefined)
  69. Faults:
  70. RM PM V86 VME
  71. None
  72. CPU mode: RM,PM,VM,SMM
  73. +++++++++++++++++++++++
  74. Physical Form:
  75. COP (Code of Operation) : 37H
  76. Clocks:
  77. AAA
  78. 8086: 4
  79. 8088: 4
  80. 80186: 8
  81. 80286: 3
  82. 80386: 4
  83. i486: 3
  84. Pentium: 3
  85. Cx486SLC: 4
  86. Cx486DX: 4
  87. IBM 486BL3X: 4
  88. UMC U5S: 1
  89. ----------O-AAD------------------------------------
  90. OPCODE AAD - ASCII adjust AX before Division
  91. CPU: 8086+
  92. Type of Instruction: User
  93. Instruction: AAD basen
  94. Description:
  95. AL <- (AH*basen) + AL
  96. AH <- 0
  97. Flags Affected: SF,ZF,PF (modified)
  98. OF,AF,CF (undefined)
  99. Faults:
  100. RM PM V86 VME SMM
  101. None
  102. CPU mode: RM,PM,VM,SMM
  103. Note: AAD without operands means AAD with operand 0AH.
  104. Note: NECs understand only AAD 0AH form.
  105. +++++++++++++++++++++++
  106. Physical Form: AAD imm8
  107. COP (Code of Operation) : D5H imm8
  108. Clocks: AAD 0AH
  109. 8086: 60
  110. 80186: 15
  111. 80286: 14
  112. 80386: 19
  113. i486: 14
  114. Pentium: 10
  115. Cx486SLC: 4
  116. Cx486DX: 4
  117. IBM 486BL3X: 15
  118. UMC U5S: 11
  119. ----------O-AAM------------------------------------
  120. OPCODE AAM - ASCII adjust AX after Multiply
  121. CPU: 8086+
  122. Type of Instruction: User
  123. Instruction: AAM basen
  124. Description:
  125. AH <- AL / basen
  126. AL <- AL MOD basen
  127. Flags Affected: SF,ZF,PF (modified)
  128. OF,AF,CF (undefined)
  129. Faults:
  130. RM PM V86 VME SMM
  131. None
  132. CPU mode: RM,PM,VM,SMM
  133. Note: AAM without operands means AAM with operand 0AH.
  134. WARNING: NECs understand only AAM 0Ah form.
  135. +++++++++++++++++++++++
  136. Physical Form: AAM imm8
  137. COP (Code of Operation) : D4H imm8
  138. Clocks: AAM 0AH
  139. 8086: 83
  140. 80186: 19
  141. 80286: 16
  142. 80386: 17
  143. i486: 15
  144. Pentium: 18
  145. Cx486SLC: 16
  146. Cx486DX: 16
  147. IBM 486BL3X: 17
  148. UMC U5S: 12
  149. ----------O-ADD4S----------------------------------
  150. OPCODE ADD4S - Addition for packed BCD strings
  151. CPU: all NECs V-series
  152. Type of Instruction: User
  153. Instruction: ADD4S
  154. Description:
  155. BCD STRING (ADDRESS=ES:DI,LENGTH=CL) <-
  156. BCD STRING (ADDRESS=DS:SI,LENGTH=CL) +
  157. BCD STRING (ADDRESS=ES:DI,LENGTH=CL);
  158. Note: si,di, other registers not changed
  159. Flags Affected: OF,CF,ZF
  160. ;; ZF set if both strings are zeros.
  161. ;; CF,OF set as result of operation with most
  162. ;; signification BCDs.
  163. CPU mode: RM
  164. +++++++++++++++++++++++
  165. Physical Form: ADD4S
  166. COP (Code of Operation) : 0FH 20H
  167. Clocks: ADD4S
  168. NEC V20: ~19*(CL/2)+7
  169. ----------O-BOUND----------------------------------
  170. OPCODE BOUND - Chack Array Index Against Bounds
  171. CPU: 80186+,NECs
  172. Type of Instruction: User - HLL support
  173. Instruction: BOUND index,bound_array
  174. Description:
  175. IF (index < (opsize ptr [bound_array]))
  176. OR
  177. (index > (opsize ptr [bound_array+opsize]))
  178. THEN INT 5;
  179. Flags Affected: No Flags Affected
  180. CPU mode: RM,PM,VM,SMM
  181. Faults:
  182. RM PM V86 VME SMM
  183. #GP(0) if result is nonwritable seg.
  184. #GP(0) illegal memory operand
  185. in CS..GS (exc. SS)
  186. #SS(0) illegal memory operand in SS
  187. #PF #PF
  188. #UD #UD #UD if 2nd operand is register
  189. #13 if any part of operand lie
  190. outside of 0..FFFFh
  191. #AC #AC if CPL=3 and enable AC.
  192. Note: (186s&NECs) saved CS:IP BOUND interrupt as pointer to following
  193. instruction that self.
  194. (286+) saved as pointer to BOUND instruction.
  195. +++++++++++++++++++++++
  196. Physical Form: BOUND reg16,mem32
  197. BOUND reg32,mem64
  198. COP (Code of Operation) : 62H Postbyte
  199. Note: for 32bit op. add Pfix 66h if in 16bit mode
  200. Clocks: BOUND reg16,mem16
  201. In Range Out Range
  202. 80186: 33-35
  203. 80286: 13 int+13
  204. 80386: 10
  205. i486: 7
  206. Pentium: 8 int+32
  207. Cx486SLC: 11 int+11
  208. Cx486DX: 11 int+11
  209. ----------O-BRKCS----------------------------------
  210. OPCODE BRKCS - Break with Contex Switch
  211. CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  212. Type of Instruction: System
  213. Instruction: BRKCS bank
  214. Description:
  215. Perform a High-Speed Software Interrupt with contex-switch to
  216. register bank indicated by the lower 3-bits of 'bank'.
  217. Info: NEC V25/V35/V25 Plus/V35 Plus Bank System
  218. This Chips have 8 32bytes register banks, which placed in
  219. Internal chip RAM by addresses:
  220. xxE00h..xxE1Fh Bank 0
  221. xxE20h..xxE3Fh Bank 1
  222. .........
  223. xxEC0h..xxEDFh Bank 6
  224. xxEE0h..xxEFFh Bank 7
  225. xxF00h..xxFFFh Special Functions Register
  226. Where xx is Value of IDB register.
  227. IBD is Byte Register contained Internal data area base
  228. IBD addresses is FFFFFh and xxFFFh where xx is data in IBD.
  229. Format of Bank:
  230. +0 Reserved
  231. +2 Vector PC
  232. +4 Save PSW
  233. +6 Save PC
  234. +8 DS0 ;DS
  235. +A SS ;SS
  236. +C PS ;CS
  237. +E DS1 ;ES
  238. +10 IY ;DI
  239. +11 IX ;SI
  240. +14 BP ;BP
  241. +16 SP ;SP
  242. +18 BW ;BX
  243. +1A DW ;DX
  244. +1C CW ;CX
  245. +1E AW ;AX
  246. Format of V25 etc. PSW (FLAGS):
  247. Bit Description
  248. 15 1
  249. 14 RB2 \
  250. 13 RB1 > Current Bank Number
  251. 12 RB0 /
  252. 11 V ;OF
  253. 10 DIR ;DF
  254. 9 IE ;IF
  255. 8 BRK ;TF
  256. 7 S ;SF
  257. 6 Z ;ZF
  258. 5 F1 General Purpose user flag #1
  259. (accessed by Flag Special Function Register)
  260. 4 AC ;AF
  261. 3 F0 General purpose user flag #0
  262. (accessed by Flag Special Function Register)
  263. 2 P ;PF
  264. 1 BRKI I/O Trap Enable Flag
  265. 0 CY ;CF
  266. Flags Affected: None
  267. CPU mode: RM
  268. +++++++++++++++++++++++
  269. Physical Form: BRKCS reg16
  270. COP (Code of Operation) : 0Fh 2Dh <1111 1RRR>
  271. Clocks: 15
  272. ----------O-BRKEM----------------------------------
  273. OPCODE BRKEM - Break for Emulation
  274. CPU: NEC/Sony V20/V30/V40/V50
  275. Type of Instruction: System
  276. Instruction: BRKEM intnum
  277. Description:
  278. PUSH FLAGS
  279. PUSH CS
  280. PUSH IP
  281. MOV CS,0:[intnum*4+2]
  282. MOV IP,0:[intnum*4]
  283. MD <- 0; // Enable 8080 emulation
  284. Note: BRKEM instruction do software interrupt and then New CS,IP loaded
  285. it switch to 8080 mode i.e. CPU will execute 8080 code.
  286. Mapping Table of Registers in 8080 Mode
  287. 8080 Md. A B C D E H L SP PC F
  288. native. AL CH CL DH DL BH BL BP IP FLAGS(low)
  289. For Return of 8080 mode use CALLN instruction.
  290. Note: I.e. 8080 addressing only 64KB then "Real Address" is CS*16+PC
  291. Flags Affected: MD
  292. CPU mode: RM
  293. +++++++++++++++++++++++
  294. Physical Form: BRKEM imm8
  295. COP (Code of Operation) : 0FH FFH imm8
  296. Clocks: BRKEM imm8
  297. NEC V20: 38
  298. ----------O-BRKN-----------------------------------
  299. OPCODE BRKN - Break to Native Mode
  300. CPU: NEC (V25/V35) Software Guard only
  301. Type of Instruction: System
  302. Instruction: BRKN int_vector
  303. Description:
  304. [sp-1,sp-2] <- PSW ; PSW EQU FLAGS
  305. [sp-3,sp-4] <- PS ; PS EQU CS
  306. [sp-5,sp-6] <- PC ; PC EQU IP
  307. SP <- SP -6
  308. IE <- 0
  309. BRK <- 0
  310. MD <- 1
  311. PC <- [int_vector*4 +0,+1]
  312. PS <- [int_vector*4 +2,+3]
  313. Note: The BRKN instruction switches operations in Native Mode
  314. from Security Mode via Interrupt call. In Normal Mode
  315. Instruction executed as mPD70320/70322 (V25) operation mode.
  316. Flags Affected: None
  317. CPU mode: RM
  318. +++++++++++++++++++++++
  319. Physical Form: BRKN imm8
  320. COP (Code of Operation) : 63h imm8
  321. Clocks: 56+10T [44+10T]
  322. ----------O-BRKS-----------------------------------
  323. OPCODE BRKS - Break to Security Mode
  324. CPU: NEC (V25/V35) Software Guard only
  325. Type of Instruction: System
  326. Instruction: BRKS int_vector
  327. Description:
  328. [sp-1,sp-2] <- PSW ; PSW EQU FLAGS
  329. [sp-3,sp-4] <- PS ; PS EQU CS
  330. [sp-5,sp-6] <- PC ; PC EQU IP
  331. SP <- SP -6
  332. IE <- 0
  333. BRK <- 0
  334. MD <- 0
  335. PC <- [int_vector*4 +0,+1]
  336. PS <- [int_vector*4 +2,+3]
  337. Note: The BRKS instruction switches operations in Security Mode
  338. via Interrupt call. In Security Mode the fetched operation
  339. code is executed after conversion in accordance with build-in
  340. translation table
  341. Flags Affected: None
  342. CPU mode: RM
  343. +++++++++++++++++++++++
  344. Physical Form: BRKS imm8
  345. COP (Code of Operation) : F1h imm8
  346. Clocks: 56+10T [44+10T]
  347. ----------O-BRKXA----------------------------------
  348. OPCODE BRKXA - Break to Expansion Address
  349. CPU: NEC V33/V53 only
  350. Type of Instruction: System
  351. Instruction: BRKXA int_vector
  352. Description:
  353. [sp-1,sp-2] <- PSW ; PSW EQU FLAGS
  354. [sp-3,sp-4] <- PS ; PS EQU CS
  355. [sp-5,sp-6] <- PC ; PC EQU IP
  356. SP <- SP -6
  357. IE <- 0
  358. BRK <- 0
  359. MD <- 0
  360. PC <- [int_vector*4 +0,+1]
  361. PS <- [int_vector*4 +2,+3]
  362. Enter Expansion Address Mode.
  363. Note: In NEC V53 Memory Space dividing into 1024 16K pages.
  364. The programming model is Same as in Normal mode.
  365. Mechanism is:
  366. 20 bit Logical Address: 19..14 Page Num 13..0 Offset
  367. page Num convertin by internal table to 23..14 Page Base
  368. tHE pHYSICAL ADDRESS is both Base and Offset.
  369. Address Expansion Registers:
  370. logical Address A19..A14 I/O Address
  371. 0 FF00h
  372. 1 FF02h
  373. ... ...
  374. 63 FF7Eh
  375. Register XAM aliased with port # FF80h indicated current mode
  376. of operation.
  377. Format of XAM register (READ ONLY):
  378. 15..1 reserved
  379. 0 XA Flag, if=1 then in XA mode.
  380. Format of V53 PSW:
  381. 15..12 1
  382. 11 V
  383. 10 DIR
  384. 9 IE
  385. 8 BRK
  386. 7 S
  387. 6 Z
  388. 5 0
  389. 4 AC
  390. 3 0
  391. 2 P
  392. 1 1
  393. 0 CY
  394. Flags Affected: None
  395. CPU mode: RM
  396. +++++++++++++++++++++++
  397. Physical Form: BRKXA imm8
  398. COP (Code of Operation) : 0Fh E0h imm8
  399. Clocks: 12
  400. ----------O-BSWAP----------------------------------
  401. OPCODE BSWAP - Bytes Swap
  402. CPU: I486 +
  403. Type of Instruction: User
  404. Instruction: BSWAP dwordr
  405. Description:
  406. XCHG BYTE dwordr[31:24],dwordr[7:0]
  407. XCHG BYTE dwordr[23:16],dwordr[15:8]
  408. ; Need Good Picture to Show It
  409. Notes: This instruction used for converting big-endian
  410. (Intel) format to little-endian (Motorolla etc.) format.
  411. Flags Affected: None
  412. CPU mode: RM,PM,VM,SMM
  413. Physical Form: BSWAP r32
  414. COP (Code of Operation): 0FH 11001rrr (For 32bit segment)
  415. Clocks: Cyrix Cx486SLC : 4
  416. i486 : 1
  417. Pentium : 1
  418. Cyrix Cx486DX : 4
  419. UMC U5S : 2
  420. IBM 486BL3X : 9
  421. ----------O-BTCLR----------------------------------
  422. OPCODE BTCLR - Bit Test, If it True Clear and Branch
  423. CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  424. Type of Instruction: User
  425. Instruction: BTCLR var,bitnumber,Short_Label
  426. Description:
  427. IF BIT(bitnumber OF var) =1 THEN
  428. {
  429. PC <- PC + ext - disp8;
  430. BIT(bitnumber OF var) <-0
  431. }
  432. Flags Affected: None
  433. CPU mode: RM
  434. +++++++++++++++++++++++
  435. Physical Form: BTCLR reg/mem8,imm3, short_label
  436. COP (Code of Operation) : 0Fh 9Ch PostByte imm3 Short_Label (Total=5 bytes)
  437. Clocks: 29
  438. ----------O-CALLN----------------------------------
  439. OPCODE CALLN - Call Native Mode Routine
  440. CPU: NEC/Sony V20/V30 etc
  441. Type of Instruction: System
  442. Instruction: CALLN intnum
  443. Description:
  444. CALLN instruction call (interrupt service in Native Mode)
  445. from 8080 emulation mode:
  446. PUSH FLAGS
  447. PUSH CS
  448. PUSH IP
  449. IF <- 0
  450. TF <- 0
  451. MD <- 1
  452. MOV CS,0:[intnum*4+2]
  453. MOV IP,0:[intnum*4]
  454. Flags Affected: IF,TF,MD
  455. CPU mode: 8080 Emulation
  456. +++++++++++++++++++++++
  457. Physical Form: CALLN imm8
  458. COP (Code of Operation) : EDH EDH imm8
  459. Clocks:
  460. NEC V20/V30: 38-58
  461. ----------O-CLEAR1---------------------------------
  462. OPCODE CLEAR1 - Clear one bit
  463. CPU: NEC/Sony all V-series.
  464. Type of Instruction: User
  465. Instruction: CLEAR1 dest,bitnumb
  466. Description:
  467. BIT bitnumb OF dest <- 0;
  468. Flags Affected: None
  469. CPU mode: RM
  470. +++++++++++++++++++++++
  471. Physical Form: CLEAR1 reg/mem8,CL
  472. COP (Code of Operation) : 0FH 12H Postbyte
  473. Physical Form: CLEAR1 reg/mem8,imm8
  474. COP (Code of Operation) : 0FH 1AH Postbyte imm8
  475. Physical Form: CLEAR1 reg/mem16,CL
  476. COP (Code of Operation) : 0FH 13H Postbyte
  477. Physical Form: CLEAR1 reg/mem16,imm8
  478. COP (Code of Operation) : 0FH 1BH Postbyte imm8
  479. Clocks: CLEAR1
  480. r/m8,CL r/m8,i8 r/m16,CL r/m16,i8
  481. NEC V20: 5/14 6/15 5/14 6/15
  482. ----------O-CMOVcc---------------------------------
  483. OPCODE CMOVcc - Conditional Move
  484. CPU: P6
  485. Type of Instruction: User
  486. Instruction: CMOVcc dest,sorc
  487. Description:
  488. IF condition(cc) is true THEN dest <- sorc;
  489. Flags Affected: None
  490. CPU mode: RM,PM,VM,SMM
  491. +++++++++++++++++++++++
  492. Physical Form & COPs:
  493. CMOVO reg,reg/mem 0FH 40H Postbyte
  494. CMOVNO reg,reg/mem 0FH 41H Postbyte
  495. CMOVC reg,reg/mem 0FH 42H Postbyte
  496. CMOVNC reg,reg/mem 0FH 43H Postbyte
  497. CMOVZ reg,reg/mem 0FH 44H Postbyte
  498. CMOVNZ reg,reg/mem 0FH 45H Postbyte
  499. CMOVNA reg,reg/mem 0FH 46H Postbyte
  500. CMOVA reg,reg/mem 0FH 47H Postbyte
  501. CMOVS reg,reg/mem 0FH 48H Postbyte
  502. CMOVNS reg,reg/mem 0FH 49H Postbyte
  503. CMOVP reg,reg/mem 0FH 4AH Postbyte
  504. CMOVNP reg,reg/mem 0FH 4BH Postbyte
  505. CMOVL reg,reg/mem 0FH 4CH Postbyte
  506. CMOVNL reg,reg/mem 0FH 4DH Postbyte
  507. CMOVNG reg,reg/mem 0FH 4EH Postbyte
  508. CMOVG reg,reg/mem 0FH 4FH Postbyte
  509. Clocks: ~1 (~pairing with other instructions)
  510. ----------O-CMP4S----------------------------------
  511. OPCODE CMP4S - Compare for packed BCD strings
  512. CPU: NEC/Sony all V-series
  513. Type of Instruction: User
  514. Instruction: CMP4S
  515. Description:
  516. SetFlaGS( BCD STRING (ADDRESS=ES:DI,LENGTH=CL) -
  517. BCD STRING (ADDRESS=DS:SI,LENGTH=CL) );
  518. Note: si,di, other registers not changed
  519. Flags Affected: OF,CF,ZF
  520. ;; ZF set if RESULT of subtraction is zero.
  521. ;; CF,OF set as result of operation with most
  522. ;; signification BCDs.
  523. CPU mode: RM
  524. +++++++++++++++++++++++
  525. Physical Form: CMP4S
  526. COP (Code of Operation) : 0FH 26H
  527. Clocks: CMP4S
  528. NEC V20: ~7+19*CL
  529. ----------O-CMPXCHG8B------------------------------
  530. OPCODE CMPXCHG8B - Compare and exchange 8 bytes
  531. CPU: Pentium (tm), Pentium Pro(tm), AMD Am5k86
  532. Type of Instruction: Operation
  533. Instruction: CMPXCHG8B dest
  534. Note: dest is memory operand: QWORD PTR [memory]
  535. Description:
  536. IF ( QWORD(EDX:EAX) = dest) THEN
  537. {
  538. ZF <- 1;
  539. dest <- QWORD(ECX:EBX);
  540. }
  541. ELSE
  542. {
  543. ZF <- 0;
  544. EDX:EAX <- dest
  545. }
  546. END
  547. Flags Affected: ZF
  548. CPU mode: RM,PM,VM,SMM
  549. Physical Form: CMPXCHG8B mem64
  550. COP (Code of Operation) : 0FH C7H Postbyte
  551. Clocks: Pentium : 10
  552. Note: Postbyte MMRRRMMM: MM<>11 if (==) then INT 6
  553. ----------O-CMPXCHG--------------------------------
  554. OPCODE CMPXCHG - Compare and exchange
  555. CPU: i486+
  556. Type of Instruction: User
  557. Instruction: CMPXCHG dest,sorc
  558. Description:
  559. Acc = if OperationSize(8) -> AL
  560. OperationSize(16) -> AX
  561. OperationSize(32) -> EAX
  562. IF ( Acc = dest) THEN
  563. {
  564. ZF <- 1;
  565. dest <- sorc;
  566. }
  567. ELSE
  568. {
  569. ZF <- 0;
  570. Acc <- dest;
  571. }
  572. END
  573. Note: This instruction used to support semaphores
  574. Flags Affected: ZF ( see description)
  575. OF,SF,AF,PF,CF ( like CMP instruction ) ( see description)
  576. CPU mode: RM,PM,VM,SMM
  577. +++++++++++++++++++++++
  578. Physical Form: CMPXCHG r/m8,r8
  579. COP (Code of Operation) : 0FH A6H Postbyte ; i486 (A-B0 step)
  580. : 0FH B0H Postbyte ; i486 (B1+ step clones
  581. ; and upgrades)
  582. Clocks:
  583. Intel i486 : 6/7 if compare OK
  584. : 6/10 if compare FAIL
  585. Cyrix Cx486SLC : 5/7
  586. Pentium (tm) : 6
  587. Penalty if cache miss :
  588. Intel i486 : 2
  589. Cyrix Cx486SLC : 1
  590. +++++++++++++++++++++
  591. Physical Form: CMPXCHG r/m16,r16
  592. CMPXCHG r/m32,r32
  593. COP (Code of Operation) : 0FH A7H Postbyte ; i486 (A-B0 step)
  594. : 0FH B1H Postbyte ; i486 (B1+ step clones
  595. ; and upgrades)
  596. Clocks:
  597. Intel i486 : 6/7 if compare OK
  598. : 6/10 if compare FAIL
  599. Cyrix Cx486SLC : 5/7
  600. Pentium (tm) : 6
  601. Penalty if cache miss :
  602. Intel i486 : 2
  603. Cyrix Cx486SLC : 1
  604. ----------O-CPUID----------------------------------
  605. OPCODE CPUID - CPU Identification
  606. CPU: Intel 486DX/SX/DX2 SL Enhanced and all later
  607. Intel processors include ( IntelDX4, IntelSX2,
  608. Pentium etc.), UMC microprocessors: U5S,U5SD,U5S-VL.
  609. Cyrix M1, AMD K5, Intel P6, and AMD Ehnanced Am486 CPU,
  610. such as A80486DX4-100SV8B.
  611. Note: i.e. 1993+ years processors produced by Intel
  612. Note: To know if your CPU support CPUID instruction
  613. try to set ID flag ( bit 21 of EFLAGS ) to 1, and
  614. if it sets this mean that CPUID support.(Soft).
  615. Or If Your CPU is Intel Look for '&E' signature on
  616. Top side of Chip.(Hard)
  617. Type of Instruction: Operation
  618. Instruction: CPUID
  619. Description:
  620. IF (EAX=0) THEN // All
  621. {
  622. EAX <- Maximum value of EAX to CALL CPUID instruction
  623. 1 for all processors (date 1 September 1994)
  624. may be >1 in future microprocessors
  625. ;; EBX,EDX and ECX contain a OEM name string
  626. ;; for Intel this string is 'GenuineIntel'
  627. EBX <- 756E6547H i.e. 'Genu'
  628. EDX <- 49656E69H i.e. 'ineI'
  629. ECX <- 6C65746EH i.e. 'ntel'
  630. ;; for UMC this string is 'UMC UMC UMC '
  631. EBX <- 20434D55H i.e. 'UMC '
  632. EDX <- 20434D55H i.e. 'UMC '
  633. ECX <- 20434D55H i.e. 'UMC '
  634. ;; for Cyrix this string is 'CyrixInstead' (Cx6x86,Cx5x86 steps B+)
  635. ;; for AMD this string is 'AuthenticAMD' (K6,K5,486 Enhanced CPUs)
  636. ;; for last NexGen is 'NexGenDriven' (Nx5x86 latest models)
  637. ;; for Centaur Technology is 'CentaurHauls' (IDT)
  638. }
  639. ELSEIF (EAX=1) THEN // All
  640. {
  641. EAX[3:0] <- Stepping ID
  642. EAX[7:4] <- Model
  643. EAX[11:8] <- Family
  644. ; 3 - 386 family
  645. ; 4 - i486 family
  646. ; 5 - Pentium family
  647. ; 6 - Pentium Pro family
  648. EAX[15:12] <- Reserved
  649. ; 0 - Original OEM processor
  650. ; 1 - OverDrive
  651. ; 2 - Dual Processor
  652. Note: Pentium P54C have pin CPUTYPE which
  653. define is this CPU First or Second e.t.c
  654. in System.
  655. So, if this chip set in "First" socket it
  656. return for example 0425h, but THIS chip
  657. return 2425h if we insert it in "Second"
  658. socket.
  659. Note: Refer to Appendix B for more information.
  660. EAX[31:16] <- Reserved and set to 0s now
  661. EDX <- Compability flags
  662. ;; below all info if bit flag =1
  663. EDX[0] <- FPU: FPU on Chip
  664. EDX[1] <- VME: Virtual Mode Extention present
  665. EDX[2] <- DE: Debbuging Extentions
  666. EDX[3] <- PSE: CPU support 4MB size pages
  667. EDX[4] <- TSC: TSC present (See RDTSC command)
  668. EDX[5] <- MSR: CPU have Pentium Compatible MSRs
  669. EDX[6] <- PAE: Physical Address Extension (Intel)
  670. EDX[6] <- PTE: Support PTE (Cyrix)
  671. When set in PTE TLB will not be flushed
  672. when CR3 is written.
  673. EDX[7] <- MCE: Machine Check exception
  674. EDX[8] <- CX8: Support CMPXCHG8B instruction
  675. EDX[9] <- APIC: Local APIC on Chip (Intel)
  676. PGE: Page Global Extension (K5)
  677. EDX[10]<- reserved
  678. EDX[11]<- SEP: Fast System Call feature (Pentium Pro)
  679. EDX[12]<- MTRR: CPU support Memory Type Range Register (MTRR)
  680. EDX[13]<- PGE: Page Global Feature support
  681. EDX[14]<- MCA: Machine Check Architecture
  682. EDX[15]<- CMOV: CPU support CMOV instruction
  683. EDX[16]<- PAT: Page Attribute Table
  684. EDX[22..16] <- Reserved
  685. EDX[23] <- MMX: CPU support IA MMX
  686. EDX[24] <- FXSR: CPU Support Fast Save/Restore (IA MMX-2)
  687. EDX[31:25] <- Reserved and set to 0s now
  688. }
  689. ELSEIF (EAX=2)
  690. {
  691. AL = 1 (Pentium Pro, Pentium II)
  692. remainder of EAX and EBX,ECX,EDX contain bytes which
  693. described cache architecture on this chip.
  694. Description of this bytes is:
  695. Value Description
  696. 00h None
  697. 01h Instruction TLB, 4K page, 4way, 64 entry
  698. 02h Instruction TLB, 4M page, 4way, 4 entry
  699. 03h Data TLB, 4K page, 4way, 64 entry
  700. 04h Data TLB, 4M page, 4way, 8 entry
  701. 06h Instruction Cache, 8K, 4 way, 32 byte per line
  702. 0Ah Data cache, 8K, 2 way, 32 byte per line
  703. 41h Unifed L2 cache, 32 byte per line, 4 way, 128KB
  704. 42h Unifed L2 cache, 32 byte per line, 4 way, 256KB
  705. 43h Unifed L2 cache, 32 byte per line, 4 way, 512KB
  706. 44h Unifed L2 cache, 32 byte per line, 4 way, 1MB
  707. 45h Unifed L2 cache, 32 byte per line, 4 way, 2MB
  708. (Cyrix MediaGX MMX Enhanced)
  709. 70h TLB 32-bit entry, 4 way, 4K cache
  710. 80h L1 cache 4-way associative, 16byte/line
  711. }
  712. ELSEIF (EAX = 80000000h) // (K5 not SSA/5),K6, Cyrix GXm
  713. {
  714. EBX,ECX,EDX <- Undefined
  715. EAX <- Largest Extended function value recognized by CPUID.
  716. (Note: Extended CPUID functions started with 80000000h)
  717. (Example: For AMD 5k86 (K5) = 80000005h )
  718. }
  719. ELSEIF (EAX = 80000001h) // K5,K6,Cyrix GXm
  720. {
  721. EAX <- AMD Processor Signature
  722. 0000051Xh - for AMD 5k86 (K5 not SSA/5)
  723. 0000066Xh - for AMD 6k86 (K6)
  724. EBX,ECX <- Undefined
  725. EDX <- Extended Feature Flags
  726. EDX[0] <- FPU: FPU on Chip
  727. EDX[1] <- VME: Virtual Mode Extention present
  728. EDX[2] <- DE: Debbuging Extentions
  729. EDX[3] <- PSE: CPU support 4MB size pages
  730. EDX[4] <- TSC: TSC present (See RDTSC command)
  731. EDX[5] <- MSR: CPU have K5 Compatible MSRs
  732. EDX[6] <- 0 (Reserved)
  733. EDX[7] <- MCE: Machine Check exception
  734. EDX[8] <- CX8: Support CMPXCHG8B instruction
  735. EDX[9] <- Reserved
  736. EDX[10]<- Support SYSCALL and SYSRET instruction (!!!)
  737. EDX[11,12]<- reserved
  738. EDX[13]<- PGE: Page Global Feature support
  739. EDX[14]<- reserved
  740. EDX[15]<- CMOV: CPU support CMOV instruction
  741. EDX[16]<- FCMOV: CPU support FP. FCMOV (!!!)
  742. EDX[22..16] <- Reserved
  743. EDX[23] <- MMX: CPU support IA MMX
  744. EDX[24] <- (Cyrix) Cyrix Extended MMX
  745. EDX[30..24] <- Reserved
  746. EDX[31] <- AMD 3D support
  747. ;Note: For AMD K5 = 000021BFh
  748. For AMD K6 = 008005BFh
  749. }
  750. ELSEIF (EAX = 80000002h,80000003h,80000004h) // AMD K5,K6, Cyrix GXm
  751. {
  752. EAX, EBX, ECX ,EDX = CPU Name
  753. // Note: for AMD K5 (Don't forget x86 is BIG-Endian!!)
  754. // CPUID(EAX) EAX EBX ECX EDX
  755. // 80000002h 2D444D41 7428354B 5020296D 65636F72
  756. // AMD- K5(r m) P roce
  757. // 80000003h 726F7373 00000000 00000000 00000000
  758. // ssor
  759. // 80000004h 00000000 00000000 00000000 00000000
  760. }
  761. ELSEIF (EAX = 80000005h) // AMD K5,K6
  762. { // TLB and Cache information
  763. EAX <- Reserved
  764. EBX <- TLB Information:
  765. EBX[31..24] <- Data TLB: Associativity
  766. (if Full assocuiativity = FFh)
  767. EBX[23..16] <- Data TLB: Number of Entryes
  768. EBX[15..8] <- Instruction TLB: Associativity
  769. (if Full assocuiativity = FFh)
  770. EBX[7..0] <- Instruction TLB: Number of Entryes
  771. ECX <- L1 Data Cache Information
  772. ECX[31..24] <- Size in KB
  773. ECX[23..16] <- Associativity (if full = FFh)
  774. ECX[15..8] <- Lines per Tag
  775. ECX[7..0] <- Line size in Bytes
  776. EDX <- L1 Instruction Cache Information
  777. ECX[31..24] <- Size in KB
  778. ECX[23..16] <- Associativity (if full = FFh)
  779. ECX[15..8] <- Lines per Tag
  780. ECX[7..0] <- Line size in Bytes
  781. // Note: after execution CPUID with EAX = 80000005h
  782. // reg AMD K5 AMD K6
  783. // EBX 04800000 02800140
  784. // ECX 08040120 20020220
  785. // EDX 10040120 20020220
  786. }
  787. ELSE THEN
  788. {
  789. EAX,EBX,ECX,EDX <- Undefined
  790. }
  791. END.
  792. Refer to: Appendix B for more informations about CPU codes.
  793. Note: On IDT C6 CPU we may set any Identification string and family/model/
  794. stepping info. (See MSRs 108h,109h for More Details).
  795. Here is 3 examples of Information we can may get from CPUID instruction:
  796. 1) UMC U5S
  797. Note: All UMC Chips: U5S,U5SD, 3V chips never have FPU on-chip,
  798. and never support VME
  799. Maximum Available of CPUID info entrys:1
  800. Vendor string is : "UMC UMC UMC "
  801. Model Info :
  802. Stepping ID is : 3
  803. Model : 2
  804. Family : 4
  805. M field : 0
  806. Compability Flags:
  807. FPU on Chip :-
  808. Virtual Mode Extensions present :-
  809. CPU support I/O breakpoints :-
  810. CPU support 4MB pages :-
  811. Time Stamp Counter Presents :-
  812. CPU have Pentium compatible MSRs :-
  813. Machine Check Exception Presents :-
  814. CMPXCHG8B instruction support :-
  815. APIC on Chip :-
  816. 2) Intel 486
  817. Note: All SL Enhanced 486: { i486SX,i486DX,i486DX2 marked '&E' on chip
  818. surface }, IntelSX2,IntelDX4 support VME !!!!
  819. But: Sxs never have FPU on chip.
  820. Maximum Available of CPUID info entrys:1
  821. Vendor string is : "GenuineIntel"
  822. Model Info :
  823. Stepping ID is : 0
  824. Model : 8
  825. Family : 4
  826. M field : 0
  827. Compability Flags:
  828. FPU on Chip :+
  829. Virtual Mode Extensions present :+
  830. CPU support I/O breakpoints :-
  831. CPU support 4MB pages :-
  832. Time Stamp Counter Presents :-
  833. CPU have Pentium compatible MSRs :-
  834. Machine Check Exception Presents :-
  835. CMPXCHG8B instruction support :-
  836. APIC on Chip :-
  837. 3) Pentium
  838. Note: P54C may say that build-in APIC not present if it
  839. not supported by external hardware !!!!! (This data from
  840. P54C in single processor configuration)
  841. Maximum Available of CPUID info entrys:1
  842. Vendor string is : "GenuineIntel"
  843. Model Info :
  844. Stepping ID is : 1
  845. Model : 2
  846. Family : 5
  847. M field : 0
  848. Compability Flags:
  849. FPU on Chip :+
  850. Virtual Mode Extensions present :+
  851. CPU support I/O breakpoints :+
  852. CPU support 4MB pages :+
  853. Time Stamp Counter Presents :+
  854. CPU have Pentium compatible MSRs :+
  855. Machine Check Exception Presents :+
  856. CMPXCHG8B instruction support :+
  857. APIC on Chip :-
  858. 4) Pentium OverDrive
  859. Note: P24T never have Machine Check Exception
  860. Maximum Available of CPUID info entrys:1
  861. Vendor string is : "GenuineIntel"
  862. Model Info :
  863. Stepping ID is : 1
  864. Model : 3
  865. Family : 5
  866. M field : 1
  867. Compability Flags:
  868. FPU on Chip :+
  869. Virtual Mode Extensions present :+
  870. CPU support I/O breakpoints :+
  871. CPU support 4MB pages :+
  872. Time Stamp Counter Presents :+
  873. CPU have Pentium compatible MSRs :+
  874. Machine Check Exception Presents :-
  875. CMPXCHG8B instruction support :+
  876. APIC on Chip :-
  877. 5) AMD Am5x86 (also AMD Enhanced 486).
  878. Maximum Available of CPUID info entrys:1
  879. Vendor string is : "AuthenticAMD"
  880. Model Info :
  881. Stepping ID is : 4
  882. Model : 15
  883. Family : 4
  884. M field : 0
  885. Compability Flags:
  886. FPU on Chip :+
  887. Virtual Mode Extensions present :-
  888. CPU support I/O breakpoints :-
  889. CPU support 4MB pages :-
  890. Time Stamp Counter Presents :-
  891. CPU have Pentium compatible MSRs :-
  892. P6 Flag: n/a :-
  893. Machine Check Exception Presents :-
  894. CMPXCHG8B instruction support :-
  895. 6) Pentium Pro (P6)
  896. Maximum Available of CPUID info entrys:2 <<-------------- !!!!
  897. Vendor string is : "GenuineIntel"
  898. Model Info :
  899. Stepping ID is : 1
  900. Model : 1
  901. Family : 6
  902. M field : 0
  903. Compability Flags:
  904. FPU on Chip :+
  905. Virtual Mode Extensions present :+
  906. CPU support I/O breakpoints :+
  907. CPU support 4MB pages :+
  908. Time Stamp Counter Presents :+
  909. CPU have Pentium compatible MSRs :+
  910. P6 Flag: n/a :+
  911. Machine Check Exception Presents :+
  912. CMPXCHG8B instruction support :+
  913. APIC on Chip :+
  914. Reserved :- ; bit 10
  915. Fast System Call feature :+
  916. Memory Type Range Regs. support :+
  917. Page Global Feature support :+
  918. Machine Check Architecture :+
  919. CMOVxx instructions support :+
  920. IA MMX support :+
  921. 7)
  922. Maximum Available of CPUID info entrys:1
  923. Vendor string is : "CyrixInstead"
  924. Compability Flags:
  925. FPU on Chip :+
  926. Virtual Mode Extensions present :-
  927. CPU support I/O breakpoints :+
  928. CPU support 4MB pages :-
  929. Time Stamp Counter Presents :+
  930. CPU have Pentium compatible MSRs :+
  931. P6 Flag: n/a :+
  932. Machine Check Exception Presents :-
  933. CMPXCHG8B instruction support :+
  934. APIC on Chip :-
  935. Reserved :-
  936. Reserved :-
  937. Memory Type Range Regs. support :-
  938. Page Global Feature support :+
  939. Machine Check Architecture :-
  940. CMOVxx instructions support :+
  941. IA MMX support :+
  942. Note: Some Last NexGen Nx586 support CPUID instruction, but never support ID
  943. flag in EFALGS, so check it with #UD hook.
  944. Note: On Cyrix CPUs need to Enable CPUID instruction, setting CPUIDEN bit
  945. in CCR4.
  946. Note: Cyrix Cx6x86 return on CPUID(1) in EAX next data:
  947. YYYYXXMMh - where
  948. YYYY - normally 0s.
  949. XX - value of control register 0FCh
  950. (usually 05h, may be changed to any
  951. other value by user).
  952. MM - Model Unical Revision (according to DIR0)
  953. Note: Cyrix 486s never support CPUID.
  954. Flags Affected: None
  955. CPU mode: RM,PM,VM,SMM
  956. Physical Form: CPUID
  957. COP (Code of Operation): 0FH A2H
  958. Clocks: 486s & Pentium (EAX=1) : 14
  959. 486s & Pentium (EAX=0 or EAX>1) : 9
  960. ----------O-EMMS-----------------------------------
  961. OPCODE EMMS - Empty MMX State
  962. CPU: all which supported IA MMX:
  963. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  964. Type of Instruction: User
  965. Instruction: EMMS
  966. Description:
  967. FloatPointTagWord <- FFFFh
  968. Note: The EMMS instruction sets the values of the floating-point (FP) tag
  969. word to empty (all ones). EMMS marks the registers as available, so
  970. they can subsequently be used by floating-point instructions.
  971. If a floating-point instruction loads into one of the registers
  972. before it has been reset by the EMMS instruction, a floating-point
  973. stack overflow can occur, which results in a FP exception or incorrect
  974. result. All other MMX instructions validate the entire FP tag word (all
  975. zeros).
  976. This instruction must be used to dear the MMX state at the end of all
  977. MMX routines, and before calling other routines that may execute
  978. floating-point instructions.
  979. Flags affected: None
  980. Exceptions:
  981. RM PM VM SMM Description
  982. #UD #UD #UD #UD If CR0.EM = 1
  983. #NM #NM #NM #NM If CR0.TS = 1
  984. #MF #MF #MF #MF If pending FPU Exception
  985. ++++++++++++++++++++++++++++++++++++++
  986. COP & Times:
  987. EMMS 0FH 77H
  988. P55C: n/a
  989. future P6: n/a
  990. ----------O-ESC------------------------------------
  991. OPCODE ESC - Escape Extrnal Cooprocessors
  992. CPU: 8086...80386, any Hybrid 486.
  993. Type of Instruction: User
  994. Instruction: ESC Number,R/M
  995. Description: This Instruction uses for Link with External Coprocessors
  996. Such as NPX. External Coprocessors look at command sequence
  997. at get ESC. CPU give Memory Operand sending to A-bus EA
  998. doing pseudo-read operation.
  999. { If 2nd Operand is Register then Do Nothing,
  1000. If 2nd Operand is Memory then set EA (Effective Address)
  1001. in Address Bus }
  1002. First operand is Part of Command that Ext. coprocessors get.
  1003. Flags Affected: None
  1004. Example: ESC 0Fh,DX means FSQRT
  1005. Note: ESC mnemonic was used for 8086 CPU, later all were used alternative
  1006. mnemonic for cooprocessor instructions, such as FSQRT.
  1007. CPU mode: RM,PM,VM,SMM
  1008. +++++++++++++++++++++++
  1009. Physical Form:
  1010. COP (Code of Operation) : <1101 1xxx> Postbyte
  1011. Clocks: ESC n,Reg ESC n,Mem8/Mem16
  1012. 8088: 2 8/12+EA
  1013. 286: 9-20 9-20
  1014. 386: N/A N/A
  1015. 486: N/A N/A
  1016. ----------O-EXT------------------------------------
  1017. OPCODE EXT - Extract Bit Field
  1018. CPU: NEC/Sony all V-series
  1019. Type of Instruction: User
  1020. Instruction: EXT start,len
  1021. Description:
  1022. AX <- BitField [
  1023. BASE = DS:SI
  1024. START BIT OFFSET = start
  1025. LENGTH = len
  1026. ];
  1027. Note: si and start automatically UPDATE
  1028. Flags Affected: None
  1029. CPU mode: RM
  1030. +++++++++++++++++++++++
  1031. Physical Form : EXT reg8,reg8
  1032. COP (Code of Operation) : 0FH 33H PostByte
  1033. Clocks: EXT reg8,reg8
  1034. NEC V20: 26-55
  1035. ----------O-F4X4-----------------------------------
  1036. OPCODE F4X4 - FPU: Multiplicate vector on Matrix 4x4
  1037. FPU: IIT FPUs.
  1038. Type of Instruction: FPU instruction
  1039. Instruction: F4X4
  1040. Description:
  1041. ; This Instruction Multiplicate vector on
  1042. ; Matrix 4X4
  1043. _ _ _ _ _ _
  1044. | | | | | |
  1045. | Xn | | A00 A01 A02 A03 | | X0 |
  1046. | Yn | = | A10 A11 A12 A13 | X | Y0 |
  1047. | Zn | | A20 A21 A22 A23 | | Z0 |
  1048. | Wn | | A30 A31 A31 A33 | | W0 |
  1049. |_ _| |_ _| |_ _|
  1050. ; Data fetches/stores from/to FPU registers:
  1051. # of F E T C H E S STORE
  1052. Register Bank0 Bank1 Bank2 Bank0
  1053. ST X0 A33 A31 Xn
  1054. ST(1) Y0 A23 A21 Yn
  1055. ST(2) Z0 A13 A11 Zn
  1056. ST(3) W0 A03 A01 Wn
  1057. ST(4) A32 A30
  1058. ST(5) A22 A20
  1059. ST(6) A12 A10
  1060. ST(7) A02 A00
  1061. Note: See FSBP0,FSBP1,FSBP2 for more information
  1062. FPU Flags Affected: S
  1063. FPU mode: Any
  1064. Physical Form: F4X4
  1065. COP (Code of Operation): DBH F1H
  1066. Clocks: IIT 2c87 : 242
  1067. IIT 3c87 : 242
  1068. IIT 3c87SX : 242
  1069. ----------O-FCMOVcc--------------------------------
  1070. OPCODE FCMOVcc - Floating Point Conditional Move
  1071. CPU: P6
  1072. Type of Instruction: User
  1073. Instruction: FCMOVcc dest,sorc
  1074. Description:
  1075. IF condition(cc) is true THEN dest <- sorc;
  1076. Flags Affected: Int: None
  1077. Fp : None
  1078. Note: Testing Integer flags:
  1079. cc Meaning Test Flags Description
  1080. B Below CF=1 <
  1081. NB Not Below CF=0 >=
  1082. E Equal ZF=1 =
  1083. NE Not Equal ZF=0 !=
  1084. BE Below Equal (CF=1 .OR. ZF=1) <=
  1085. NBE Not BelowEqual (CF=0 .AND. ZF=0) >
  1086. U Unordered PF=1
  1087. NU Not Unordered PF!=1
  1088. CPU mode: RM,PM,VM,SMM
  1089. +++++++++++++++++++++++
  1090. Physical Form & COPs:
  1091. FCMOVB ST,STi DA C0+i
  1092. FCMOVE ST,STi DA C8+i
  1093. FCMOVBE ST,STi DA D0+i
  1094. FCMOVU ST,STi DA D8+i
  1095. FCMOVNB ST,STi DB C0+i
  1096. FCMOVNE ST,STi DB C8+i
  1097. FCMOVNBE ST,STi DB D0+i
  1098. FCMOVNU ST,STi DB D8+i
  1099. Clocks: N/A
  1100. ----------O-FCOMI----------------------------------
  1101. OPCODE FCOMI - Floating Point Compare setting Integer Flags
  1102. CPU: P6
  1103. Type of Instruction: User
  1104. Instruction: FuCOMIp ST0,STi
  1105. Description:
  1106. CASE ( result (compare(ST0,STi) ) OF
  1107. { ; ZF PF CF
  1108. Not Comparable: 1 1 1
  1109. ST0 > STi : 0 0 0
  1110. ST0 < STi : 0 0 1
  1111. ST0 = STi : 1 0 0
  1112. }
  1113. CASE ( FP_stack_status ) OF
  1114. { ; SF
  1115. Overflow : 1
  1116. Underflow : 0
  1117. Otherwize : 0
  1118. }
  1119. CASE ( instruction ) OF
  1120. {
  1121. FCOMI,FUCOMI : No FP stack adjustment;
  1122. FCOMIP,FUCOMIP : POP ST;
  1123. }
  1124. Flags Affected: Int: CF,ZF,PF,SF
  1125. Fp : None
  1126. Note: In any case Sign of zero Ignored , so +0.0 = -0.0
  1127. CPU mode: RM,PM,VM,SMM
  1128. +++++++++++++++++++++++
  1129. Physical Form & COPs:
  1130. FCOMI ST0,STi DB F0+i
  1131. FCOMIP ST0,STi DF F0+i
  1132. FUCOMI ST0,STi DB E8+i
  1133. FUCOMIP ST0,STi DF E8+i
  1134. Clocks: N/A
  1135. ----------O-FEMMS------------------------------
  1136. OPCODE FEMMS - Faster Enter/Exit of MMX of F.P. state
  1137. CPU: AMD-3D
  1138. Type of Instruction: User
  1139. Instruction: FEMMS (no operands)
  1140. Description:
  1141. Clear MMX state after MMX instructions.
  1142. (FPU.TAG <- FFFFh).
  1143. Faster version of EMMS.
  1144. Flags Affected: None
  1145. ++++++++++++++++++++++++++++++++++
  1146. COP & Times:
  1147. FEMMS 0FH 0EH
  1148. ----------O-FINT-----------------------------------
  1149. OPCODE FINT - Finished Interrupt
  1150. CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  1151. Type of Instruction: System
  1152. Instruction: FINT
  1153. Description:
  1154. Inticate to Internal Interrupt controller that
  1155. interrupt service Routine is completed. (EOI)
  1156. Flags Affected: None
  1157. CPU mode: RM
  1158. +++++++++++++++++++++++
  1159. Physical Form: FINT
  1160. COP (Code of Operation) : 0Fh 92h
  1161. Clocks: 2
  1162. ----------O-FNDISI---------------------------------
  1163. OPCODE FNDISI - Disable NPX Interrupt
  1164. FPU: i8087 only
  1165. Type of Instruction: FPU instruction
  1166. Instruction: FNDISI
  1167. Description:
  1168. CW.IEM <- 1; // Enable NPX interrupt
  1169. Note: IEM is 7 of FPU.CW
  1170. FPU Flags Affected: None
  1171. CPU mode: 8087 support just real mode
  1172. Physical Form: FNDISI
  1173. COP (Code of Operation): DBH E1H
  1174. Clocks: i8087 5
  1175. ----------O-FNENI----------------------------------
  1176. OPCODE FNENI - Enable NPX Interrupt
  1177. FPU: i8087 only
  1178. Type of Instruction: FPU instruction
  1179. Instruction: FNENI
  1180. Description:
  1181. CW.IEM <- 0; // Enable NPX interrupt
  1182. Note: IEM is 7 of FPU.CW
  1183. FPU Flags Affected: None
  1184. CPU mode: 8087 support just real mode
  1185. Physical Form: FNENI
  1186. COP (Code of Operation): DBH E0H
  1187. Clocks: i8087 5
  1188. ----------O-FNSTDW---------------------------------
  1189. OPCODE FNSTDW - FPU Not wait Store Device Word register
  1190. FPU: i387SL Mobile
  1191. Type of Instruction: FPU instruction
  1192. Instruction: FNSTDW dest
  1193. Description:
  1194. dest <- Device Word
  1195. Format of Device word:
  1196. bit(s) Description (Table )
  1197. 0-7 Reserved
  1198. 8 S - Status bit:
  1199. if S=1 then FP device is a static design and OS
  1200. or APM Bios may set CLK slow to 0 Mhz without
  1201. lost any data.
  1202. 9-15 Reserved
  1203. Note: Device word register valid only after FNINIT
  1204. FPU Flags Affected: None
  1205. CPU mode: Any
  1206. Physical Form: FNSTDW AX
  1207. COP (Code of Operation): DFH E1H
  1208. Clocks: i387SL Mobile: 13
  1209. ----------O-FNSTSG---------------------------------
  1210. OPCODE FNSTSG - FPU Not wait Store Signature Word register
  1211. FPU: i387SL Mobile
  1212. Type of Instruction: FPU instruction
  1213. Instruction: FNSTSG dest
  1214. Description:
  1215. dest <- Signature Word
  1216. Format of Signature word:
  1217. bit(s) Description (Table )
  1218. 3-0 Revision
  1219. 7-4 Steppin
  1220. 11-8 Family
  1221. 15-12 Version
  1222. Note:
  1223. For i387(tm) SL Mobile Signature is:
  1224. Version = 2
  1225. Family = 3 ; 387
  1226. Stepping = 1 ; Ax step
  1227. Revision = 0 ; x0 step
  1228. i.e i387(tm) SL is A0 step
  1229. Note: This FPU is out of life
  1230. Note: Signature word register valid only after FNINIT
  1231. FPU Flags Affected: None
  1232. CPU mode: Any
  1233. Physical Form: FNSTSG AX
  1234. COP (Code of Operation): DFH E2H
  1235. Clocks: i387SL Mobile: 13
  1236. ----------O-FPO2-----------------------------------
  1237. OPCODE FPO2 - Floating Point Operations 2nd Way
  1238. CPU: NEC/Sony all V-series
  1239. Type of Instruction: User
  1240. Instruction: FPO2 fp_op,mem
  1241. Description:
  1242. This instruction was building for sending FP commands to
  1243. NEC NPX which never be realized
  1244. Flags Affected: None
  1245. CPU mode: RM
  1246. +++++++++++++++++++++++
  1247. Physical Form : FPO2 imm4,reg/mem
  1248. COP (Code of Operation) :
  1249. If imm4 in range 0-7 then
  1250. 66H mmFFFMMM there FFF is imm4.
  1251. If imm4 in range 7-F then
  1252. 67H mmFFFMMM there FFF is imm4.
  1253. Clocks: FPO2 imm4,reg/mem
  1254. NEC V20: 2/11
  1255. ----------O-FRICHOP--------------------------------
  1256. OPCODE FRICHOP - FPU: Round to Integer chop method
  1257. FPU: Cyrix FPUs and 486s with FPU on chip
  1258. Type of Instruction: FPU instruction
  1259. Instruction: FRICHOP
  1260. Description:
  1261. ST <- ROUND ( ST,CHOP )
  1262. Note:
  1263. This instruction calculate rounding ST toward zero
  1264. i.e. ignoring part righter that decimal .
  1265. Examples:
  1266. 1.2 -> 1.0
  1267. -1.2 -> -1.0
  1268. 3.0 -> 3.0
  1269. 0.0 -> 0.0
  1270. 1.5 -> 1.0
  1271. -2.0 -> -2.0
  1272. FPU Flags Affected: S,P,D,I,C1
  1273. FPU mode: Any
  1274. Physical Form: FRICHOP
  1275. COP (Code of Operation): DDH FCH
  1276. Clocks: Cx83D87 : 15
  1277. Cx83S87 : 15
  1278. CxEMC87 : 15
  1279. Cx487DLC :
  1280. ----------O-FRINEAR--------------------------------
  1281. OPCODE FRINEAR - FPU: Round to Integer Nearest method
  1282. FPU: Cyrix FPUs and 486s with FPU on chip
  1283. Type of Instruction: FPU instruction
  1284. Instruction: FRINEAR
  1285. Description:
  1286. ST <- ROUND ( ST,NEAREST )
  1287. Note:
  1288. This instruction calculate rounding ST toward nearest
  1289. Examples:
  1290. 1.2 -> 1.0
  1291. -1.2 -> -1.0
  1292. 3.0 -> 3.0
  1293. 0.0 -> 0.0
  1294. 1.5 -> 1.0
  1295. 1.8 -> 2.0
  1296. -2.0 -> -2.0
  1297. FPU Flags Affected: S,P,D,I,C1
  1298. FPU mode: Any
  1299. Physical Form: FRINEAR
  1300. COP (Code of Operation): DFH FCH
  1301. Clocks: Cx83D87 : 15
  1302. Cx83S87 : 15
  1303. CxEMC87 : 15
  1304. Cx487DLC :
  1305. ----------O-FRINT2---------------------------------
  1306. OPCODE FRINT2 - FPU: Round to Integer
  1307. FPU: Cyrix FPUs and 486s with FPU on chip
  1308. Type of Instruction: FPU instruction
  1309. Instruction: FRINT2
  1310. Description:
  1311. IF ( exact half ) THEN
  1312. {
  1313. ST <- SIGN(ST) * ROUND(ABS(ST)+0.5,NEAREST)
  1314. }
  1315. ELSE
  1316. {
  1317. ST <- ROUND ( ST,NEAREST )
  1318. }
  1319. END
  1320. Note:
  1321. This instruction calculate rounding ST toward nearest,
  1322. but if number is exact half then this instruction round
  1323. it toward signed infinity. Sign of this infinity is same
  1324. with sign of number.
  1325. Examples:
  1326. 1.2 -> 1.0
  1327. -1.2 -> -1.0
  1328. 3.0 -> 3.0
  1329. 0.0 -> 0.0
  1330. 1.5 -> 2.0
  1331. 1.8 -> 2.0
  1332. -2.0 -> -2.0
  1333. -1.5 -> -2.0
  1334. FPU Flags Affected: S,P,D,I,C1
  1335. FPU mode: Any
  1336. Physical Form: FRINT2
  1337. COP (Code of Operation): DBH FCH
  1338. Clocks: Cx83D87 : 15
  1339. Cx83S87 : 15
  1340. CxEMC87 : 15
  1341. Cx487DLC :
  1342. ----------O-FRSTPM---------------------------------
  1343. OPCODE FRSTPM - FPU Reset Protected Mode
  1344. FPU: i287XL i287XLT
  1345. Type of Instruction: FPU instruction
  1346. Instruction: FRSTPM
  1347. Description:
  1348. Reset Cooprocessor from Protected Mode
  1349. to Real Address mode.
  1350. FPU Flags Affected: None
  1351. CPU mode:Any ???
  1352. Physical Form: FRSTPM
  1353. COP (Code of Operation): DBH E5H
  1354. Clocks: i287XL : 12
  1355. i287XLT : 12
  1356. ----------O-FSBP0----------------------------------
  1357. OPCODE FSBP0 - FPU: Set Bank pointer to Bank # 0
  1358. FPU: IIT FPUs.
  1359. Type of Instruction: FPU instruction
  1360. Instruction: FSBP0
  1361. Description:
  1362. ; This Instruction set current bank pointer to
  1363. ; Bank # 0.
  1364. ; Each bank contain eight 80bit registers
  1365. ; There are 3 banks (0,1,2) in Chip
  1366. ; After initialization FPU select bank # 0.
  1367. FPU Flags Affected: None
  1368. FPU mode: Any
  1369. Physical Form: FSBP0
  1370. COP (Code of Operation): DBH E8H
  1371. Clocks: IIT 2c87 : 6
  1372. IIT 3c87 : 6
  1373. IIT 3c87SX : 6
  1374. ----------O-FSBP1----------------------------------
  1375. OPCODE FSBP1 - FPU: Set Bank pointer to Bank # 1
  1376. FPU: IIT FPUs.
  1377. Type of Instruction: FPU instruction
  1378. Instruction: FSBP1
  1379. Description:
  1380. ; This Instruction set current bank pointer to
  1381. ; Bank # 1.
  1382. ; Each bank contain eight 80bit registers
  1383. ; There are 3 banks (0,1,2) in Chip
  1384. ; After initialization FPU select bank # 0.
  1385. FPU Flags Affected: None
  1386. FPU mode: Any
  1387. Physical Form: FSBP1
  1388. COP (Code of Operation): DBH EBH
  1389. Clocks: IIT 2c87 : 6
  1390. IIT 3c87 : 6
  1391. IIT 3c87SX : 6
  1392. ----------O-FSBP2----------------------------------
  1393. OPCODE FSBP2 - FPU: Set Bank pointer to Bank # 2
  1394. FPU: IIT FPUs.
  1395. Type of Instruction: FPU instruction
  1396. Instruction: FSBP2
  1397. Description:
  1398. ; This Instruction set current bank pointer to
  1399. ; Bank # 2.
  1400. ; Each bank contain eight 80bit registers
  1401. ; There are 3 banks (0,1,2) in Chip
  1402. ; After initialization FPU select bank # 0.
  1403. FPU Flags Affected: None
  1404. FPU mode: Any
  1405. Physical Form: FSBP2
  1406. COP (Code of Operation): DBH EAH
  1407. Clocks: IIT 2c87 : 6
  1408. IIT 3c87 : 6
  1409. IIT 3c87SX : 6
  1410. ----------O-FSETPM---------------------------------
  1411. OPCODE FSETPM - FPU Set Protected Mode Adressing
  1412. FPU: 80287, i287XL i287XLT
  1413. Type of Instruction: FPU instruction
  1414. Instruction: FRSTPM
  1415. Description:
  1416. Setup Coprocessor for addressing in Protected mode
  1417. FPU Flags Affected: None
  1418. CPU mode:Any ???
  1419. Physical Form: FSETPM
  1420. COP (Code of Operation): DBH E4H
  1421. Clocks: i287XL : 12
  1422. i287XLT : 12
  1423. ----------O-FXRSTOR--------------------------------
  1424. OPCODE FXRSTOR - Fast Restore F.P. Context
  1425. CPU: Katmai/Deschutes (IA MMX-2)
  1426. Type of Instruction: User
  1427. Instruction: FXRSTOR src
  1428. Description:
  1429. Fast Restore 94 (16-bit mode) or 108 (32-bit mode) byte of
  1430. F.P. context to memory.
  1431. Format of context as in standart x86 instruction: FSAVE.
  1432. Note: Check CPUID, EAX=1, bit 24 for knew CPU support this feature.
  1433. And then look at CR4.bit9.
  1434. Note: See FXSAVE for more information
  1435. Flags Affected: None
  1436. CPU mode: any
  1437. +++++++++++++++++++++++
  1438. Physical Form & COPs:
  1439. FXRSTOR mem512byte 0F AE mm001mmm
  1440. Clocks: n/a
  1441. ----------O-FXSAVE---------------------------------
  1442. OPCODE FXSAVE - Fast Save F.P. Context
  1443. CPU: Katmai/Deschutes (IA MMX-2)
  1444. Type of Instruction: User
  1445. Instruction: FXSAVE dest
  1446. Description:
  1447. Fast Save 94 (16-bit mode) or 108 (32-bit mode) byte of
  1448. F.P. context to memory.
  1449. Format of context as in standart x86 instruction: FSAVE.
  1450. Note: Check CPUID, EAX=1, bit 24 for knew CPU support this feature.
  1451. And then look at CR4.bit9.
  1452. Format of F.P./MMX Save Area:
  1453. Offset (Table )
  1454. (dec) Size Description
  1455. +00 WORD FCW (Control word)
  1456. +02 WORD FSW (Status word)
  1457. +04 WORD FTW (Tag word)
  1458. +06 WORD FOP (lower 11-bit F.P. opcode)
  1459. +08 DWORD IP (F.P. Instruction pointer)
  1460. +12 WORD CS
  1461. +16 DWORD DP (F.P. Data pointer)
  1462. +20 WORD DS
  1463. +32 TBYTE ST0/MM0
  1464. +48 TBYTE ST1/MM1
  1465. +64 TBYTE ST2/MM2
  1466. +80 TBYTE ST3/MM3
  1467. +96 TBYTE ST4/MM4
  1468. +112 TBYTE ST5/MM5
  1469. +128 TBYTE ST6/MM6
  1470. +144 TBYTE ST7/MM7
  1471. All other fields are reserved.
  1472. Full length of Save/Restore area is 512 byte.
  1473. Flags Affected: None
  1474. CPU mode: any
  1475. +++++++++++++++++++++++
  1476. Physical Form & COPs:
  1477. FXSAVE mem512byte 0F AE mm000mmm
  1478. Clocks: n/a
  1479. ----------O-IBTS-----------------------------------
  1480. OPCODE IBTS - Insert Bits String
  1481. CPU: 80386 step A0-B0 only
  1482. Type of Instruction: User
  1483. Instruction: IBTS base,bitoffset,len,sorc
  1484. Description:
  1485. Write bit string length <len> bits from
  1486. <sorc> [bits <len> .. 0 ] (lowest bits) to bitfield,
  1487. defined by <base> and bitsoffset <bitoffset> from this base
  1488. to start of the field to write. String write from this start
  1489. field bit to higher memory addresses or register bits.
  1490. Flags Affected: None
  1491. CPU mode: RM,PM,VM
  1492. +++++++++++++++++++++++
  1493. Physical Form: IBTS r/m16,AX,CL,r16
  1494. IBTS r/m32,EAX,CL,r32
  1495. COP (Code of Operation) : 0FH A7H Postbyte
  1496. Clocks: IBTS
  1497. 80386: 12/19
  1498. ----------O-ICEBP----------------------------------
  1499. OPCODE ICEBP - PWI Mode BreakPoint, ICE address space
  1500. CPU: IBM 486SLC2
  1501. Type of Instruction: System
  1502. Instruction: ICEBP
  1503. Description:
  1504. IF (condition) THEN ; see condition below
  1505. {
  1506. SAVE STATUS OF EXECUTION TO ICE space;
  1507. ENTER SMM;
  1508. }
  1509. ELSE
  1510. {
  1511. INT 1;
  1512. }
  1513. END
  1514. Note: This condition can be set before execution this instruction:
  1515. CPL=0
  1516. MSR1000H.EPCEA=1
  1517. MSR1000H.EPWI=1
  1518. See Appendix X for more info.
  1519. Flags Affected: None
  1520. CPU mode: RM,PM0
  1521. Physical Form: ICEBP
  1522. COP (Code of Operation): F1H
  1523. Clocks: IBM 486SLC2 : 460
  1524. ----------O-ICEBP----------------------------------
  1525. OPCODE ICEBP - In-Circuit Emulator Breakpoint
  1526. CPU: some models of i486, i386, Pentium, Pentium Pro
  1527. Type of Instruction: System
  1528. Instruction: ICEBP
  1529. Description:
  1530. IF (condition) THEN ; see condition below
  1531. {
  1532. CHANGED TO THE ICE instruction mode;
  1533. }
  1534. ELSE
  1535. {
  1536. INT 1;
  1537. }
  1538. END
  1539. Note: 386/486: Condition is DR7.bit12=1
  1540. (CPU must be supported ICE).
  1541. Note: This instruction very usefull to debbuging as Single-Byte Interrupt
  1542. but it generate never int 3, but int 1.
  1543. Note: On Pentium Interrupt redirection initiately disabled on PMCR
  1544. (Probe Mode Control Register), which is only accessable via debug port
  1545. i.e. Need external hardware for enable normal ICEBP execution.
  1546. Note: On Pentium Pro situation is the same.
  1547. But in Pentium Pro Intel named this instruction INT01.
  1548. Flags Affected: None
  1549. CPU mode: RM,PM0
  1550. Physical Form: ICEBP
  1551. COP (Code of Operation): F1H
  1552. Clocks: : N/A
  1553. ----------O-ICERET---------------------------------
  1554. OPCODE ICERET - Return from PWI mode, ICE space
  1555. CPU: IBM 486SLC2
  1556. Type of Instruction: System Operation
  1557. (Work only then CPL=0)
  1558. Instruction: ICERET
  1559. Description:
  1560. Load All Registers (Include Shadow Registers) from Table
  1561. Which Begin on place pointed ES:EDI, and return from PWI
  1562. mode.
  1563. Format of ICERET Table:
  1564. (Table )
  1565. Offset Len Description
  1566. 0H 4 CR0
  1567. 4H 4 EFLAGS
  1568. 8H 4 EIP
  1569. CH 4 EDI
  1570. 10H 4 ESI
  1571. 14H 4 EBP
  1572. 18H 4 ESP
  1573. 1CH 4 EBX
  1574. 20H 4 EDX
  1575. 24H 4 ESX
  1576. 28H 4 EAX
  1577. 2CH 4 DR6
  1578. 30H 4 DR7
  1579. 34H 4 TR (16 bit, zero filled up)
  1580. 38H 4 LDT ---------
  1581. 3CH 4 GS ---------
  1582. 40H 4 FS ---------
  1583. 44H 4 DS ---------
  1584. 48H 4 SS ---------
  1585. 4CH 4 CS ---------
  1586. 50H 4 ES ---------
  1587. 54H 4 TSS.attrib
  1588. 58H 4 TSS.base
  1589. 5CH 4 TSS.limit
  1590. 60H 4 Reserved
  1591. 64H 4 IDT.base
  1592. 68H 4 IDT.limit
  1593. 6CH 4 REP OUTS overrun flag
  1594. 70H 4 GDT.base
  1595. 74H 4 GDT.limit
  1596. 78H 4 LDT.attrib
  1597. 7CH 4 LDT.base
  1598. 80H 4 LDT.limit
  1599. 84H 4 GS.attrib
  1600. 88H 4 GS.base
  1601. 8CH 4 GS.limit
  1602. 90H 4 FS.attrib
  1603. 94H 4 FS.base
  1604. 98H 4 FS.limit
  1605. 9CH 4 DS.attrib
  1606. A0H 4 DS.base
  1607. A4H 4 DS.limit
  1608. A8H 4 SS.attrib
  1609. ACH 4 SS.base
  1610. B0H 4 SS.limit
  1611. B4H 4 CS.attrib
  1612. B8H 4 CS.base
  1613. BCH 4 CS.limit
  1614. C0H 4 ES.attrib
  1615. C4H 4 ES.base
  1616. C8H 4 ES.limit
  1617. Unknown Unusable area
  1618. ;; Temporary registers:
  1619. 100H 4 TST
  1620. 104H 4 IDX
  1621. 108H 4 TMPH
  1622. 10CH 4 TMPG
  1623. 110H 4 TMPF
  1624. 114H 4 TMPE
  1625. 118H 4 TMPD
  1626. 11CH 4 TMPC
  1627. 120H 4 TMPB
  1628. 124H 4 TMPA
  1629. 128H 4 CR2
  1630. 12CH 4 CR3
  1631. 130H 4 MSR1001H (31-0)
  1632. 134H 4 MSR1001H (63-32)
  1633. 138H 4 MSR1000H (15-0)
  1634. 13CH 4 DR0
  1635. 140H 4 DR1
  1636. 144H 4 DR2
  1637. 148H 4 DR3
  1638. 14CH 4 PEIP
  1639. Length of table is 150H bytes.
  1640. see Appendix X for more info.
  1641. Note: For descriptor format refer to LOADALL and RES3 instructions.
  1642. Flags Affected: All (FLAGS Register Reload)
  1643. CPU mode: SMM
  1644. Physical Form: ICERET
  1645. COP (Code of Operation): 0FH 07H Note: Code is same with Intel's LOADALL
  1646. Clocks: IBM 486SLC2 : 440
  1647. ----------O-INS------------------------------------
  1648. OPCODE INS - Insert Bit String
  1649. CPU: NEC/Sony all V-series
  1650. Type of Instruction: User
  1651. Instruction: INS start,len
  1652. Description:
  1653. BitField [ BASE = ES:DI
  1654. START BIT OFFSET = start
  1655. LENGTH = len
  1656. ] <- AX [ bits= (len-1)..0]
  1657. Note: di and start automatically UPDATE
  1658. Note: Alternative Name of this instruction is NECINS
  1659. Flags Affected: None
  1660. CPU mode: RM
  1661. +++++++++++++++++++++++
  1662. Physical Form : INS reg8,reg8
  1663. COP (Code of Operation) : 0FH 31H PostByte
  1664. Clocks: INS reg8,reg8
  1665. NEC V20: 31-117
  1666. ----------O-INVD-----------------------------------
  1667. OPCODE INVD - Invalidate Cache Buffer
  1668. CPU: I486 +
  1669. Type of Instruction: System
  1670. Instruction: INVD
  1671. Description:
  1672. FLUSH INTERNAL CACHE
  1673. ( It means that all lines of internal caches sets as
  1674. invalid )
  1675. SIGNAL EXTERNAL CACHE TO FLUSH
  1676. Notes: This instruction not work in Real Mode and in
  1677. Protected mode work only in ring 0 ;
  1678. Flags Affected: None
  1679. CPU mode: PM0,SMM?
  1680. Physical Form: INVD
  1681. COP (Code of Operation): 0FH 08H
  1682. Clocks: Cyrix Cx486SLC : 4
  1683. i486 : 4
  1684. Pentium : 15
  1685. ----------O-INVLPG---------------------------------
  1686. OPCODE INVLPG - Invalidate Page Entry In TLB
  1687. CPU: I486 +
  1688. Type of Instruction: System
  1689. Instruction: INVLPG mem
  1690. Description:
  1691. IF found in data or code (if both) (or common if single)
  1692. TLB entry with linear address (page part) same as
  1693. memory operand <mem> then mark this entry as Invalid;
  1694. Notes: This instruction not work in Real Mode and in
  1695. Protected mode work only in ring 0 ;
  1696. Flags Affected: None
  1697. CPU mode: RM,PM,VM,SMM
  1698. Physical Form: INVLPG mem
  1699. COP (Code of Operation): 0FH 01H mm111mmm
  1700. Clocks: Cyrix Cx486SLC : 4
  1701. i486 : 12 if hit
  1702. : 11 if not hit
  1703. Pentium : 25
  1704. ----------O-JMPX-----------------------------------
  1705. OPCODE JMPX - Jump and change to 64-bit ISA.
  1706. CPU: Merced
  1707. Type of Instruction: User
  1708. Instruction: JMPX dest
  1709. Description:
  1710. This instruction make jump to specified address, and
  1711. change execution mode from IA-32 to IA-64.
  1712. So address must be 16-byte aligned.
  1713. Note: The other method to cnange execution mode to IA-64 is interrupt
  1714. to 64-bit code or IRET in IA-32 routine, which will be called from
  1715. IA-64.
  1716. Flags Affected: None
  1717. CPU mode: IA-32
  1718. Physical Form: JMPX rel16/rel32
  1719. JMPX r/m16
  1720. JMPX r/m32
  1721. COP (Code of Operation): ???
  1722. Clocks: Merced :
  1723. ----------O-LOADALL--------------------------------
  1724. OPCODE LOADALL - Load All Registers
  1725. CPU: Intel 386+ +all clones
  1726. Type of Instruction: System
  1727. (Work only then CPL=0)
  1728. Instruction: LOADALL
  1729. Description:
  1730. Load All Registers (Include Shadow Registers) from Table
  1731. Which Begin on place pointed ES:EDI
  1732. Format of LOADALL Table:
  1733. (Table )
  1734. Offset Len Description
  1735. 0H 4 CR0
  1736. 4H 4 EFLAGS
  1737. 8H 4 EIP
  1738. CH 4 EDI
  1739. 10H 4 ESI
  1740. 14H 4 EBP
  1741. 18H 4 ESP
  1742. 1CH 4 EBX
  1743. 20H 4 EDX
  1744. 24H 4 ESX
  1745. 28H 4 EAX
  1746. 2CH 4 DR6
  1747. 30H 4 DR7
  1748. 34H 4 TR (16 bit, zero filled up)
  1749. 38H 4 LDT ---------
  1750. 3CH 4 GS ---------
  1751. 40H 4 FS ---------
  1752. 44H 4 DS ---------
  1753. 48H 4 SS ---------
  1754. 4CH 4 CS ---------
  1755. 50H 4 ES ---------
  1756. 54H 4 TSS.attrib
  1757. 58H 4 TSS.base
  1758. 5CH 4 TSS.limit
  1759. 60H 4 0s
  1760. 64H 4 IDT.base
  1761. 68H 4 IDT.limit
  1762. 6CH 4 0s
  1763. 70H 4 GDT.base
  1764. 74H 4 GDT.limit
  1765. 78H 4 LDT.attrib
  1766. 7CH 4 LDT.base
  1767. 80H 4 LDT.limit
  1768. 84H 4 GS.attrib
  1769. 88H 4 GS.base
  1770. 8CH 4 GS.limit
  1771. 90H 4 FS.attrib
  1772. 94H 4 FS.base
  1773. 98H 4 FS.limit
  1774. 9CH 4 DS.attrib
  1775. A0H 4 DS.base
  1776. A4H 4 DS.limit
  1777. A8H 4 SS.attrib
  1778. ACH 4 SS.base
  1779. B0H 4 SS.limit
  1780. B4H 4 CS.attrib
  1781. B8H 4 CS.base
  1782. BCH 4 CS.limit
  1783. C0H 4 ES.attrib
  1784. C4H 4 ES.base
  1785. C8H 4 ES.limit
  1786. CCH 4 Length of table
  1787. D0H 30h Unused,not loaded
  1788. 100H 4 Temporary Register IST
  1789. 104H 4 Temporary Register I
  1790. 108H 4 Temporary Register H
  1791. 10CH 4 Temporary Register G
  1792. 110H 4 Temporary Register F
  1793. 114H 4 Temporary Register E
  1794. 118H 4 Temporary Register D
  1795. 11CH 4 Temporary Register C
  1796. 120H 4 Temporary Register B
  1797. 124H 4 Temporary Register A
  1798. Format of Attrib field:
  1799. Byte Description
  1800. 0 0s
  1801. 1 AR (Access Right) byte in the Descriptor format
  1802. Note:
  1803. P bit is a valid bit
  1804. if valid bit=0 then Shadow Register is invalid and
  1805. INT 0DH - General Protection Fault call
  1806. DPL of SS,CS det. CPL
  1807. 2-3 0s
  1808. Flags Affected: All (FLAGS Register Reload)
  1809. CPU mode: RM,PM0
  1810. Physical Form: LOADALL
  1811. COP (Code of Operation): 0FH 07H
  1812. Clocks: i386XX : n/a
  1813. i486XX : n/a
  1814. Note: This operation used 102 data transfer cycles on 32bit bus
  1815. Typical clocks:
  1816. i386SX: ~350
  1817. i386DX: ~290
  1818. i486XX: ~220
  1819. ----------O-LOADALL--------------------------------
  1820. OPCODE LOADALL - Load All Registers From Table
  1821. CPU: Intel 80286 and all its clones
  1822. Type of Instruction: System
  1823. (Work only then CPL=0)
  1824. Instruction: LOADALL
  1825. Description:
  1826. Load All Registers (Include Shadow Registers) from Table
  1827. Which Begin on 000800H Address, Len of this table is
  1828. 66H
  1829. Format of LOADALL Table:
  1830. (Table )
  1831. Address Len Description
  1832. 800H 6 None
  1833. 806H 2 MSW
  1834. 808H 14 None
  1835. 816H 2 TR
  1836. 818H 2 FLAGS
  1837. 81AH 2 IP
  1838. 81CH 2 LDTR
  1839. 81EH 2 DS
  1840. 820H 2 SS
  1841. 822H 2 CS
  1842. 824H 2 ES
  1843. 826H 2 DI
  1844. 828H 2 SI
  1845. 82AH 2 BP
  1846. 82CH 2 SP
  1847. 82EH 2 BX
  1848. 830H 2 DX
  1849. 832H 2 CX
  1850. 834H 2 AX
  1851. 836H 6 ES Shadow Descriptor
  1852. 83CH 6 CS Shadow Descriptor
  1853. 842H 6 SS Shadow Descriptor
  1854. 848H 6 DS Shadow Descriptor
  1855. 84EH 6 GDTR
  1856. 854H 6 LDT Shadow Descriptor
  1857. 85AH 6 IDTR
  1858. 860H 6 TSS Shadow Descriptor
  1859. Format of Shadow Descriptor:
  1860. Byte Description
  1861. 0-2 24bit Phisical Address
  1862. 3 AR (Access Right) byte
  1863. 4-5 16bit Segment Limit
  1864. Format of GDTR and IDTR:
  1865. Byte Description
  1866. 0-2 24bit Phisical Address
  1867. 3 0s
  1868. 4-5 16bit Segment Limit
  1869. Note: Using this instruction we may turn on "Big Real Mode" i.e. mode then
  1870. PG=1,PE=0,cpl=0. This mode very usefull,But Pentium never support this
  1871. instruction.
  1872. Flags Affected: All (FLAGS Register Reload)
  1873. CPU mode: RM,PM0
  1874. Physical Form: LOADALL
  1875. COP (Code of Operation): 0FH 05H
  1876. Clocks: 80286 : 195
  1877. ----------O-MOVD-----------------------------------
  1878. OPCODE MOVD - Move Dwords
  1879. CPU: all which supported IA MMX:
  1880. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  1881. Type of Instruction: User
  1882. Instruction: MOVD dest,src
  1883. Description:
  1884. IF dest is MMi register THEN
  1885. {
  1886. dest[63..32] <- 0
  1887. dest[31..0] <- src
  1888. } ELSE ; If dest is DWORD
  1889. dest <- src [31..0]
  1890. Note: This instruction moved DWORDs to/from MMX registers
  1891. Flags affected: None
  1892. Exceptions:
  1893. RM PM VM SMM Description
  1894. #GP(0) If result in Non-Writable segment
  1895. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  1896. #SS(0) If illegal memory operand's EA in SS
  1897. #PF(fcode) If page fault
  1898. #AC #AC If unaligned memory reference then alignment
  1899. check enabled and in ring 3.
  1900. #UD #UD #UD #UD If CR0.EM = 1
  1901. #NM #NM #NM #NM If CR0.TS = 1
  1902. #MF #MF #MF #MF If pending FPU Exception
  1903. ++++++++++++++++++++++++++++++++++++++
  1904. COP & Times:
  1905. MOVD mm,r/m32 0FH 6EH PostByte
  1906. MOVD r/m32,mm 0Fh 7Eh PostByte
  1907. mm,r/m32 r/m32,mm
  1908. P55C: n/a (~1) (~1)
  1909. future P6: n/a (~1) (~1)
  1910. ----------O-MOVQ-----------------------------------
  1911. OPCODE MOVQ - Move Qwords
  1912. CPU: all which supported IA MMX:
  1913. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  1914. Type of Instruction: User
  1915. Instruction: MOVQ dest,src
  1916. Description:
  1917. dest <- src
  1918. Note: This instruction moved QWORDs to/from MMX registers
  1919. Of course, IA support Big-endian QWORDS.
  1920. Flags affected: None
  1921. Exceptions:
  1922. RM PM VM SMM Description
  1923. #GP(0) If result in Non-Writable segment
  1924. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  1925. #SS(0) If illegal memory operand's EA in SS
  1926. #PF(fcode) If page fault
  1927. #AC #AC If unaligned memory reference then alignment
  1928. check enabled and in ring 3.
  1929. #UD #UD #UD #UD If CR0.EM = 1
  1930. #NM #NM #NM #NM If CR0.TS = 1
  1931. #MF #MF #MF #MF If pending FPU Exception
  1932. ++++++++++++++++++++++++++++++++++++++
  1933. COP & Times:
  1934. MOVQ mm,mm/m64 0FH 6FH PostByte
  1935. MOVQ mm/m64,mm 0Fh 7Fh PostByte
  1936. Note: In PostByte instead IU registers used MMX registers,
  1937. 0Fh 6Fh C0h means MOVQ MM0,MM0
  1938. mm,r/m32 r/m32,mm
  1939. P55C: n/a (~1) (~1)
  1940. future P6: n/a (~1) (~1)
  1941. ----------O-MOVSPA---------------------------------
  1942. OPCODE MOVSPA - Move Stack Pointer After Bank Switched
  1943. CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  1944. Type of Instruction: System
  1945. Instruction: MOVSPA
  1946. Description: This instruction transfer both SS and SP of the old register
  1947. bank to new register bank after the bank has been switched by
  1948. interrupt or BRKCS instruction.
  1949. Flags Affected: None
  1950. CPU mode: RM
  1951. +++++++++++++++++++++++
  1952. Physical Form: MOVSPA
  1953. COP (Code of Operation) : 0Fh 25h
  1954. Clocks: 16
  1955. ----------O-MOVSPB---------------------------------
  1956. OPCODE MOVSPB - Move Stack Pointer Before Bamk Switching
  1957. CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  1958. Type of Instruction: System
  1959. Instruction: MOVSPB Number_of_bank
  1960. Description: The MOVSPB instruction transfers the current SP and SS before
  1961. the bank switching to new register bank.
  1962. Note: New Register Bank Number indicated by lower 3bit of Number_of_
  1963. _bank.
  1964. Note: See BRKCS instruction for more info about banks.
  1965. Flags Affected: None
  1966. CPU mode: RM
  1967. +++++++++++++++++++++++
  1968. Physical Form: MOVSPB reg16
  1969. COP (Code of Operation) : 0Fh 95h <1111 1RRR>
  1970. Clocks: 11
  1971. ----------O-NOT1-----------------------------------
  1972. OPCODE NOT1 - Invert a Specified bit
  1973. CPU: NEC/Sony all V-series
  1974. Type of Instruction: User
  1975. Instruction: NOT1 dest,bitnumb
  1976. Description:
  1977. (BIT bitnumb OF dest) <- NOT (BIT bitnumb OF dest);
  1978. Flags Affected: None
  1979. CPU mode: RM
  1980. +++++++++++++++++++++++
  1981. Physical Form: NOT1 reg/mem8,CL
  1982. COP (Code of Operation) : 0FH 16H Postbyte
  1983. Physical Form: NOT1 reg/mem8,imm8
  1984. COP (Code of Operation) : 0FH 1EH Postbyte imm8
  1985. Physical Form: NOT1 reg/mem16,CL
  1986. COP (Code of Operation) : 0FH 17H Postbyte
  1987. Physical Form: NOT1 reg/mem16,imm8
  1988. COP (Code of Operation) : 0FH 1FH Postbyte imm8
  1989. Clocks: NOT1
  1990. r/m8,CL r/m8,i8 r/m16,CL r/m16,i8
  1991. NEC V20: 4/18 5/19 4/18 5/19
  1992. ----------O-OIO-----------------------------------
  1993. OPCODE OIO - Official Undefined Opcode
  1994. CPU: Cyrix Cx6x86 (same code on AMD Am5k86)
  1995. Logical Form: OIO
  1996. Description:
  1997. Caused #UD exception
  1998. Flags Affected: No Flags Affected
  1999. CPU Mode : RM,PM,VM,VME,SMM
  2000. Exceptions :
  2001. RM PM V86 VME SMM
  2002. #UD #UD #UD #UD #UD Undefined Instruction
  2003. No more Exceptions
  2004. Note :
  2005. This instruction caused #UD. AMD guaranteed that in future AMD's
  2006. CPUs this instruction will caused #UD. Of course all previous CPUs
  2007. (186+) caused #UD on this opcode. This instruction used by software
  2008. writers for testing #UD exception servise routine.
  2009. ++++++++++++++++++++++++++++++
  2010. Physical Form : UD
  2011. COP (Code of Operation) : 0Fh FFh
  2012. Clocks : UD
  2013. 8088: Not supported
  2014. NEC V20: Not supported
  2015. 80186: ~int
  2016. 80286: ~int
  2017. 80386: ~int
  2018. Cx486SLC: ~int
  2019. i486: ~int
  2020. Cx486DX: ~int
  2021. Cx5x86: ~int
  2022. Pentium: ~int
  2023. Nx5x86: ~int
  2024. Cx6x86: ~int
  2025. Am5k86: ~int
  2026. Pentium Pro: ~int
  2027. ++++++++++++++++++++++++++++++
  2028. ----------O-PACKSSDW-------------------------------
  2029. OPCODE PACKSSDW - Pack with Signed Saturation dword to word
  2030. CPU: all which supported IA MMX:
  2031. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2032. Type of Instruction: User
  2033. Instruction: PACKSSDW dest,src
  2034. Description:
  2035. dest[15..0] <- SaturateSignedDWordToSignedWord dest[31..0]
  2036. dest[31..16] <- SaturateSignedDWordToSignedWord dest[63..32]
  2037. dest[47..32] <- SaturateSignedDWordToSignedWord src[31..0]
  2038. dest[63..46] <- SaturateSignedDWordToSignedWord src[63..32]
  2039. Note: This instruction packs and saturates signed data from src and dest to
  2040. dest.
  2041. If signed value of word larger or smaller that the range of signed byte
  2042. value is saturated (in case of overflow to 7Fh, in underflow to 80h).
  2043. Flags affected: None
  2044. Exceptions:
  2045. RM PM VM SMM Description
  2046. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2047. #SS(0) If illegal memory operand's EA in SS
  2048. #PF(fcode) If page fault
  2049. #AC #AC If unaligned memory reference then alignment
  2050. check enabled and in ring 3.
  2051. #UD #UD #UD #UD If CR0.EM = 1
  2052. #NM #NM #NM #NM If CR0.TS = 1
  2053. #MF #MF #MF #MF If pending FPU Exception
  2054. ++++++++++++++++++++++++++++++++++++++
  2055. COP & Times:
  2056. PACKSSDW mm,mm/m64 0FH 6BH PostByte
  2057. P55C: n/a
  2058. future P6: n/a
  2059. ----------O-PACKSSWB-------------------------------
  2060. OPCODE PACKSSWB - Pack with Signed Saturation word to Byte
  2061. CPU: all which supported IA MMX:
  2062. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2063. Type of Instruction: User
  2064. Instruction: PACKSSWB dest,src
  2065. Description:
  2066. dest[7..0] <- SaturateSignedWordToSignedByte dest[15..0]
  2067. dest[15..8] <- SaturateSignedWordToSignedByte dest[31..16]
  2068. dest[23..16] <- SaturateSignedWordToSignedByte dest[47..32]
  2069. dest[31..24] <- SaturateSignedWordToSignedByte dest[63..48]
  2070. dest[39..32] <- SaturateSignedWordToSignedByte src[15..0]
  2071. dest[47..40] <- SaturateSignedWordToSignedByte src[31..16]
  2072. dest[55..48] <- SaturateSignedWordToSignedByte src[47..32]
  2073. dest[63..56] <- SaturateSignedWordToSignedByte src[63..48]
  2074. Note: This instruction packs and saturates signed data from src and dest to
  2075. dest
  2076. Flags affected: None
  2077. Exceptions:
  2078. RM PM VM SMM Description
  2079. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2080. #SS(0) If illegal memory operand's EA in SS
  2081. #PF(fcode) If page fault
  2082. #AC #AC If unaligned memory reference then alignment
  2083. check enabled and in ring 3.
  2084. #UD #UD #UD #UD If CR0.EM = 1
  2085. #NM #NM #NM #NM If CR0.TS = 1
  2086. #MF #MF #MF #MF If pending FPU Exception
  2087. ++++++++++++++++++++++++++++++++++++++
  2088. COP & Times:
  2089. PACKSSWB mm,mm/m64 0FH 63H PostByte
  2090. P55C: n/a
  2091. future P6: n/a
  2092. ----------O-PACKUSWB-------------------------------
  2093. OPCODE PACKUSWB - Pack with Unsigned Saturation word to Byte
  2094. CPU: all which supported IA MMX:
  2095. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2096. Type of Instruction: User
  2097. Instruction: PACKUSWB dest,src
  2098. Description:
  2099. dest[7..0] <- SaturateSignedWordToUnSignedByte dest[15..0]
  2100. dest[15..8] <- SaturateSignedWordToUnSignedByte dest[31..16]
  2101. dest[23..16] <- SaturateSignedWordToUnSignedByte dest[47..32]
  2102. dest[31..24] <- SaturateSignedWordToUnSignedByte dest[63..48]
  2103. dest[39..32] <- SaturateSignedWordToUnSignedByte src[15..0]
  2104. dest[47..40] <- SaturateSignedWordToUnSignedByte src[31..16]
  2105. dest[55..48] <- SaturateSignedWordToUnSignedByte src[47..32]
  2106. dest[63..56] <- SaturateSignedWordToUnSignedByte src[63..48]
  2107. Note: If signed value of word larger or smaller that the range of unsigned
  2108. byte, value is saturated (if overflow to FFh, if underflow to 0h).
  2109. Flags affected: None
  2110. Exceptions:
  2111. RM PM VM SMM Description
  2112. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2113. #SS(0) If illegal memory operand's EA in SS
  2114. #PF(fcode) If page fault
  2115. #AC #AC If unaligned memory reference then alignment
  2116. check enabled and in ring 3.
  2117. #UD #UD #UD #UD If CR0.EM = 1
  2118. #NM #NM #NM #NM If CR0.TS = 1
  2119. #MF #MF #MF #MF If pending FPU Exception
  2120. ++++++++++++++++++++++++++++++++++++++
  2121. COP & Times:
  2122. PACKUSWB mm,mm/m64 0FH 67H PostByte
  2123. P55C: n/a
  2124. future P6: n/a
  2125. ----------O-PADDB----------------------------------
  2126. OPCODE PADDB - Packed Add Bytes
  2127. CPU: all which supported IA MMX:
  2128. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2129. Type of Instruction: User
  2130. Instruction: PADDB dest,src
  2131. Description:
  2132. dest[7..0] <- dest[7..0] + src[7..0]
  2133. dest[15..8] <- dest[15..8] + src[15..8]
  2134. dest[23..16] <- dest[23..16] + src[23..16]
  2135. dest[31..24] <- dest[31..24] + src[31..24]
  2136. dest[39..32] <- dest[39..32] + src[39..32]
  2137. dest[47..40] <- dest[47..40] + src[47..40]
  2138. dest[55..48] <- dest[55..48] + src[55..48]
  2139. dest[63..56] <- dest[63..56] + src[63..56]
  2140. Note: This instruction adds the bytes of the source to the bytes of the
  2141. destination and writes the results to the MMX register.
  2142. When the result is too large to be represented in a packed byte
  2143. (overflow), the result wraps around and the lower 8 bits are writen to
  2144. the destination register.
  2145. Flags affected: None
  2146. Exceptions:
  2147. RM PM VM SMM Description
  2148. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2149. #SS(0) If illegal memory operand's EA in SS
  2150. #PF(fcode) If page fault
  2151. #AC #AC If unaligned memory reference then alignment
  2152. check enabled and in ring 3.
  2153. #UD #UD #UD #UD If CR0.EM = 1
  2154. #NM #NM #NM #NM If CR0.TS = 1
  2155. #MF #MF #MF #MF If pending FPU Exception
  2156. #13 #13 If any part of the the operand lies outside of
  2157. the EA space from 0 to FFFFH
  2158. ++++++++++++++++++++++++++++++++++++++
  2159. COP & Times:
  2160. PADDB mm,mm/m64 0FH FCH PostByte
  2161. P55C: n/a
  2162. future P6: n/a
  2163. ----------O-PADDD----------------------------------
  2164. OPCODE PADDD - Packed Add Dwords
  2165. CPU: all which supported IA MMX:
  2166. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2167. Type of Instruction: User
  2168. Instruction: PADDD dest,src
  2169. Description:
  2170. dest[31..0] <- dest[31..0] + src[31..0]
  2171. dest[63..32] <- dest[63..32] + src[63..32]
  2172. Note: This instruction adds the dwords of the source to the dwords of the
  2173. destination and writes the results to the MMX register.
  2174. When the result is too large to be represented in a packed dword
  2175. (overflow), the result wraps around and the lower 32 bits are writen to
  2176. the destination register.
  2177. Flags affected: None
  2178. Exceptions:
  2179. RM PM VM SMM Description
  2180. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2181. #SS(0) If illegal memory operand's EA in SS
  2182. #PF(fcode) If page fault
  2183. #AC #AC If unaligned memory reference then alignment
  2184. check enabled and in ring 3.
  2185. #UD #UD #UD #UD If CR0.EM = 1
  2186. #NM #NM #NM #NM If CR0.TS = 1
  2187. #MF #MF #MF #MF If pending FPU Exception
  2188. #13 #13 If any part of the the operand lies outside of
  2189. the EA space from 0 to FFFFH
  2190. ++++++++++++++++++++++++++++++++++++++
  2191. COP & Times:
  2192. PADDW mm,mm/m64 0FH FEH PostByte
  2193. P55C: n/a
  2194. future P6: n/a
  2195. ----------O-PADDSB---------------------------------
  2196. OPCODE PADDSB - Packed Add with Saturation Bytes
  2197. CPU: all which supported IA MMX:
  2198. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2199. Type of Instruction: User
  2200. Instruction: PADDSB dest,src
  2201. Description:
  2202. dest[7..0] <- SaturateToSignedByte(dest[7..0] + src[7..0])
  2203. dest[15..8] <- SaturateToSignedByte(dest[15..8] + src[15..8])
  2204. dest[23..16] <- SaturateToSignedByte(dest[23..16] + src[23..16])
  2205. dest[31..24] <- SaturateToSignedByte(dest[31..24] + src[31..24])
  2206. dest[39..32] <- SaturateToSignedByte(dest[39..32] + src[39..32])
  2207. dest[47..40] <- SaturateToSignedByte(dest[47..40] + src[47..40])
  2208. dest[55..48] <- SaturateToSignedByte(dest[55..48] + src[55..48])
  2209. dest[63..56] <- SaturateToSignedByte(dest[63..56] + src[63..56])
  2210. Note: This instruction adds the signed bytes of the source to the bytes of
  2211. the destination and writes the results to the MMX register.
  2212. If the result is larger or smaller than the range of a signed byte,
  2213. the value is saturated (in the case of a overflow - to 7FH, and in the
  2214. case of an underflow - to 80H).
  2215. Flags affected: None
  2216. Exceptions:
  2217. RM PM VM SMM Description
  2218. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2219. #SS(0) If illegal memory operand's EA in SS
  2220. #PF(fcode) If page fault
  2221. #AC #AC If unaligned memory reference then alignment
  2222. check enabled and in ring 3.
  2223. #UD #UD #UD #UD If CR0.EM = 1
  2224. #NM #NM #NM #NM If CR0.TS = 1
  2225. #MF #MF #MF #MF If pending FPU Exception
  2226. #13 #13 If any part of the the operand lies outside of
  2227. the EA space from 0 to FFFFH
  2228. ++++++++++++++++++++++++++++++++++++++
  2229. COP & Times:
  2230. PADDSB mm,mm/m64 0FH ECH PostByte
  2231. P55C: n/a
  2232. future P6: n/a
  2233. ----------O-PADDSIW----------------------------
  2234. OPCODE PADDSIW - Packed Add with Saturation, using Implied Destination
  2235. CPU: Cyrix with Extended MMX Instruction Set
  2236. Type of Instruction: User
  2237. Instruction: PADDSIW dest, src
  2238. Description:
  2239. dest[15..0] <- SaturateToSignedWord(dest[15..0] + src[15..0]
  2240. dest[31..16] <- SaturateToSignedWord(dest[31..16] + src[31..16]
  2241. dest[47..32] <- SaturateToSignedWord(dest[47..32] + src[47..32]
  2242. dest[63..48] <- SaturateToSignedWord(dest[63..48] + src[63..48]
  2243. Notes: This instruction adds the signed words of the source operand to
  2244. the signed words of the destination operand and writes the results to
  2245. the implied MMX register. The purpose of this instruction is the same
  2246. as the PADDSW instruction, except that it preserves both source
  2247. operands.
  2248. The DEST must be an MMX register. The SRC can be either an MMX
  2249. register or a 64-bit memory operand. The destination is an MMX register
  2250. which depends on the DEST.
  2251. Flags Affected: None
  2252. Exceptions:
  2253. RM PM VM SMM Description
  2254. #GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
  2255. #SS(0) If Illegal memory operands EA in SS
  2256. #PF(fcode) If page fault
  2257. #AC #AC If unaligned memory reference then alignment
  2258. check enabled and in ring 3.
  2259. #UD #UD #UD #UD If CR0.EM = 1
  2260. #NM #NM #NM #NM If CR0.TS = 1
  2261. #MF #MF #MF #MF If pending FPU Exception
  2262. #13 #13 If any part of the operand lies outside of the
  2263. EA space from 0 to FFFFH
  2264. ++++++++++++++++++++++++++++++++++
  2265. COP & Times:
  2266. PADDSIW mm,mm/m64 0FH 51H PostByte
  2267. ----------O-PADDSW---------------------------------
  2268. OPCODE PADDSW - Packed Add with Saturation Words
  2269. CPU: all which supported IA MMX:
  2270. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2271. Type of Instruction: User
  2272. Instruction: PADDSW dest,src
  2273. Description:
  2274. dest[15..0] <- SaturateToSignedWord(dest[15..0] + src[15..0])
  2275. dest[31..16] <- SaturateToSignedWord(dest[31..16] + src[31..16])
  2276. dest[47..32] <- SaturateToSignedWord(dest[47..32] + src[47..32])
  2277. dest[63..48] <- SaturateToSignedWord(dest[63..48] + src[63..48])
  2278. Note: This instruction adds the signed words of the source to the words of
  2279. the destination and writes the results to the MMX register.
  2280. If the result is larger or smaller than the range of a signed word,
  2281. the value is saturated (in the case of a overflow - to 7FFFH, and in
  2282. the case of an underflow - to 8000H).
  2283. Flags affected: None
  2284. Exceptions:
  2285. RM PM VM SMM Description
  2286. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2287. #SS(0) If illegal memory operand's EA in SS
  2288. #PF(fcode) If page fault
  2289. #AC #AC If unaligned memory reference then alignment
  2290. check enabled and in ring 3.
  2291. #UD #UD #UD #UD If CR0.EM = 1
  2292. #NM #NM #NM #NM If CR0.TS = 1
  2293. #MF #MF #MF #MF If pending FPU Exception
  2294. #13 #13 If any part of the the operand lies outside of
  2295. the EA space from 0 to FFFFH
  2296. ++++++++++++++++++++++++++++++++++++++
  2297. COP & Times:
  2298. PADDSW mm,mm/m64 0FH EDH PostByte
  2299. P55C: n/a
  2300. future P6: n/a
  2301. ----------O-PADDUSB--------------------------------
  2302. OPCODE PADDUSB - Packed Add Unsigned with Saturation Bytes
  2303. CPU: all which supported IA MMX:
  2304. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2305. Type of Instruction: User
  2306. Instruction: PADDUSB dest,src
  2307. Description:
  2308. dest[7..0] <- SaturateToUnsignedByte(dest[7..0] + src[7..0])
  2309. dest[15..8] <- SaturateToUnsignedByte(dest[15..8] + src[15..8])
  2310. dest[23..16] <- SaturateToUnsignedByte(dest[23..16] + src[23..16])
  2311. dest[31..24] <- SaturateToUnsignedByte(dest[31..24] + src[31..24])
  2312. dest[39..32] <- SaturateToUnsignedByte(dest[39..32] + src[39..32])
  2313. dest[47..40] <- SaturateToUnsignedByte(dest[47..40] + src[47..40])
  2314. dest[55..48] <- SaturateToUnsignedByte(dest[55..48] + src[55..48])
  2315. dest[63..56] <- SaturateToUnsignedByte(dest[63..56] + src[63..56])
  2316. Note: This instruction adds the unsigned bytes of the source to the
  2317. unsigned bytes of the destination operand and writes the results to the
  2318. MMX register.
  2319. When the result is larger than the range of an unsigned byte
  2320. (overflow), the value is saturated to FFH. When the result is smaller
  2321. than the range of an unsigned byte (underflow), the value is saturated
  2322. to 00H.
  2323. Flags affected: None
  2324. Exceptions:
  2325. RM PM VM SMM Description
  2326. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2327. #SS(0) If illegal memory operand's EA in SS
  2328. #PF(fcode) If page fault
  2329. #AC #AC If unaligned memory reference then alignment
  2330. check enabled and in ring 3.
  2331. #UD #UD #UD #UD If CR0.EM = 1
  2332. #NM #NM #NM #NM If CR0.TS = 1
  2333. #MF #MF #MF #MF If pending FPU Exception
  2334. #13 #13 If any part of the the operand lies outside of
  2335. the EA space from 0 to FFFFH
  2336. ++++++++++++++++++++++++++++++++++++++
  2337. COP & Times:
  2338. PADDUSB mm,mm/m64 0FH DCH PostByte
  2339. P55C: n/a
  2340. future P6: n/a
  2341. ----------O-PADDUSW--------------------------------
  2342. OPCODE PADDUSW - Packed Add Unsigned with Saturation Words
  2343. CPU: all which supported IA MMX:
  2344. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2345. Type of Instruction: User
  2346. Instruction: PADDUSW dest,src
  2347. Description:
  2348. dest[15..0] <- SaturateToUnsignedWord(dest[15..0] + src[15..0])
  2349. dest[31..16] <- SaturateToUnsignedWord(dest[31..16] + src[31..16])
  2350. dest[47..32] <- SaturateToUnsignedWord(dest[47..32] + src[47..32])
  2351. dest[63..48] <- SaturateToUnsignedWord(dest[63..48] + src[63..48])
  2352. Note: This instruction adds the unsigned words of the source to the
  2353. unsigned words of the destination operand and writes the results to the
  2354. MMX register.
  2355. When the result is larger than the range of an unsigned word
  2356. (overflow), the value is saturated to FFFFH. When the result is smaller
  2357. than the range of an unsigned byte (underflow), the value is saturated
  2358. to 0000H.
  2359. Flags affected: None
  2360. Exceptions:
  2361. RM PM VM SMM Description
  2362. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2363. #SS(0) If illegal memory operand's EA in SS
  2364. #PF(fcode) If page fault
  2365. #AC #AC If unaligned memory reference then alignment
  2366. check enabled and in ring 3.
  2367. #UD #UD #UD #UD If CR0.EM = 1
  2368. #NM #NM #NM #NM If CR0.TS = 1
  2369. #MF #MF #MF #MF If pending FPU Exception
  2370. #13 #13 If any part of the the operand lies outside of
  2371. the EA space from 0 to FFFFH
  2372. ++++++++++++++++++++++++++++++++++++++
  2373. COP & Times:
  2374. PADDUSW mm,mm/m64 0FH DDH PostByte
  2375. P55C: n/a
  2376. future P6: n/a
  2377. ----------O-PADDW----------------------------------
  2378. OPCODE PADDW - Packed Add Words
  2379. CPU: all which supported IA MMX:
  2380. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2381. Type of Instruction: User
  2382. Instruction: PADDW dest,src
  2383. Description:
  2384. dest[15..0] <- dest[15..0] + src[15..0]
  2385. dest[31..16] <- dest[31..16] + src[31..16]
  2386. dest[47..32] <- dest[47..32] + src[47..32]
  2387. dest[63..48] <- dest[63..48] + src[63..48]
  2388. Note: This instruction adds the words of the source to the words of the
  2389. destination and writes the results to the MMX register.
  2390. When the result is too large to be represented in a packed word
  2391. (overflow), the result wraps around and the lower 16 bits are writen to
  2392. the destination register.
  2393. Flags affected: None
  2394. Exceptions:
  2395. RM PM VM SMM Description
  2396. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2397. #SS(0) If illegal memory operand's EA in SS
  2398. #PF(fcode) If page fault
  2399. #AC #AC If unaligned memory reference then alignment
  2400. check enabled and in ring 3.
  2401. #UD #UD #UD #UD If CR0.EM = 1
  2402. #NM #NM #NM #NM If CR0.TS = 1
  2403. #MF #MF #MF #MF If pending FPU Exception
  2404. #13 #13 If any part of the the operand lies outside of
  2405. the EA space from 0 to FFFFH
  2406. ++++++++++++++++++++++++++++++++++++++
  2407. COP & Times:
  2408. PADDW mm,mm/m64 0FH FDH PostByte
  2409. P55C: n/a
  2410. future P6: n/a
  2411. ----------O-PAND-----------------------------------
  2412. OPCODE PAND - Bitwise Logical And
  2413. CPU: all which supported IA MMX:
  2414. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2415. Type of Instruction: User
  2416. Instruction: PAND dest,src
  2417. Description:
  2418. dest <- dest AND src
  2419. Note: AND 64 bits from MMXregister/memory to MMX register.
  2420. Flags affected: None
  2421. Exceptions:
  2422. RM PM VM SMM Description
  2423. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2424. #SS(0) If illegal memory operand's EA in SS
  2425. #PF(fcode) If page fault
  2426. #AC #AC If unaligned memory reference then alignment
  2427. check enabled and in ring 3.
  2428. #UD #UD #UD #UD If CR0.EM = 1
  2429. #NM #NM #NM #NM If CR0.TS = 1
  2430. #MF #MF #MF #MF If pending FPU Exception
  2431. #13 #13 If any part of the the operand lies outside of
  2432. the EA space from 0 to FFFFH
  2433. ++++++++++++++++++++++++++++++++++++++
  2434. COP & Times:
  2435. PAND mm,mm/m64 0FH DBH PostByte
  2436. P55C: n/a
  2437. future P6: n/a
  2438. ----------O-PANDN----------------------------------
  2439. OPCODE PANDN - Bitwise Logical And Not
  2440. CPU: all which supported IA MMX:
  2441. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2442. Type of Instruction: User
  2443. Instruction: PANDN dest,src
  2444. Description:
  2445. dest <- (NOT dest) AND src
  2446. Note: Invert the 64 bits in MMX register, AND inverted MMX register with
  2447. MMXregister/memory.
  2448. Flags affected: None
  2449. Exceptions:
  2450. RM PM VM SMM Description
  2451. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2452. #SS(0) If illegal memory operand's EA in SS
  2453. #PF(fcode) If page fault
  2454. #AC #AC If unaligned memory reference then alignment
  2455. check enabled and in ring 3.
  2456. #UD #UD #UD #UD If CR0.EM = 1
  2457. #NM #NM #NM #NM If CR0.TS = 1
  2458. #MF #MF #MF #MF If pending FPU Exception
  2459. #13 #13 If any part of the the operand lies outside of
  2460. the EA space from 0 to FFFFH
  2461. ++++++++++++++++++++++++++++++++++++++
  2462. COP & Times:
  2463. PANDN mm,mm/m64 0FH DFH PostByte
  2464. P55C: n/a
  2465. future P6: n/a
  2466. ----------O-PAVEB------------------------------
  2467. OPCODE PAVEB - Packed Average
  2468. CPU: Cyrix with Extended MMX Instruction Set
  2469. Type of Instruction: User
  2470. Instruction: PAVEB dest, src
  2471. Description:
  2472. dest[7..0] <- (dest[7..0] + src[7..0]) >> 1
  2473. dest[15..8] <- (dest[15..8] + src[15..8]) >> 1
  2474. dest[23..16] <- (dest[23..16] + src[23..16]) >> 1
  2475. dest[31..24] <- (dest[31..24] + src[31..24]) >> 1
  2476. dest[39..32] <- (dest[39..32] + src[39..32]) >> 1
  2477. dest[47..40] <- (dest[47..40] + src[47..40]) >> 1
  2478. dest[55..48] <- (dest[55..48] + src[55..48]) >> 1
  2479. dest[63..56] <- (dest[63..56] + src[63..56]) >> 1
  2480. Notes: The PAVEB insruction calculates the average of the unsigned
  2481. bytes of the source operand and the unsigned bytes of the destination
  2482. operand and writes the result to the MMX register. The PAVEB
  2483. instruction cannot overflow.
  2484. M2 hardware versions before v1.3 interpret values as signed
  2485. bytes on this instruction.
  2486. Flags Affected: None
  2487. Exceptions:
  2488. RM PM VM SMM Description
  2489. #GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
  2490. #SS(0) If Illegal memory operands EA in SS
  2491. #PF(fcode) If page fault
  2492. #AC #AC If unaligned memory reference then alignment
  2493. check enabled and in ring 3.
  2494. #UD #UD #UD #UD If CR0.EM = 1
  2495. #NM #NM #NM #NM If CR0.TS = 1
  2496. #MF #MF #MF #MF If pending FPU Exception
  2497. #13 #13 If any part of the operand lies outside of the
  2498. EA space from 0 to FFFFH
  2499. ++++++++++++++++++++++++++++++++++
  2500. COP & Times:
  2501. PAVEB mm,mm/m64 0FH 50H PostByte
  2502. ----------O-PAVGUSB----------------------------
  2503. OPCODE PAVGUSB - Avarage of Unsigned packed 8-bit Values
  2504. CPU: AMD-3D
  2505. Type of Instruction: User
  2506. Instruction: PAVGUSB dest,src
  2507. Description:
  2508. dest[7..0] <- (dest[7..0] + src[7..0]) / 2;
  2509. dest[15..8] <- (dest[15..8] + src[15..8]) / 2;
  2510. dest[23..16] <- (dest[23..16] + src[23..16]) / 2;
  2511. dest[31..24] <- (dest[31..24] + src[31..24]) / 2;
  2512. dest[39..32] <- (dest[39..32] + src[39..32]) / 2;
  2513. dest[47..40] <- (dest[47..40] + src[47..40]) / 2;
  2514. dest[55..48] <- (dest[55..48] + src[55..48]) / 2;
  2515. dest[63..56] <- (dest[63..56] + src[63..56]) / 2;
  2516. Note: so, saturation rounding:
  2517. (FFH + FFH) / 2 => FFh
  2518. Flags Affected: None
  2519. ++++++++++++++++++++++++++++++++++
  2520. COP & Times:
  2521. PAVGUSB mm,mm/m64 0FH 0FH BFH Postbyte
  2522. ----------O-PCMPEQB--------------------------------
  2523. OPCODE PCMPEQB - Packed Compare for Equal Bytes
  2524. CPU: all which supported IA MMX:
  2525. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2526. Type of Instruction: User
  2527. Instruction: PCMPEQB dest,src
  2528. Description:
  2529. IF dest[7..0] = src[7..0]
  2530. THEN
  2531. dest[7..0] <- FFH
  2532. ELSE
  2533. dest[7..0] <- 00H
  2534. IF dest[15..8] = src[15..8]
  2535. THEN
  2536. dest[15..8] <- FFH
  2537. ELSE
  2538. dest[15..8] <- 00H
  2539. IF dest[23..16] = src[23..16]
  2540. THEN
  2541. dest[23..16] <- FFH
  2542. ELSE
  2543. dest[23..16] <- 00H
  2544. IF dest[31..24] = src[31..24]
  2545. THEN
  2546. dest[31..24] <- FFH
  2547. ELSE
  2548. dest[31..24] <- 00H
  2549. IF dest[39..32] = src[39..32]
  2550. THEN
  2551. dest[39..32] <- FFH
  2552. ELSE
  2553. dest[39..32] <- 00H
  2554. IF dest[47..40] = src[47..40]
  2555. THEN
  2556. dest[47..40] <- FFH
  2557. ELSE
  2558. dest[47..40] <- 00H
  2559. IF dest[55..48] = src[55..48]
  2560. THEN
  2561. dest[55..48] <- FFH
  2562. ELSE
  2563. dest[55..48] <- 00H
  2564. IF dest[63..56] = src[63..56]
  2565. THEN
  2566. dest[63..56] <- FFH
  2567. ELSE
  2568. dest[63..56] <- 00H
  2569. Note: Compare packed byte in MMXregister/memory with packed byte in MMX
  2570. register for equality.
  2571. Flags affected: None
  2572. Exceptions:
  2573. RM PM VM SMM Description
  2574. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2575. #SS(0) If illegal memory operand's EA in SS
  2576. #PF(fcode) If page fault
  2577. #AC #AC If unaligned memory reference then alignment
  2578. check enabled and in ring 3.
  2579. #UD #UD #UD #UD If CR0.EM = 1
  2580. #NM #NM #NM #NM If CR0.TS = 1
  2581. #MF #MF #MF #MF If pending FPU Exception
  2582. #13 #13 If any part of the the operand lies outside of
  2583. the EA space from 0 to FFFFH
  2584. ++++++++++++++++++++++++++++++++++++++
  2585. COP & Times:
  2586. PCMPEQB mm,mm/m64 0FH 74H PostByte
  2587. P55C: n/a
  2588. future P6: n/a
  2589. ----------O-PCMPEQD--------------------------------
  2590. OPCODE PCMPEQD - Packed Compare for Equal Dwords
  2591. CPU: all which supported IA MMX:
  2592. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2593. Type of Instruction: User
  2594. Instruction: PCMPEQD dest,src
  2595. Description:
  2596. IF dest[31..0] = src[31..0]
  2597. THEN
  2598. dest[31..0] <- FFFFFFFFH
  2599. ELSE
  2600. dest[31..0] <- 00000000H
  2601. IF dest[63..32] = src[63..32]
  2602. THEN
  2603. dest[63..32] <- FFFFFFFFH
  2604. ELSE
  2605. dest[63..32] <- 00000000H
  2606. Note: Compare packed dword in MMXregister/memory with packed dword in MMX
  2607. register for equality.
  2608. Flags affected: None
  2609. Exceptions:
  2610. RM PM VM SMM Description
  2611. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2612. #SS(0) If illegal memory operand's EA in SS
  2613. #PF(fcode) If page fault
  2614. #AC #AC If unaligned memory reference then alignment
  2615. check enabled and in ring 3.
  2616. #UD #UD #UD #UD If CR0.EM = 1
  2617. #NM #NM #NM #NM If CR0.TS = 1
  2618. #MF #MF #MF #MF If pending FPU Exception
  2619. #13 #13 If any part of the the operand lies outside of
  2620. the EA space from 0 to FFFFH
  2621. ++++++++++++++++++++++++++++++++++++++
  2622. COP & Times:
  2623. PCMPEQW mm,mm/m64 07H 76H PostByte
  2624. P55C: n/a
  2625. future P6: n/a
  2626. ----------O-PCMPEQW--------------------------------
  2627. OPCODE PCMPEQW - Packed Compare for Equal Words
  2628. CPU: all which supported IA MMX:
  2629. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2630. Type of Instruction: User
  2631. Instruction: PCMPEQW dest,src
  2632. Description:
  2633. IF dest[15..0] = src[15..0]
  2634. THEN
  2635. dest[15..0] <- FFFFH
  2636. ELSE
  2637. dest[15..0] <- 0000H
  2638. IF dest[31..16] = src[31..16]
  2639. THEN
  2640. dest[31..16] <- FFFFH
  2641. ELSE
  2642. dest[31..16] <- 0000H
  2643. IF dest[47..32] = src[47..32]
  2644. THEN
  2645. dest[47..32] <- FFFFH
  2646. ELSE
  2647. dest[47..32] <- 0000H
  2648. IF dest[63..48] = src[63..48]
  2649. THEN
  2650. dest[63..48] <- FFFFH
  2651. ELSE
  2652. dest[63..48] <- 0000H
  2653. Note: Compare packed word in MMXregister/memory with packed word in MMX
  2654. register for equality.
  2655. Flags affected: None
  2656. Exceptions:
  2657. RM PM VM SMM Description
  2658. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2659. #SS(0) If illegal memory operand's EA in SS
  2660. #PF(fcode) If page fault
  2661. #AC #AC If unaligned memory reference then alignment
  2662. check enabled and in ring 3.
  2663. #UD #UD #UD #UD If CR0.EM = 1
  2664. #NM #NM #NM #NM If CR0.TS = 1
  2665. #MF #MF #MF #MF If pending FPU Exception
  2666. #13 #13 If any part of the the operand lies outside of
  2667. the EA space from 0 to FFFFH
  2668. ++++++++++++++++++++++++++++++++++++++
  2669. COP & Times:
  2670. PCMPEQW mm,mm/m64 07H 75H PostByte
  2671. P55C: n/a
  2672. future P6: n/a
  2673. ----------O-PCMPGTB--------------------------------
  2674. OPCODE PCMPGTB - Packed Compare for Greater Than Bytes
  2675. CPU: all which supported IA MMX:
  2676. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2677. Type of Instruction: User
  2678. Instruction: PCMPGTB dest,src
  2679. Description:
  2680. IF dest[7..0] > src[7..0]
  2681. THEN
  2682. dest[7..0] <- FFH
  2683. ELSE
  2684. dest[7..0] <- 00H
  2685. IF dest[15..8] > src[15..8]
  2686. THEN
  2687. dest[15..8] <- FFH
  2688. ELSE
  2689. dest[15..8] <- 00H
  2690. IF dest[23..16] > src[23..16]
  2691. THEN
  2692. dest[23..16] <- FFH
  2693. ELSE
  2694. dest[23..16] <- 00H
  2695. IF dest[31..24] > src[31..24]
  2696. THEN
  2697. dest[31..24] <- FFH
  2698. ELSE
  2699. dest[31..24] <- 00H
  2700. IF dest[39..32] > src[39..32]
  2701. THEN
  2702. dest[39..32] <- FFH
  2703. ELSE
  2704. dest[39..32] <- 00H
  2705. IF dest[47..40] > src[47..40]
  2706. THEN
  2707. dest[47..40] <- FFH
  2708. ELSE
  2709. dest[47..40] <- 00H
  2710. IF dest[55..48] > src[55..48]
  2711. THEN
  2712. dest[55..48] <- FFH
  2713. ELSE
  2714. dest[55..48] <- 00H
  2715. IF dest[63..56] > src[63..56]
  2716. THEN
  2717. dest[63..56] <- FFH
  2718. ELSE
  2719. dest[63..56] <- 00H
  2720. Note: Compare packed byte in MMX register with packed byte in MMXregister/
  2721. /memory for greater value.
  2722. Flags affected: None
  2723. Exceptions:
  2724. RM PM VM SMM Description
  2725. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2726. #SS(0) If illegal memory operand's EA in SS
  2727. #PF(fcode) If page fault
  2728. #AC #AC If unaligned memory reference then alignment
  2729. check enabled and in ring 3.
  2730. #UD #UD #UD #UD If CR0.EM = 1
  2731. #NM #NM #NM #NM If CR0.TS = 1
  2732. #MF #MF #MF #MF If pending FPU Exception
  2733. #13 #13 If any part of the the operand lies outside of
  2734. the EA space from 0 to FFFFH
  2735. ++++++++++++++++++++++++++++++++++++++
  2736. COP & Times:
  2737. PCMPGTB mm,mm/m64 0FH 64H PostByte
  2738. P55C: n/a
  2739. future P6: n/a
  2740. ----------O-PCMPGTD--------------------------------
  2741. OPCODE PCMPGTD - Packed Compare for Greater Than Dwords
  2742. CPU: all which supported IA MMX:
  2743. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2744. Type of Instruction: User
  2745. Instruction: PCMPGTD dest,src
  2746. Description:
  2747. IF dest[31..0] > src[31..0]
  2748. THEN
  2749. dest[31..0] <- FFFFFFFFH
  2750. ELSE
  2751. dest[31..0] <- 00000000H
  2752. IF dest[63..32] > src[63..32]
  2753. THEN
  2754. dest[63..32] <- FFFFFFFFH
  2755. ELSE
  2756. dest[63..32] <- 00000000H
  2757. Note: Compare packed dword in MMX register with packed dword in MMXregister/
  2758. /memory for greater value.
  2759. Flags affected: None
  2760. Exceptions:
  2761. RM PM VM SMM Description
  2762. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2763. #SS(0) If illegal memory operand's EA in SS
  2764. #PF(fcode) If page fault
  2765. #AC #AC If unaligned memory reference then alignment
  2766. check enabled and in ring 3.
  2767. #UD #UD #UD #UD If CR0.EM = 1
  2768. #NM #NM #NM #NM If CR0.TS = 1
  2769. #MF #MF #MF #MF If pending FPU Exception
  2770. #13 #13 If any part of the the operand lies outside of
  2771. the EA space from 0 to FFFFH
  2772. ++++++++++++++++++++++++++++++++++++++
  2773. COP & Times:
  2774. PCMPGTW mm,mm/m64 0FH 66H PostByte
  2775. P55C: n/a
  2776. future P6: n/a
  2777. ----------O-PCMPGTW--------------------------------
  2778. OPCODE PCMPGTW - Packed Compare for Greater Than Words
  2779. CPU: all which supported IA MMX:
  2780. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  2781. Type of Instruction: User
  2782. Instruction: PCMPGTW dest,src
  2783. Description:
  2784. IF dest[15..0] > src[15..0]
  2785. THEN
  2786. dest[15..0] <- FFFFH
  2787. ELSE
  2788. dest[15..0] <- 0000H
  2789. IF dest[31..16] > src[31..16]
  2790. THEN
  2791. dest[31..16] <- FFFFH
  2792. ELSE
  2793. dest[31..16] <- 0000H
  2794. IF dest[47..32] > src[47..32]
  2795. THEN
  2796. dest[47..32] <- FFFFH
  2797. ELSE
  2798. dest[47..32] <- 0000H
  2799. IF dest[63..48] > src[63..48]
  2800. THEN
  2801. dest[63..48] <- FFFFH
  2802. ELSE
  2803. dest[63..48] <- 0000H
  2804. Note: Compare packed word in MMX register with packed word in MMXregister/
  2805. memory for greater value.
  2806. Flags affected: None
  2807. Exceptions:
  2808. RM PM VM SMM Description
  2809. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  2810. #SS(0) If illegal memory operand's EA in SS
  2811. #PF(fcode) If page fault
  2812. #AC #AC If unaligned memory reference then alignment
  2813. check enabled and in ring 3.
  2814. #UD #UD #UD #UD If CR0.EM = 1
  2815. #NM #NM #NM #NM If CR0.TS = 1
  2816. #MF #MF #MF #MF If pending FPU Exception
  2817. #13 #13 If any part of the the operand lies outside of
  2818. the EA space from 0 to FFFFH
  2819. ++++++++++++++++++++++++++++++++++++++
  2820. COP & Times:
  2821. PCMPGTW mm,mm/m64 0FH 65H PostByte
  2822. P55C: n/a
  2823. future P6: n/a
  2824. ----------O-PDISTIB----------------------------
  2825. OPCODE PDISTIB - Packed Distance and Accumulate with Implied Register
  2826. CPU: Cyrix with Extended MMX Instruction Set
  2827. Type of Instruction: User
  2828. Instruction: PDISTIB dest, src
  2829. Description:
  2830. dest[7..0] <-
  2831. SaturateToUnsignedByte(dest[7..0] + abs(dest[7..0] - src[7..0]))
  2832. dest[15..8] <-
  2833. SaturateToUnsignedByte(dest[15..8] + abs(dest[15..8] - src[15..8]))
  2834. dest[23..16] <-
  2835. SaturateToUnsignedByte(dest[23..16] + abs(dest[23..16] - src[23..16]))
  2836. dest[31..24] <-
  2837. SaturateToUnsignedByte(dest[31..24] + abs(dest[31..24] - src[31..24]))
  2838. dest[39..32] <-
  2839. SaturateToUnsignedByte(dest[39..32] + abs(dest[39..32] - src[39..32]))
  2840. dest[47..40] <-
  2841. SaturateToUnsignedByte(dest[47..40] + abs(dest[47..40] - src[47..40]))
  2842. dest[55..48] <-
  2843. SaturateToUnsignedByte(dest[55..48] + abs(dest[55..48] - src[55..48]))
  2844. dest[63..56] <-
  2845. SaturateToUnsignedByte(dest[63..56] + abs(dest[63..56] - src[63..56]))
  2846. Notes: The PDISTIB instruction calculates the distance between the
  2847. unsigned bytes of two source operands, adds the result to the
  2848. unsigned byte in the implied destination operand, and saturates the
  2849. result. The result is written to the implied MMX register.
  2850. The DEST must be an MMX register. The SRC must be a 64-bit
  2851. memory operand. The accumulator and destination is an MMX register
  2852. which depends on the DEST.
  2853. Flags Affected: None
  2854. Exceptions:
  2855. RM PM VM SMM Description
  2856. #GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
  2857. #SS(0) If Illegal memory operands EA in SS
  2858. #PF(fcode) If page fault
  2859. #AC #AC If unaligned memory reference then alignment
  2860. check enabled and in ring 3.
  2861. #UD #UD #UD #UD If CR0.EM = 1
  2862. #NM #NM #NM #NM If CR0.TS = 1
  2863. #MF #MF #MF #MF If pending FPU Exception
  2864. #13 #13 If any part of the operand lies outside of the
  2865. EA space from 0 to FFFFH
  2866. ++++++++++++++++++++++++++++++++++
  2867. COP & Times:
  2868. PDISTIB mm,m64 0FH 54H PostByte
  2869. ----------O-PF2ID------------------------------
  2870. OPCODE PF2ID - Convert Packed F.P. to 32-bit Integer
  2871. CPU: AMD-3D
  2872. Type of Instruction: User
  2873. Instruction: PF2ID dest,src
  2874. Description:
  2875. if (src[31..0] > 2^31) then dest[31..0] <- 7FFFFFFFh;
  2876. if (src[31..0] <= -2^31) then dest[31..0] <- 80000000h;
  2877. dest[31..0] <- truncate(src[31..0]);
  2878. if (src[63..32] > 2^31) then dest[63..32] <- 7FFFFFFFh;
  2879. if (src[63..32] <= -2^31) then dest[63..32] <- 80000000h;
  2880. dest[63..32] <- truncate(src[63..32]);
  2881. Flags Affected: None
  2882. ++++++++++++++++++++++++++++++++++
  2883. COP & Times:
  2884. PF2ID mm,mm/m64 0FH 0FH 1DH Postbyte
  2885. ----------O-PFACC------------------------------
  2886. OPCODE PFACC - F.P. Accumulate
  2887. CPU: AMD-3D
  2888. Type of Instruction: User
  2889. Instruction: PFACC dest,src
  2890. Description:
  2891. dest[31..0] <- dest[31..0] + dest[63..32];
  2892. dest[63..32] <- src[31..0] + src [63..32];
  2893. Flags Affected: None
  2894. ++++++++++++++++++++++++++++++++++
  2895. COP & Times:
  2896. PFACC mm,mm/m64 0FH 0FH AEH Postbyte
  2897. ----------O-PFADD------------------------------
  2898. OPCODE PFADD - Packed F.P. Addition
  2899. CPU: AMD-3D
  2900. Type of Instruction: User
  2901. Instruction: PFADD dest,src
  2902. Description:
  2903. dest[31..0] <- dest[31..0] + src[31..0];
  2904. dest[63..32] <- dest[63..32] + src[63..32];
  2905. Flags Affected: None
  2906. ++++++++++++++++++++++++++++++++++
  2907. COP & Times:
  2908. PFADD mm,mm/m64 0FH 0FH 9EH Postbyte
  2909. ----------O-PFCMPEQ----------------------------
  2910. OPCODE PFCMPEQ - Packed F.P. comparson, equal to
  2911. CPU: AMD-3D
  2912. Type of Instruction: User
  2913. Instruction: PFCMPEQ dest,src
  2914. Description:
  2915. if dest[31..0] == src[31..0]
  2916. then dest[31..0] <- FFFFFFFFh
  2917. else dest[31..0] <- 00000000h
  2918. if dest[63..32] == src[63..32]
  2919. then dest[63..32] <- FFFFFFFFh
  2920. else dest[63..32] <- 00000000h
  2921. Flags Affected: None
  2922. ++++++++++++++++++++++++++++++++++
  2923. COP & Times:
  2924. PFCMPEQ mm,mm/m64 0FH 0FH B0H Postbyte
  2925. ----------O-PFCMPGE----------------------------
  2926. OPCODE PFCMPGE - Packed F.P. comparison, greater or equal to
  2927. CPU: AMD-3D
  2928. Type of Instruction: User
  2929. Instruction: PFCMPGE dest,src
  2930. Description:
  2931. if dest[31..0] >= src[31..0]
  2932. then dest[31..0] <- FFFFFFFFh
  2933. else dest[31..0] <- 00000000h
  2934. if dest[63..32] >= src[63..32]
  2935. then dest[63..32] <- FFFFFFFFh
  2936. else dest[63..32] <- 00000000h
  2937. Flags Affected: None
  2938. ++++++++++++++++++++++++++++++++++
  2939. COP & Times:
  2940. PFCMPGE mm,mm/m64 0FH 0FH 90H Postbyte
  2941. ----------O-PFCMPGT----------------------------
  2942. OPCODE PFCMPGT - Packed F.P. compariason, greater to
  2943. CPU: AMD-3D
  2944. Type of Instruction: User
  2945. Instruction: PFCMPGT dest,src
  2946. Description:
  2947. if dest[31..0] > src[31..0]
  2948. then dest[31..0] <- FFFFFFFFh
  2949. else dest[31..0] <- 00000000h
  2950. if dest[63..32] > src[63..32]
  2951. then dest[63..32] <- FFFFFFFFh
  2952. else dest[63..32] <- 00000000h
  2953. Flags Affected: None
  2954. ++++++++++++++++++++++++++++++++++
  2955. COP & Times:
  2956. PFCMPGT mm,mm/m64 0FH 0FH A0H Postbyte
  2957. ----------O-PFMAX------------------------------
  2958. OPCODE PFMAX - Packed F.P. Maximum
  2959. CPU: AMD-3D
  2960. Type of Instruction: User
  2961. Instruction: PFMAX dest,src
  2962. Description:
  2963. if src[31..0] > dest[31..0] then dest[31..0] <- src[31..0];
  2964. if src[63..32] > dest[63..32] then dest[63..32] <- src[63..32];
  2965. Note:
  2966. Flags Affected: None
  2967. ++++++++++++++++++++++++++++++++++
  2968. COP & Times:
  2969. PFMAX mm,mm/m64 0FH 0FH A4H
  2970. ----------O-PFMIN------------------------------
  2971. OPCODE PFMIN - Packed F.P. Minimum
  2972. CPU: AMD-3D
  2973. Type of Instruction: User
  2974. Instruction: PFMIN dest,src
  2975. Description:
  2976. if src[31..0] < dest[31..0] then dest[31..0] <- src[31..0];
  2977. if src[63..32] < dest[63..32] then dest[63..32] <- src[63..32];
  2978. Note:
  2979. Flags Affected: None
  2980. ++++++++++++++++++++++++++++++++++
  2981. COP & Times:
  2982. PFMIN mm,mm/m64 0FH 0FH 94H
  2983. ----------O-PFMUL------------------------------
  2984. OPCODE PFMUL - Packed F.P. Multiplication
  2985. CPU: AMD-3D
  2986. Type of Instruction: User
  2987. Instruction: PFMUL dest,src
  2988. Description:
  2989. dest[31..0] <- dest[31..0] * src[31..0];
  2990. dest[63..32] <- dest[63..32] * src[63..32];
  2991. Flags Affected: None
  2992. ++++++++++++++++++++++++++++++++++
  2993. COP & Times:
  2994. PFMUL mm,mm/m64 0FH 0FH B4H Postbyte
  2995. ----------O-PFRCP------------------------------
  2996. OPCODE PFRCP - F.P. Reciprocal Approximation
  2997. CPU: AMD-3D
  2998. Type of Instruction: User
  2999. Instruction: PFRCP dest,src
  3000. Description:
  3001. dest[31..0] <- Reciprocal(src[31..0]);
  3002. dest[63..32] <- Reciprocal(src[63..32]);
  3003. Note:
  3004. Newton-Raphson algorithm:
  3005. Division
  3006. ----------
  3007. q = a/b;
  3008. X(i+1) = X(i) * (2 - b * X(i));
  3009. X0 = RFRCP(b);
  3010. X1 = RFRCPIT1(b,X0);
  3011. X2 = RFRCPIT2(X1,X0);
  3012. q = PFMUL(a,X2);
  3013. Square Root
  3014. --------------
  3015. X(i+1) = 1/2 * X(i) * (3 - b * X(i)^2);
  3016. X0 = PFRSQRT(b);
  3017. X1 = PFMUL(X0,X0);
  3018. X2 = PFRSQIT(b,X1);
  3019. X3 = PFRCPIT2(X2,X0);
  3020. X4 = PFMUL(b,X3);
  3021. Flags Affected: None
  3022. ++++++++++++++++++++++++++++++++++
  3023. COP & Times:
  3024. PFRCP mm,mm/m64 0FH 0FH 96H Postbyte
  3025. ----------O-PFRCPIT1---------------------------
  3026. OPCODE PFRCPIT1 - Packed F.P. Reciprocal, first iteration Step
  3027. CPU: AMD-3D
  3028. Type of Instruction: User
  3029. Instruction: PFRCIT1 dest,src
  3030. Description:
  3031. dest[31..0] <- First_Step_Reciprocal(src[31..0]);
  3032. dest[63..32] <- First_Step_Reciprocal(src[63..32]);
  3033. Note: see PFRCP for more info.
  3034. Flags Affected: None
  3035. ++++++++++++++++++++++++++++++++++
  3036. COP & Times:
  3037. PFRCIT1 mm,mm/m64 0FH 0FH A6H Postbyte
  3038. ----------O-PFRCPIT2---------------------------
  3039. OPCODE PFRCPIT2 - Packed F.P. Reciprocal, second iteration Step
  3040. CPU: AMD-3D
  3041. Type of Instruction: User
  3042. Instruction: PFRCIT2 dest,src
  3043. Description:
  3044. dest[31..0] <- Second_Step_Reciprocal(src[31..0]);
  3045. dest[63..32] <- Second_Step_Reciprocal(src[63..32]);
  3046. Note: see PFRCP for more info.
  3047. Flags Affected: None
  3048. ++++++++++++++++++++++++++++++++++
  3049. COP & Times:
  3050. PFRCIT2 mm,mm/m64 0FH 0FH B6H Postbyte
  3051. ----------O-PFRSQIT1---------------------------
  3052. OPCODE PFRSQIT1 - Packed F.P. Reciprocal Square Root, 1st iteration step
  3053. CPU: AMD-3D
  3054. Type of Instruction: User
  3055. Instruction: PFRSQIT1 dest,src
  3056. Description:
  3057. dest[31..0] <- First_Step_Reciprocal_Square_Root(src[31..0]);
  3058. dest[63..32] <- First_Step_Reciprocal_Square_Root(src[63..32]);
  3059. Note: see RFRCP for more info
  3060. Flags Affected: None
  3061. ++++++++++++++++++++++++++++++++++
  3062. COP & Times:
  3063. PFRSQIT1 mm,mm/m64 0FH 0FH A7H Postbyte
  3064. ----------O-PFRSQRT----------------------------
  3065. OPCODE PFRSQRT - F.P. Reciprocal Square Root Approximation
  3066. CPU: AMD-3D
  3067. Type of Instruction: User
  3068. Instruction: PFRSQRT dest,src
  3069. Description:
  3070. dest[31..0] <- Reciprocal_Square_Root(src[31..0]);
  3071. dest[63..32] <- Reciprocal_Square_Root(src[63..32]);
  3072. Note: see RFRCP for more info
  3073. Flags Affected: None
  3074. ++++++++++++++++++++++++++++++++++
  3075. COP & Times:
  3076. PFRSQRT mm,mm/m64 0FH 0FH 97H Postbyte
  3077. ----------O-PFSUB------------------------------
  3078. OPCODE PFSUB - Packed F.P. Subtraction
  3079. CPU: AMD-3D
  3080. Type of Instruction: User
  3081. Instruction: PFSUB dest,src
  3082. Description:
  3083. dest[31..0] <- dest[31..0] - src[31..0];
  3084. dest[63..32] <- dest[63..32] - src[63..32];
  3085. Flags Affected: None
  3086. ++++++++++++++++++++++++++++++++++
  3087. COP & Times:
  3088. PFSUB mm,mm/m64 0FH 0FH 9AH Postbyte
  3089. ----------O-PFSUBR-----------------------------
  3090. OPCODE PFSUBR - Packed F.P. Reverse Subtraction
  3091. CPU: AMD-3D
  3092. Type of Instruction: User
  3093. Instruction: PFSUBR dest,src
  3094. Description:
  3095. dest[31..0] <- src[31..0] - dest[31..0];
  3096. dest[63..32] <- src[63..32] - dest[63..32];
  3097. Flags Affected: None
  3098. ++++++++++++++++++++++++++++++++++
  3099. COP & Times:
  3100. PFSUBR mm,mm/m64 0FH 0FH AAH Postbyte
  3101. ----------O-PI2FD------------------------------
  3102. OPCODE PI2FD - Packed 32-bit Integer to F.P. conversion
  3103. CPU: AMD-3D
  3104. Type of Instruction: User
  3105. Instruction: PI2FD dest,src
  3106. Description:
  3107. dest[31..0] <- float(src[31..0]);
  3108. dest[63..32] <- float(src[63..32]);
  3109. Flags Affected: None
  3110. ++++++++++++++++++++++++++++++++++
  3111. COP & Times:
  3112. PI2FD mm,mm/m64 0FH 0FH 0DH Postbyte
  3113. ----------O-PMACHRIW---------------------------
  3114. OPCODE PMACHRIW - Packed Multiply and Accumulate with Rounding
  3115. CPU: Cyrix with Extended MMX Instruction Set
  3116. Type of Instruction: User
  3117. Instruction: PMACHRIW dest, src
  3118. Description:
  3119. dest[15..0] <-
  3120. dest[15..0] + (dest[15..0]*src[15..0] + 00004000H)[30..15]
  3121. dest[31..16] <-
  3122. dest[31..16] + (dest[31..16]*src[31..16] + 00004000H)[30..15]
  3123. dest[47..32] <-
  3124. dest[47..32] + (dest[47..32]*src[47..32] + 00004000H)[30..15]
  3125. dest[63..48] <-
  3126. dest[63..48] + (dest[63..48]*src[63..48] + 00004000H)[30..15]
  3127. Notes: The PMACHRIW multiplies the two source operands using the
  3128. method described for PMULHRW, and then accumulates the result with
  3129. the value in the implied destination register using wrap-around
  3130. arithmetic. The final result is placed in the implied DEST register.
  3131. The DEST must be an MMX register. The SRC must be a 64-bit
  3132. memory operand. The destination operand is an implied MMX register
  3133. that depends on the DEST.
  3134. Flags Affected: None
  3135. Exceptions:
  3136. RM PM VM SMM Description
  3137. #GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
  3138. #SS(0) If Illegal memory operands EA in SS
  3139. #PF(fcode) If page fault
  3140. #AC #AC If unaligned memory reference then alignment
  3141. check enabled and in ring 3.
  3142. #UD #UD #UD #UD If CR0.EM = 1
  3143. #NM #NM #NM #NM If CR0.TS = 1
  3144. #MF #MF #MF #MF If pending FPU Exception
  3145. #13 #13 If any part of the operand lies outside of the
  3146. EA space from 0 to FFFFH
  3147. ++++++++++++++++++++++++++++++++++
  3148. COP & Times:
  3149. PMACHRIW mm,m64 0FH 5EH PostByte
  3150. ----------O-PMADDWD--------------------------------
  3151. OPCODE PMADDWD - Packed Multiply and Add Dwords
  3152. CPU: all which supported IA MMX:
  3153. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3154. Type of Instruction: User
  3155. Instruction: PMADDWD dest,src
  3156. Description:
  3157. dest[31..0] <- dest[15..0] * src[15..0] + dest[31..16] * src[31..16]
  3158. dest[63..32] <- dest[47..32] * src[47..32] + dest[63..48] * src[63..48]
  3159. Note: Multiply the packed word in MMX register by the packed word in
  3160. MMXregister/memory. Add the 32-bit results pairwise and store in MMX
  3161. register as dword.
  3162. This instruction wraps around to 80000000H only when all four words
  3163. of both the source and destination operands are 8000H.
  3164. Flags affected: None
  3165. Exceptions:
  3166. RM PM VM SMM Description
  3167. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3168. #SS(0) If illegal memory operand's EA in SS
  3169. #PF(fcode) If page fault
  3170. #AC #AC If unaligned memory reference then alignment
  3171. check enabled and in ring 3.
  3172. #UD #UD #UD #UD If CR0.EM = 1
  3173. #NM #NM #NM #NM If CR0.TS = 1
  3174. #MF #MF #MF #MF If pending FPU Exception
  3175. #13 #13 If any part of the the operand lies outside of
  3176. the EA space from 0 to FFFFH
  3177. ++++++++++++++++++++++++++++++++++++++
  3178. COP & Times:
  3179. PMADDWD mm,mm/m64 0FH F5H PostByte
  3180. P55C: n/a
  3181. future P6: n/a
  3182. ----------O-PMAGW------------------------------
  3183. OPCODE PMAGW - Packed Magnitude
  3184. CPU: Cyrix with Extended MMX Instruction Set
  3185. Type of Instruction: User
  3186. Instruction: PMAGW dest, src
  3187. Description:
  3188. IF abs(src[15..0]) > abs(dest[15..0]) THEN dest[15..] <-src[15..0]
  3189. IF abs(src[31..16]) > abs(dest[31..16]) THEN dest[31..16]<-src[31..16]
  3190. IF abs(src[47..32]) > abs(dest[47..32]) THEN dest[47..32]<-src[47..32]
  3191. IF abs(src[63..56]) > abs(dest[63..56]) THEN dest[63..56]<-src[63..56]
  3192. Notes: The PMAGW instruction compares the absolute value of the
  3193. packed words in the destination operand and sets the destination words
  3194. to the value that has the larger magnitude. The PMAGW instruction
  3195. does not change the sign of the value with the larger magnitude and
  3196. it does not saturate.
  3197. The DEST must be an MMX register. The SRC can be either an MMX
  3198. register or a 64-bit memory operand.
  3199. Flags Affected: None
  3200. Exceptions:
  3201. RM PM VM SMM Description
  3202. #GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
  3203. #SS(0) If Illegal memory operands EA in SS
  3204. #PF(fcode) If page fault
  3205. #AC #AC If unaligned memory reference then alignment
  3206. check enabled and in ring 3.
  3207. #UD #UD #UD #UD If CR0.EM = 1
  3208. #NM #NM #NM #NM If CR0.TS = 1
  3209. #MF #MF #MF #MF If pending FPU Exception
  3210. #13 #13 If any part of the operand lies outside of the
  3211. EA space from 0 to FFFFH
  3212. ++++++++++++++++++++++++++++++++++
  3213. COP & Times:
  3214. PMAGW mm,mm/m64 0FH 52H PostByte
  3215. ----------O-PMULHRIW---------------------------
  3216. OPCODE PMULHRIW - Packed Multiply High with Rounding, result to Implied Register
  3217. CPU: Cyrix with Extended MMX Instruction Set
  3218. Type of Instruction: User
  3219. Instruction: PMULHRIW dest, src
  3220. Description:
  3221. mmi[15..0] <- (dest[15..0]*src[15..0] + 00004000H)[30..15]
  3222. mmi[31..16] <- (dest[31..16]*src[31..16] + 00004000H)[30..15]
  3223. mmi[47..32] <- (dest[47..32]*src[47..32] + 00004000H)[30..15]
  3224. mmi[63..48] <- (dest[63..48]*src[63..48] + 00004000H)[30..15]
  3225. Notes: The PMULHRIW instruction are intended to give a result of the
  3226. form a 16x16 bit multiply with the LSB rounded before truncating to 16
  3227. bits.
  3228. The SRC can be either an MMX register or a 64-bit memory
  3229. operand. The destination is an MMX register, depending on the SRC.
  3230. The intent of the PMULHRIW instruction is the same as the PMULHRW
  3231. instrucction except that both sources are preserved
  3232. Flags Affected: None
  3233. Exceptions:
  3234. RM PM VM SMM Description
  3235. #GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
  3236. #SS(0) If Illegal memory operands EA in SS
  3237. #PF(fcode) If page fault
  3238. #AC #AC If unaligned memory reference then alignment
  3239. check enabled and in ring 3.
  3240. #UD #UD #UD #UD If CR0.EM = 1
  3241. #NM #NM #NM #NM If CR0.TS = 1
  3242. #MF #MF #MF #MF If pending FPU Exception
  3243. #13 #13 If any part of the operand lies outside of the
  3244. EA space from 0 to FFFFH
  3245. ++++++++++++++++++++++++++++++++++
  3246. COP & Times:
  3247. PMULHRIW mm,mm/m64 0FH 5DH PostByte
  3248. ----------O-PMULHRW----------------------------
  3249. OPCODE PMULHRW - Packed Multiply High with Rounding
  3250. CPU: Cyrix with Extended MMX Instruction Set
  3251. Type of Instruction: User
  3252. Instruction: PMULHRW dest, src
  3253. Description:
  3254. dest[15..0] <- (dest[15..0]*src[15..0] + 00004000H)[30..15]
  3255. dest[31..16] <- (dest[31..16]*src[31..16] + 00004000H)[30..15]
  3256. dest[47..32] <- (dest[47..32]*src[47..32] + 00004000H)[30..15]
  3257. dest[63..48] <- (dest[63..48]*src[63..48] + 00004000H)[30..15]
  3258. Notes: The PMULHRW instruction are intended to give a result of the
  3259. form a 16x16 bit multiply with the LSB rounded before truncating to 16
  3260. bits. This is in contrast to the PMULHW instruction which gives a
  3261. resultof the form ss.14 with no rounding.
  3262. as the PADDSW instruction, except that it preserves both source
  3263. operands.
  3264. The SRC can be either an MMX register or a 64-bit memory
  3265. operand. The destination is an MMX register.
  3266. Flags Affected: None
  3267. Exceptions:
  3268. RM PM VM SMM Description
  3269. #GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
  3270. #SS(0) If Illegal memory operands EA in SS
  3271. #PF(fcode) If page fault
  3272. #AC #AC If unaligned memory reference then alignment
  3273. check enabled and in ring 3.
  3274. #UD #UD #UD #UD If CR0.EM = 1
  3275. #NM #NM #NM #NM If CR0.TS = 1
  3276. #MF #MF #MF #MF If pending FPU Exception
  3277. #13 #13 If any part of the operand lies outside of the
  3278. EA space from 0 to FFFFH
  3279. ++++++++++++++++++++++++++++++++++
  3280. COP & Times:
  3281. PMULHRW mm,mm/m64 0FH 59H PostByte
  3282. ----------O-PMULHRW----------------------------
  3283. OPCODE PMULHRW - Multiply Signed Packed 16-bits with rounding and store to 16bit
  3284. CPU: AMD-3D
  3285. Type of Instruction: User
  3286. Instruction: PMULHRW dest,src
  3287. Description:
  3288. dest[15..0] <- dest[15..0] * src[15..0];
  3289. dest[31..16] <- dest[31..16] * src[31..16];
  3290. dest[47..32] <- dest[47..32] * src[47..32];
  3291. dest[63..48] <- dest[63..48] * src[63..48];
  3292. Note: Saturation arithmetic.
  3293. This is not F.P. instruction
  3294. Flags Affected: None
  3295. ++++++++++++++++++++++++++++++++++
  3296. COP & Times:
  3297. PMULHRW mm,mm/m64 0FH 0FH B7H Postvyte
  3298. ----------O-PMULHW---------------------------------
  3299. OPCODE PMULHW - Packed Multiply High by Words
  3300. CPU: all which supported IA MMX:
  3301. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3302. Type of Instruction: User
  3303. Instruction: PMULHW dest,src
  3304. Description:
  3305. dest[15..0] <- (dest[15..0] * src[15..0]) (31..16)
  3306. dest[31..16] <- (dest[31..16] * src[31..16]) (31..16)
  3307. dest[47..32] <- (dest[47..32] * src[47..32]) (31..16)
  3308. dest[63..48] <- (dest[63..48] * src[63..48]) (31..16)
  3309. Note: Multiply the signed packed word in MMX register with the signed
  3310. packed word in MMXregister/memory, then store the high-order 16 bits of
  3311. the results in MMX register.
  3312. Flags affected: None
  3313. Exceptions:
  3314. RM PM VM SMM Description
  3315. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3316. #SS(0) If illegal memory operand's EA in SS
  3317. #PF(fcode) If page fault
  3318. #AC #AC If unaligned memory reference then alignment
  3319. check enabled and in ring 3.
  3320. #UD #UD #UD #UD If CR0.EM = 1
  3321. #NM #NM #NM #NM If CR0.TS = 1
  3322. #MF #MF #MF #MF If pending FPU Exception
  3323. #13 #13 If any part of the the operand lies outside of
  3324. the EA space from 0 to FFFFH
  3325. ++++++++++++++++++++++++++++++++++++++
  3326. COP & Times:
  3327. PMULHW mm,mm/m64 0FH E5H PostByte
  3328. P55C: n/a
  3329. future P6: n/a
  3330. ----------O-PMULLW---------------------------------
  3331. OPCODE PMULLW - Packed Multiply Low by Words
  3332. CPU: all which supported IA MMX:
  3333. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3334. Type of Instruction: User
  3335. Instruction: PMULLW dest,src
  3336. Description:
  3337. dest[15..0] <- (dest[15..0] * src[15..0]) (15..0)
  3338. dest[31..16] <- (dest[31..16] * src[31..16]) (15..0)
  3339. dest[47..32] <- (dest[47..32] * src[47..32]) (15..0)
  3340. dest[63..48] <- (dest[63..48] * src[63..48]) (15..0)
  3341. Note: Multiply the packed word in MMX register with the packed word in
  3342. MMXregister/memory, then store the low-order 16 bits of the results in
  3343. MMX register.
  3344. Flags affected: None
  3345. Exceptions:
  3346. RM PM VM SMM Description
  3347. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3348. #SS(0) If illegal memory operand's EA in SS
  3349. #PF(fcode) If page fault
  3350. #AC #AC If unaligned memory reference then alignment
  3351. check enabled and in ring 3.
  3352. #UD #UD #UD #UD If CR0.EM = 1
  3353. #NM #NM #NM #NM If CR0.TS = 1
  3354. #MF #MF #MF #MF If pending FPU Exception
  3355. #13 #13 If any part of the the operand lies outside of
  3356. the EA space from 0 to FFFFH
  3357. ++++++++++++++++++++++++++++++++++++++
  3358. COP & Times:
  3359. PMULLW mm,mm/m64 0FH D5H PostByte
  3360. P55C: n/a
  3361. future P6: n/a
  3362. ----------O-PMVGEZB----------------------------
  3363. OPCODE PMVGEZB - Packed Conditional Move
  3364. CPU: Cyrix with Extended MMX Instruction Set
  3365. Type of Instruction: User
  3366. Instruction: PMVGEZB dest, src
  3367. Description:
  3368. if mmi[7..0] >= 0 then dest[7..0] <- src[7..0];
  3369. if mmi[15..8] >= 0 then dest[15..8] <- src[15..8];
  3370. if mmi[23..16] >= 0 then dest[23..16] <- src[23..16];
  3371. if mmi[31..24] >= 0 then dest[31..24] <- src[31..24];
  3372. if mmi[39..32] >= 0 then dest[39..32] <- src[39..32];
  3373. if mmi[47..40] >= 0 then dest[47..40] <- src[47..40];
  3374. if mmi[55..48] >= 0 then dest[55..48] <- src[55..48];
  3375. if mmi[63..56] >= 0 then dest[63..56] <- src[63..56];
  3376. Note: mmi is implied MMX register.
  3377. Flags Affected: None
  3378. ++++++++++++++++++++++++++++++++++
  3379. COP & Times:
  3380. PMVGEZB mm,mm/m64 0FH 5CH PostByte
  3381. ----------O-PMVLZB-----------------------------
  3382. OPCODE PMVLZB - Packed Conditional Move
  3383. CPU: Cyrix with Extended MMX Instruction Set
  3384. Type of Instruction: User
  3385. Instruction: PMVLZB dest, src
  3386. Description:
  3387. if mmi[7..0] < 0 then dest[7..0] <- src[7..0];
  3388. if mmi[15..8] < 0 then dest[15..8] <- src[15..8];
  3389. if mmi[23..16] < 0 then dest[23..16] <- src[23..16];
  3390. if mmi[31..24] < 0 then dest[31..24] <- src[31..24];
  3391. if mmi[39..32] < 0 then dest[39..32] <- src[39..32];
  3392. if mmi[47..40] < 0 then dest[47..40] <- src[47..40];
  3393. if mmi[55..48] < 0 then dest[55..48] <- src[55..48];
  3394. if mmi[63..56] < 0 then dest[63..56] <- src[63..56];
  3395. Note: mmi is implied MMX register.
  3396. Flags Affected: None
  3397. ++++++++++++++++++++++++++++++++++
  3398. COP & Times:
  3399. PMVLZB mm,mm/m64 0FH 5BH PostByte
  3400. ----------O-PMVNZB-----------------------------
  3401. OPCODE PMVNZB - Packed Conditional Move
  3402. CPU: Cyrix with Extended MMX Instruction Set
  3403. Type of Instruction: User
  3404. Instruction: PMVNZB dest, src
  3405. Description:
  3406. if mmi[7..0] <> 0 then dest[7..0] <- src[7..0];
  3407. if mmi[15..8] <> 0 then dest[15..8] <- src[15..8];
  3408. if mmi[23..16] <> 0 then dest[23..16] <- src[23..16];
  3409. if mmi[31..24] <> 0 then dest[31..24] <- src[31..24];
  3410. if mmi[39..32] <> 0 then dest[39..32] <- src[39..32];
  3411. if mmi[47..40] <> 0 then dest[47..40] <- src[47..40];
  3412. if mmi[55..48] <> 0 then dest[55..48] <- src[55..48];
  3413. if mmi[63..56] <> 0 then dest[63..56] <- src[63..56];
  3414. Note: mmi is implied MMX register.
  3415. Flags Affected: None
  3416. ++++++++++++++++++++++++++++++++++
  3417. COP & Times:
  3418. PMVNZB mm,mm/m64 0FH 5AH PostByte
  3419. ----------O-PMVZB------------------------------
  3420. OPCODE PMVZB - Packed Conditional Move
  3421. CPU: Cyrix with Extended MMX Instruction Set
  3422. Type of Instruction: User
  3423. Instruction: PMVZB dest, src
  3424. Description:
  3425. if mmi[7..0] == 0 then dest[7..0] <- src[7..0];
  3426. if mmi[15..8] == 0 then dest[15..8] <- src[15..8];
  3427. if mmi[23..16] == 0 then dest[23..16] <- src[23..16];
  3428. if mmi[31..24] == 0 then dest[31..24] <- src[31..24];
  3429. if mmi[39..32] == 0 then dest[39..32] <- src[39..32];
  3430. if mmi[47..40] == 0 then dest[47..40] <- src[47..40];
  3431. if mmi[55..48] == 0 then dest[55..48] <- src[55..48];
  3432. if mmi[63..56] == 0 then dest[63..56] <- src[63..56];
  3433. Note: mmi is implied MMX register.
  3434. Flags Affected: None
  3435. ++++++++++++++++++++++++++++++++++
  3436. COP & Times:
  3437. PMVZB mm,mm/m64 0FH 58H PostByte
  3438. ----------O-POR------------------------------------
  3439. OPCODE POR - Bitwise Logical Or
  3440. CPU: all which supported IA MMX:
  3441. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3442. Type of Instruction: User
  3443. Instruction: POR dest,src
  3444. Description:
  3445. dest <- dest OR src
  3446. Note: OR 64 bits from MMXregister/memory with MMX register.
  3447. Flags affected: None
  3448. Exceptions:
  3449. RM PM VM SMM Description
  3450. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3451. #SS(0) If illegal memory operand's EA in SS
  3452. #PF(fcode) If page fault
  3453. #AC #AC If unaligned memory reference then alignment
  3454. check enabled and in ring 3.
  3455. #UD #UD #UD #UD If CR0.EM = 1
  3456. #NM #NM #NM #NM If CR0.TS = 1
  3457. #MF #MF #MF #MF If pending FPU Exception
  3458. #13 #13 If any part of the the operand lies outside of
  3459. the EA space from 0 to FFFFH
  3460. ++++++++++++++++++++++++++++++++++++++
  3461. COP & Times:
  3462. POR mm,mm/m64 0FH EBH PostByte
  3463. P55C: n/a
  3464. future P6: n/a
  3465. ----------O-PREFETCH---------------------------
  3466. OPCODE PREFETCH - Prefetch CPU cache line into L1 data cache
  3467. CPU: AMD-3D
  3468. Type of Instruction: User
  3469. Instruction: PREFETCH mem
  3470. Description:
  3471. PRELOAD_L1_DATA_CACHE_LINE(mem);
  3472. SET_LINE_STATE_TO_EXCLUSIVE; (MESI)
  3473. Note: If cache hit, then do nothing.
  3474. mem - is address of any cache-line byte.
  3475. Flags Affected: None
  3476. ++++++++++++++++++++++++++++++++++
  3477. COP & Times:
  3478. PREFETCH mem8 0FH 0DH mm000xxx
  3479. ----------O-PREFETCHW--------------------------
  3480. OPCODE PREFETCHW - Prefetch CPU cache line into L1 data cache
  3481. CPU: AMD-3D
  3482. Type of Instruction: User
  3483. Instruction: PREFETCHW mem
  3484. Description:
  3485. PRELOAD_L1_DATA_CACHE_LINE(mem);
  3486. SET_LINE_STATE_TO_MODIFIED; (MESI)
  3487. Note: If cache hit, then do nothing.
  3488. mem - is address of any cache-line byte.
  3489. Flags Affected: None
  3490. ++++++++++++++++++++++++++++++++++
  3491. COP & Times:
  3492. PREFETCHW mem8 0FH 0DH mm001xxx
  3493. ----------O-PSLLD----------------------------------
  3494. OPCODE PSLLD - Packed Shift Left Logical Dwords
  3495. CPU: all which supported IA MMX:
  3496. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3497. Type of Instruction: User
  3498. Instruction: PSLLD dest,src
  3499. Description:
  3500. temp <- src
  3501. dest[31..0] <- dest[31..0] << temp
  3502. dest[63..32] <- dest[63..32] << temp
  3503. Note: Shift dwords in MMX register left by Imm8 or amount specified in MMX
  3504. register/memory, while shifting in zeros.
  3505. Flags affected: None
  3506. Exceptions:
  3507. RM PM VM SMM Description
  3508. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3509. #SS(0) If illegal memory operand's EA in SS
  3510. #PF(fcode) If page fault
  3511. #AC #AC If unaligned memory reference then alignment
  3512. check enabled and in ring 3.
  3513. #UD #UD #UD #UD If CR0.EM = 1
  3514. #NM #NM #NM #NM If CR0.TS = 1
  3515. #MF #MF #MF #MF If pending FPU Exception
  3516. #13 #13 If any part of the the operand lies outside of
  3517. the EA space from 0 to FFFFH
  3518. ++++++++++++++++++++++++++++++++++++++
  3519. COP & Times:
  3520. PSLLD mm,mm/m64 0FH F2H PostByte
  3521. PSLLD mm,Imm8 0FH 72H/6 PostByte ImmData
  3522. P55C: n/a
  3523. future P6: n/a
  3524. ----------O-PSLLQ----------------------------------
  3525. OPCODE PSLLQ - Packed Shift Left Logical Qwords
  3526. CPU: all which supported IA MMX:
  3527. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3528. Type of Instruction: User
  3529. Instruction: PSLLQ dest,src
  3530. Description:
  3531. temp <- src
  3532. dest <- dest << temp
  3533. Note: Shift MMX register left by Imm8 or amount specified in MMXregister/
  3534. /memory, while shifting in zeros.
  3535. Flags affected: None
  3536. Exceptions:
  3537. RM PM VM SMM Description
  3538. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3539. #SS(0) If illegal memory operand's EA in SS
  3540. #PF(fcode) If page fault
  3541. #AC #AC If unaligned memory reference then alignment
  3542. check enabled and in ring 3.
  3543. #UD #UD #UD #UD If CR0.EM = 1
  3544. #NM #NM #NM #NM If CR0.TS = 1
  3545. #MF #MF #MF #MF If pending FPU Exception
  3546. #13 #13 If any part of the the operand lies outside of
  3547. the EA space from 0 to FFFFH
  3548. ++++++++++++++++++++++++++++++++++++++
  3549. COP & Times:
  3550. PSLLQ mm,mm/m64 0FH F3H PostByte
  3551. PSLLQ mm,Imm8 0FH 73H/6 PostByte ImmData
  3552. P55C: n/a
  3553. future P6: n/a
  3554. ----------O-PSLLW----------------------------------
  3555. OPCODE PSLLW - Packed Shift Left Logical Words
  3556. CPU: all which supported IA MMX:
  3557. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3558. Type of Instruction: User
  3559. Instruction: PSLLW dest,src
  3560. Description:
  3561. temp <- src
  3562. dest[15..0] <- dest[15..0] << temp
  3563. dest[31..16] <- dest[31..16] << temp
  3564. dest[47..32] <- dest[47..32] << temp
  3565. dest[63..48] <- dest[63..48] << temp
  3566. Note: Shift words in MMX register left by Imm8 or amount specified in MMX
  3567. register/memory, while shifting in zeros.
  3568. Flags affected: None
  3569. Exceptions:
  3570. RM PM VM SMM Description
  3571. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3572. #SS(0) If illegal memory operand's EA in SS
  3573. #PF(fcode) If page fault
  3574. #AC #AC If unaligned memory reference then alignment
  3575. check enabled and in ring 3.
  3576. #UD #UD #UD #UD If CR0.EM = 1
  3577. #NM #NM #NM #NM If CR0.TS = 1
  3578. #MF #MF #MF #MF If pending FPU Exception
  3579. #13 #13 If any part of the the operand lies outside of
  3580. the EA space from 0 to FFFFH
  3581. ++++++++++++++++++++++++++++++++++++++
  3582. COP & Times:
  3583. PSLLW mm,mm/m64 0FH F1H PostByte
  3584. PSLLW mm,Imm8 0FH 71H/6 PostByte ImmData
  3585. P55C: n/a
  3586. future P6: n/a
  3587. ----------O-PSRAD----------------------------------
  3588. OPCODE PSRAD - Packed Shift Right Arithmetic Dwords
  3589. CPU: all which supported IA MMX:
  3590. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3591. Type of Instruction: User
  3592. Instruction: PSRAD dest,src
  3593. Description:
  3594. temp <- src
  3595. dest[31..0] <- SignExtend(dest[31..0]) >> temp
  3596. dest[63..32] <- SignExtend(dest[63..32]) >> temp
  3597. Note: Shift dwords in MMX register right by Imm8 or amount specified in MMX
  3598. register/memory, while shifting in sign bits.
  3599. Flags affected: None
  3600. Exceptions:
  3601. RM PM VM SMM Description
  3602. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3603. #SS(0) If illegal memory operand's EA in SS
  3604. #PF(fcode) If page fault
  3605. #AC #AC If unaligned memory reference then alignment
  3606. check enabled and in ring 3.
  3607. #UD #UD #UD #UD If CR0.EM = 1
  3608. #NM #NM #NM #NM If CR0.TS = 1
  3609. #MF #MF #MF #MF If pending FPU Exception
  3610. #13 #13 If any part of the the operand lies outside of
  3611. the EA space from 0 to FFFFH
  3612. ++++++++++++++++++++++++++++++++++++++
  3613. COP & Times:
  3614. PSRAD mm,mm/m64 0FH E2H PostByte
  3615. PSRAD mm,Imm8 0FH 72H/4 PostByte ImmData
  3616. P55C: n/a
  3617. future P6: n/a
  3618. ----------O-PSRAW----------------------------------
  3619. OPCODE PSRAW - Packed Shift Right Arithmetic Words
  3620. CPU: all which supported IA MMX:
  3621. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3622. Type of Instruction: User
  3623. Instruction: PSRAW dest,src
  3624. Description:
  3625. temp <- src
  3626. dest[15..0] <- SignExtend(dest[15..0]) >> temp
  3627. dest[31..16] <- SignExtend(dest[31..16]) >> temp
  3628. dest[47..32] <- SignExtend(dest[47..32]) >> temp
  3629. dest[63..48] <- SignExtend(dest[63..48]) >> temp
  3630. Note: Shift words in MMX register right by Imm8 or amount specified in MMX
  3631. register/memory, while shifting in sign bits.
  3632. Flags affected: None
  3633. Exceptions:
  3634. RM PM VM SMM Description
  3635. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3636. #SS(0) If illegal memory operand's EA in SS
  3637. #PF(fcode) If page fault
  3638. #AC #AC If unaligned memory reference then alignment
  3639. check enabled and in ring 3.
  3640. #UD #UD #UD #UD If CR0.EM = 1
  3641. #NM #NM #NM #NM If CR0.TS = 1
  3642. #MF #MF #MF #MF If pending FPU Exception
  3643. #13 #13 If any part of the the operand lies outside of
  3644. the EA space from 0 to FFFFH
  3645. ++++++++++++++++++++++++++++++++++++++
  3646. COP & Times:
  3647. PSRAW mm,mm/m64 0FH E1H PostByte
  3648. PSRAW mm,Imm8 0FH 71H/4 PostByte ImmData
  3649. P55C: n/a
  3650. future P6: n/a
  3651. ----------O-PSRLD----------------------------------
  3652. OPCODE PSRLD - Packed Shift Right Logical Dwords
  3653. CPU: all which supported IA MMX:
  3654. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3655. Type of Instruction: User
  3656. Instruction: PSRLD dest,src
  3657. Description:
  3658. temp <- src
  3659. dest[31..0] <- dest[31..0] >> temp
  3660. dest[63..32] <- dest[63..32] >> temp
  3661. Note: Shift dwords in MMX register right by Imm8 or amount specified in MMX
  3662. register/memory, while shifting in zeros.
  3663. Flags affected: None
  3664. Exceptions:
  3665. RM PM VM SMM Description
  3666. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3667. #SS(0) If illegal memory operand's EA in SS
  3668. #PF(fcode) If page fault
  3669. #AC #AC If unaligned memory reference then alignment
  3670. check enabled and in ring 3.
  3671. #UD #UD #UD #UD If CR0.EM = 1
  3672. #NM #NM #NM #NM If CR0.TS = 1
  3673. #MF #MF #MF #MF If pending FPU Exception
  3674. #13 #13 If any part of the the operand lies outside of
  3675. the EA space from 0 to FFFFH
  3676. ++++++++++++++++++++++++++++++++++++++
  3677. COP & Times:
  3678. PSRLD mm,mm/m64 0FH D2H PostByte
  3679. PSRLD mm,Imm8 0FH 72H/2 PostByte ImmData
  3680. P55C: n/a
  3681. future P6: n/a
  3682. ----------O-PSRLQ----------------------------------
  3683. OPCODE PSRLQ - Packed Shift Right Logical Qwords
  3684. CPU: all which supported IA MMX:
  3685. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3686. Type of Instruction: User
  3687. Instruction: PSRLQ dest,src
  3688. Description:
  3689. temp <- src
  3690. dest <- dest >> temp
  3691. Note: Shift MMX register right by Imm8 or amount specified in MMXregister/
  3692. /memory, while shifting in zeros.
  3693. Flags affected: None
  3694. Exceptions:
  3695. RM PM VM SMM Description
  3696. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3697. #SS(0) If illegal memory operand's EA in SS
  3698. #PF(fcode) If page fault
  3699. #AC #AC If unaligned memory reference then alignment
  3700. check enabled and in ring 3.
  3701. #UD #UD #UD #UD If CR0.EM = 1
  3702. #NM #NM #NM #NM If CR0.TS = 1
  3703. #MF #MF #MF #MF If pending FPU Exception
  3704. #13 #13 If any part of the the operand lies outside of
  3705. the EA space from 0 to FFFFH
  3706. ++++++++++++++++++++++++++++++++++++++
  3707. COP & Times:
  3708. PSRLQ mm,mm/m64 0FH D3H PostByte
  3709. PSRLQ mm,Imm8 0FH 73H/2 PostByte ImmData
  3710. P55C: n/a
  3711. future P6: n/a
  3712. ----------O-PSRLW----------------------------------
  3713. OPCODE PSRLW - Packed Shift Right Logical Words
  3714. CPU: all which supported IA MMX:
  3715. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3716. Type of Instruction: User
  3717. Instruction: PSRLW dest,src
  3718. Description:
  3719. temp <- src
  3720. dest[15..0] <- dest[15..0] >> temp
  3721. dest[31..16] <- dest[31..16] >> temp
  3722. dest[47..32] <- dest[47..32] >> temp
  3723. dest[63..48] <- dest[63..48] >> temp
  3724. Note: Shift words in MMX register right by Imm8 or amount specified in MMX
  3725. register/memory, while shifting in zeros.
  3726. Flags affected: None
  3727. Exceptions:
  3728. RM PM VM SMM Description
  3729. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3730. #SS(0) If illegal memory operand's EA in SS
  3731. #PF(fcode) If page fault
  3732. #AC #AC If unaligned memory reference then alignment
  3733. check enabled and in ring 3.
  3734. #UD #UD #UD #UD If CR0.EM = 1
  3735. #NM #NM #NM #NM If CR0.TS = 1
  3736. #MF #MF #MF #MF If pending FPU Exception
  3737. #13 #13 If any part of the the operand lies outside of
  3738. the EA space from 0 to FFFFH
  3739. ++++++++++++++++++++++++++++++++++++++
  3740. COP & Times:
  3741. PSRLW mm,mm/m64 0FH D1H PostByte
  3742. PSRLW mm,Imm8 0FH 71H/2 PostByte ImmData
  3743. P55C: n/a
  3744. future P6: n/a
  3745. ----------O-PSUBB----------------------------------
  3746. OPCODE PSUBB - Packed Subtract Bytes
  3747. CPU: all which supported IA MMX:
  3748. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3749. Type of Instruction: User
  3750. Instruction: PSUBB dest,src
  3751. Description:
  3752. dest[7..0] <- dest[7..0] - src[7..0]
  3753. dest[15..8] <- dest[15..8] - src[15..8]
  3754. dest[23..16] <- dest[23..16] - src[23..16]
  3755. dest[31..24] <- dest[31..24] - src[31..24]
  3756. dest[39..32] <- dest[39..32] - src[39..32]
  3757. dest[47..40] <- dest[47..40] - src[47..40]
  3758. dest[55..48] <- dest[55..48] - src[55..48]
  3759. dest[63..56] <- dest[63..56] - src[63..56]
  3760. Note: This instruction subtract packed byte in MMXregister/memory from
  3761. packed byte in MMX register.
  3762. Flags affected: None
  3763. Exceptions:
  3764. RM PM VM SMM Description
  3765. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3766. #SS(0) If illegal memory operand's EA in SS
  3767. #PF(fcode) If page fault
  3768. #AC #AC If unaligned memory reference then alignment
  3769. check enabled and in ring 3.
  3770. #UD #UD #UD #UD If CR0.EM = 1
  3771. #NM #NM #NM #NM If CR0.TS = 1
  3772. #MF #MF #MF #MF If pending FPU Exception
  3773. #13 #13 If any part of the the operand lies outside of
  3774. the EA space from 0 to FFFFH
  3775. ++++++++++++++++++++++++++++++++++++++
  3776. COP & Times:
  3777. PSUBB mm,mm/m64 0FH F8H PostByte
  3778. P55C: n/a
  3779. future P6: n/a
  3780. ----------O-PSUBD----------------------------------
  3781. OPCODE PSUBD - Packed Subtract Dwords
  3782. CPU: all which supported IA MMX:
  3783. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3784. Type of Instruction: User
  3785. Instruction: PSUBD dest,src
  3786. Description:
  3787. dest[31..0] <- dest[31..0] - src[31..0]
  3788. dest[63..32] <- dest[63..48] - src[63..32]
  3789. Note: This instruction subtract packed dword in MMXregister/memory from
  3790. packed dword in MMX register.
  3791. Flags affected: None
  3792. Exceptions:
  3793. RM PM VM SMM Description
  3794. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3795. #SS(0) If illegal memory operand's EA in SS
  3796. #PF(fcode) If page fault
  3797. #AC #AC If unaligned memory reference then alignment
  3798. check enabled and in ring 3.
  3799. #UD #UD #UD #UD If CR0.EM = 1
  3800. #NM #NM #NM #NM If CR0.TS = 1
  3801. #MF #MF #MF #MF If pending FPU Exception
  3802. #13 #13 If any part of the the operand lies outside of
  3803. the EA space from 0 to FFFFH
  3804. ++++++++++++++++++++++++++++++++++++++
  3805. COP & Times:
  3806. PSUBD mm,mm/m64 0FH FAH PostByte
  3807. P55C: n/a
  3808. future P6: n/a
  3809. ----------O-PSUBSB---------------------------------
  3810. OPCODE PSUBSB - Packed Subtract with Saturation Bytes
  3811. CPU: all which supported IA MMX:
  3812. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3813. Type of Instruction: User
  3814. Instruction: PSUBSB dest,src
  3815. Description:
  3816. dest[7..0] <- SaturateToSignedByte(dest[7..0] - src[7..0])
  3817. dest[15..8] <- SaturateToSignedByte(dest[15..8] - src[15..8])
  3818. dest[23..16] <- SaturateToSignedByte(dest[23..16] - src[23..16])
  3819. dest[31..24] <- SaturateToSignedByte(dest[31..24] - src[31..24])
  3820. dest[39..32] <- SaturateToSignedByte(dest[39..32] - src[39..32])
  3821. dest[47..40] <- SaturateToSignedByte(dest[47..40] - src[47..40])
  3822. dest[55..48] <- SaturateToSignedByte(dest[55..48] - src[55..48])
  3823. dest[63..56] <- SaturateToSignedByte(dest[63..56] - src[63..56])
  3824. Note: This instruction subtract signed packed byte in MMXregister/memory
  3825. from signed packed byte in MMX register and saturate.
  3826. If the result is larger or smaller than the range of a signed byte,
  3827. the value is saturated; in the case of an overflow - to 7FH, and the
  3828. case of an underflow - to 80H
  3829. Flags affected: None
  3830. Exceptions:
  3831. RM PM VM SMM Description
  3832. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3833. #SS(0) If illegal memory operand's EA in SS
  3834. #PF(fcode) If page fault
  3835. #AC #AC If unaligned memory reference then alignment
  3836. check enabled and in ring 3.
  3837. #UD #UD #UD #UD If CR0.EM = 1
  3838. #NM #NM #NM #NM If CR0.TS = 1
  3839. #MF #MF #MF #MF If pending FPU Exception
  3840. #13 #13 If any part of the the operand lies outside of
  3841. the EA space from 0 to FFFFH
  3842. ++++++++++++++++++++++++++++++++++++++
  3843. COP & Times:
  3844. PSUBSB mm,mm/m64 0FH E8H PostByte
  3845. P55C: n/a
  3846. future P6: n/a
  3847. ----------O-PSUBSIW----------------------------
  3848. OPCODE PSUBSIW - Packed Subtract with Saturation, using Implied Destination
  3849. CPU: Cyrix with Extended MMX Instruction Set
  3850. Type of Instruction: User
  3851. Instruction: PSUBSIW dest, src
  3852. Description:
  3853. mmi[15..0] <- SaturateToSignedWord(dest[15..0] - src[15..0]);
  3854. mmi[31..16] <- SaturateToSignedWord(dest[31..16] - src[31..16]);
  3855. mmi[47..32] <- SaturateToSignedWord(dest[47..32] - src[47..32]);
  3856. mmi[63..48] <- SaturateToSignedWord(dest[63..48] - src[63..48]);
  3857. Note: mmi is implied MMX register.
  3858. Flags Affected: None
  3859. ++++++++++++++++++++++++++++++++++
  3860. COP & Times:
  3861. PSUBSIW mm,mm/m64 0FH 55H PostByte
  3862. ----------O-PSUBSW---------------------------------
  3863. OPCODE PSUBSW - Packed Subtract with Saturation Words
  3864. CPU: all which supported IA MMX:
  3865. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3866. Type of Instruction: User
  3867. Instruction: PSUBSW dest,src
  3868. Description:
  3869. dest[15..0] <- SaturateToSignedWord(dest[15..0] - src[15..0])
  3870. dest[31..16] <- SaturateToSignedWord(dest[31..16] - src[31..16])
  3871. dest[47..32] <- SaturateToSignedWord(dest[47..32] - src[47..32])
  3872. dest[63..48] <- SaturateToSignedWord(dest[63..48] - src[63..48])
  3873. Note: This instruction subtract signed packed word in MMXregister/memory
  3874. from signed packed word in MMX register and saturate.
  3875. If the result is larger or smaller than the range of a signed word,
  3876. the value is saturated; in the case of an overflow - to 7FFFH, and the
  3877. case of an underflow - to 8000H
  3878. Flags affected: None
  3879. Exceptions:
  3880. RM PM VM SMM Description
  3881. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3882. #SS(0) If illegal memory operand's EA in SS
  3883. #PF(fcode) If page fault
  3884. #AC #AC If unaligned memory reference then alignment
  3885. check enabled and in ring 3.
  3886. #UD #UD #UD #UD If CR0.EM = 1
  3887. #NM #NM #NM #NM If CR0.TS = 1
  3888. #MF #MF #MF #MF If pending FPU Exception
  3889. #13 #13 If any part of the the operand lies outside of
  3890. the EA space from 0 to FFFFH
  3891. ++++++++++++++++++++++++++++++++++++++
  3892. COP & Times:
  3893. PSUBSW mm,mm/m64 0FH E9H PostByte
  3894. P55C: n/a
  3895. future P6: n/a
  3896. ----------O-PSUBUSB--------------------------------
  3897. OPCODE PSUBUSB - Packed Subtract Unsigned with Saturation Bytes
  3898. CPU: all which supported IA MMX:
  3899. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3900. Type of Instruction: User
  3901. Instruction: PSUBUSB dest,src
  3902. Description:
  3903. dest[7..0] <- SaturateToUnsignedByte(dest[7..0] - src[7..0])
  3904. dest[15..8] <- SaturateToUnsignedByte(dest[15..8] - src[15..8])
  3905. dest[23..16] <- SaturateToUnsignedByte(dest[23..16] - src[23..16])
  3906. dest[31..24] <- SaturateToUnsignedByte(dest[31..24] - src[31..24])
  3907. dest[39..32] <- SaturateToUnsignedByte(dest[39..32] - src[39..32])
  3908. dest[47..40] <- SaturateToUnsignedByte(dest[47..40] - src[47..40])
  3909. dest[55..48] <- SaturateToUnsignedByte(dest[55..48] - src[55..48])
  3910. dest[63..56] <- SaturateToUnsignedByte(dest[63..56] - src[63..56])
  3911. Note: This instruction subtract unsigned packed byte in MMXregister/memory
  3912. from unsigned packed byte in MMX register and saturate.
  3913. If the result element is less than zero (a negative value), it is
  3914. saturated to 00H
  3915. Flags affected: None
  3916. Exceptions:
  3917. RM PM VM SMM Description
  3918. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3919. #SS(0) If illegal memory operand's EA in SS
  3920. #PF(fcode) If page fault
  3921. #AC #AC If unaligned memory reference then alignment
  3922. check enabled and in ring 3.
  3923. #UD #UD #UD #UD If CR0.EM = 1
  3924. #NM #NM #NM #NM If CR0.TS = 1
  3925. #MF #MF #MF #MF If pending FPU Exception
  3926. #13 #13 If any part of the the operand lies outside of
  3927. the EA space from 0 to FFFFH
  3928. ++++++++++++++++++++++++++++++++++++++
  3929. COP & Times:
  3930. PSUBUSB mm,mm/m64 0FH D8H PostByte
  3931. P55C: n/a
  3932. future P6: n/a
  3933. ----------O-PSUBUSW--------------------------------
  3934. OPCODE PSUBUSW - Packed Subtract Unsigned with Saturation Bytes
  3935. CPU: all which supported IA MMX:
  3936. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3937. Type of Instruction: User
  3938. Instruction: PSUBUSW dest,src
  3939. Description:
  3940. dest[15..0] <- SaturateToUnsignedWord(dest[15..0] - src[15..0])
  3941. dest[31..16] <- SaturateToUnsignedWord(dest[31..16] - src[31..16])
  3942. dest[47..32] <- SaturateToUnsignedWord(dest[47..32] - src[47..32])
  3943. dest[63..48] <- SaturateToUnsignedWord(dest[63..48] - src[63..48])
  3944. Note: This instruction subtract unsigned packed word in MMXregister/memory
  3945. from unsigned packed word in MMX register and saturate.
  3946. If the result element is less than zero (a negative value), it is
  3947. saturated to 0000H
  3948. Flags affected: None
  3949. Exceptions:
  3950. RM PM VM SMM Description
  3951. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3952. #SS(0) If illegal memory operand's EA in SS
  3953. #PF(fcode) If page fault
  3954. #AC #AC If unaligned memory reference then alignment
  3955. check enabled and in ring 3.
  3956. #UD #UD #UD #UD If CR0.EM = 1
  3957. #NM #NM #NM #NM If CR0.TS = 1
  3958. #MF #MF #MF #MF If pending FPU Exception
  3959. #13 #13 If any part of the the operand lies outside of
  3960. the EA space from 0 to FFFFH
  3961. ++++++++++++++++++++++++++++++++++++++
  3962. COP & Times:
  3963. PSUBUSW mm,mm/m64 0FH D9H PostByte
  3964. P55C: n/a
  3965. future P6: n/a
  3966. ----------O-PSUBW----------------------------------
  3967. OPCODE PSUBW - Packed Subtract Words
  3968. CPU: all which supported IA MMX:
  3969. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  3970. Type of Instruction: User
  3971. Instruction: PSUBW dest,src
  3972. Description:
  3973. dest[15..0] <- dest[15..0] - src[15..0]
  3974. dest[31..16] <- dest[31..16] - src[31..16]
  3975. dest[47..32] <- dest[47..32] - src[47..32]
  3976. dest[63..48] <- dest[63..48] - src[63..48]
  3977. Note: This instruction subtract packed word in MMXregister/memory from
  3978. packed word in MMX register.
  3979. Flags affected: None
  3980. Exceptions:
  3981. RM PM VM SMM Description
  3982. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  3983. #SS(0) If illegal memory operand's EA in SS
  3984. #PF(fcode) If page fault
  3985. #AC #AC If unaligned memory reference then alignment
  3986. check enabled and in ring 3.
  3987. #UD #UD #UD #UD If CR0.EM = 1
  3988. #NM #NM #NM #NM If CR0.TS = 1
  3989. #MF #MF #MF #MF If pending FPU Exception
  3990. #13 #13 If any part of the the operand lies outside of
  3991. the EA space from 0 to FFFFH
  3992. ++++++++++++++++++++++++++++++++++++++
  3993. COP & Times:
  3994. PSUBW mm,mm/m64 0FH F9H PostByte
  3995. P55C: n/a
  3996. future P6: n/a
  3997. ----------O-PUNPCKHBW------------------------------
  3998. OPCODE PUNPCKHBW - Unpack High Bytes to Words
  3999. CPU: all which supported IA MMX:
  4000. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  4001. Type of Instruction: User
  4002. Instruction: PUNPCKHBW dest,src
  4003. Description:
  4004. dest[63..56] <- src[63..56]
  4005. dest[55..48] <- dest[63..56]
  4006. dest[47..40] <- src[55..48]
  4007. dest[39..32] <- dest[55..48]
  4008. dest[31..24] <- src[47..40]
  4009. dest[23..16] <- dest[47..40]
  4010. dest[15..8] <- src[39..32]
  4011. dest[7..0] <- dest[39..32]
  4012. Note: This instruction unpack and interleave the high-order data elements
  4013. of the destination and source operands into the destination operand.
  4014. The low-order data elements are ignored.
  4015. When unpacking from a memory operand, the full 64-bit operand is
  4016. accessed from memory. The instruction uses only the high-order 32 bits.
  4017. If the source operand is all zeros, the result is a zero extension of
  4018. the high-order elements of the destination operand. When using
  4019. PUNPCKHBW instruction the bytes are zero extended, or unpacked into
  4020. unsigned words.
  4021. Flags affected: None
  4022. Exceptions:
  4023. RM PM VM SMM Description
  4024. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4025. #SS(0) If illegal memory operand's EA in SS
  4026. #PF(fcode) If page fault
  4027. #AC #AC If unaligned memory reference then alignment
  4028. check enabled and in ring 3.
  4029. #UD #UD #UD #UD If CR0.EM = 1
  4030. #NM #NM #NM #NM If CR0.TS = 1
  4031. #MF #MF #MF #MF If pending FPU Exception
  4032. #13 #13 If any part of the the operand lies outside of
  4033. the EA space from 0 to FFFFH
  4034. ++++++++++++++++++++++++++++++++++++++
  4035. COP & Times:
  4036. PUNPCKHBW mm,mm/m64 0FH 68H PostByte
  4037. P55C: n/a
  4038. future P6: n/a
  4039. ----------O-PUNPCKHDQ------------------------------
  4040. OPCODE PUNPCKHDQ - Unpack High Dwords to Qwords
  4041. CPU: all which supported IA MMX:
  4042. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  4043. Type of Instruction: User
  4044. Instruction: PUNPCKHDQ dest,src
  4045. Description:
  4046. dest[63..32] <- src[63..32]
  4047. dest[31..0] <- dest[63..32]
  4048. Note: This instruction unpack and interleave the high-order data elements
  4049. of the destination and source operands into the destination operand.
  4050. The low-order data elements are ignored.
  4051. When unpacking from a memory operand, the full 64-bit operand is
  4052. accessed from memory. The instruction uses only the high-order 32 bits.
  4053. If the source operand is all zeros, the result is a zero extension of
  4054. the high-order elements of the destination operand.
  4055. Flags affected: None
  4056. Exceptions:
  4057. RM PM VM SMM Description
  4058. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4059. #SS(0) If illegal memory operand's EA in SS
  4060. #PF(fcode) If page fault
  4061. #AC #AC If unaligned memory reference then alignment
  4062. check enabled and in ring 3.
  4063. #UD #UD #UD #UD If CR0.EM = 1
  4064. #NM #NM #NM #NM If CR0.TS = 1
  4065. #MF #MF #MF #MF If pending FPU Exception
  4066. #13 #13 If any part of the the operand lies outside of
  4067. the EA space from 0 to FFFFH
  4068. ++++++++++++++++++++++++++++++++++++++
  4069. COP & Times:
  4070. PUNPCKHDQ mm,mm/m64 0FH 6AH PostByte
  4071. P55C: n/a
  4072. future P6: n/a
  4073. ----------O-PUNPCKHWD------------------------------
  4074. OPCODE PUNPCKHWD - Unpack High Words to Dwords
  4075. CPU: all which supported IA MMX:
  4076. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  4077. Type of Instruction: User
  4078. Instruction: PUNPCKHWD dest,src
  4079. Description:
  4080. dest[63..56] <- src[63..48]
  4081. dest[47..32] <- dest[63..48]
  4082. dest[31..16] <- src[47..32]
  4083. dest[15..0] <- dest[47..32]
  4084. Note: This instruction unpack and interleave the high-order data elements
  4085. of the destination and source operands into the destination operand.
  4086. The low-order data elements are ignored.
  4087. When unpacking from a memory operand, the full 64-bit operand is
  4088. accessed from memory. The instruction uses only the high-order 32 bits.
  4089. If the source operand is all zeros, the result is a zero extension of
  4090. the high-order elements of the destination operand. When using
  4091. PUNPCKHWD instruction the words are zero extended, or unpacked into
  4092. unsigned doublewords.
  4093. Flags affected: None
  4094. Exceptions:
  4095. RM PM VM SMM Description
  4096. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4097. #SS(0) If illegal memory operand's EA in SS
  4098. #PF(fcode) If page fault
  4099. #AC #AC If unaligned memory reference then alignment
  4100. check enabled and in ring 3.
  4101. #UD #UD #UD #UD If CR0.EM = 1
  4102. #NM #NM #NM #NM If CR0.TS = 1
  4103. #MF #MF #MF #MF If pending FPU Exception
  4104. #13 #13 If any part of the the operand lies outside of
  4105. the EA space from 0 to FFFFH
  4106. ++++++++++++++++++++++++++++++++++++++
  4107. COP & Times:
  4108. PUNPCKHWD mm,mm/m64 0FH 69H PostByte
  4109. P55C: n/a
  4110. future P6: n/a
  4111. ----------O-PUNPCKLBW------------------------------
  4112. OPCODE PUNPCKLBW - Unpack Low Bytes to Words
  4113. CPU: all which supported IA MMX:
  4114. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  4115. Type of Instruction: User
  4116. Instruction: PUNPCKLBW dest,src
  4117. Description:
  4118. dest[63..56] <- src[31..24]
  4119. dest[55..48] <- dest[31..24]
  4120. dest[47..40] <- src[23..16]
  4121. dest[39..32] <- dest[23..16]
  4122. dest[31..24] <- src[15..8]
  4123. dest[23..16] <- dest[15..8]
  4124. dest[15..8] <- src[7..0]
  4125. dest[7..0] <- dest[7..0]
  4126. Note: This instruction unpack and interleave the low-order data elements
  4127. of the destination and source operands into the destination operand.
  4128. The high-order data elements are ignored.
  4129. When the source data comes from 64-bit registers, the upper 32 bits
  4130. are ignored.
  4131. When unpacking from a memory operand, only 32 bits are accessed. The
  4132. instruction uses all 32 bits.
  4133. If the source operand is all zeros, the result is a zero extension of
  4134. the low-order elements of the destination operand. When using
  4135. PUNPCKLBW instruction the bytes are zero extended, or unpacked into
  4136. unsigned words.
  4137. Flags affected: None
  4138. Exceptions:
  4139. RM PM VM SMM Description
  4140. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4141. #SS(0) If illegal memory operand's EA in SS
  4142. #PF(fcode) If page fault
  4143. #AC #AC If unaligned memory reference then alignment
  4144. check enabled and in ring 3.
  4145. #UD #UD #UD #UD If CR0.EM = 1
  4146. #NM #NM #NM #NM If CR0.TS = 1
  4147. #MF #MF #MF #MF If pending FPU Exception
  4148. #13 #13 If any part of the the operand lies outside of
  4149. the EA space from 0 to FFFFH
  4150. ++++++++++++++++++++++++++++++++++++++
  4151. COP & Times:
  4152. PUNPCKLBW mm,mm/m32 0FH 60H PostByte
  4153. P55C: n/a
  4154. future P6: n/a
  4155. ----------O-PUNPCKLDQ------------------------------
  4156. OPCODE PUNPCKLDQ - Unpack Low Dwords to Qwords
  4157. CPU: all which supported IA MMX:
  4158. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  4159. Type of Instruction: User
  4160. Instruction: PUNPCKLDQ dest,src
  4161. Description:
  4162. dest[63..32] <- src[31..0]
  4163. dest[31..0] <- dest[31..0]
  4164. Note: This instruction unpack and interleave the low-order data elements
  4165. of the destination and source operands into the destination operand.
  4166. When the source data comes from 64-bit registers, the upper 32 bits
  4167. are ignored.
  4168. When unpacking from a memory operand, only 32 bits are accessed. The
  4169. instruction uses all 32 bits.
  4170. If the source operand is all zeros, the result is a zero extension of
  4171. the low-order elements of the destination operand.
  4172. Flags affected: None
  4173. Exceptions:
  4174. RM PM VM SMM Description
  4175. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4176. #SS(0) If illegal memory operand's EA in SS
  4177. #PF(fcode) If page fault
  4178. #AC #AC If unaligned memory reference then alignment
  4179. check enabled and in ring 3.
  4180. #UD #UD #UD #UD If CR0.EM = 1
  4181. #NM #NM #NM #NM If CR0.TS = 1
  4182. #MF #MF #MF #MF If pending FPU Exception
  4183. #13 #13 If any part of the the operand lies outside of
  4184. the EA space from 0 to FFFFH
  4185. ++++++++++++++++++++++++++++++++++++++
  4186. COP & Times:
  4187. PUNPCKLDQ mm,mm/m32 0FH 62H PostByte
  4188. P55C: n/a
  4189. future P6: n/a
  4190. ----------O-PUNPCKLWD------------------------------
  4191. OPCODE PUNPCKLWD - Unpack Low Words to Dwords
  4192. CPU: all which supported IA MMX:
  4193. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  4194. Type of Instruction: User
  4195. Instruction: PUNPCKLWD dest,src
  4196. Description:
  4197. dest[63..48] <- src[31..16]
  4198. dest[47..32] <- dest[31..16]
  4199. dest[31..16] <- src[15..0]
  4200. dest[15..0] <- dest[15..0]
  4201. Note: This instruction unpack and interleave the low-order data elements
  4202. of the destination and source operands into the destination operand.
  4203. When the source data comes from 64-bit registers, the upper 32 bits
  4204. are ignored.
  4205. When unpacking from a memory operand, only 32 bits are accessed. The
  4206. instruction uses all 32 bits.
  4207. If the source operand is all zeros, the result is a zero extension of
  4208. the low-order elements of the destination operand. When using
  4209. PUNPCKLWD instruction the words are zero extended, or unpacked into
  4210. unsigned doublewords.
  4211. Flags affected: None
  4212. Exceptions:
  4213. RM PM VM SMM Description
  4214. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4215. #SS(0) If illegal memory operand's EA in SS
  4216. #PF(fcode) If page fault
  4217. #AC #AC If unaligned memory reference then alignment
  4218. check enabled and in ring 3.
  4219. #UD #UD #UD #UD If CR0.EM = 1
  4220. #NM #NM #NM #NM If CR0.TS = 1
  4221. #MF #MF #MF #MF If pending FPU Exception
  4222. #13 #13 If any part of the the operand lies outside of
  4223. the EA space from 0 to FFFFH
  4224. ++++++++++++++++++++++++++++++++++++++
  4225. COP & Times:
  4226. PUNPCKLWD mm,mm/m32 0FH 61H PostByte
  4227. P55C: n/a
  4228. future P6: n/a
  4229. ----------O-PXOR-----------------------------------
  4230. OPCODE PXOR - Bitwise Logical Exclusive OR
  4231. CPU: all which supported IA MMX:
  4232. Pentium (P55C only), Pentium (tm) Pro (P6) future models
  4233. Type of Instruction: User
  4234. Instruction: PXOR dest,src
  4235. Description:
  4236. dest <- dest XOR src
  4237. Note: XOR 64 bits from MMXregister/memory to MMX register.
  4238. Flags affected: None
  4239. Exceptions:
  4240. RM PM VM SMM Description
  4241. #GP(0) If Illegal memory operand's EA in CS,DS,ES,FS,GS
  4242. #SS(0) If illegal memory operand's EA in SS
  4243. #PF(fcode) If page fault
  4244. #AC #AC If unaligned memory reference then alignment
  4245. check enabled and in ring 3.
  4246. #UD #UD #UD #UD If CR0.EM = 1
  4247. #NM #NM #NM #NM If CR0.TS = 1
  4248. #MF #MF #MF #MF If pending FPU Exception
  4249. #13 #13 If any part of the the operand lies outside of
  4250. the EA space from 0 to FFFFH
  4251. ++++++++++++++++++++++++++++++++++++++
  4252. COP & Times:
  4253. PXOR mm,mm/m64 0FH EFH PostByte
  4254. P55C: n/a
  4255. future P6: n/a
  4256. ----------O-RDMSR----------------------------------
  4257. OPCODE RDMSR - Read From Model Specified Register
  4258. CPU: Pentium (tm), IBM 386SLC,486SLC,486SLC2
  4259. Type of Instruction: System
  4260. Instruction: RDMSR
  4261. Description:
  4262. IF (ECX is valid number of MSR) and (CPL=0) THEN
  4263. {
  4264. EDX:EAX <- MSR [ECX];
  4265. }
  4266. ELSE
  4267. {
  4268. General Protection Fault INT 0DH (0)
  4269. }
  4270. END
  4271. Refer to Appendix W for more info.
  4272. Flags Affected: None
  4273. CPU mode: RM,PM0,SMM
  4274. Physical Form: RDMSR
  4275. COP (Code of Operation): 0FH 32H
  4276. Clocks: Pentium : 20-24
  4277. ----------O-RDPMC----------------------------------
  4278. OPCODE RDPMC - Read Perfomance Monitoring Counters
  4279. CPU: Pentium (tm) Pro (P6)
  4280. Type of Instruction: User
  4281. Instruction: RDPMC
  4282. Description:
  4283. IF ((CPL<>0) AND (CR4.PCE==0))
  4284. THEN { INT D (0) ; GENERAL PROTECTION FAULT }
  4285. ELSE { EDX:EAX <- PERFOMANCE_MONITORING_REGISTER[ECX] }
  4286. Note: Valid ECX values is 0,1.
  4287. Invalid ECX values call INT D(0)
  4288. Note: CR4.PSE = bit 8 of CR4
  4289. Note: Perfomance Monitoring Registers (PMR) are aliases to some Perfomance
  4290. Monitoring MSRs:
  4291. MSR 12h is Counter #0 (Read/Write) (Perfomance Monitoring Counter # 0)
  4292. bits Description
  4293. 63..40 Reserved
  4294. 39..0 Current counter value
  4295. MSR 13h is Counter #1 (Read/Write) (Perfomance Monitoring Counter # 1)
  4296. bits Description
  4297. 63..40 Reserved
  4298. 39..0 Current counter value
  4299. ++++++++++++++++++++++++++++++++++++++
  4300. COP & Times:
  4301. RDPMC 0FH 33H
  4302. P6: n/a
  4303. ----------O-RDSHR----------------------------------
  4304. OPCODE RDSHR - Read SMM Header Pointer Register
  4305. CPU: Cyrix Cx6x86MX
  4306. Type of Instruction: SMM mode only
  4307. Instruction: RDSHR dest
  4308. Description:
  4309. dest <- SMHR (SMM Header pointer Register)
  4310. Note: Format of SMHR:
  4311. Bits Description
  4312. 31..2 SMM Header pointer address
  4313. 1 Reserved
  4314. 0 (Valid)
  4315. if =1, then address valid
  4316. Note: SMHR pointed to phisical address SMM space area,
  4317. where will be saved non-SMM contex when entered SMM.
  4318. Format of SMM Header (for Cx6x86MX):
  4319. Address Size Description
  4320. (Relative (bit)
  4321. to SMH
  4322. pointer)
  4323. +00 32 DR7
  4324. -04h 32 EFLAGS
  4325. -08h 32 CR0
  4326. -0Ch 32 current EIP
  4327. -10h 32 next EIP
  4328. -14h 16 CS selector
  4329. -16h 16 Reserved
  4330. -18h 64 CS descriptor
  4331. -20h 16 Context
  4332. all reserved , but
  4333. 22..21 CPL
  4334. -22h 16 Context
  4335. all reserved, but
  4336. 15 N (Nested SMI indicator)
  4337. if = 1, current SMI serviced from SMM.
  4338. 13 IS (Internal SMI indicator)
  4339. if = 1, current SMI is result of internal SMI
  4340. event.
  4341. if = 0, current SMI result of external event
  4342. 4 H (SMI during CPU HALT state indicator)
  4343. if = 1, CPU was in halt or shutdown state,
  4344. before SMI.
  4345. 3 S (Software SMM entry indicator)
  4346. if = 1, SMM is result of SMINT instruction
  4347. 2 P (REP INSx/REP OUTSx indicator)
  4348. if = 1, current instruction have REP pfix.
  4349. 1 I (IN,INSx,OUT,OUTx indicator)
  4350. if = 1, current instruction perform I/O
  4351. read/write
  4352. 0 C (Code segment writable indicator)
  4353. if = 1, current code segment is writable,
  4354. if = 0, ---//---- is not writable.
  4355. -24h 16 I/O Data Size
  4356. -26h 16 I/O Write Address
  4357. -28h 32 I/O Write Data
  4358. -2Ch 32 ESI or EDI
  4359. total size of SMM header = 30h
  4360. Flags Affected: None
  4361. CPU mode: SMM
  4362. ++++++++++++++++
  4363. Physical Form: RDSHR reg/mem32
  4364. COP (Code of Operation) : 0FH 36H Postbyte
  4365. Clocks Cx6x86MX: n/a
  4366. ----------O-RDTSC----------------------------------
  4367. OPCODE RDTSC - Read From Time Stamp Counter
  4368. CPU: Pentium (tm), Pentium Pro, AMD Am5k86
  4369. Type of Instruction: System/User
  4370. Instruction: RDTSC
  4371. Description:
  4372. IF (CR4.TSD=0) or ((CR4.TSD=1) and (CPL=0)) THEN
  4373. {
  4374. EDX:EAX <- TSC;
  4375. }
  4376. ELSE
  4377. {
  4378. General Protection Fault INT 0DH (0)
  4379. }
  4380. END
  4381. Note: TSC is one of MSR and after global hardware reset (not SRESET , but
  4382. RESET ) it clear to 0000000000000000H.
  4383. TSC is MSR index 10h. TSC may set using WRMSR instruction.
  4384. TSC incremented every CPU core clock cycle.
  4385. Flags Affected: None
  4386. CPU mode: RM,PM0,SMM
  4387. ; PM,VM if enable
  4388. Physical Form: RDTSC
  4389. COP (Code of Operation): 0FH 31H
  4390. Clocks: Pentium : n/a [20-24]
  4391. ----------O-REPC-----------------------------------
  4392. OPCODE REPC - Repeat While Carry Flag
  4393. CPU: NEC/Sony all V-series
  4394. Type of Instruction: Prefix
  4395. Instruction: REPC
  4396. Description:
  4397. DO
  4398. CX=CX-1;
  4399. SERVICE_PENDING_INTERRUPT;
  4400. STRING_INSTRUCTION;
  4401. LOOPWHILE ((CX<>0) AND (CF==1));
  4402. Flags Affected: None
  4403. CPU Mode: RM 8086
  4404. Physical Form: REPC
  4405. COP (Code of Operation): 65H
  4406. Clocks: NEC V20 : 2
  4407. NEC V30 : 2
  4408. ----------O-REPNC----------------------------------
  4409. OPCODE REPNC - Repeat While Not Carry Flag
  4410. CPU: NEC/Sony all V-series
  4411. Type of Instruction: Prefix
  4412. Instruction: REPNC
  4413. Description:
  4414. DO
  4415. CX=CX-1;
  4416. SERVICE_PENDING_INTERRUPT;
  4417. STRING_INSTRUCTION;
  4418. LOOPWHILE ((CX<>0) AND (CF<>1));
  4419. Flags Affected: None
  4420. CPU mode: RM 8086
  4421. Physical Form: REPNC
  4422. COP (Code of Operation): 64H
  4423. Clocks: NEC V20 : 2
  4424. NEC V30 : 2
  4425. ----------O-RES3-----------------------------------
  4426. OPCODE RES3 - Restore All CPU Registers
  4427. CPU: AMD Am386SXLV, Am386DXLV
  4428. Type of Instruction: System Operation
  4429. (Work only then CPL=0)
  4430. Instruction: RES3
  4431. Description:
  4432. Load All Registers (Include Shadow Registers) from Table
  4433. Which Begin on place pointed ES:EDI
  4434. Note:
  4435. This instruction is AMD analog Intel's LOADALL instruction
  4436. but it's more i.c. return from SMM used this instruction.
  4437. Then in SMM table is in SMRAM, then non SMM then table is
  4438. in main memory.
  4439. Format of RES3 Table:
  4440. (Table )
  4441. Offset Len Description
  4442. 0H 4 CR0
  4443. 4H 4 EFLAGS
  4444. 8H 4 EIP
  4445. CH 4 EDI
  4446. 10H 4 ESI
  4447. 14H 4 EBP
  4448. 18H 4 ESP
  4449. 1CH 4 EBX
  4450. 20H 4 EDX
  4451. 24H 4 ESX
  4452. 28H 4 EAX
  4453. 2CH 4 DR6
  4454. 30H 4 DR7
  4455. 34H 4 TR (16 bit, zero filled up)
  4456. 38H 4 LDT ---------
  4457. 3CH 4 GS ---------
  4458. 40H 4 FS ---------
  4459. 44H 4 DS ---------
  4460. 48H 4 SS ---------
  4461. 4CH 4 CS ---------
  4462. 50H 4 ES ---------
  4463. 54H 4 TSS.attrib
  4464. 58H 4 TSS.base
  4465. 5CH 4 TSS.limit
  4466. 60H 4 Reserved
  4467. 64H 4 IDT.base
  4468. 68H 4 IDT.limit
  4469. 6CH 4 REP OUTS overrun flag
  4470. 70H 4 GDT.base
  4471. 74H 4 GDT.limit
  4472. 78H 4 LDT.attrib
  4473. 7CH 4 LDT.base
  4474. 80H 4 LDT.limit
  4475. 84H 4 GS.attrib
  4476. 88H 4 GS.base
  4477. 8CH 4 GS.limit
  4478. 90H 4 FS.attrib
  4479. 94H 4 FS.base
  4480. 98H 4 FS.limit
  4481. 9CH 4 DS.attrib
  4482. A0H 4 DS.base
  4483. A4H 4 DS.limit
  4484. A8H 4 SS.attrib
  4485. ACH 4 SS.base
  4486. B0H 4 SS.limit
  4487. B4H 4 CS.attrib
  4488. B8H 4 CS.base
  4489. BCH 4 CS.limit
  4490. C0H 4 ES.attrib
  4491. C4H 4 ES.base
  4492. C8H 4 ES.limit
  4493. Unknown Unusable area
  4494. 100H 4 Temporary register
  4495. 104H 4 -------------
  4496. 108H 4 -------------
  4497. 10CH 4 -------------
  4498. 110H 4 -------------
  4499. 114H 4 -------------
  4500. 118H 4 -------------
  4501. 11CH 4 -------------
  4502. 120H 4 -------------
  4503. 124H 4 Last EIP (Last instruction EIP for Restart)
  4504. See APPENDIX X for more info.
  4505. Format of Attrib field:
  4506. Byte Description
  4507. 0 0s
  4508. 1 AR (Access Right) byte in the Descriptor format
  4509. Note:
  4510. P bit is a valid bit
  4511. if valid bit=0 then Shadow Register is invalid and
  4512. INT 0DH - General Protection Fault call
  4513. DPL of SS,CS det. CPL
  4514. 2-3 0s
  4515. Flags Affected: All (FLAGS Register Reload)
  4516. CPU mode: RM,PM0,SMM
  4517. Physical Form: RES3
  4518. COP (Code of Operation): 0FH 07H Note: Code is same with Intel's LOADALL
  4519. Clocks: Am386SXLV : 366
  4520. Am386DXLV : 291
  4521. ----------O-RES4-----------------------------------
  4522. OPCODE RES4 - Restore All CPU Registers
  4523. CPU: AMD Am486SXLV, Am486DXLV
  4524. Type of Instruction: System Operation
  4525. (Work only then CPL=0)
  4526. Instruction: RES3
  4527. Description:
  4528. Load All Registers (Include Shadow Registers) from Table
  4529. Which Begin on place pointed ES:EDI
  4530. Note:
  4531. This instruction is AMD analog Intel's LOADALL instruction
  4532. but it's more i.c. return from SMM used this instruction.
  4533. Then in SMM table is in SMRAM, then non SMM then table is
  4534. in main memory.
  4535. Format of RES3 Table:
  4536. (Table )
  4537. Offset Len Description
  4538. 0H 4 CR0
  4539. 4H 4 EFLAGS
  4540. 8H 4 EIP
  4541. CH 4 EDI
  4542. 10H 4 ESI
  4543. 14H 4 EBP
  4544. 18H 4 ESP
  4545. 1CH 4 EBX
  4546. 20H 4 EDX
  4547. 24H 4 ESX
  4548. 28H 4 EAX
  4549. 2CH 4 DR6
  4550. 30H 4 DR7
  4551. 34H 4 TR (16 bit, zero filled up)
  4552. 38H 4 LDT ---------
  4553. 3CH 4 GS ---------
  4554. 40H 4 FS ---------
  4555. 44H 4 DS ---------
  4556. 48H 4 SS ---------
  4557. 4CH 4 CS ---------
  4558. 50H 4 ES ---------
  4559. 54H 4 TSS.attrib
  4560. 58H 4 TSS.base
  4561. 5CH 4 TSS.limit
  4562. 60H 4 Reserved
  4563. 64H 4 IDT.base
  4564. 68H 4 IDT.limit
  4565. 6CH 4 REP OUTS overrun flag
  4566. 70H 4 GDT.base
  4567. 74H 4 GDT.limit
  4568. 78H 4 LDT.attrib
  4569. 7CH 4 LDT.base
  4570. 80H 4 LDT.limit
  4571. 84H 4 GS.attrib
  4572. 88H 4 GS.base
  4573. 8CH 4 GS.limit
  4574. 90H 4 FS.attrib
  4575. 94H 4 FS.base
  4576. 98H 4 FS.limit
  4577. 9CH 4 DS.attrib
  4578. A0H 4 DS.base
  4579. A4H 4 DS.limit
  4580. A8H 4 SS.attrib
  4581. ACH 4 SS.base
  4582. B0H 4 SS.limit
  4583. B4H 4 CS.attrib
  4584. B8H 4 CS.base
  4585. BCH 4 CS.limit
  4586. C0H 4 ES.attrib
  4587. C4H 4 ES.base
  4588. C8H 4 ES.limit
  4589. Unknown Unusable area
  4590. 100H 4 Temporary register
  4591. 104H 4 -------------
  4592. 108H 4 -------------
  4593. 10CH 4 -------------
  4594. 110H 4 -------------
  4595. 114H 4 -------------
  4596. 118H 4 -------------
  4597. 11CH 4 -------------
  4598. 120H 4 -------------
  4599. 124H 4 Last EIP (Last instruction EIP for Restart)
  4600. 128H 4 PEIP - Previous SRAM space instruction pointer
  4601. 12EH 36 Unused
  4602. 150H 22 Floating Pointer Internal Registers (Am486DXLV)
  4603. See Appendix X for more info.
  4604. Format of Attrib field:
  4605. Byte Description
  4606. 0 0s
  4607. 1 AR (Access Right) byte in the Descriptor format
  4608. Note:
  4609. P bit is a valid bit
  4610. if valid bit=0 then Shadow Register is invalid and
  4611. INT 0DH - General Protection Fault call
  4612. DPL of SS,CS det. CPL
  4613. 2-3 0s
  4614. Flags Affected: All (FLAGS Register Reload)
  4615. CPU mode: RM,PM0,SMM
  4616. Physical Form: RES4
  4617. COP (Code of Operation): 0FH 07H Note: Code is same with Intel's LOADALL
  4618. Clocks: Am486SXLV : N/A
  4619. ----------O-RETRBI---------------------------------
  4620. OPCODE RETRBI - Return from Register Bank Context
  4621. Switch Interrupt.
  4622. CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  4623. Type of Instruction: System
  4624. Instruction: RETRBI
  4625. Description:
  4626. PC <- Save PC;
  4627. PSW <- Save PSW;
  4628. Flags Affected: All
  4629. CPU mode: RM
  4630. +++++++++++++++++++++++
  4631. Physical Form: RETRBI
  4632. COP (Code of Operation) : 0Fh 91h
  4633. Clocks: 12
  4634. ----------O-RETXA----------------------------------
  4635. OPCODE RETXA - Return from Expansion Address
  4636. CPU: NEC V33/V53 only
  4637. Type of Instruction: System
  4638. Instruction: RETXA int_vector
  4639. Description:
  4640. [sp-1,sp-2] <- PSW ; PSW EQU FLAGS
  4641. [sp-3,sp-4] <- PS ; PS EQU CS
  4642. [sp-5,sp-6] <- PC ; PC EQU IP
  4643. SP <- SP -6
  4644. IE <- 0
  4645. BRK <- 0
  4646. MD <- 0
  4647. PC <- [int_vector*4 +0,+1]
  4648. PS <- [int_vector*4 +2,+3]
  4649. Disable EA mode.
  4650. Flags Affected: None
  4651. CPU mode: RM
  4652. +++++++++++++++++++++++
  4653. Physical Form: RETXA imm8
  4654. COP (Code of Operation) : 0Fh F0h imm8
  4655. Clocks: 12
  4656. ----------O-ROL4-----------------------------------
  4657. OPCODE ROL4 - Rotate left 4 bits
  4658. CPU: NEC/Sony all V-series
  4659. Type of Instruction: User
  4660. Instruction: ROL4 dest
  4661. Description:
  4662. AL dest
  4663. bits 7 4 3 0 7 4 3 0
  4664. ------------- -------------
  4665. | | o <--------| <-|-o |<--\
  4666. ---------|---- ------------- |
  4667. | |
  4668. \---------------------------/
  4669. Note: This instruction Rotates (4bits) left out of dest through low 4bits
  4670. of AL
  4671. Flags Affected: None
  4672. CPU mode: RM
  4673. +++++++++++++++++++++++
  4674. Physical Form : ROL4 reg/mem8
  4675. COP (Code of Operation) : 0FH 28H PostByte
  4676. Clocks: ROL4 reg/mem8
  4677. NEC V20: 25/28
  4678. ----------O-ROR4-----------------------------------
  4679. OPCODE ROR4 - Rotate right 4 bits
  4680. CPU: NEC/Sony all V-series
  4681. Type of Instruction: User
  4682. Instruction: ROL4 dest
  4683. Description:
  4684. AL dest
  4685. bits 7 4 3 0 7 4 3 0
  4686. ------------- -------------
  4687. | | o--|------>| o-|-> o-|--\
  4688. ---------^---- ------------- |
  4689. | |
  4690. \---------------------------/
  4691. Note: This instruction Rotates (4bits) right out of dest through low 4bits
  4692. of AL
  4693. Flags Affected: None
  4694. CPU mode: RM
  4695. +++++++++++++++++++++++
  4696. Physical Form : ROR4 reg/mem8
  4697. COP (Code of Operation) : 0FH 2AH PostByte
  4698. Clocks: ROR4 reg/mem8
  4699. NEC V20: 29/33
  4700. ----------O-RSDC-----------------------------------
  4701. OPCODE RSDC - Restore Register and Descriptor
  4702. CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  4703. IBM BL486DX/DX2
  4704. TI 486SLC/DLC/e
  4705. TI 486SXL/SXL2/SXLC
  4706. TI Potomac
  4707. Type of Instruction: System
  4708. Instruction: RSDC sreg,sorc
  4709. Description:
  4710. sreg [selector,shadow_descriptor] <- sorc
  4711. ; sorc is register and descriptor structure (see below)
  4712. ; Note: This instruction load segment register
  4713. ; include shadow descriptor
  4714. Format or Register and Descriptor Structure:
  4715. +00 Limit (15-0) (Table )
  4716. +02 Base (15-0)
  4717. +04 Base (23-16)
  4718. +05 AR byte
  4719. +06 AR2/Limit (19-16)
  4720. +07 Base (31-24)
  4721. +08 Selector
  4722. Length of structure is 0Ah
  4723. Flags Affected: None
  4724. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  4725. 1) CPL=0
  4726. 2) CCR1.bit1=1 ; SMI enable
  4727. 3) SMAR size > 0
  4728. 4A) in SMM
  4729. 4B) CCR1.bit2=1 ; SMAC is on
  4730. ++++++++++++++++
  4731. Physical Form: RSDC sgeg,mem80
  4732. COP (Code of Operation) : 0FH 79H [mm sreg3 mmm]
  4733. Clocks IBM BL486DX: 10
  4734. TI 486SXL : 14
  4735. Note: sreg3 is: 000 ES
  4736. 001 CS
  4737. 010 SS
  4738. 011 DS
  4739. 100 FS
  4740. 101 GS
  4741. ----------O-RSLDT----------------------------------
  4742. OPCODE RSLDT - Restore LDTR and Descriptor
  4743. CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  4744. IBM BL486DX/DX2
  4745. TI 486SLC/DLC/e
  4746. TI 486SXL/SXL2/SXLC
  4747. TI Potomac
  4748. Type of Instruction: System
  4749. Instruction: RSLDT sorc
  4750. Description:
  4751. LDTR [selector,shadow_descriptor] <- sorc
  4752. ; sorc is register and descriptor structure (see below)
  4753. Format or Register and Descriptor Structure:
  4754. +00 Limit (15-0) (Table )
  4755. +02 Base (15-0)
  4756. +04 Base (23-16)
  4757. +05 AR byte
  4758. +06 AR2/Limit (19-16)
  4759. +07 Base (31-24)
  4760. +08 Selector
  4761. Length of structure is 0Ah
  4762. Flags Affected: None
  4763. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  4764. 1) CPL=0
  4765. 2) CCR1.bit1=1 ; SMI enable
  4766. 3) SMAR size > 0
  4767. 4A) in SMM
  4768. 4B) CCR1.bit2=1 ; SMAC is on
  4769. ++++++++++++++++
  4770. Physical Form: RSLDT mem80
  4771. COP (Code of Operation) : 0FH 7BH [mm 000 mmm]
  4772. Clocks IBM BL486DX: 10
  4773. TI 486SXL : 14
  4774. ----------O-RSM------------------------------------
  4775. OPCODE RSM - Resume from System Managment Mode
  4776. CPU: I486 SL Enhanced+,i486SL,i386CX,i386EX
  4777. Type of Instruction: System
  4778. Instruction: RSM
  4779. Description:
  4780. Restore execution state from SMRAM and
  4781. return to previous CPU mode
  4782. CPU mode: SMM only
  4783. ( INT 6 - Undefined Opcode in all other mode )
  4784. Flags Affected: All
  4785. Note: CPU state restored from dump created entrance to SMM.
  4786. The CPU leave SMM and return to previous mode.
  4787. If CPU detect any invalid state it enters shutdown.
  4788. This invalid states is:
  4789. * The value stored in State Dump Base field is not 32K aligned
  4790. address
  4791. * Any Reserved bit of CR4 is set to 1 (Pentium only)
  4792. * Any illegal Combination of CR0:
  4793. ** (PG=1 and PE=0)
  4794. ** (NW=1 and CD=0)
  4795. Format of Execution State in SMRAM:
  4796. Offset Register (Table )
  4797. 7FFCh CR0
  4798. 7FF8h CR3
  4799. 7FF4h EFLAGS
  4800. 7FF0h EIP
  4801. 7FECh EDI
  4802. 7FE8h ESI
  4803. 7FE4h EBP
  4804. 7FE0h ESP
  4805. 7FDCh EBX
  4806. 7FD8h EDX
  4807. 7FD4h ECX
  4808. 7FD0h EAX
  4809. 7FCCh DR7
  4810. 7FC4h TR, upper 2 bytes reserved
  4811. 7FC0h LDTR, upper 2 bytes reserved
  4812. 7FBCh GS, upper 2 bytes reserved
  4813. 7FB8h FS, upper 2 bytes reserved
  4814. 7FB4h DS, upper 2 bytes reserved
  4815. 7FB0h SS, upper 2 bytes reserved
  4816. 7FACh CS, upper 2 bytes reserved
  4817. 7FA8h ES, upper 2 bytes reserved
  4818. 7F98h Reserved
  4819. 7F94h IDT base (4 bytes)
  4820. 7F8Ch Reserved
  4821. 7F88h GDT base (4 bytes)
  4822. 7F04h Reserved
  4823. 7F02h Auto HALT Restart Slot (2 bytes)
  4824. Bits 15..2 are reserved
  4825. Bit 1 Bit 0 Description
  4826. 0 0 Resume to next instruction in interrupted
  4827. program
  4828. 0 1 Unpredictable
  4829. 1 0 Return to next instruction after HALT
  4830. 1 1 Return to HALT state
  4831. 7F00h I/O Restart Slot (2 bytes)
  4832. When RSM execution if I/O restart slot = 0FFh then
  4833. EIP modified to instruction immediate preceding the
  4834. SMI# request i.e. CPU automatically reexecute I/O
  4835. instruction which be trapped by SMI.
  4836. 7EFCh SMM Revision Identificator (4 bytes)
  4837. Bits Description
  4838. 31..18 Reserved
  4839. 17 If=1 Processor support SMBASE relocation
  4840. else not support
  4841. 16 If =1 Processor support I/O Instruction Restart
  4842. 15..0 SMM Revision Identificator
  4843. P5,486s = 0000h
  4844. P54C when I/O Restarts enable = 0002h
  4845. 7EF8h SMBASE Slot (4 bytes)
  4846. SMBASE is 32KB aligned 32bit dword which contained a base
  4847. address for SMRAM.
  4848. Default value is 30000h
  4849. Starting Address for for jump in SMM is:
  4850. SMBASE+8000h
  4851. Starting address for State Save area is
  4852. SMBASE+[8000h+7FFFh]
  4853. 7E00h Reserved
  4854. Note: In fields marked Reserved saved and restores next registers:
  4855. CR1,CR2,CR3, hidden descriptors for CS,DS,ES,FS,SS,GS.
  4856. Never saved registers: DR5-DR0,TR7-TR3,all FPU registers.
  4857. More Information Not available Yet.
  4858. Physical Form: RSM
  4859. COP (Code of Operation) : 0FH AAH
  4860. Clocks: i386CX : 338
  4861. i486 SL Enhanced : ???
  4862. IntelDX4 : 452 ; SMBASE relocation
  4863. : 456 ; AutoHALT restart
  4864. : 465 ; I/O Trap restart
  4865. Pentium : 83
  4866. ----------O-RSM------------------------------------
  4867. OPCODE RSM - Resume from SMM
  4868. CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  4869. IBM BL486DX/DX2
  4870. TI 486SLC/DLC/e
  4871. TI 486SXL/SXL2/SXLC
  4872. TI Potomac
  4873. Type of Instruction: System
  4874. Instruction: RSM
  4875. Description:
  4876. RESTORE CPU STATE FROM SMM HEADER AT THE TOP OF
  4877. SMM SPACE (defined by SMAR register);
  4878. EXIT SMM;
  4879. Format of SMM Header:
  4880. Offset Length Description (Table )
  4881. -00h - Nothing (Top of SMM space) (Not accessable)
  4882. -04h 32 DR7
  4883. -08h 32 EFLAGS
  4884. -0Ch 32 CR0
  4885. -10h 32 Current EIP
  4886. -14h 32 Next instruction EIP
  4887. -16h 16 Reserved
  4888. -18h 16 CS selector
  4889. -1Ch 32 CS descriptor(63-32)
  4890. -20h 32 CS descriptor(31-0)
  4891. -24h 32 SMM Flags
  4892. [ ALL BITS are Not available in Cx486S/S2/D/D2]
  4893. Bit Description
  4894. 1 I (IN/INSx/OUT/OUTx Indicator)
  4895. If =0 current instruction performed
  4896. I/O read
  4897. =1 I/O write
  4898. 2 P (REP INSx/OUTx Prefix)
  4899. If =1 current instruction has REP pfix.
  4900. =0 not has REP pfix
  4901. 3 S (Software SMI)
  4902. If =1 current SMM is result of execution
  4903. SMINT instruction
  4904. =0 current SMM is result of hardware SMI
  4905. Note: TI 486SXL/SXL2 support only bits 1,2.
  4906. -26h 16 I/O Write Data size
  4907. [ Not available in Cx486S/S2/D/D2]
  4908. [ Not available in TI486SXL/SXL2]
  4909. [ Not available in TI486SLC/DLC/e]
  4910. 1h = byte
  4911. 3h = word
  4912. fh = dword
  4913. -28h 16 I/O Write Address
  4914. [ Not avaliable in Cx486S/S2/D/D2]
  4915. [ Not available in TI486SXL/SXL2]
  4916. [ Not available in TI486SLC/DLC/e]
  4917. -2Ch 32 I/O Write Data
  4918. [ Not avaliable in Cx486S/S2/D/D2]
  4919. [ Not available in TI486SXL/SXL2]
  4920. [ Not available in TI486SLC/DLC/e]
  4921. -30h 32 ESI or EDI
  4922. This field saved value of source/destination
  4923. for restart INSx/OUTSx instruction
  4924. [ Not avaliable in Cx486S/S2/D/D2]
  4925. Flags Affected: All
  4926. CPU mode: SMM
  4927. ++++++++++++++++
  4928. Physical Form: RSM
  4929. COP (Code of Operation) : 0FH AAH
  4930. Clocks IBM BL486DX: 76
  4931. TI 486SXL : 58
  4932. ----------O-RSTS-----------------------------------
  4933. OPCODE RSTS - Restore TR and Descriptor
  4934. CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  4935. TI 486SLC/DLC/e
  4936. TI 486SXL/SXL2/SXLC
  4937. IBM BL486DX/DX2
  4938. Type of Instruction: System
  4939. Instruction: RSTS sorc
  4940. Description:
  4941. TR [selector,shadow_descriptor] <- sorc
  4942. ; sorc is register and descriptor structure (see below)
  4943. Format or Register and Descriptor Structure:
  4944. +00 Limit (15-0) (Table )
  4945. +02 Base (15-0)
  4946. +04 Base (23-16)
  4947. +05 AR byte
  4948. +06 AR2/Limit (19-16)
  4949. +07 Base (31-24)
  4950. +08 Selector
  4951. Length of structure is 0Ah
  4952. Flags Affected: None
  4953. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  4954. 1) CPL=0
  4955. 2) CCR1.bit1=1 ; SMI enable
  4956. 3) SMAR size > 0
  4957. 4A) in SMM
  4958. 4B) CCR1.bit2=1 ; SMAC is on
  4959. ++++++++++++++++
  4960. Physical Form: RSTS mem80
  4961. COP (Code of Operation) : 0FH 7DH [mm 000 mmm]
  4962. Clocks IBM BL486DX: 10
  4963. TI 486SXL : 14
  4964. ----------O-SET1-----------------------------------
  4965. OPCODE SET1 - Set a Specified Bit
  4966. CPU: NEC/Sony V-series
  4967. Type of Instruction: User
  4968. Instruction: SET1 dest,bitnumb
  4969. Description:
  4970. BIT bitnumb OF dest <- 1;
  4971. Flags Affected: None
  4972. CPU mode: RM
  4973. +++++++++++++++++++++++
  4974. Physical Form: SET1 reg/mem8,CL
  4975. COP (Code of Operation) : 0FH 14H Postbyte
  4976. Physical Form: SET1 reg/mem8,imm8
  4977. COP (Code of Operation) : 0FH 1CH Postbyte imm8
  4978. Physical Form: SET1 reg/mem16,CL
  4979. COP (Code of Operation) : 0FH 15H Postbyte
  4980. Physical Form: SET1 reg/mem16,imm8
  4981. COP (Code of Operation) : 0FH 1DH Postbyte imm8
  4982. Clocks: SET1
  4983. r/m8,CL r/m8,i8 r/m16,CL r/m16,i8
  4984. NEC V20: 4/13 5/14 4/13 5/14
  4985. ----------O-SETALC---------------------------------
  4986. OPCODE SETALC - Set AL to Carry Flag
  4987. CPU: Intel 8086 and all its clones and upward
  4988. compatibility chips.
  4989. Type of Instruction: User
  4990. Instruction: SETALC
  4991. Description:
  4992. IF (CF=0) THEN AL:=0 ELSE AL:=FFH;
  4993. Flags Affected: None
  4994. CPU mode: RM,PM,VM,SMM
  4995. Physical Form: SETALC
  4996. COP (Code of Operation): D6H
  4997. Clocks: 80286 : n/a [3]
  4998. 80386 : n/a [3]
  4999. Cx486SLC : n/a [2]
  5000. i486 : n/a [3]
  5001. Pentium : n/a [3]
  5002. Note: n/a is Time that Intel etc not say.
  5003. [3] is real time it executed.
  5004. ----------O-SMI------------------------------------
  5005. OPCODE SMI - System Managment Interrupt
  5006. CPU: AMD Am386SXLV,Am386DXLV
  5007. AMD 486s
  5008. Type of Instruction: System
  5009. Instruction: SMI
  5010. Description:
  5011. IF (SMIE=1) THEN
  5012. {
  5013. SAVE STATUS OF EXECUTION TO SMRAM;
  5014. ENTER SMM;
  5015. SMMS <- 1;
  5016. }
  5017. ELSE
  5018. {
  5019. INT 1;
  5020. }
  5021. END
  5022. Notes: SMIE is <Soft SMI Enable> (DR7.bit12)
  5023. =1 Enable soft SMI
  5024. =0 Disable soft SMI
  5025. SMMS is <SMM status bit> (DR6.bit12)
  5026. =1 SMM was entered
  5027. =0 SMM status cleared
  5028. Flags Affected: None
  5029. CPU mode: RM?,PM0
  5030. Physical Form: SMI
  5031. COP (Code of Operation): F1H
  5032. Clocks: Am386SXLV : 357
  5033. Am386DXLV : 325
  5034. Am486xxxx : Don't know, do you?
  5035. ----------O-SMINT----------------------------------
  5036. OPCODE SMINT - Software SMM Interrupt
  5037. CPU: Cyrix Cx486DX/DX2/DX4
  5038. IBM BL486DX/DX2
  5039. Note: Never in Cx486S/S2/D/D2
  5040. Never in any TI's chips.
  5041. Type of Instruction: System
  5042. Instruction: SMINT
  5043. Description:
  5044. SAVE CPU STATE TO SMM HEADER AT THE TOP OF
  5045. SMM SPACE (defined by SMAR register);
  5046. ENTER SMM MODE;
  5047. Format of SMM Header: Refer to Cyrix/IBM SMI Instruction
  5048. (Table )
  5049. Flags Affected: None
  5050. CPU mode: CPL=0, CCR1.bit1=1, SMAR size >= 30h.
  5051. ++++++++++++++++
  5052. Physical Form: SMINT
  5053. COP (Code of Operation) : 0FH 7EH
  5054. Clocks IBM BL486DX: 24
  5055. ----------O-STOP-----------------------------------
  5056. OPCODE STOP - Stop CPU
  5057. CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  5058. Type of Instruction: System
  5059. Instruction: STOP
  5060. Description:
  5061. PowerDown instruction, Stop Oscillator,
  5062. Halt CPU.
  5063. Flags Affected: None
  5064. CPU mode: RM
  5065. +++++++++++++++++++++++
  5066. Physical Form: STOP
  5067. COP (Code of Operation) : 0Fh BEh
  5068. Clocks: N/A
  5069. ----------O-SUB4S----------------------------------
  5070. OPCODE SUB4S - Subtraction of packed BCD strings
  5071. CPU: NEC/Sony all V-series
  5072. Type of Instruction: User
  5073. Instruction: SUB4S
  5074. Description:
  5075. BCD STRING (ADDRESS=ES:DI,LENGTH=CL) <-
  5076. BCD STRING (ADDRESS=DS:SI,LENGTH=CL) -
  5077. BCD STRING (ADDRESS=ES:DI,LENGTH=CL);
  5078. Length of BCD string in CL;
  5079. Note: si,di,cl and other registers not changed
  5080. Flags Affected: OF,CF,ZF
  5081. ;; ZF set if result is zero.
  5082. ;; CF,OF set as result of operation with most
  5083. ;; signification BCDs.
  5084. CPU mode: RM
  5085. +++++++++++++++++++++++
  5086. Physical Form: SUB4S
  5087. COP (Code of Operation) : 0FH 22H
  5088. Clocks: SUB4S
  5089. NEC V20: ~7+19*CL
  5090. ----------O-SVDC-----------------------------------
  5091. OPCODE SVDC - Save Register and Descriptor
  5092. CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  5093. IBM BL486DX/DX2
  5094. TI 486SLC/DLC/e
  5095. TI 486SXL/SXL2/SXLC
  5096. TI Potomac
  5097. Type of Instruction: System
  5098. Instruction: SVDC dest,sreg
  5099. Description:
  5100. dest <- sreg [selector,shadow_descriptor]
  5101. ; dest is register and descriptor structure (see below)
  5102. Format or Register and Descriptor Structure:
  5103. +00 Limit (15-0) (Table )
  5104. +02 Base (15-0)
  5105. +04 Base (23-16)
  5106. +05 AR byte
  5107. +06 AR2/Limit (19-16)
  5108. +07 Base (31-24)
  5109. +08 Selector
  5110. Length of structure is 0Ah
  5111. Flags Affected: None
  5112. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  5113. 1) CPL=0
  5114. 2) CCR1.bit1=1 ; SMI enable
  5115. 3) SMAR size > 0
  5116. 4A) in SMM
  5117. 4B) CCR1.bit2=1 ; SMAC is on
  5118. ++++++++++++++++
  5119. Physical Form: SVDC mem80,sreg
  5120. COP (Code of Operation) : 0FH 78H [mm sreg3 mmm]
  5121. Clocks IBM BL486DX: 18
  5122. TI 486SXL : 22
  5123. Note: sreg3 is: 000 ES
  5124. 001 CS
  5125. 010 SS
  5126. 011 DS
  5127. 100 FS
  5128. 101 GS
  5129. ----------O-SVLDT----------------------------------
  5130. OPCODE SVLDT - Save LDTR and Descriptor
  5131. CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  5132. IBM BL486DX/DX2
  5133. TI 486SLC/DLC/e
  5134. TI 486SXL/SXL2/SXLC
  5135. TI Potomac
  5136. Type of Instruction: System
  5137. Instruction: SVLDT dest
  5138. Description:
  5139. dest <- LDTR [selector,shadow_descriptor]
  5140. ; dest is register and descriptor structure (see below)
  5141. Format or Register and Descriptor Structure:
  5142. +00 Limit (15-0) (Table )
  5143. +02 Base (15-0)
  5144. +04 Base (23-16)
  5145. +05 AR byte
  5146. +06 AR2/Limit (19-16)
  5147. +07 Base (31-24)
  5148. +08 Selector
  5149. Length of structure is 0Ah
  5150. Flags Affected: None
  5151. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  5152. 1) CPL=0
  5153. 2) CCR1.bit1=1 ; SMI enable
  5154. 3) SMAR size > 0
  5155. 4A) in SMM
  5156. 4B) CCR1.bit2=1 ; SMAC is on
  5157. ++++++++++++++++
  5158. Physical Form: SVLDT mem80
  5159. COP (Code of Operation) : 0FH 7AH [mm 000 mmm]
  5160. Clocks IBM BL486DX: 18
  5161. TI 486SXL : 22
  5162. ----------O-SVTS-----------------------------------
  5163. OPCODE SVTS - Save TR and Descriptor
  5164. CPU: Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  5165. IBM BL486DX/DX2
  5166. TI 486SLC/DLC/e
  5167. TI 486SXL/SXL2/SXLC
  5168. TI Potomac
  5169. Type of Instruction: System
  5170. Instruction: SVTS dest
  5171. Description:
  5172. dest <- TR [selector,shadow_descriptor]
  5173. ; dest is register and descriptor structure (see below)
  5174. Format or Register and Descriptor Structure:
  5175. +00 Limit (15-0) (Table )
  5176. +02 Base (15-0)
  5177. +04 Base (23-16)
  5178. +05 AR byte
  5179. +06 AR2/Limit (19-16)
  5180. +07 Base (31-24)
  5181. +08 Selector
  5182. Length of structure is 0Ah
  5183. Flags Affected: None
  5184. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  5185. 1) CPL=0
  5186. 2) CCR1.bit1=1 ; SMI enable
  5187. 3) SMAR size > 0
  5188. 4A) in SMM
  5189. 4B) CCR1.bit2=1 ; SMAC is on
  5190. ++++++++++++++++
  5191. Physical Form: SVTS mem80
  5192. COP (Code of Operation) : 0FH 7CH [mm 000 mmm]
  5193. Clocks IBM BL486DX: 18
  5194. TI 486SXL : 22
  5195. ----------O-SYSCALL--------------------------------
  5196. OPCODE SYSCALL - Call Operating System
  5197. CPU: AMD Am6k86 (K6)
  5198. Type of Instruction: User
  5199. Instruction: SYSCALL
  5200. Description:
  5201. if EFER.SCE = 1 then
  5202. { ECX <- EIP
  5203. EIP <- STAR[31..0]
  5204. IF <- 0
  5205. VM <- 0
  5206. CS.selector <- STAR[47..32]
  5207. SS.selector <- (STAR[47..32]) + 8
  5208. CS.base <- 0
  5209. SS.base <- 0
  5210. CS.limit <- 4G
  5211. SS.limit <- 4G
  5212. CS.attr <- ReadOnly
  5213. SS.attr <- R/W, Expand-Up
  5214. CPL <- 0
  5215. } else #UD;
  5216. Note: Passing control to fixed entry point for faster OS calls.
  5217. see RDMSR for description of STAR (SYSCALL Target Address register)
  5218. Note: Command opcode equal to 286 LOADALL undocument instruction.
  5219. ++++++++++++++++++++++++++++++++++++++
  5220. COP & Times:
  5221. SYSCALL 0FH 05H
  5222. Am6k86: n/a
  5223. ----------O-SYSENTER-------------------------------
  5224. OPCODE SYSENTER - Call Operating System
  5225. CPU: Intel Pentium II
  5226. Type of Instruction: System
  5227. Instruction: SYSENTER
  5228. Description:
  5229. if CR.0.PE == 0 then #GP(0);
  5230. if SYSENTER_CS_MSR == 0 then #GP(0);
  5231. EFLAGS.VM <- 0;
  5232. EFLAGS.IF <- 0;
  5233. CS.SEL <- SYSENTER_CS_MSR;
  5234. CPL <- 0;
  5235. CS.BASE <- 0;
  5236. CS.LIMIT <- 0xffff;
  5237. CS.ATTR.G <- 1;
  5238. CS.ATTR.S <- 1;
  5239. CS.ATTR.TYPE <- 1011b;
  5240. CS.ATTR.D <- 1;
  5241. CS.ATTR.DPL <- 0;
  5242. CS.RPL <- 0;
  5243. CS.ATTR.P <- 1;
  5244. SS.SEL <- CS.SEL+8;
  5245. SS.BASE <- 0;
  5246. SS.LIMIT <- 0xffff;
  5247. SS.ATTR.G <- 1;
  5248. SS.ATTR.S <- 1;
  5249. SS.ATTR.TYPE <- 0011b;
  5250. SS.ATTR.D <- 1;
  5251. SS.ATTR.DPL <- 0;
  5252. SS.RPL <- 0;
  5253. SS.ATTR.P <- 1;
  5254. ESP <- SYSENTER_ESP_MSR;
  5255. EIP <- SYSENTER_EIP_MSR;
  5256. Note: How to check if this instruction present:
  5257. CPUID.SEP bit must be set.
  5258. AND
  5259. CPUID.FAMILY == 6 AND (CPUID.MODEL >=3) AND (CPUID.STEP >= 3)
  5260. Note: See MSR List for more Info.
  5261. Note: Passing control to fixed entry point for faster OS calls.
  5262. ++++++++++++++++++++++++++++++++++++++
  5263. COP & Times:
  5264. SYSENTER 0FH 34H
  5265. P6: n/a
  5266. ----------O-SYSEXIT--------------------------------
  5267. OPCODE SYSEXIT - Return from Operation System
  5268. CPU: Intel Pentium II
  5269. Type of Instruction: Privelege (CPL =0)
  5270. Instruction: SYSRET
  5271. Description:
  5272. if CR.0.PE == 0 then #GP(0);
  5273. if SYSENTER_CS_MSR == 0 then #GP(0);
  5274. EFLAGS.VM <- 0;
  5275. EFLAGS.IF <- 0;
  5276. CS.SEL <- SYSENTER_CS_MSR + 16;
  5277. CPL <- 0;
  5278. CS.BASE <- 0;
  5279. CS.LIMIT <- 0xffff;
  5280. CS.ATTR.G <- 1;
  5281. CS.ATTR.S <- 1;
  5282. CS.ATTR.TYPE <- 1011b;
  5283. CS.ATTR.D <- 1;
  5284. CS.ATTR.DPL <- 0;
  5285. CS.RPL <- 0;
  5286. CS.ATTR.P <- 1;
  5287. SS.SEL <- CS.SEL+8;
  5288. SS.BASE <- 0;
  5289. SS.LIMIT <- 0xffff;
  5290. SS.ATTR.G <- 1;
  5291. SS.ATTR.S <- 1;
  5292. SS.ATTR.TYPE <- 0011b;
  5293. SS.ATTR.D <- 1;
  5294. SS.ATTR.DPL <- 0;
  5295. SS.RPL <- 0;
  5296. SS.ATTR.P <- 1;
  5297. ESP <- SYSENTER_ESP_MSR;
  5298. EIP <- SYSENTER_EIP_MSR;
  5299. Note: See SYSENTER for more Info.
  5300. ++++++++++++++++++++++++++++++++++++++
  5301. COP & Times:
  5302. SYSEXIT 0FH 35H
  5303. P6: n/a
  5304. ----------O-SYSRET---------------------------------
  5305. OPCODE SYSRET - Return from Operation System
  5306. CPU: AMD Am6k86 (K6)
  5307. Type of Instruction: Privelege (CPL =0)
  5308. Instruction: SYSRET
  5309. Description:
  5310. if EFER.SCE == 1
  5311. {
  5312. if CPL == 0
  5313. {
  5314. EIP <- ECX
  5315. IF <- 1
  5316. CS.selector <- STAR[47..32] OR 3H
  5317. CS.base <- 0
  5318. CS.limit <- 4GB
  5319. CS.attr <- ReadOnly
  5320. SS <- (STAR[47..32]) + 16) OR 3H
  5321. } else #GP(0);
  5322. } else #UD;
  5323. Note: Passing control from OS entry point back to ring 3 client.
  5324. see RDMSR for description of STAR (SYSCALL Target Address register)
  5325. Note: Command opcode equal to 386/486 LOADALL undocument instruction.
  5326. ++++++++++++++++++++++++++++++++++++++
  5327. COP & Times:
  5328. SYSRET 0FH 07H
  5329. Am6k86: n/a
  5330. ----------O-TEST1----------------------------------
  5331. OPCODE TEST1 - Test a Specified bit
  5332. CPU: NEC/Sony all V-series
  5333. Type of Instruction: User
  5334. Instruction: NOT1 dest,bitnumb
  5335. Description:
  5336. IF dest IS 8BIT THEN bitn <- bitnumb AND 7;
  5337. IF dest IS 16BIT THEN bitn <- bitnumb AND Fh;
  5338. IF (BIT bitn OF dest) = 0 THEN
  5339. {
  5340. ZF <- 1;
  5341. }
  5342. ELSE {
  5343. ZF <- 0;
  5344. }
  5345. ENDIF
  5346. Flags Affected: ZF
  5347. CPU mode: RM
  5348. +++++++++++++++++++++++
  5349. Physical Form: TEST1 reg/mem8,CL
  5350. COP (Code of Operation) : 0FH 10H Postbyte
  5351. Physical Form: TEST1 reg/mem8,imm8
  5352. COP (Code of Operation) : 0FH 18H Postbyte imm8
  5353. Physical Form: TEST1 reg/mem16,CL
  5354. COP (Code of Operation) : 0FH 11H Postbyte
  5355. Physical Form: TEST1 reg/mem16,imm8
  5356. COP (Code of Operation) : 0FH 19H Postbyte imm8
  5357. Clocks: TEST1
  5358. r/m8,CL r/m8,i8 r/m16,CL r/m16,i8
  5359. NEC V20: 3/12 4/13 3/12 4/13
  5360. ----------O-TSKSW----------------------------------
  5361. OPCODE TSKSW - Task Switch
  5362. CPU: NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  5363. Type of Instruction: System
  5364. Instruction: TSKSW reg16
  5365. Description: Perform a High-Speed task switch to the register bank indicated
  5366. by lower 3 bits of reg16. The PC and PSW are saved in the old
  5367. banks. PC and PSW save Registers and the new PC and PSW values
  5368. are retrived from the new register bank's save area.
  5369. Note: See BRKCS instruction for more Info about banks.
  5370. Flags Affected: All
  5371. CPU mode: RM
  5372. +++++++++++++++++++++++
  5373. Physical Form: TSCSW reg16
  5374. COP (Code of Operation) : 0Fh 94h <1111 1RRR>
  5375. Clocks: 11
  5376. ----------O-UD------------------------------------
  5377. OPCODE UD - Undefined Instruction
  5378. CPU: AMD Am5k86 (SSA/5, K5)
  5379. Logical Form: UD
  5380. Description:
  5381. Caused #UD exception
  5382. Flags Affected: No Flags Affected
  5383. CPU Mode : RM,PM,VM,VME,SMM
  5384. Exceptions :
  5385. RM PM V86 VME SMM
  5386. #UD #UD #UD #UD #UD Undefined Instruction
  5387. No more Exceptions
  5388. Note :
  5389. This instruction caused #UD. AMD guaranteed that in future AMD's
  5390. CPUs this instruction will caused #UD. Of course all previous CPUs
  5391. (186+) caused #UD on this opcode. This instruction used by software
  5392. writers for testing #UD exception servise routine.
  5393. ++++++++++++++++++++++++++++++
  5394. Physical Form : UD
  5395. COP (Code of Operation) : 0Fh FFh
  5396. Clocks : UD
  5397. 8088: Not supported
  5398. NEC V20: Not supported
  5399. 80186: ~int
  5400. 80286: ~int
  5401. 80386: ~int
  5402. Cx486SLC: ~int
  5403. i486: ~int
  5404. Cx486DX: ~int
  5405. Cx5x86: ~int
  5406. Pentium: ~int
  5407. Nx5x86: ~int
  5408. Cx6x86: ~int
  5409. Am5k86: ~int
  5410. Pentium Pro: ~int
  5411. ++++++++++++++++++++++++++++++
  5412. ----------O-UD2-----------------------------------
  5413. OPCODE UD2 - Undefined Instruction
  5414. CPU: Pentium Pro+ and all other
  5415. Logical Form: UD2
  5416. Description:
  5417. Caused #UD exception
  5418. Flags Affected: No Flags Affected
  5419. CPU Mode : RM,PM,VM,VME,SMM
  5420. Exceptions :
  5421. RM PM V86 VME SMM
  5422. #UD #UD #UD #UD #UD Undefined Instruction
  5423. No more Exceptions
  5424. Note :
  5425. This instruction caused #UD. Intel guaranteed that in future Intel's
  5426. CPUs this instruction will caused #UD. Of course all previous CPUs
  5427. (186+) caused #UD on this opcode. This instruction used by software
  5428. writers for testing #UD exception servise routine.
  5429. ++++++++++++++++++++++++++++++
  5430. Physical Form : UD2
  5431. COP (Code of Operation) : 0Fh 0Bh
  5432. Clocks : UD2
  5433. 8088: Not supported
  5434. NEC V20: Not supported
  5435. 80186: ~int
  5436. 80286: ~int
  5437. 80386: ~int
  5438. Cx486SLC: ~int
  5439. i486: ~int
  5440. Cx486DX: ~int
  5441. Cx5x86: ~int
  5442. Pentium: ~int
  5443. Nx5x86: ~int
  5444. Cx6x86: ~int
  5445. Am5k86: ~int
  5446. Pentium Pro: ~int
  5447. ++++++++++++++++++++++++++++++
  5448. ----------O-UMOV-----------------------------------
  5449. OPCODE UMOV - Mov Data to Main (User) Memory
  5450. CPU: AMD Am386SXLV,Am386DXLV
  5451. AMD 486s
  5452. IBM 486SLC2
  5453. Type of Instruction: Special System
  5454. Instruction: UMOV dest,sorc
  5455. Description:
  5456. dest <- sorc;
  5457. Note!!!!!: But all memory operands placed in Main memory only !
  5458. ( i.e. not in SMRAM then in SMM )
  5459. WARNING: UMC's CPUs hang on execution this instruction !!!!!!
  5460. check that CPU is none UMC's before
  5461. Note: On Cyrix's CPUs UMOV opcodes do nothing. This way used to
  5462. determination of Cyrix Microprocessors.
  5463. Note: Pentium P54C never support this instruction
  5464. Flags Affected: None
  5465. CPU mode: RM?,PM?,VM?,SMM
  5466. +++++++++++++++++++++++
  5467. Physical Form: UMOV r/m8,r8
  5468. COP (Code of Operation) : 0FH 10H Postbyte
  5469. Clocks:
  5470. Am386SXLV or AM386DXLV: 2/2
  5471. IBM 486SLC2 : 4
  5472. +++++++++++++++++++++
  5473. Physical Form: UMOV r/m16,r16
  5474. UMOV r/m32,r32
  5475. COP (Code of Operation) : 0FH 11H Postbyte
  5476. Clocks:
  5477. Am386SXLV or AM386DXLV: 2/2
  5478. IBM 486SLC2 : 4
  5479. +++++++++++++++++++++++
  5480. Physical Form: UMOV r8,r/m8
  5481. COP (Code of Operation) : 0FH 12H Postbyte
  5482. Clocks:
  5483. Am386SXLV or AM386DXLV: 2/4
  5484. IBM 486SLC2 : 4
  5485. +++++++++++++++++++++
  5486. Physical Form: UMOV r16,r/m16
  5487. UMOV r32,r/m32
  5488. COP (Code of Operation) : 0FH 13H Postbyte
  5489. Clocks:
  5490. Am386SXLV or AM386DXLV: 2/4
  5491. IBM 486SLC2 : 4
  5492. ----------O-WBINVD---------------------------------
  5493. OPCODE WBINVD - Write Back and Invalidate Cache
  5494. CPU: I486 +
  5495. Type of Instruction: System
  5496. Instruction: WBINVD
  5497. Description:
  5498. IF (internal cache is WB and in WB mode) THEN
  5499. {
  5500. Write Back Internal Cache;
  5501. }
  5502. Flush internal cache;
  5503. Signal external cache to Write Back;
  5504. Signal external cache to Flush;
  5505. Notes: This instruction not work in Real Mode and in
  5506. Protected mode work only in ring 0 ;
  5507. Flags Affected: None
  5508. CPU mode: PM0,SMM
  5509. Physical Form: INVD
  5510. COP (Code of Operation): 0FH 09H
  5511. Clocks: Cyrix Cx486SLC : 4
  5512. i486 : 5
  5513. Pentium : 2000+
  5514. ----------O-WRMSR----------------------------------
  5515. OPCODE WRMSR - Write to Model Specified Register
  5516. CPU: Pentium (tm), IBM 486SLC2
  5517. Type of Instruction: System
  5518. Instruction: WRMSR
  5519. Description:
  5520. IF (ECX is valid number of MSR) and (CPL=0) THEN
  5521. {
  5522. MSR [ECX] <- EDX:EAX;
  5523. }
  5524. ELSE
  5525. {
  5526. General Protection Fault INT 0DH (0)
  5527. }
  5528. END
  5529. Flags Affected: None
  5530. Note: Refer to RDMSR for more Info.
  5531. CPU mode: RM,PM0,SMM
  5532. Physical Form: WRMSR
  5533. COP (Code of Operation): 0FH 30H
  5534. Clocks: Pentium : 30-45
  5535. ----------O-WRSHR----------------------------------
  5536. OPCODE WRSHR - Write SMM Header Pointer Register
  5537. CPU: Cyrix Cx6x86MX
  5538. Type of Instruction: SMM mode only
  5539. Instruction: WRSHR src
  5540. Description:
  5541. SMHR <- src
  5542. Note: See RDSHR for more details
  5543. Flags Affected: None
  5544. CPU mode: SMM
  5545. ++++++++++++++++
  5546. Physical Form: RDSHR reg/mem32
  5547. COP (Code of Operation) : 0FH 37H Postbyte
  5548. Clocks Cx6x86MX: n/a
  5549. ----------O-X86FMF---------------------------------
  5550. OPCODE X86FMF - Move from IA-32 F.P. register.
  5551. CPU: Merced
  5552. Type of Instruction: User
  5553. Instruction: X86FMF src,dest
  5554. Description:
  5555. Dest [IA-64 register] <- Src [IA-32 F.P. register]
  5556. Flags Affected: None
  5557. CPU mode: IA-64
  5558. Physical Form: X86MF fp_reg,reg64
  5559. COP (Code of Operation): ???
  5560. Clocks: Merced : ??
  5561. ----------O-X86FMT---------------------------------
  5562. OPCODE X86FMT - Move to IA-32 F.P. register.
  5563. CPU: Merced
  5564. Type of Instruction: User
  5565. Instruction: X86FMT src,dest
  5566. Description:
  5567. Dest [IA-32 F.P. register] <- Src [IA-64 register]
  5568. Flags Affected: None
  5569. CPU mode: IA-64
  5570. Physical Form: X86FMT reg64,fp_reg
  5571. COP (Code of Operation): ???
  5572. Clocks: Merced : ??
  5573. ----------O-X86JMP---------------------------------
  5574. OPCODE X86JMP - Jump and change to 32-bit ISA.
  5575. CPU: Merced
  5576. Type of Instruction: User
  5577. Instruction: X86JMP dest
  5578. Description:
  5579. This instruction make jump to specified address, and
  5580. change execution mode from IA-64 to IA-32.
  5581. Note: Another way to change to IA-32 mode it's return from interrupt,
  5582. new IA-64 instruction EVRET used for it.
  5583. Note: [Rel17 Form]
  5584. new XIP = XIP + rel17 * 4 - CS_base;
  5585. Target XIP truncated to 32-bit.
  5586. [Reg64 Form]
  5587. reg32[47:32] contain 16-bit selector
  5588. reg32[31:0] contain 32-bit offset
  5589. (If EFLAGS.VM = 1 then CS_base calculated as in VM,
  5590. = 0, then access LDT/GDT for get CS_base)
  5591. Flags Affected: None
  5592. CPU mode: IA-64
  5593. Physical Form: X86JMP rel17
  5594. X86JMP reg64
  5595. COP (Code of Operation): ???
  5596. Clocks: Merced : ??
  5597. ----------O-X86MF----------------------------------
  5598. OPCODE X86MF - Move from IA-32 GPR register.
  5599. CPU: Merced
  5600. Type of Instruction: User
  5601. Instruction: X86MF src,dest
  5602. Description:
  5603. Dest [IA-64 register] <- Src [IA-32 register]
  5604. IA-32 registers are GPR.
  5605. Flags Affected: None
  5606. CPU mode: IA-64
  5607. Physical Form: X86MF IA32_reg32,reg64
  5608. COP (Code of Operation): ???
  5609. Clocks: Merced : ??
  5610. ----------O-X86MT----------------------------------
  5611. OPCODE X86MT - Move to IA-32 GPR register.
  5612. CPU: Merced
  5613. Type of Instruction: User
  5614. Instruction: X86MT src,dest
  5615. Description:
  5616. Dest [IA-32 register] <- Src [IA-64 register]
  5617. IA-32 registers are GPR.
  5618. Flags Affected: None
  5619. CPU mode: IA-64
  5620. Physical Form: X86MT reg64,IA32_reg32
  5621. COP (Code of Operation): ???
  5622. Clocks: Merced : ??
  5623. ----------O-X86SMF---------------------------------
  5624. OPCODE X86SMF - Move from IA-32 Segment register.
  5625. CPU: Merced
  5626. Type of Instruction: User
  5627. Instruction: X86SMF src,dest
  5628. Description:
  5629. Dest [IA-64 register] <- Src [IA-32 segment register]
  5630. Flags Affected: None
  5631. CPU mode: IA-64
  5632. Physical Form: X86SMF sreg16,reg64
  5633. COP (Code of Operation): ???
  5634. Clocks: Merced : ??
  5635. ----------O-X86SMT---------------------------------
  5636. OPCODE X86SMT - Move to IA-32 Segment register.
  5637. CPU: Merced
  5638. Type of Instruction: User
  5639. Instruction: X86SMT src,dest
  5640. Description:
  5641. Dest [IA-32 segment register] <- Src [IA-64 register]
  5642. Flags Affected: None
  5643. CPU mode: IA-64
  5644. Physical Form: X86SMT reg64,sreg16
  5645. COP (Code of Operation): ???
  5646. Clocks: Merced : ??
  5647. ----------O-XADD-----------------------------------
  5648. OPCODE XADD - Exchange and addition
  5649. CPU: i486+
  5650. Type of Instruction: User
  5651. Instruction: XADD dest,sorc
  5652. Description:
  5653. Temporary <- dest;
  5654. dest <- dest + sorc;
  5655. sorc <- Temporary;
  5656. Flags Affected: ZF,OF,SF,AF,PF,CF ( like ADD instruction ) ( see description)
  5657. CPU mode: RM,PM,VM,SMM
  5658. +++++++++++++++++++++++
  5659. Physical Form: XADD r/m8,r8
  5660. COP (Code of Operation) : 0FH C0H Postbyte
  5661. Clocks:
  5662. Intel i486 : 3/4
  5663. Cyrix Cx486SLC : 3/6
  5664. Pentium (tm) : 3/4
  5665. Penalty if cache miss :
  5666. Intel i486 : 6/2 ; Unlocked/Locked
  5667. Cyrix Cx486SLC : 0 ; N/A
  5668. +++++++++++++++++++++
  5669. Physical Form: XADD r/m16,r16
  5670. XADD r/m32,r32
  5671. COP (Code of Operation) : 0FH C1H Postbyte
  5672. Clocks:
  5673. Intel i486 : 3/4
  5674. Cyrix Cx486SLC : 3/6
  5675. Pentium (tm) : 3/4
  5676. Penalty if cache miss :
  5677. Intel i486 : 6/2 ; Unlocked/Locked
  5678. Cyrix Cx486SLC : 1 ; N/A
  5679. ----------O-XBTS-----------------------------------
  5680. OPCODE XBTS - Extract Bits String
  5681. CPU: 80386 step A0-B0 only
  5682. Type of Instruction: User
  5683. Instruction: XBTS dest,base,bitoffset,len
  5684. Description:
  5685. Write bit string length <len> bits from bitfield, defined by
  5686. <base> and bitsoffset <bitoffset> from this base to start of
  5687. the field to read. String read from this start field bit to
  5688. higher memory addresses or register bits.
  5689. And after it string placed to <dest> operand, lowest bit of
  5690. register or memory to bit 0 of <dest>.
  5691. Note: Use SHLD/SHRD instructions for extract bits strings.
  5692. On 80386 steps B1+ this opcode generation INT 6,
  5693. and on some of 486 other instruction replace this
  5694. instruction opcode.
  5695. Flags Affected: None
  5696. CPU mode: RM,PM,VM
  5697. +++++++++++++++++++++++
  5698. Physical Form: XBTS r16,r/m16,AX,CL
  5699. XBTS r32,r/m32,EAX,CL
  5700. COP (Code of Operation) : 0FH A6H Postbyte
  5701. Clocks: XBTS
  5702. 80386: 6/13
  5703. -----------------------------------------------------
  5704. APPENDIX A0
  5705. Cyrix Cx486SLC/DLC configuration Registers
  5706. for Cx486DLC:
  5707. Register Full Register Name Index size(bits)
  5708. CCR0 Configuration Control Register #0 C0H 8
  5709. CCR1 Configuration Control Register #1 C1H 8
  5710. NCR1 Non-cacheble Region #0 C4H-C6H 24
  5711. NCR2 Non-cachable Region #1 C7H-C9H 24
  5712. NCR3 Non-cacheble Region #2 CAH-CCH 24
  5713. NCR4 Non-cacheble Region #4 CDH-CFH 24
  5714. for Cx486SLC:
  5715. Register Full Register Name Index size(bits)
  5716. CCR0 Configuration Control Register #0 C0H 8
  5717. CCR1 Configuration Control Register #1 C1H 8
  5718. NCR1 Non-cacheble Region #0 C5H-C6H 16
  5719. NCR2 Non-cachable Region #1 C8H-C9H 16
  5720. NCR3 Non-cacheble Region #2 CBH-CCH 16
  5721. NCR4 Non-cacheble Region #4 CEH-CFH 16
  5722. For access to this register You need to do:
  5723. A) write INDEX_OF_REGISTER to I/O port #22H
  5724. B) wait 5-6 clocks
  5725. D) read/write DATA from/to register via I/O port #23
  5726. Note: If Index of register not in range C0H..CFH then Cyrix CPU
  5727. generated external bus cycle. If You try to read I/O port
  5728. #22H CPU will generated external bus cycle too. Then index
  5729. is out of range all operations with port #23H will generate
  5730. external bus cycle.
  5731. State After Reset:
  5732. CCR0 00H
  5733. CCR1 xxxx xxx0B
  5734. NCR1 000Fh
  5735. NCR2 0
  5736. NCR3 0
  5737. NCR4 0
  5738. format of registers:
  5739. CCR0:
  5740. Bit Name Description
  5741. 7 SUSPEND
  5742. If =1 then enable SUSP# and SUSPA# pins, which used for
  5743. put CPU in PowerSave mode.
  5744. If =0 disable
  5745. 6 CO (Cache Organisation)
  5746. If =0 2ways set associative
  5747. If =1 Dirrect Mapped
  5748. 5 BARB
  5749. If =1 then enable flushing internal cache when begining
  5750. HOLD state.
  5751. IF =0 disable.
  5752. 4 FLUSH
  5753. If =1 enable input pin FLUSH#
  5754. if =0 disable
  5755. 3 KEN
  5756. If =1 enable input pin KEN#
  5757. if =0 disable
  5758. 2 A20M
  5759. If =1 enable input pin A20M#
  5760. if =0 disable
  5761. 1 NC1
  5762. If=1 then 640KB-1MB area never caching
  5763. If=0 caching (but see NCRi)
  5764. 0 NC0
  5765. If=1 then first 64K of each 1MB bounds not caching,
  5766. when in Real or Virtual8086 mode
  5767. If =0 caching
  5768. CCR1:
  5769. Bit Name Description
  5770. 7-1 Reserved
  5771. 0 RPL
  5772. If =1 then enable RPLSET,RPLVAL# pins
  5773. If =0 this pins are disable and float.
  5774. NCRi:
  5775. Byte Bits Description
  5776. 0 7-0 Address bits A31-A24 of non-cacheble region start
  5777. (Reserved for Cx486SLC)
  5778. 1 7-0 Address bits A23-A16 of non-cachable region start
  5779. 2 7-4 Address bits A15-A12 of non-cacheble region start
  5780. 2 3-0 Size of non-cacheble block:
  5781. 0000 Disable NCRi
  5782. 0001 4K
  5783. 0010 8K
  5784. 0011 16K
  5785. 0100 32K
  5786. 0101 64K
  5787. 0110 128K
  5788. 0111 256K
  5789. 1000 512K
  5790. 1001 1M
  5791. 1010 2M
  5792. 1011 4M
  5793. 1100 8M
  5794. 1101 16M
  5795. 1110 32M
  5796. 1111 4G
  5797. NCRi bytes:
  5798. Byte
  5799. NCRi 0 1 2
  5800. NCR1 C4H C5H C6H
  5801. NCR2 C7H C8H C9H
  5802. NCR3 CAH CBH CCH
  5803. NCR4 CDH CEH CFH
  5804. ---------------------------------------------------
  5805. APPENDIX A1
  5806. Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  5807. IBM BL486DX/DX2
  5808. configuration Registers
  5809. Register Full Register Name Index size(bits)
  5810. CCR1 Configuration Control Register #1 C1H 8
  5811. CCR2 Configuration Control Register #2 C2H 8
  5812. CCR3 Configuration Control Register #3 C3H 8
  5813. SMAR SMM Address Region CDH-CFH 24
  5814. DIR0 Device Identification register #0 FEH 8
  5815. DIR1 Device Identification register #1 FFH 8
  5816. For access to this register You need to do:
  5817. A) write INDEX_OF_REGISTER to I/O port #22H
  5818. B) wait 5-6 clocks
  5819. D) read/write DATA from/to register via I/O port #23
  5820. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  5821. CPU generated external bus cycle. If You try to read I/O port
  5822. #22H CPU will generated external bus cycle too. Then index
  5823. is out of range all operations with port #23H will generate
  5824. external bus cycle.
  5825. State After Reset:
  5826. CCR1 00H
  5827. CCR2 00H
  5828. CCR3 00H
  5829. SMAR 0
  5830. DIR0 see DIR0 description
  5831. DIR1 see DIR1 description
  5832. format of registers:
  5833. CCR1:
  5834. Bit Name Description
  5835. 7..5 Reserved
  5836. 4 NO_LOCK (Negate LOCK#)
  5837. 3 MMAC (Main Memory Access)
  5838. If =1 then all data access which occur within SMI
  5839. routine (when SMAC=1) accessing main memory instead
  5840. SMM space
  5841. =0 No affects on access
  5842. 2 SMAC (System Managment Memory Access)
  5843. If =1 Any access within SMM memory space issued with SMAADS#
  5844. output active, SMI# ignored
  5845. =0 No affects on access
  5846. 1 SMI (Enable SMM pins)
  5847. If =1 then enable SMI# i/o pin and SMADS# output pin
  5848. =0 Float it
  5849. 0 RPL (Enable RPL pins)
  5850. If=1 then enable output pins RPLSET(1-0) and RPLVAL#
  5851. =0 Float it
  5852. CCR2:
  5853. Bit Name Description
  5854. 7 SUSP (Enable Suspend pins)
  5855. If =1 SUSP# input and SUSPA# output pins enabled
  5856. =0 Float
  5857. 6 BWRT (Enable Burst Write Cycle)
  5858. If =1 enable use of 16byte burst WB cycle
  5859. =0 disable
  5860. 5 BARB (Enable cache coherency on Bus Arbitration)
  5861. If =1 enable write back of all dirty cache data when
  5862. HOLD is requered and prior to asserting HLDA.
  5863. =0 isable
  5864. 4 WT1 (Write-Through Region 1)
  5865. If =1 Forces all writes to the 640KB-1MB region that
  5866. hit in cache issued on the external bus
  5867. 3 HALT (Suspend on HALT)
  5868. If =1 CPU enters suspend mode following execution
  5869. HLT instruction.
  5870. 2 LOCK_NW (Lock NW bit)
  5871. If =1 Prohibits changing the state of NW bit in CR0
  5872. 1 WBAK (Enable WB Cache Interface pins)
  5873. If =1 then enable INVAL,WM_RST and HITM# pins
  5874. =0 float it
  5875. 0 COP?? Reserved
  5876. (Award BIOS used this bit during coprocessor Test,
  5877. in Cx486S, Cx486S2 only)
  5878. (may be turn coprocessor on :)))
  5879. CCR3:
  5880. Note: Cyrix Cx486S/D never have CCR3 register.
  5881. Bit Name Description
  5882. 7..2 Reserved
  5883. 1 NMIEN (NMI Enable)
  5884. If =1 then NMI enable during SMM
  5885. If =0 NMI don't recognizing during SMM
  5886. 0 SMI_LOCK (SMM Register Lock)
  5887. If =1 the following SMM control bits can not
  5888. be modified:
  5889. CCR1: bits 1,2,3
  5890. CCR3: bit 1
  5891. But this bit may be changed in SMM.
  5892. This bit (SMI_LOCK) clearing RESET only.
  5893. SMAR:
  5894. (Index CDh)
  5895. Bit Description
  5896. 7..0 A31..A24 bits of starting adress of SMM region
  5897. (Index CEh)
  5898. Bit Description
  5899. 7..0 A23..A16 bits of starting adress of SMM region
  5900. (Index CFh)
  5901. Bit Description
  5902. 7..4 A15..A12 bits of starting adress of SMM region
  5903. 3..0 Size of SMM region:
  5904. 0000 SMM region disabled
  5905. 0001 4K
  5906. 0010 8K
  5907. 0011 16K
  5908. 0100 32K
  5909. 0101 64K
  5910. 0110 128K
  5911. 0111 256K
  5912. 1000 512K
  5913. 1001 1M
  5914. 1010 2M
  5915. 1011 4M
  5916. 1100 8M
  5917. 1101 16M
  5918. 1110 32M
  5919. 1111 4K
  5920. DIR0:
  5921. Bit Description
  5922. 7..0 (Device Identification)
  5923. for Cx486SLC/e = 00h
  5924. for Cx486DLC = 01h
  5925. for Cx486SLC2 = 02h
  5926. for Cx486DLC2 = 03h
  5927. for Cx486SRx = 04h
  5928. for Cx486DRx = 05h
  5929. for Cx486SRx2 = 06h
  5930. for Cx486DRx2 = 07h
  5931. for Cx486SRu = 08h
  5932. for Cx486DRu = 09h
  5933. for Cx486SRu2 = 0Ah
  5934. for Cx486DRu2 = 0Bh
  5935. for Cx486S (B step) = 10h
  5936. for Cx486S2 = 11h
  5937. for Cx486Se = 12h or 14h or 16h
  5938. for Cx486S2/e = 13h or 15h or 17h
  5939. for Cx486DX/BL486DX = 1Ah
  5940. for Cx486DX2/BL486DX2 = 1Bh
  5941. for ST486DX2 = 1Bh
  5942. for TI486DX2 = 1Bh
  5943. for Cx486DX4 (x2 mode)= 1Bh (x2 mode)
  5944. Note: DIR1 = 36h for DX4
  5945. 1Fh (x3 mode)
  5946. for Cx5x86 (M1sc) = 28h (x1,S)
  5947. = 29h (x2,S)
  5948. = 2Ah (x1,P)
  5949. = 2Bh (x2,P)
  5950. = 2Ch (x4,S)
  5951. = 2Dh (x3,S)
  5952. = 2Eh (x4,P)
  5953. = 2Fh (x3,P)
  5954. for Cyrix Cx6x86 (M1) = 20h,30h (1x,S)
  5955. = 21h,31h (2x,S)
  5956. = 22h,32h (1x,P)
  5957. = 23h,33h (2x,P)
  5958. = 24h,34h (4x,S)
  5959. = 25h,35h (3x,S)
  5960. = 26h,36h (4x,P)
  5961. = 27h,37h (3x,P)
  5962. for Cyrix Cx6x86L(M1) = 30h (1x) [DIR1 > 21h]
  5963. = 31h (2x) [DIR1 > 21h]
  5964. = 35h (3x) [DIR1 > 21h]
  5965. = 34h (4x) [DIR1 > 21h]
  5966. for Cyrix MediaGX = 41h (3x)
  5967. = 44h (4x,S)
  5968. = 45h (3x,S)
  5969. = 46h (4x,P)
  5970. = 47h (3x,P)
  5971. for Cyrix GXm = 40h (4x)
  5972. = 41h (6x)
  5973. = 42h (4x)
  5974. = 43h (6x)
  5975. = 44h (7x)
  5976. = 45h (8x)
  5977. = 46h (7x)
  5978. = 47h (5x)
  5979. for Cyrix 6x86MX (M2) = 50h (1.5x,S)
  5980. = 51h (2x,S)
  5981. = 52h (2.5x,S)
  5982. = 53h (3x,S)
  5983. = 54h (3.5x,S)
  5984. = 55h (4x,S)
  5985. = 56h (4.5x,S)
  5986. = 57h (5x,S)
  5987. = 58h (1,5x,P)
  5988. = 59h (2x,P)
  5989. = 5Ah (2.5x,P)
  5990. = 5Bh (3x,P)
  5991. = 5Ch (3.5x,P)
  5992. = 5Dh (4x,P)
  5993. = 5Eh (4.5x,P)
  5994. = 5Fh (5x,P)
  5995. for TI486DX4 = 81h
  5996. for Cyrix OverDrive = FDh
  5997. for TI Potomac's = FFh ;; None connections
  5998. Important Note: The original Cx486SLC never have DIRi registers.
  5999. DIR1:
  6000. Note: Cyrix Cx486S/D never have DIR1 register.
  6001. Bit Name Description
  6002. 7..4 SID Stepping Identificator
  6003. 3..0 RID Revision Identification
  6004. See Appendix A3 for more information
  6005. CPU DIR0 DIR1 NOTE
  6006. Cx486DX-40 1Ah 05h
  6007. Cx486DX-50 1Ah 05h
  6008. Cx486DX2-50 1Bh 08h
  6009. Cx486DX2-50 1Bh 08h Marked 001 on pin side of chip
  6010. ST486DX2-66 1Bh 0Bh
  6011. ST486DX2-66 1Bh 0Bh
  6012. Cx486DX2-v80 1Bh 31h 3 VOLT
  6013. Cx486DX4-v100 1Fh 36h 3 VOLT
  6014. Cx5x86-100 2Dh 13h 3 VOLT
  6015. TI486DX2-66,80 1Bh 32h stepping eA0
  6016. TI486DX2-66,80 1Bh B2h stepping eB0
  6017. TI486DX4-100 81h 91h
  6018. -----------------------------------------------------
  6019. APPENDIX A2
  6020. TI486SXLC/SXL configuration Registers
  6021. for TI486SXL
  6022. --------------
  6023. Register Full Register Name Index size(bits)
  6024. CCR0 Configuration Control Register #0 C0H 8
  6025. CCR1 Configuration Control Register #1 C1H 8
  6026. ARR1 Address Region #1 C4H-C6H 24
  6027. ARR2 Address Region #2 C7H-C9H 24
  6028. ARR3 Address Region #3 CAH-CCH 24
  6029. ARR4 Address Region #4 CDH-CFH 24
  6030. for TI486SXLC
  6031. --------------
  6032. Register Full Register Name Index size(bits)
  6033. CCR0 Configuration Control Register #0 C0H 8
  6034. CCR1 Configuration Control Register #1 C1H 8
  6035. ARR1 Address Region #1 C5H-C6H 16
  6036. ARR2 Address Region #2 C8H-C9H 16
  6037. ARR3 Address Region #3 CBH-CCH 16
  6038. ARR4 Address Region #4 CEH-CFH 16
  6039. For access to this register You need to do:
  6040. A) write INDEX_OF_REGISTER to I/O port #22H
  6041. B) wait 5-6 clocks
  6042. D) read/write DATA from/to register via I/O port #23
  6043. Note: If Index of register not in range C0H..CFH then Cyrix CPU
  6044. generated external bus cycle. If You try to read I/O port
  6045. #22H CPU will generated external bus cycle too. Then index
  6046. is out of range all operations with port #23H will generate
  6047. external bus cycle.
  6048. State After Reset:
  6049. CCR0 00H
  6050. CCR1 xxxx xxx0B
  6051. ARR1 000Fh ; 4Gbyte Non-Caching Region
  6052. ARR2 0
  6053. ARR3 0
  6054. ARR4 0
  6055. format of registers:
  6056. CCR0:
  6057. Bit Name Description
  6058. 7 SUS
  6059. If =1 then enable SUSP# and SUSPA# pins, which used for
  6060. put CPU in PowerSave mode.
  6061. If =0 disable
  6062. 6 CKD (Clock Double)
  6063. If =0 Disable Clock-double mode
  6064. If =1 Enable Clock-Double mode
  6065. 5 BARB
  6066. If =1 then enable flushing internal cache when begining
  6067. HOLD state.
  6068. IF =0 disable.
  6069. 4 FLUSH
  6070. If =1 enable input pin FLUSH#
  6071. if =0 disable
  6072. 3 KEN
  6073. If =1 enable input pin KEN#
  6074. if =0 disable
  6075. 2 A20M
  6076. If =1 enable input pin A20M#
  6077. if =0 disable
  6078. 1 NC1
  6079. If=1 then 640KB-1MB area never caching
  6080. If=0 caching (but see NCRi)
  6081. 0 NC0
  6082. If=1 then first 64K of each 1MB bounds not caching,
  6083. when in Real or Virtual8086 mode
  6084. If =0 caching
  6085. CCR1:
  6086. Bit Name Description
  6087. 7 SM4
  6088. Access Region 4 Control
  6089. If=1 then Region 4 is non-cachable SMM Memory Space
  6090. If=0 Region 4 is non-cachable. SMI# input ignored.
  6091. 6 WP3
  6092. Access Region 3 Control
  6093. If=1 then Region 3 is write-protected and cachable
  6094. If=0 Region 3 is non-cachable.
  6095. 5 WP2
  6096. Access Region 2 Control
  6097. If=1 then Region 2 is write-protected and cachable
  6098. If=0 Region 2 is non-cachable.
  6099. 4 WP1
  6100. Access Region 1 Control
  6101. If=1 then Region 1 is write-protected and cachable
  6102. If=0 Region 1 is non-cachable.
  6103. 3 NMAC
  6104. Main Memory Access
  6105. If=1 All data accesses which occur within SMI service routine
  6106. (or then SMAC=1) will access main memory instead of SMM Memory space
  6107. If=0 No changes in access
  6108. 2 SMAC
  6109. System Managment memory access
  6110. If=1 Any access to addresses within SMM memory space cause external bus
  6111. cycles to be issued with SMADS# output active. SMI# input is ignored.
  6112. 1 SMI
  6113. Enable SMM Pins
  6114. If=1 SMI# input/output pin and SMADS# output pin are enabled
  6115. If=0 Disabled
  6116. 0 Reserved
  6117. ARRi:
  6118. Byte Bits Description
  6119. 0 7-0 Address bits A31-A24 of non-cacheble region start
  6120. (Reserved for TI486SXLC)
  6121. 1 7-0 Address bits A23-A16 of non-cachable region start
  6122. 2 7-4 Address bits A15-A12 of non-cacheble region start
  6123. 2 3-0 Size of non-cacheble block:
  6124. 0000 Disable NCRi
  6125. 0001 4K
  6126. 0010 8K
  6127. 0011 16K
  6128. 0100 32K
  6129. 0101 64K
  6130. 0110 128K
  6131. 0111 256K
  6132. 1000 512K
  6133. 1001 1M
  6134. 1010 2M
  6135. 1011 4M
  6136. 1100 8M
  6137. 1101 16M
  6138. 1110 32M
  6139. 1111 4G
  6140. ARRi bytes:
  6141. Byte
  6142. ARRi 0 1 2
  6143. ARR1 C4H C5H C6H
  6144. ARR2 C7H C8H C9H
  6145. ARR3 CAH CBH CCH
  6146. ARR4 CDH CDH CEH
  6147. ---------------------------------------------------
  6148. APPENDIX A3
  6149. Texas Instruments TI486DX2,TI486DX4
  6150. configuration Registers
  6151. Register Full Register Name Index size(bits)
  6152. CCR1 Configuration Control Register #1 C1H 8
  6153. CCR2 Configuration Control Register #2 C2H 8
  6154. CCR3 Configuration Control Register #3 C3H 8
  6155. SMAR SMM Address Region CDH-CFH 24
  6156. DIR0 Device Identification register #0 FEH 8
  6157. DIR1 Device Identification register #1 FFH 8
  6158. For access to this register You need to do:
  6159. A) write INDEX_OF_REGISTER to I/O port #22H
  6160. B) wait 5-6 clocks
  6161. D) read/write DATA from/to register via I/O port #23
  6162. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  6163. CPU generated external bus cycle. If You try to read I/O port
  6164. #22H CPU will generated external bus cycle too. Then index
  6165. is out of range all operations with port #23H will generate
  6166. external bus cycle.
  6167. State After Reset:
  6168. CCR1 00H
  6169. CCR2 00H
  6170. CCR3 00H
  6171. SMAR 0
  6172. DIR0 see DIR0 description
  6173. DIR1 see DIR1 description
  6174. format of registers:
  6175. CCR1:
  6176. Bit Name Description
  6177. 7..5 Reserved
  6178. 4 NO_LOCK (Negate LOCK#)
  6179. If =0 Usuall scheme
  6180. If =1 previously noncachable locked cycles will be
  6181. executed as unlocked, result is higher perfomanse.
  6182. 3 MMAC (Main Memory Access)
  6183. If =1 then all data access which occur within SMI
  6184. routine (when SMAC=1) accessing main memory instead
  6185. SMM space
  6186. =0 No affects on access
  6187. 2 SMAC (System Managment Memory Access)
  6188. If =1 Any access within SMM memory space issued with SMAADS#
  6189. output active, SMI# ignored
  6190. =0 No affects on access
  6191. 1 SMI (Enable SMM pins)
  6192. If =1 then enable SMI# i/o pin and SMADS# output pin
  6193. =0 Float it
  6194. 0 RPL (Enable RPL pins)
  6195. If=1 then enable output pins RPLSET(1-0) and RPLVAL#
  6196. =0 Float it
  6197. CCR2:
  6198. Bit Name Description
  6199. 7 SUSP (Enable Suspend pins)
  6200. If =1 SUSP# input and SUSPA# output pins enabled
  6201. =0 Float
  6202. 6 BWRT (Enable Burst Write Cycle)
  6203. If =1 enable use of 16byte burst WB cycle
  6204. =0 disable
  6205. 5 BARB (Enable cache coherency on Bus Arbitration)
  6206. If =1 enable write back of all dirty cache data when
  6207. HOLD is requered and prior to asserting HLDA.
  6208. =0 isable
  6209. 4 WT1 (Write-Through Region 1)
  6210. If =1 Forces all writes to the 640KB-1MB region that
  6211. hit in cache issued on the external bus
  6212. 3 HALT (Suspend on HALT)
  6213. If =1 CPU enters suspend mode following execution
  6214. HLT instruction.
  6215. 2 LOCK_NW (Lock NW bit)
  6216. If =1 Prohibits changing the state of NW bit in CR0
  6217. 1 WBAK (Enable WB Cache Interface pins)
  6218. If =1 then enable INVAL,WM_RST and HITM# pins
  6219. =0 float it
  6220. 0 Reserved
  6221. CCR3:
  6222. Note: Cyrix Cx486S/D never have CCR3 register.
  6223. Bit Name Description
  6224. 7..4 Reserved
  6225. 3 SM_MODE (SMM Mode Select)
  6226. If =0 then Normal SMM mode (Cyrix style)
  6227. If =1 then SL-compatible mode
  6228. (but SMI_LOCK MUST BE 0)
  6229. Note: For more info refer to
  6230. "TI486DX2 Microprocessor SM Mode Programming Guide"
  6231. // Texas Instruments 1995 (literature number SRZU019)
  6232. 2 Reserved
  6233. 1 NMIEN (NMI Enable)
  6234. If =1 then NMI enable during SMM
  6235. If =0 NMI don't recognizing during SMM
  6236. 0 SMI_LOCK (SMM Register Lock)
  6237. If =1 the following SMM control bits can not
  6238. be modified:
  6239. CCR1: bits 1,2,3
  6240. CCR3: bit 1
  6241. Any SMAR bits
  6242. But this bit may be changed in SMM.
  6243. This bit (SMI_LOCK) clearing RESET only.
  6244. SMAR:
  6245. (Index CDh)
  6246. Bit Description
  6247. 7..0 A31..A24 bits of starting adress of SMM region
  6248. (Index CEh)
  6249. Bit Description
  6250. 7..0 A23..A16 bits of starting adress of SMM region
  6251. (Index CFh)
  6252. Bit Description
  6253. 7..4 A15..A12 bits of starting adress of SMM region
  6254. 3..0 Size of SMM region:
  6255. 0000 SMM region disabled
  6256. 0001 4K
  6257. 0010 8K
  6258. 0011 16K
  6259. 0100 32K
  6260. 0101 64K
  6261. 0110 128K
  6262. 0111 256K
  6263. 1000 512K
  6264. 1001 1M
  6265. 1010 2M
  6266. 1011 4M
  6267. 1100 8M
  6268. 1101 16M
  6269. 1110 32M
  6270. 1111 4K
  6271. DIR0:
  6272. Bit Description
  6273. 7..0 (Device Identification)
  6274. for TI486DX2 = 1Bh (compare with Cyrix's DIR0)
  6275. for TI486DX4 = 81h
  6276. DIR1:
  6277. Bit Name Description
  6278. 7 MID Manafacturer ID
  6279. 0 = Cyrix
  6280. 1 = Texas Instruments (support starting TI486DX2 eB0 steping)
  6281. 6..4 SID Stepping Identificator
  6282. 3..0 RID Revision Identification
  6283. see Appendix A1 for more info about identification.
  6284. ---------------------------------------------------
  6285. APPENDIX A4
  6286. Cyrix Cx5x86, IBM 5x86
  6287. configuration Registers
  6288. for access
  6289. Register Full Register Name Index size(bits) MAPEN(3..0)
  6290. PCR0 Perfomance Control register 20h 8 1
  6291. CCR1 Configuration Control Register #1 C1H 8 x
  6292. CCR2 Configuration Control Register #2 C2H 8 x
  6293. CCR3 Configuration Control Register #3 C3H 8 x
  6294. CCR4 Configuration Control Register #4 E8h 8 1
  6295. SMAR SMM Address Region CDH-CFH 24 x
  6296. PMR Power Managment register F0h 8 1
  6297. DIR0 Device Identification register #0 FEH 8 x
  6298. DIR1 Device Identification register #1 FFH 8 x
  6299. For access to this register You need to do:
  6300. A) write INDEX_OF_REGISTER to I/O port #22H
  6301. B) wait 5-6 clocks
  6302. D) read/write DATA from/to register via I/O port #23
  6303. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  6304. CPU generated external bus cycle. If You try to read I/O port
  6305. #22H CPU will generated external bus cycle too. Then index
  6306. is out of range all operations with port #23H will generate
  6307. external bus cycle.
  6308. State After Reset:
  6309. CCR1 00H
  6310. CCR2 00H
  6311. CCR3 00H
  6312. SMAR 0
  6313. DIR0 see DIR0 description
  6314. DIR1 see DIR1 description
  6315. format of registers:
  6316. PCR0:
  6317. Bit Name Description
  6318. 7 LSSER If set, all memory reads/writes will occur in execution order
  6319. 6..3 Reserved
  6320. 2 LOOP_EN If set, enables faster support for loops.
  6321. 1 BTB_EN If set, enables the Branch Target Buffer for branch prediction
  6322. 0 RSTK_EN If se, enables call return stack
  6323. CCR1:
  6324. Bit Name Description
  6325. 7..4 Reserved
  6326. 3 MMAC (Main Memory Access)
  6327. If =1 then all data access which occur within SMI
  6328. routine (when SMAC=1) accessing main memory instead
  6329. SMM space
  6330. =0 No affects on access
  6331. 2 SMAC (System Managment Memory Access)
  6332. If =1 Any access within SMM memory space issued with SMAADS#
  6333. output active, SMI# ignored
  6334. =0 No affects on access
  6335. 1 SMI (Enable SMM pins)
  6336. If =1 then enable SMI# i/o pin and SMADS# output pin
  6337. =0 Float it
  6338. 0 Reserved
  6339. CCR2:
  6340. Bit Name Description
  6341. 7 SUSP (Enable Suspend pins)
  6342. If =1 SUSP# input and SUSPA# output pins enabled
  6343. =0 Float
  6344. 6 BWRT (Enable Burst Write Cycle)
  6345. If =1 enable use of 16byte burst WB cycle
  6346. =0 disable
  6347. 5 Reserved
  6348. 4 WT1 (Write-Through Region 1)
  6349. If =1 Forces all writes to the 640KB-1MB region that
  6350. hit in cache issued on the external bus
  6351. 3 HALT (Suspend on HALT)
  6352. If =1 CPU enters suspend mode following execution
  6353. HLT instruction.
  6354. 2 LOCK_NW (Lock NW bit)
  6355. If =1 Prohibits changing the state of NW bit in CR0
  6356. 1 WBAK (Enable WB Cache Interface pins)
  6357. If =1 then enable INVAL,WM_RST and HITM# pins
  6358. =0 float it
  6359. 0 Reserved
  6360. CCR3:
  6361. Bit Name Description
  6362. 7..4 MAPEN(3-0) (Register Mapping Enable)
  6363. If set to 0001b all register accessible,
  6364. else 0000h then accessed only (C0j-CFh,FEh,FFh)
  6365. 3 SMM_MODE
  6366. If =1, then CPU hardware interface pins are redefined to
  6367. function like SMM hardware interface on SL Enhanced Intel's CPUs
  6368. 2 LINBRST
  6369. If =1, CPU will use linear address sequence when performing
  6370. burst cycle, If =0 CPU will used 1+4 address sequence.
  6371. 1 NMIEN (NMI Enable)
  6372. If =1 then NMI enable during SMM
  6373. If =0 NMI don't recognizing during SMM
  6374. 0 SMI_LOCK (SMM Register Lock)
  6375. If =1 the following SMM control bits can not
  6376. be modified:
  6377. CCR1: bits 1,2,3
  6378. CCR3: bit 1
  6379. But this bit may be changed in SMM.
  6380. This bit (SMI_LOCK) clearing RESET only.
  6381. SMAR:
  6382. (Index CDh)
  6383. Bit Description
  6384. 7..0 A31..A24 bits of starting adress of SMM region
  6385. (Index CEh)
  6386. Bit Description
  6387. 7..0 A23..A16 bits of starting adress of SMM region
  6388. (Index CFh)
  6389. Bit Description
  6390. 7..4 A15..A12 bits of starting adress of SMM region
  6391. 3..0 Size of SMM region:
  6392. 0000 SMM region disabled
  6393. 0001 4K
  6394. 0010 8K
  6395. 0011 16K
  6396. 0100 32K
  6397. 0101 64K
  6398. 0110 128K
  6399. 0111 256K
  6400. 1000 512K
  6401. 1001 1M
  6402. 1010 2M
  6403. 1011 4M
  6404. 1100 8M
  6405. 1101 16M
  6406. 1110 32M
  6407. 1111 4K
  6408. CCR4:
  6409. Bit Name Description
  6410. 7 CPUIDEN (Enable CPUID instruction)
  6411. If =1 bit 21 of EFLAGS (ID) may changed, and CPUID instruction
  6412. enabled,
  6413. else bit 21 of EFLAGS =0 forever and CPUID caused INT 6 -
  6414. Invalid Opcode
  6415. 6 Reserved
  6416. 5 FP_FAST
  6417. If =1, FPU execution reporting enabled
  6418. 4 DTE
  6419. If =1, Directory Table Entry cache is enabled
  6420. 3 MEM_BYP
  6421. If =1, Enabled memory read bypassing
  6422. 2..0 IORT[2..0]
  6423. Specify minimum number of bus clocks between two I/O
  6424. accesses (I/O recovery time)
  6425. 000 - No Delay
  6426. 001 - 2 clk
  6427. 010 - 4 clk
  6428. 011 - 8 clk
  6429. 100 - 16 clk
  6430. 101 - 32 clk (Default Value)
  6431. 110 - 64 clk
  6432. 111 - 128 clk
  6433. PMR:
  6434. Bit Name Description
  6435. 7..3 Reserved
  6436. 2..0 CLK[2..0]
  6437. Select Bus/Core Operation Frequency
  6438. CLK2 CLK1 CLK0 Core/Bus
  6439. 1 x x 1/2
  6440. 0 0 0 1/1
  6441. 0 0 1 2/1
  6442. 0 1 0 3/1
  6443. 0 1 1 reserved
  6444. DIR0:
  6445. Bit Description
  6446. 7..0 (Device Identification)
  6447. Value Description Core/Bus clk
  6448. 29h or 2Bh Cx/IBM/ST 5x86 2/1
  6449. 2Dh or 2Fh Cx/IBM/ST 5x86 3/1
  6450. DIR1:
  6451. Bit Name Description
  6452. 7..4 SID Stepping Identificator
  6453. 3..0 RID Revision Identification
  6454. Note: 5x86 Cyrix/IBM/ST
  6455. Stepping Revision
  6456. 0 0 EDX after reset = [15:8]=DIR1, [7:0]=DIR0
  6457. 0 1 EDX after reset = [15:8]=DIR1, [7:0]=DIR0
  6458. 0 2 EDX after reset = [15:8]=04h [7:0]=90h
  6459. 0 5
  6460. 1 3
  6461. see Appendix A1 for more info about identification.
  6462. ---------------------------------------------------
  6463. APPENDIX A5
  6464. Cyrix Cx6x86 (M1), IBM 6x86
  6465. configuration Registers
  6466. for access
  6467. Register Full Register Name Index size(bits) MAPEN(3..0)
  6468. DBR0 30H 8 ?
  6469. ??? 31H 8 ?
  6470. ??? 32H 8 ?
  6471. ??? 33H 8 ?
  6472. ??? 34H 8 ?
  6473. ??? 38H 8 ?
  6474. ??? 3CH 8 ?
  6475. CCR0 Configuration Control Register #0 C0H 8 x
  6476. CCR1 Configuration Control Register #1 C1H 8 x
  6477. CCR2 Configuration Control Register #2 C2H 8 x
  6478. CCR3 Configuration Control Register #3 C3H 8 x
  6479. ARR0 Address Region Register #0 C4H-C6H 24 x
  6480. ARR1 Address Region Register #1 C7H-C9H 24 x
  6481. ARR2 Address Region Register #2 CAH-CCH 24 x
  6482. ARR3 Address Region Register #3 CDH-CFH 24 x
  6483. ARR4 Address Region Register #4 D0H-D2H 24 1
  6484. ARR5 Address Region Register #5 D3H-D5H 24 1
  6485. ARR6 Address Region Register #6 D6H-D8H 24 1
  6486. ARR7 Address Region Register #7 D9H-DBH 24 1
  6487. RCR0 Region Configuration Register #0 DCh 8 1
  6488. RCR1 Region Configuration Register #1 DDh 8 1
  6489. RCR2 Region Configuration Register #2 DEh 8 1
  6490. RCR3 Region Configuration Register #3 DFh 8 1
  6491. RCR4 Region Configuration Register #4 E0h 8 1
  6492. RCR5 Region Configuration Register #5 E1h 8 1
  6493. RCR6 Region Configuration Register #6 E2h 8 1
  6494. RCR7 Region Configuration Register #7 E3h 8 1
  6495. CCR4 Configuration Control Register #4 E8h 8 1
  6496. CCR5 Configuration Control Register #5 E9h 8 1
  6497. DIR0 Device Identification register #0 FEH 8 x
  6498. DIR1 Device Identification register #1 FFH 8 x
  6499. For access to this register You need to do:
  6500. A) write INDEX_OF_REGISTER to I/O port #22H
  6501. B) wait 5-6 clocks
  6502. D) read/write DATA from/to register via I/O port #23
  6503. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  6504. CPU generated external bus cycle. If You try to read I/O port
  6505. #22H CPU will generated external bus cycle too. Then index
  6506. is out of range all operations with port #23H will generate
  6507. external bus cycle.
  6508. State After Reset:
  6509. CCR1 00H
  6510. CCR2 00H
  6511. CCR3 00H
  6512. SMAR 0
  6513. DIR0 see DIR0 description
  6514. DIR1 see DIR1 description
  6515. format of registers:
  6516. DBR0:
  6517. Note: This Register is Undocumented
  6518. Bit Name Description
  6519. 7 ? ????
  6520. 6 ? BTB TR access enabled
  6521. if = 1 MOV to/from TR1/2 enabled
  6522. 5 ? Data bypassing and forwarding Enable
  6523. (default set to 1)
  6524. 4-0 ? ???
  6525. Registers with Indexes 31h,32h,33h:
  6526. Used for perfomance control or CPU pipeline debbuging.
  6527. (Usually = 0).
  6528. Registers with indexes 34h,38h,3Ch exist, but description ????
  6529. CCR0:
  6530. Bit Name Description
  6531. 7..2 Reserved
  6532. 1 NC1 (Non-cachable 1MB)
  6533. If =1 then area 640KM-1MB is non-cachable.
  6534. CCR1:
  6535. Bit Name Description
  6536. 7 SM3 (System Managment Address Region 3)
  6537. If =1 then ARR3 used as SMM address space region
  6538. 6..5 Reserved
  6539. 4 NO_LOCK (No Lock Cycles)
  6540. If =1 all bus cycles are issued with LOCK# pin negated, except
  6541. page tables access and INTA cycles.
  6542. 3 Reserved
  6543. 2 SMAC (System Managment Memory Access)
  6544. If =1 Any access within SMM memory space issued with SMAADS#
  6545. output active, SMI# ignored
  6546. =0 No affects on access
  6547. 1 SMI (Enable SMM pins)
  6548. If =1 then enable SMI# i/o pin and SMADS# output pin
  6549. =0 Float it
  6550. 0 Reserved
  6551. CCR2:
  6552. Bit Name Description
  6553. 7 SUSP (Enable Suspend pins)
  6554. If =1 SUSP# input and SUSPA# output pins enabled
  6555. =0 Float
  6556. 6..5 Reserved
  6557. 4 WPR1 (Write-Protected Region 1)
  6558. If =1 then any cachable accesses in the 640KB-1MB region
  6559. are Write-Protected
  6560. 3 HALT (Suspend on HALT)
  6561. If =1 CPU enters suspend mode following execution
  6562. HLT instruction.
  6563. 2 LOCK_NW (Lock NW bit)
  6564. If =1 Prohibits changing the state of NW bit in CR0
  6565. 1..0 Reserved
  6566. CCR3:
  6567. Bit Name Description
  6568. 7..4 MAPEN(3-0) (Register Mapping Enable)
  6569. If set to 0001b all register accessible,
  6570. else 0000h then accessed only (C0h-CFh,FEh,FFh)
  6571. 3 Reserved
  6572. 2 LINBRST
  6573. If =1, CPU will use linear address sequence when performing
  6574. burst cycle, If =0 CPU will used 1+4 address sequence.
  6575. 1 NMIEN (NMI Enable)
  6576. If =1 then NMI enable during SMM
  6577. If =0 NMI don't recognizing during SMM
  6578. 0 SMI_LOCK (SMM Register Lock)
  6579. If =1 the following SMM control bits can not
  6580. be modified:
  6581. CCR1: bits 1,2,3
  6582. CCR3: bit 1
  6583. ARR3: Starting address and Block size
  6584. But this bit may be changed in SMM.
  6585. This bit (SMI_LOCK) clearing RESET only.
  6586. ARRi:
  6587. -- Starting Address --- Region
  6588. ARR # A31-A24 A23-A16 A15-A12 Block Size
  6589. 7..0 7..0 7..4 3..0 (Bits)
  6590. ARR0 C4h C5h C6h C6h (Index)
  6591. ARR1 C7h C8h C9h C9h
  6592. ARR2 CAh CBh CCh CCh
  6593. ARR3 CDh CEh CFh CFh
  6594. ARR4 D0h D1h D2h D2h
  6595. ARR5 D3h D4h D5h D5h
  6596. ARR6 D6h D7h D8h D8h
  6597. ARR7 D9h DAh DBh DBh
  6598. (ARRi^)
  6599. (index)
  6600. (Index ARRi+0)
  6601. Bit Description
  6602. 7..0 A31..A24 bits of starting adress of region #i
  6603. (Index ARRi+1)
  6604. Bit Description
  6605. 7..0 A23..A16 bits of starting adress of region #i
  6606. (Index ARRi+2)
  6607. Bit Description
  6608. 7..4 A15..A12 bits of starting adress of region #i
  6609. 3..0 Size of region #i :
  6610. Value ARR0-ARR6 ARR7
  6611. 0000 **** region disabled ****
  6612. 0001 4K 256K
  6613. 0010 8K 512K
  6614. 0011 16K 1M
  6615. 0100 32K 2M
  6616. 0101 64K 4M
  6617. 0110 128K 8M
  6618. 0111 256K 16M
  6619. 1000 512K 32M
  6620. 1001 1M 64M
  6621. 1010 2M 128M
  6622. 1011 4M 256M
  6623. 1100 8M 512M
  6624. 1101 16M 1G
  6625. 1110 32M 2G
  6626. 1111 4K 4G
  6627. RCRi:
  6628. Bit Name ARR# Description
  6629. 7..6 any Reserved
  6630. 5 NBL any If =1 LBA# pin is negated for corresponding region
  6631. 4 WT any If =1 Write-Throught caching is enable for region
  6632. 3 WG any If =1 Write Gathering enabled for region
  6633. 2 WL any If =1 Weak Locking enable for region
  6634. 1 WWO any If =1 weak write ordering enable for region
  6635. 0 RCD 0..6 If =1 address region is non-cachable
  6636. 0 RCE 7 If=1 region is cachable and implies thet address space
  6637. outside of region is non-cachable.
  6638. CCR4:
  6639. Bit Name Description
  6640. 7 CPUIDEN (Enable CPUID instruction)
  6641. If =1 bit 21 of EFLAGS (ID) may changed, and CPUID instruction
  6642. enabled,
  6643. else bit 21 of EFLAGS =0 forever and CPUID caused INT 6 -
  6644. Invalid Opcode
  6645. 6..5 Reserved
  6646. 4 DTE
  6647. If =1, Directory Table Entry cache is enabled
  6648. 3 Reserved
  6649. 2..0 IORT[2..0]
  6650. Specify minimum number of bus clocks between two I/O
  6651. accesses (I/O recovery time)
  6652. (base modeL) (some later models)
  6653. 000 - No Delay 000 - fast
  6654. 001 - 2 clk
  6655. 010 - 4 clk
  6656. 011 - 8 clk .......
  6657. 100 - 16 clk
  6658. 101 - 32 clk (Default Value)
  6659. 110 - 64 clk
  6660. 111 - 128 clk 111 - no delay
  6661. CCR5:
  6662. Bit Name Description
  6663. 7 Reserved
  6664. 6 VIPERM If = 1 then prevents any access to contol registers outside of
  6665. range C0..CF if MAPEN in CCR3 has the other value that 1.
  6666. Note:
  6667. This is effect of Disable CPU identification via DIR0
  6668. and DIR1 (reads FFh while VIPERM=1 and MAPEN != 1).
  6669. 5 ARREN (Address region registers Enable)
  6670. If =1 then Enable all ARRs,
  6671. If =0 all ARRs disable, but if SM3=1 then ARR3 enable.
  6672. 4 LBR1
  6673. If =1 LBA# pin asserted for all accesses to the 640KB-1MB
  6674. region
  6675. 3..2 Reserved
  6676. 1 SLOP (Slow Loop Instruction)
  6677. Slow Loop instruction make CPU more compatible with Pentium
  6678. for critical-timing rootining.
  6679. 0 WT_ALLOC
  6680. If =1 new cache lines allocated for both read misses and
  6681. write misses, else only on read misses.
  6682. DIR0:
  6683. Bit Description
  6684. 7..0 (Device Identification)
  6685. Value Description Core/Bus clk Note
  6686. 20h or 22h 6x86 (M1) 1/1 Early 6x86
  6687. 21h or 23h 6x86 (M1) 2/1
  6688. 25h or 27h 6x86 (M1) 4/1
  6689. 24h or 26h 6x86 (M1) 3/1
  6690. 30h or 32h 6x86 (M1) 1/1 Modern 6x86
  6691. 31h or 33h 6x86 (M1) 2/1
  6692. 35h or 37h 6x86 (M1) 4/1
  6693. 34h or 36h 6x86 (M1) 3/1
  6694. DIR1:
  6695. Bit Name Description
  6696. 7..4 SID Stepping Identificator
  6697. 3..0 RID Revision Identification
  6698. Value Description
  6699. 0xh - Old Cyrix Samplers of 6x86 ???
  6700. 1xh - Normal 6x86.
  6701. 10h,11h,12h - Early 6x86s (with DIR0 = 2xh)
  6702. 14h - v2.4
  6703. 15h - v2.5
  6704. 16h - v2.6
  6705. 17h - v2.7 or 3.7
  6706. (first with no NT problems, with SLOP bit).
  6707. 2xh - 6x86L (Dual Voltage,Lower Power)
  6708. 20h,21h - Samplers
  6709. 22h - v4.0 (no SLOP support)
  6710. Note: Register with Index FCh contains CPU family.
  6711. Initialized by 05h, but may be changed by USER, look CPUID instruction
  6712. for more info.
  6713. see Appendix A1 for more info about identification
  6714. -----------------------------
  6715. Format of TR1,TR2 registers:
  6716. (Table )
  6717. Note: Need to Enable MOV to/from TR1/2 using DBR0 register in processor
  6718. control space.
  6719. TR1:
  6720. Bits Description
  6721. 31..5? ?????
  6722. 5..3 Index of register in BTB Control space.
  6723. (Register will be accesable via TR2)
  6724. 2..0 ????
  6725. TR2:
  6726. Data, which will be written/reading from/to register
  6727. Registers in BTB control space:
  6728. Reg 4 - ???????
  6729. Reg 5:
  6730. Bits Description
  6731. 0 BTB Disable
  6732. 1 Far BTB COF hits enable.
  6733. If =1 enable BTB to predict intersegment jumps.
  6734. 2 Return Stack Enable
  6735. 3 ???? (used)
  6736. 4..31 ?????
  6737. ---------------------------------------------------
  6738. APPENDIX A6
  6739. Cyrix Cx6x86MX (M2)
  6740. for access
  6741. Register Full Register Name Index size(bits) MAPEN(3..0)
  6742. CCR0 Configuration Control Register #0 C0H 8 x
  6743. CCR1 Configuration Control Register #1 C1H 8 x
  6744. CCR2 Configuration Control Register #2 C2H 8 x
  6745. CCR3 Configuration Control Register #3 C3H 8 x
  6746. ARR0 Address Region Register #0 C4H-C6H 24 x
  6747. ARR1 Address Region Register #1 C7H-C9H 24 x
  6748. ARR2 Address Region Register #2 CAH-CCH 24 x
  6749. ARR3 Address Region Register #3 CDH-CFH 24 x
  6750. ARR4 Address Region Register #4 D0H-D2H 24 1
  6751. ARR5 Address Region Register #5 D3H-D5H 24 1
  6752. ARR6 Address Region Register #6 D6H-D8H 24 1
  6753. ARR7 Address Region Register #7 D9H-DBH 24 1
  6754. RCR0 Region Configuration Register #0 DCh 8 1
  6755. RCR1 Region Configuration Register #1 DDh 8 1
  6756. RCR2 Region Configuration Register #2 DEh 8 1
  6757. RCR3 Region Configuration Register #3 DFh 8 1
  6758. RCR4 Region Configuration Register #4 E0h 8 1
  6759. RCR5 Region Configuration Register #5 E1h 8 1
  6760. RCR6 Region Configuration Register #6 E2h 8 1
  6761. RCR7 Region Configuration Register #7 E3h 8 1
  6762. CCR4 Configuration Control Register #4 E8h 8 1
  6763. CCR5 Configuration Control Register #5 E9h 8 1
  6764. CCR6 Configuration Control Register #6 EAh 8 1
  6765. DIR0 Device Identification register #0 FEH 8 x
  6766. DIR1 Device Identification register #1 FFH 8 x
  6767. For access to this register You need to do:
  6768. A) write INDEX_OF_REGISTER to I/O port #22H
  6769. B) wait 5-6 clocks
  6770. D) read/write DATA from/to register via I/O port #23
  6771. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  6772. CPU generated external bus cycle. If You try to read I/O port
  6773. #22H CPU will generated external bus cycle too. Then index
  6774. is out of range all operations with port #23H will generate
  6775. external bus cycle.
  6776. State After Reset:
  6777. CCR1 00H
  6778. CCR2 00H
  6779. CCR3 00H
  6780. SMAR 0
  6781. DIR0 see DIR0 description
  6782. DIR1 see DIR1 description
  6783. format of registers:
  6784. CCR0:
  6785. Bit Name Description
  6786. 7..2 Reserved
  6787. 1 NC1 (Non-cachable 1MB)
  6788. If =1 then area 640KM-1MB is non-cachable.
  6789. CCR1:
  6790. Bit Name Description
  6791. 7 SM3 (System Managment Address Region 3)
  6792. If =1 then ARR3 used as SMM address space region
  6793. 6..5 Reserved
  6794. 4 NO_LOCK (No Lock Cycles)
  6795. If =1 all bus cycles are issued with LOCK# pin negated, except
  6796. page tables access and INTA cycles.
  6797. 3 Reserved
  6798. 2 SMAC (System Managment Memory Access)
  6799. If =1 Any access within SMM memory space issued with SMAADS#
  6800. output active, SMI# ignored
  6801. =0 No affects on access
  6802. 1 SMI (Enable SMM pins)
  6803. If =1 then enable SMI# i/o pin and SMADS# output pin
  6804. =0 Float it
  6805. 0 Reserved
  6806. CCR2:
  6807. Bit Name Description
  6808. 7 SUSP (Enable Suspend pins)
  6809. If =1 SUSP# input and SUSPA# output pins enabled
  6810. =0 Float
  6811. 6..5 Reserved
  6812. 4 WPR1 (Write-Protected Region 1)
  6813. If =1 then any cachable accesses in the 640KB-1MB region
  6814. are Write-Protected
  6815. 3 HALT (Suspend on HALT)
  6816. If =1 CPU enters suspend mode following execution
  6817. HLT instruction.
  6818. 2 LOCK_NW (Lock NW bit)
  6819. If =1 Prohibits changing the state of NW bit in CR0
  6820. 1 SADS
  6821. If =1 CPU insert an idle cyce following the BRDY# and idle
  6822. cycle prior to asserting ADS#
  6823. 0 Reserved
  6824. CCR3:
  6825. Bit Name Description
  6826. 7..4 MAPEN(3-0) (Register Mapping Enable)
  6827. If set to 0001b all register accessible,
  6828. else 0000h then accessed only (C0h-CFh,FEh,FFh)
  6829. 3 Reserved
  6830. 2 LINBRST
  6831. If =1, CPU will use linear address sequence when performing
  6832. burst cycle, If =0 CPU will used 1+4 address sequence.
  6833. 1 NMIEN (NMI Enable)
  6834. If =1 then NMI enable during SMM
  6835. If =0 NMI don't recognizing during SMM
  6836. 0 SMI_LOCK (SMM Register Lock)
  6837. If =1 the following SMM control bits can not
  6838. be modified:
  6839. CCR1: bits 1,2,3
  6840. CCR3: bit 1
  6841. CCR6: bits 6,1,0
  6842. ARR3: Starting address and Block size
  6843. But this bit may be changed in SMM.
  6844. This bit (SMI_LOCK) clearing RESET only.
  6845. ARRi:
  6846. -- Starting Address --- Region
  6847. ARR # A31-A24 A23-A16 A15-A12 Block Size
  6848. 7..0 7..0 7..4 3..0 (Bits)
  6849. ARR0 C4h C5h C6h C6h (Index)
  6850. ARR1 C7h C8h C9h C9h
  6851. ARR2 CAh CBh CCh CCh
  6852. ARR3 CDh CEh CFh CFh
  6853. ARR4 D0h D1h D2h D2h
  6854. ARR5 D3h D4h D5h D5h
  6855. ARR6 D6h D7h D8h D8h
  6856. ARR7 D9h DAh DBh DBh
  6857. (ARRi^)
  6858. (index)
  6859. (Index ARRi+0)
  6860. Bit Description
  6861. 7..0 A31..A24 bits of starting adress of region #i
  6862. (Index ARRi+1)
  6863. Bit Description
  6864. 7..0 A23..A16 bits of starting adress of region #i
  6865. (Index ARRi+2)
  6866. Bit Description
  6867. 7..4 A15..A12 bits of starting adress of region #i
  6868. 3..0 Size of region #i :
  6869. Value ARR0-ARR6 ARR7
  6870. 0000 **** region disabled ****
  6871. 0001 4K 256K
  6872. 0010 8K 512K
  6873. 0011 16K 1M
  6874. 0100 32K 2M
  6875. 0101 64K 4M
  6876. 0110 128K 8M
  6877. 0111 256K 16M
  6878. 1000 512K 32M
  6879. 1001 1M 64M
  6880. 1010 2M 128M
  6881. 1011 4M 256M
  6882. 1100 8M 512M
  6883. 1101 16M 1G
  6884. 1110 32M 2G
  6885. 1111 4G 4G
  6886. RCRi:
  6887. Bit Name ARR# Description
  6888. 7 any Reserved
  6889. 6 INV_RGN 0..6 If =1, then all memory outside specific memory region
  6890. treated as RCR flags for this region
  6891. (Inversion)
  6892. 5 any Reserved
  6893. 4 WT any If =1 Write-Throught caching is enable for region
  6894. 3 WG any If =1 Write Gathering enabled for region
  6895. 2 WL any If =1 Weak Locking enable for region
  6896. 1 any Reserved
  6897. 0 CD any If =1 address region is non-cachable
  6898. CCR4:
  6899. Bit Name Description
  6900. 7 CPUIDEN (Enable CPUID instruction)
  6901. If =1 bit 21 of EFLAGS (ID) may changed, and CPUID instruction
  6902. enabled,
  6903. else bit 21 of EFLAGS =0 forever and CPUID caused INT 6 -
  6904. Invalid Opcode
  6905. 6..3 Reserved
  6906. 2..0 IORT[2..0]
  6907. Specify minimum number of bus clocks between two I/O
  6908. accesses (I/O recovery time)
  6909. 000 - 1 clk
  6910. 001 - 2 clk
  6911. 010 - 4 clk
  6912. 011 - 8 clk
  6913. 100 - 16 clk
  6914. 101 - 32 clk (Default Value)
  6915. 110 - 64 clk
  6916. 111 - no delay
  6917. Note: 6x86 (M1), 000 - no delay, 111 - 128 clk
  6918. CCR5:
  6919. Bit Name Description
  6920. 7..6 Reserved
  6921. 5 ARREN (Address region registers Enable)
  6922. If =1 then Enable all ARRs,
  6923. If =0 all ARRs disable, but if SM3=1 then ARR3 enable.
  6924. 4..1 Reserved
  6925. 0 WT_ALLOC
  6926. If =1 new cache lines allocated for both read misses and
  6927. write misses, else only on read misses.
  6928. CCR6:
  6929. Bit Name Description
  6930. 7 Reserved
  6931. 6 N (Nested SMI Enable bit)
  6932. If =1 enable nesting of SMI
  6933. If = 0 disabled.
  6934. (This bit automatically cleared when entered every SMI routine)
  6935. 5..2 Reserved
  6936. 1 WP_ARR3 (Write Protected Memory Region # 3)
  6937. if =1 Memory region defined by ARR3 is write-protected,
  6938. when operating outside SMM mode
  6939. 0 SMM_MODE (SMM Mode)
  6940. if = 1 Enable Cyrix Enhanced SMM
  6941. if = 0 Disable Cyrix Enhanced SMM
  6942. DIR0:
  6943. Bit Description
  6944. 7..0 (Device Identification)
  6945. Value Description Core/Bus clk
  6946. 5xh 6x86MX (see APPENDIX B for more details)
  6947. DIR1:
  6948. Bit Name Description
  6949. 7..4 SID Stepping Identificator
  6950. 3..0 RID Revision Identification
  6951. see Appendix A1 for more info about identification
  6952. Note: Try to test some Undocument Registers from Cx6x86.
  6953. ----------------------------------------------
  6954. APPENDIX B
  6955. Codes which returned after Reset in EDX
  6956. DH DL
  6957. Type of CPU Steppin Model ID Revision
  6958. ------------------------------------------------------------
  6959. i386DX A (00h) ??? :Early Models
  6960. B0-B10 03h 03h
  6961. 04h :???
  6962. D0 05h
  6963. D1-D2 08h
  6964. E0,E1,F0 08h
  6965. ------------------------------------------------------------
  6966. Am386DX/DXL A 03h 05h
  6967. B 08h
  6968. ------------------------------------------------------------
  6969. i386SX A0 23h 04h
  6970. B 05h
  6971. C,D,E 08h
  6972. ------------------------------------------------------------
  6973. Am386SX/SXL A1 23h 05h
  6974. B 08h
  6975. ------------------------------------------------------------
  6976. Intel386CXSA A 23h 09h
  6977. ------------------------------------------------------------
  6978. Intel386CXSB A 23h 09h
  6979. ------------------------------------------------------------
  6980. i386EX A 23h 09h
  6981. ------------------------------------------------------------
  6982. Intel386SXSA ? 23h 09h
  6983. ------------------------------------------------------------
  6984. i376 A0 33h 05h
  6985. B 08h
  6986. ------------------------------------------------------------
  6987. i386SL A0-A3 43h 0xh (05H)
  6988. B0-B1 1xh
  6989. ------------------------------------------------------------
  6990. RapidCAD (tm) A 03h 40h
  6991. B 41h
  6992. ------------------------------------------------------------
  6993. IBM 386SLC A A3h xxh
  6994. ------------------------------------------------------------
  6995. Cx486SLC A 04h 10h
  6996. ------------------------------------------------------------
  6997. TI486SLC/DLC/e A 04h 10h
  6998. B 11h
  6999. ------------------------------------------------------------
  7000. TI486SXL/SXLC A 04h 10h
  7001. B 11h
  7002. ------------------------------------------------------------
  7003. i486DX A0/A1 04h 00h
  7004. B2-B6 01h
  7005. C0 02h
  7006. C1 03h
  7007. D0 04h
  7008. cA2,cA3 10h
  7009. cB0,cB1 11h
  7010. cC0 13h
  7011. aA0,aA1 14h : SL Enhanced
  7012. aB0 15h : SL Enhanced
  7013. ------------------------------------------------------------
  7014. Am486DX any 04h 12h
  7015. ------------------------------------------------------------
  7016. UMC U5SD any 04h 1xh
  7017. ------------------------------------------------------------
  7018. i486SX A0 04h 20h
  7019. B0 22h
  7020. bBx 23h : SL Enhanced
  7021. gAx 24h
  7022. cA0 27h
  7023. cB0 28h
  7024. aA0,aA1 2Ah : SL Enhanced
  7025. aB0,aC0 2Bh : SL Enhanced
  7026. ------------------------------------------------------------
  7027. i487SX A0 04h 20h
  7028. B0 21h
  7029. ------------------------------------------------------------
  7030. UMC U5S any 04h 23h
  7031. ------------------------------------------------------------
  7032. UMC U5SX 486-A any 04h 23h
  7033. ------------------------------------------------------------
  7034. UMC U5SD 04h 23h
  7035. ------------------------------------------------------------
  7036. Cx5x86 0,rev 1- 04h 29h : core/bus clk=2/1 +clones
  7037. 2Bh : core/bus clk=2/1 +clones
  7038. 2Dh : core/bus clk=3/1 +clones
  7039. 2Fh : core/bus clk=3/1 +clones
  7040. ------------------------------------------------------------
  7041. i486DX2 & A0-A2 04h 32h
  7042. OverDrive (tm) B1 33h
  7043. aA0,aA1 34h : SL Enhanced
  7044. aB0,aC0 35h : SL Enhanced
  7045. ------------------------------------------------------------
  7046. Am486DX2 any 04h 32h : 66 and 80 MHz
  7047. ------------------------------------------------------------
  7048. Am486DXL2 any 04h 32h
  7049. ------------------------------------------------------------
  7050. Am486DX4 any 04h 32h : Original
  7051. any 04h 84h : Enhanced in WT mode
  7052. 04h 94h : Enhanced in WB mode
  7053. ------------------------------------------------------------
  7054. UMC U486DX2 any 04h 3xh : ???
  7055. ------------------------------------------------------------
  7056. UMC U486SX2 any 04h 5xh : ???
  7057. ------------------------------------------------------------
  7058. i486SL A 04h 40h
  7059. ?? 41h
  7060. ------------------------------------------------------------
  7061. i486SX2 aC0 04h 5Bh : SL Enhanced
  7062. ------------------------------------------------------------
  7063. IntelSX2 (tm) A 04h 5xh
  7064. OverDrive (tm)
  7065. ------------------------------------------------------------
  7066. WB Enh IntelDX2 A 04h 70h : in WB mode
  7067. (P24D) 36h : in WT mode
  7068. ------------------------------------------------------------
  7069. IBM BL486DX2 A 04h 80h
  7070. ------------------------------------------------------------
  7071. IntelDX4 (tm) A 04h 80h
  7072. ------------------------------------------------------------
  7073. TI TI486DX2 any 04h 80h
  7074. ------------------------------------------------------------
  7075. TI TI486DX4 any 04h 81h
  7076. ------------------------------------------------------------
  7077. IntelDX4 (tm) A 14h 80h : DX4ODPR (5V IntelDX4)
  7078. OverDrive (tm)
  7079. ------------------------------------------------------------
  7080. Cx5x86 0,rev 2+ 04h 90h
  7081. ------------------------------------------------------------
  7082. Write-Back Enh. A 04h 83h : WT Mode
  7083. IntelDX4 (tm) 90h : WB mode
  7084. ------------------------------------------------------------
  7085. AMD Am5x86 A 04h 84h : x3, WT mode
  7086. 94h : x3, WB mode
  7087. E4h : x4, WT mode
  7088. F4h : x4, WB mode
  7089. ------------------------------------------------------------
  7090. IBM 486SLC A A4h 0xh
  7091. ------------------------------------------------------------
  7092. IBM 486SLC2 Ax A4h 1xh
  7093. Bx 2xh
  7094. ?? 3xh
  7095. ------------------------------------------------------------
  7096. IBM 486BLX3 A 84h xxh
  7097. ------------------------------------------------------------
  7098. Cyrix M5 all 00h 05h
  7099. (Cx486S/D)
  7100. ------------------------------------------------------------
  7101. Cyrix M6 all 00h 06h
  7102. (Cx486DX)
  7103. ------------------------------------------------------------
  7104. Cyrix M7 all 00h 07h
  7105. (Cx486DX2)
  7106. ------------------------------------------------------------
  7107. Cyrix M8 all 00h 08h
  7108. (Cx486DX4)
  7109. ------------------------------------------------------------
  7110. Am5k86 (SSA/5) all 05h 0xh
  7111. E 05h 00h
  7112. F 01h
  7113. ------------------------------------------------------------
  7114. Am5k86 (K5) all 05h 1xh : (x1.5)
  7115. 05h 2xh : (x1.75)
  7116. 24h
  7117. 05h 3xh : (x2)
  7118. ------------------------------------------------------------
  7119. AMD-K6 05h 6xh
  7120. 61h ; PR2
  7121. 7xh
  7122. ------------------------------------------------------------
  7123. AMD-K6 3D 05h 8xh
  7124. ------------------------------------------------------------
  7125. AMD-K6 3D+ 05h 9xh
  7126. ------------------------------------------------------------
  7127. Pentium (P5) Ax 05h 0xh : (FPU bug)
  7128. B1 05h 13h : (FPU bug)
  7129. B2 05h 14h : (FPU bug)
  7130. C1 05h 15h : (FPU bug)
  7131. D1 05h 17h
  7132. ------------------------------------------------------------
  7133. Pentium (P54C) B1 05h 21h : (FPU bug)
  7134. (P54CS) B3 05h 22h : (FPU bug)
  7135. (P54CSQ) B5 05h 24h : (FPU bug)
  7136. C1 05h 25h
  7137. C2 25h
  7138. E0 26h : 75,90,100,120 MHz
  7139. cB1 2Bh : 120,133 MHz
  7140. cC0 2Ch : 133,150,166,200 MHz
  7141. ------------------------------------------------------------
  7142. Pentium mA1 05h 25h
  7143. (P54LM) mcB1 2Bh
  7144. (Mobile) mcC0 2Ch
  7145. (Vcc=2.9V) mA4 70h
  7146. ------------------------------------------------------------
  7147. Pentium Overdrive B1 15h 31h : PODP5V63, PODP5V83
  7148. (Vcc=5V)(P24T) B2 15h 31h : (Socket 3,6)
  7149. C0 15h 32h
  7150. ------------------------------------------------------------
  7151. Pentium OverDrive tA0 05h 1Ah : PODP5V120, PODP5V133
  7152. (P5T) : (Socket 4)
  7153. ------------------------------------------------------------
  7154. Pentium OverDrive aC0 05h 2Ch : PODP3V125, PODP3V150
  7155. (P54T) : PODP3V166
  7156. : (Socket 5,7)
  7157. ------------------------------------------------------------
  7158. NexGen Nx586 05h 0xh
  7159. 04h : 120 MHz
  7160. 06h : 133 MHz
  7161. ------------------------------------------------------------
  7162. Cx6x86 05h 2xh : early models
  7163. (M1) 30h : core/bus = 1/1
  7164. 32h : core/bus = 1/1
  7165. 31h : core/bus = 2/1
  7166. 33h : core/bus = 2/1
  7167. 34h : core/bus = 3/1
  7168. 36h : core/bus = 3/1
  7169. 35h : core/bus = 4/1
  7170. 37h : core/bus = 4/1
  7171. ------------------------------------------------------------
  7172. Pentium w/MMX A1 05h 41h
  7173. (P55C) A2 42h
  7174. xB1/mxB1 43h
  7175. xA3/mxA3 44h
  7176. myA0 81h
  7177. ------------------------------------------------------------
  7178. Pentium MMX oxA3 15h 44h
  7179. OverDrive (P55CTP)
  7180. ------------------------------------------------------------
  7181. Cyrix MediaGX 05h 4xh
  7182. ------------------------------------------------------------
  7183. Cyrix MediaGX 05h 4xh
  7184. MMX Enhanced
  7185. ------------------------------------------------------------
  7186. IDT Winchip C6 05h 40h
  7187. ------------------------------------------------------------
  7188. Cx6x86MX 06h 51h : core/bus = 2/1
  7189. (M2) 06h 53h : core/bus = 3/1
  7190. 06h 54h : core/bus = 3.5/1
  7191. 06h 55h : core/bus = 2.5/1
  7192. 06h 59h : core/bus = 2/1
  7193. 06h 5Ah : core/bus = 2.5/1
  7194. 06h 5Bh : core/bus = 3/1
  7195. 06h 5Ch : core/bus = 3.5/1
  7196. ------------------------------------------------------------
  7197. Intel Pentium OverDrive 25h 2xh : will be Set as second CPU
  7198. (P54M)
  7199. ------------------------------------------------------------
  7200. Pentium Pro (P6) 06h 0xh ; Engineering Sample 133MHz 0.6mkm
  7201. 06h 11h ; Engineering Sample 150MHz
  7202. B0 06h 11h ; 150 MHz
  7203. C0 06h 12h ; 150 MHz
  7204. sA0 06h 16h ; 166,180,200 MHz
  7205. sA1 06h 17h ; 166,180,200 MHz
  7206. sB1 06h 19h ; 166,180,200 MHz
  7207. ------------------------------------------------------------
  7208. Pentium II C0 06h 33h
  7209. C1 06h 34h
  7210. (P6L,Klamath) dA0/mdA0/mmdA0 06h 50h
  7211. dA1 06h 51h
  7212. dB0/mdB0/mmdB0 06h 52h
  7213. mdB0 06h 52h
  7214. mmdB0 52h
  7215. ------------------------------------------------------------
  7216. OverDrive for 16h 3xh
  7217. Socket 8 (P6T)
  7218. ------------------------------------------------------------
  7219. Pentium II Xeon B0 06h 52h
  7220. ------------------------------------------------------------
  7221. Celeron dA0 06h 50h
  7222. dA1 06h 51h
  7223. dB0 06h 52h
  7224. mA0 06h 60h (128KB cache)
  7225. ------------------------------------------------------------
  7226. Pentium II TdB0 16h 32h
  7227. Overdrive
  7228. ------------------------------------------------------------
  7229. Note: For detection Cyrix's chips refer to APPENDIX A1.
  7230. Note: Then Intel Pentium and higher chips, sometimes include build-in APIC
  7231. and setup such chips on motherbard as second CPU, change id code
  7232. from 0xxxh to 2xxxh.
  7233. --------------------------------------------
  7234. APPENDIX C0
  7235. iCOMP index for Intel's Microprocessors
  7236. i386SX-20 32
  7237. i386SX-25 39
  7238. i386SL-25 41
  7239. i386DX-25 49
  7240. i386DX-33 68
  7241. i486SX-20 78
  7242. i486SX-25 100 ; Base model for test iCOMP=100 by define
  7243. i486DX-25 122
  7244. i486SX-33 136
  7245. i486DX-33 166
  7246. i486DX2-20/40 166
  7247. IntelSX2-25/50 180
  7248. i486DX2-25/50 231
  7249. i486DX-50 249
  7250. IntelDX4-20/60 258
  7251. i486DX2-33/66 297
  7252. Pentium OverDrive-20/50 314 ; P24T
  7253. IntelDX4-25/75 319 ; P24C
  7254. IntelDX4-33/100 435 ; P24C
  7255. Pentium OverDrive-25/63 443 ; P24T
  7256. Pentium-(510\60) 510 ; P5
  7257. Pentium-(567\66) 567 ; P5
  7258. Pentium OverDrive-33/83 581 ; P24T
  7259. Pentium-(610\75) 610 ; P54C,P54LM
  7260. Pentium-(735\90) 735 ; P54C,P54LM
  7261. Pentium-(815\100) 815 ; P54C
  7262. Pentium-(1000\120) 1000 ; P54CSQ
  7263. Pentium-(133) 1110 ; P54CSQ
  7264. iCOMP index 2.0 for Intel Microprocessors
  7265. Pentium-75 67
  7266. Pentium-90 81
  7267. Pentium-100 90
  7268. Pentium-120 100 ; Base Model iCOMP 2.0 = 100
  7269. Pentium-133 111
  7270. Pentium-150 114
  7271. Pentium-166 127
  7272. Pentium-200 142
  7273. Pentium w/MMX-166 160
  7274. Pentium Pro-150 168
  7275. Pentium w/MMX-200 182
  7276. Pentium Pro-180 197
  7277. Pentium w/MMX-233 203
  7278. Pentium Pro-200 220
  7279. Pentium II-233 267
  7280. Pentium II-266 303
  7281. ----------------------------------------------
  7282. APPENDIX C1
  7283. Cyrix Microprocessors Relative Perfomance
  7284. Cyrix Inc. Used for declaration of perfomance of
  7285. theys microprocessors tests based on PC Bench 8.0
  7286. and normalization.
  7287. CPU Perfomance Scores
  7288. Cx486SLC-25 36
  7289. Cx486SLC-33 39
  7290. Cx486SLC2-50 40
  7291. Cx486DLC-33 69
  7292. Cx486DLC-40 83
  7293. Cx486DX-33 100 ; <--- Base Point
  7294. Cx486DX-40 118
  7295. Cx486DX2-50 139
  7296. Cx486DX-50 148
  7297. Cx486DX2-66 179
  7298. Cx486DX2-V80 209
  7299. ----------------------------------------------
  7300. APPENDIX C2
  7301. CPU's perfomance
  7302. Note: Data was get on different M/B and configurations, so treat this
  7303. tables like simple numbers, which said perfomance is xxx +-10%.
  7304. CPUMark 32 CPUMark 16 P-rating
  7305. AMD Am5k86-75 (SSA/5) 154
  7306. AMD Am5k86-90 (SSA/5) 187
  7307. AMD Am5k86-100 (SSA/5) 208
  7308. AMD Am5k86-133 (K5) 271 247
  7309. AMD Am5k86-166 (K5) 306 303
  7310. Pentium-75 174 168
  7311. Pentium-90 210 201
  7312. Pentium-100 233 223
  7313. Pentium-120 257 247
  7314. Pentium-133 283 278
  7315. Pentium-150 286 296
  7316. Pentium-166 321 326
  7317. Pentium-200 358
  7318. Cyrix Cx6x86-P120+ 235 247
  7319. Cyrix Cx6x86-P133+ 260
  7320. Cyrix Cx6x86-P150+ 283 298
  7321. Cyrix Cx6x86-P166+ 316 329
  7322. Cyrix Cx6x86-P200+ 350 340
  7323. Pentium w/MMX-166 378 380
  7324. Pentium w/MMX-200 425 429
  7325. Pentium Pro-150-256 420
  7326. Pentium Pro-180-256 493
  7327. Pentium Pro-200-256 540 358
  7328. Pentium Pro-200-512 610
  7329. AMD Am6k86-200 520 427
  7330. Pentium II-233 632 468
  7331. Pentium II-266 721 536
  7332. Pentium II-300 813 603
  7333. ------------------------------------------------
  7334. APPENDIX D0
  7335. Pentium P54C+ Build-in APIC
  7336. (Advanced programmable Interrupt Controller)
  7337. Base Address of Build-in APIC in memory location
  7338. is 0FEE00000H.
  7339. Map of APIC REgisters:
  7340. Offset (hex) Description Read/Write state
  7341. 0 Reserved
  7342. 10 Reserved
  7343. 20 Local APIC ID R/W
  7344. 30 Local APIC Version R
  7345. 40-70 Reserved
  7346. 80 Task Priority Register R/W
  7347. 90 Arbitration Priority Register R
  7348. A0 Processor Priority Register R
  7349. B0 EOI Register W
  7350. C0 Remote read R
  7351. D0 Logical Destination R/W
  7352. E0 Destination Format Register 0..27 R
  7353. 28..31 R/W
  7354. F0 Spurious Interrupt Vector Reg. 0..3 R
  7355. 4..9 R/W
  7356. 100-170 ISR 0-255 R
  7357. 180-1F0 TMR 0-255 R
  7358. 200-270 IRR 0-255 R
  7359. 280 Error Status Register R
  7360. 290-2F0 Reserved
  7361. 300 Interrupt Command Reg. (0-31) R/W
  7362. 310 Interrupt Command Reg. (32-63) R/W
  7363. 320 Local Vector Table (Timer) R/W
  7364. 330-340 Reserved
  7365. 350 Local Vector Table (LINT0) R/W
  7366. 360 Local Vector Table (LINT1) R/W
  7367. 370 Local Vector Table (ERROR) R/W
  7368. 380 Initial Count Reg. for Timer R/W
  7369. 390 Current Count of Timer R
  7370. 3A0-3D0 Reserved
  7371. 3E0 Timer Divide Configuration Reg. R/W
  7372. 3F0 Reserved
  7373. Note: Pentium-120MHz (Step C2) Never have APIC
  7374. ---------------------------------------------------
  7375. APPENDIX D1 INTEL 386/486SL REGISTERS
  7376. Note: Intel Chipset for SL microprocessors (i386SL,i486SL) contain
  7377. self CPU and 82360SL chip.
  7378. [i386SL]
  7379. Note: address of register in Normal I/O space
  7380. Name of Register Address Default Value Where placed Size
  7381. CPUPWRMODE 22h 0 CPU 16
  7382. CFGSTAT 23h 0 82360SL 8
  7383. CFGINDEX 24h 0 82360SL 16
  7384. CFGDATA 25h xxh 82360SL 16
  7385. EMSCNTLREG 28h 0 CPU 8
  7386. EMSINDEXREG 2Ah 0 CPU 16
  7387. EMSDPREG 2Ch xxh CPU 16
  7388. PORT92 92h 0 CPU 8
  7389. PORT102 102h 0 CPU 8
  7390. FAIL SAFE NMI CTRL 461h 0 CPU 8
  7391. The followed ports visible only when they enabled,
  7392. Any writes to this ports caused the action it named.
  7393. FAST CPU RESET EFh N/A 82360SL 8
  7394. FAST A20 GATE EEh N/A 82360SL 8
  7395. SLOW CPU F4h N/A CPU 8
  7396. FAST CPU F5h N/A CPU 8
  7397. SFS DISABLE F9h N/A CPU 8
  7398. SFS ENABLE FBh N/A CPU 8
  7399. Format of CPUPWRMODE register (i386SL):
  7400. Bits Name Description (Table )
  7401. 15 DT If Unlock Status { // See bit 0 of this register
  7402. if bit=0 then access to 82360SL
  7403. if bit=1 then access to CPUPWRMODE register
  7404. }
  7405. If Lock Staus { // i.e.SB=1
  7406. (De-Turbo Select Bit) Selected clock speed
  7407. If bit=0 then EFI/2
  7408. If bit=1 then EFI/4
  7409. }
  7410. 14 0 Reserved
  7411. 13..11 IMCPC (Idle MCP Clock)
  7412. 13.12.11 Description
  7413. 000 EFI
  7414. 001 EFI/2
  7415. 010 EFI/4
  7416. 011 EFI/8
  7417. 100 EFI/16
  7418. 101 Reserved
  7419. 110 Reserved
  7420. 111 Stop Clock
  7421. 10,9 SLC (Slow CPU clock)
  7422. 10.9 Description
  7423. 00 EFI
  7424. 01 EFI/2
  7425. 10 EFI/4
  7426. 11 EFI?8
  7427. 8 CPUCNFG
  7428. If =1 CPU Lock. (Write Protect to CPUPMODE register)
  7429. 7 FD (Flash Disk Enable)
  7430. If bit=1 then phisical addresses D0000H - DFFFFh
  7431. automatically never caching.
  7432. 6 0 Reserved
  7433. 5,4 FCC (Fast CPU clock)
  7434. 5.4 Description
  7435. 00 EFI
  7436. 01 EFI/2
  7437. 10 EFI/4
  7438. 11 EFI/8
  7439. 3,2 US (Unit Select)
  7440. Select Unit of 82360SL which will be accessable through 23h-25h
  7441. I/O Ports
  7442. 3.2 Description
  7443. 00 On-Board Memory Controller
  7444. 01 Cache Unit
  7445. 10 Internal Bus Unit
  7446. 11 External Bus Unit
  7447. 1 UE (Unit Enable)
  7448. If =1 Enable to Access Units
  7449. else enable to access System bus.
  7450. 0 SB (Status Bit)
  7451. If =0 Enable access to CPUPWRMODE register
  7452. If =1 Disable
  7453. Format of EMSCNTLREG:
  7454. Bits Description (Table )
  7455. 7 (Global Enable)
  7456. If =1 EMS enable
  7457. 6 Valid bit
  7458. 5 EMSDP Status Bit (Read Only)
  7459. 4..2 Reserved
  7460. 1..0 Active EMS Set (0-3)
  7461. Format of EMSINDEXREG:
  7462. Bits Description (Table )
  7463. 15..10 Reserved
  7464. 9..8 EMS set (0-3)
  7465. 7..6 Reserved
  7466. 5..0 EMS Page Register Index (0-64)
  7467. Format of EMSDPREG:
  7468. Bits Description (Table )
  7469. 15 This EMS Page Enable (i.e. page indexed by EMSINDEXREG)
  7470. 14 EMS Valid bit
  7471. 13..11 reserved
  7472. 10..0 Address lines A24..A14 for page selected by EMSINDEXREG
  7473. Important Note:
  7474. i386SL have SIGNATURE register have index 30Eh in On-Board Memory Controller
  7475. Configuration Space. This Register contain Stepping Info of i386SL.
  7476. Stepping Signature Register DX register after reset
  7477. A0 4300h 4310h
  7478. A1 4300h 4310h
  7479. A2 4301h 4310h
  7480. A3 4302h 4310h
  7481. B0 4310h 4311h
  7482. B1 4311h 4311h
  7483. [i486SL]
  7484. Note: address of register in Normal I/O space
  7485. Name of Register Address Default Value Where placed Size
  7486. CPUPWRMODE 22h 100H CPU 16
  7487. CFGSTAT 23h 0 82360SL 8
  7488. CFGINDEX 24h 0 82360SL 16
  7489. CFGDATA 25h xxh 82360SL 16
  7490. PORT92 92h 0 CPU 8
  7491. PORT102 102h 0 CPU 8
  7492. FAIL SAFE NMI CTRL 461h 0 CPU 8
  7493. The followed ports visible only when they enabled
  7494. FAST CPU RESET EFh N/A 82360SL 8
  7495. FAST A20 GATE EEh N/A 82360SL 8
  7496. SLOW CPU F4h N/A CPU 8
  7497. FAST CPU F5h N/A CPU 8
  7498. SFS DISABLE F9h N/A CPU 8
  7499. SFS ENABLE FBh N/A CPU 8
  7500. Format of CPUPWRMODE register (i486SL):
  7501. Bits Name Description (Table )
  7502. 15 DT If Unlock Status { // See bit 0 of this register
  7503. if bit=0 then access to 82360SL
  7504. if bit=1 then access to CPUPWRMODE register
  7505. }
  7506. If Lock Staus { // i.e.SB=1
  7507. (De-Turbo Select Bit) Selected clock speed
  7508. If bit=0 then EFI/2
  7509. If bit=1 then EFI/4
  7510. }
  7511. 14..13 0 Reserved
  7512. 12 FPUERROR
  7513. This bit controlled access to I/O port 0F0h,
  7514. if =0 then access to internal F0h port,
  7515. If =1 then access ISA bus.
  7516. 11..9 0 Reserved
  7517. 8 CPUCNFG
  7518. If =1 CPU Lock. (Write Protect to CPUPMODE register)
  7519. 7 0 RESERVED
  7520. 6,5 FCC (Fast CPU clock)
  7521. 5.4 Description
  7522. 00 CPUCLK=definition=EFI/2
  7523. 01 CPUCLK/2
  7524. 10 CPUCLK/4
  7525. 11 CPUCLK/8
  7526. 4 0 Reserved
  7527. 3,2 US (Unit Select)
  7528. Select Unit of 82360SL which will be accessable through 23h-25h
  7529. I/O Ports
  7530. 3.2 Description
  7531. 00 On-Board Memory Controller
  7532. 01 Reserved
  7533. 10 Internal Bus Unit
  7534. 11 External Bus Unit
  7535. 1 UE (Unit Enable)
  7536. If =1 Enable to Access Units
  7537. else enable to access System bus.
  7538. 0 SB (Status Bit)
  7539. If =0 Enable access to CPUPWRMODE register
  7540. If =1 Disable
  7541. Important Note:
  7542. i486SL have SIGNATURE register have index 70Ah in On-Board Memory Controller
  7543. Configuration Space. This Register contain Stepping Info of i486SL.
  7544. Format Of this register provided below:
  7545. Bits Description
  7546. 15..12 Member of Family (4h - SL)
  7547. 11..8 Family (4h - 486 family)
  7548. 7..0 Revision Name (Not Same as in DX after reset)
  7549. ---------------------------------------------
  7550. APPENDIX E
  7551. Pentium (tm) Processor Pairing Instruction
  7552. Pentium (tm) is superscalar microprocessor
  7553. i.e. it may execute >1 instruction per CLK
  7554. cycle. It may execute maximum 2 instruction
  7555. per cycle.It have two integer pipes to execute
  7556. instruction. This pipes not same, and some
  7557. instruction may pairing (i.e. execute together)
  7558. (only if not link with this 2 instruction)
  7559. only in U pipe, some other only in V pipe, other
  7560. in any pipe,other absolutely not pairing and they
  7561. executed on U pipe only.
  7562. ------ Integer Part
  7563. Note:
  7564. PU - is pairable if issued to U pipe
  7565. PV - is pairable if issued to V pipe
  7566. UV - pairable in either pipe
  7567. ADC Reg,Reg PU
  7568. Reg,Mem PU
  7569. Reg,Imm PU
  7570. Mem,Reg PU
  7571. Mem,Imm PU
  7572. ADD Reg,Reg UV
  7573. Reg,Mem UV
  7574. Reg,Imm UV
  7575. Mem,Reg UV
  7576. Mem,Imm UV
  7577. AND Reg,Reg UV
  7578. Reg,Mem UV
  7579. Reg,Imm UV
  7580. Mem,Reg UV
  7581. Mem,Imm UV
  7582. CALL direct PV
  7583. CMP Reg,Reg UV
  7584. Reg,Mem UV
  7585. Reg,Imm UV
  7586. Mem,Reg UV
  7587. Mem,Imm UV
  7588. DEC Reg UV
  7589. Mem UV
  7590. INC Reg UV
  7591. Mem UV
  7592. Jcc any PV
  7593. JMP Short PV
  7594. Direct PV
  7595. LEA Reg,Mem UV
  7596. MOV Reg,Reg/Mem/Imm UV
  7597. Mem,Reg UV
  7598. NOP UV
  7599. OR Reg,Reg UV
  7600. Reg,Mem UV
  7601. Reg,Imm UV
  7602. Mem,Reg UV
  7603. Mem,Imm UV
  7604. POP Reg UV
  7605. PUSH Reg UV
  7606. Imm UV
  7607. Rotates/Shifts:
  7608. Reg,1 PU
  7609. Mem,1 PU
  7610. Reg,Imm PU
  7611. Mem,Imm PU
  7612. SUB Reg,Reg UV
  7613. Reg,Mem UV
  7614. Reg,Imm UV
  7615. Mem,Reg UV
  7616. Mem,Imm UV
  7617. TEST Reg,Reg UV
  7618. Mem,Reg UV
  7619. Acc,Imm UV
  7620. XOR Reg,Reg UV
  7621. Reg,Mem UV
  7622. Reg,Imm UV
  7623. Mem,Reg UV
  7624. Mem,Imm UV
  7625. _____ Floating Part
  7626. Note: FX - Pairing with FXCH
  7627. (All other never pairing)
  7628. FABS FX
  7629. FADD FX
  7630. FADDP FX
  7631. FCHS FX
  7632. FCOM FX
  7633. FCOMP FX
  7634. FDIV/R/P/RP FX
  7635. FLD m32,m64,ST(i) FX Note: FLD m80 not pairing
  7636. FMUL/P FX
  7637. FSUB/P/R/RP FX
  7638. FTST FX
  7639. FUCOM/P/PP FX
  7640. For more information refer to:
  7641. 1) Optimization for Intel's 32-Bit Processors
  7642. (Application Note AP-500)
  7643. Gary CArleton)
  7644. // Intel Corp. 1993
  7645. // Order Number 241799
  7646. 2) Supplement to the Pentium (tm) Processor User's
  7647. Manual
  7648. // Intel Corp. 1993.
  7649. ------------------------------------------------------------
  7650. APPENDIX F0 NON FP OPCODES
  7651. Base Format of opcodes:
  7652. <Basecode> <Postbyte> <offset> <immediate_operands>
  7653. Format of Postbyte:
  7654. (Table )
  7655. MM RRR MMM
  7656. MM - Memory addresing mode
  7657. RRR - Register operand address
  7658. MMM - Memory operand address
  7659. RRR Register Names
  7660. Fields 8bit 16bit 32bit
  7661. 000 AL AX EAX
  7662. 001 CL CX ECX
  7663. 010 DL DX EDX
  7664. 011 BL BX EBX
  7665. 100 AH SP ESP
  7666. 101 CH BP EBP
  7667. 110 DH SI ESI
  7668. 111 BH DI EDI
  7669. 16bit memory (No 32 bit memory address prefix):
  7670. MMM Default MM Field
  7671. Field Sreg 00 01 10 11=MMM is reg
  7672. 000 DS [BX+SI] [BX+SI+O8] [BX+SI+O16]
  7673. 001 DS [BX+DI] [BX+DI+O8] [BX+SI+O16]
  7674. 010 SS [BP+SI] [BP+SI+O8] [BP+SI+O16]
  7675. 011 SS [BP+DI] [BP+DI+O8] [BP+DI+O16]
  7676. 100 DS [SI] [SI+O8] [SI+O16]
  7677. 101 DS [DI] [DI+O8] [DI+O16]
  7678. 110 SS [O16] [BP+O8] [BP+O16]
  7679. 111 DS [BX] [BX+O8] [BX+O16]
  7680. Note: MMM=110,MM=00 Default Sreg is DS !!!!
  7681. 32bit memory (Has 67h 32 bit memory address prefix):
  7682. MMM Default MM Field
  7683. Field Sreg 00 01 10 11=MMM is reg
  7684. 000 DS [EAX] [EAX+O8] [EAX+O32]
  7685. 001 DS [ECX] [ECX+O8] [ECX+O32]
  7686. 010 DS [EDX] [EDX+O8] [EDX+O32]
  7687. 011 DS [EBX] [EBX+O8] [EBX+O32]
  7688. 100 see SIB [SIB] [SIB+O8] [SIB+O32]
  7689. 101 SS [O32] [EBP+O8] [EBP+O32]
  7690. 110 DS [ESI] [ESI+O8] [ESI+O32]
  7691. 111 DS [EDI] [EDI+O8] [EDI+O32]
  7692. Note: MMM=110,MM=00 Default Sreg is DS !!!!
  7693. SIB is (Scale/Base/Index):
  7694. SS BBB III
  7695. Note: SIB address calculated as :
  7696. <SIB address>=<Base>+<Index>*(2^(Scale))
  7697. Field Default Base
  7698. BBB Sreg Register Note
  7699. 000 DS EAX
  7700. 001 DS ECX
  7701. 010 DS EDX
  7702. 011 DS EBX
  7703. 100 SS ESP
  7704. 101 DS O32 If MM=00 (Postbyte)
  7705. SS EBP If MM<>00 (Postbyte)
  7706. 110 DS ESI
  7707. 111 DS EDI
  7708. Field Index
  7709. III register Note
  7710. 000 EAX
  7711. 001 ECX
  7712. 010 EDX
  7713. 011 EBX
  7714. 100 Never Index SS can be 00
  7715. 101 EBP
  7716. 110 ESI
  7717. 111 EDI
  7718. Field Scale coefficient
  7719. SS =2^(SS)
  7720. 00 1
  7721. 01 2
  7722. 10 4
  7723. 11 8
  7724. Note:
  7725. <No comments> this code are for 8086 and all other processors
  7726. NEC V20+ : for NEC V-seria only
  7727. 186+ : for 186/188 and higher
  7728. 286+ : for 80286 and higher
  7729. 386+ : for 80386 and higher
  7730. 486+ : for i486 and higher
  7731. Cyrix M5+ : for Cyrix only (Cx486S and higher)
  7732. Pentium+ : for Pentium
  7733. Pentium Pro+ : for Pentium Pro and higher
  7734. Pentium II+ : for Pentium II and higher
  7735. MMX : Intel MMX
  7736. AMD 3D : AMD 3D MMX Extensions
  7737. Cyrix EMMX : Cyrix Extended MMX
  7738. KNI/MMX2 : Katmai New Instructions/Intel MMX2
  7739. <specified> : specified
  7740. mem8 - Memory Operand 8 bit
  7741. mem - Memory operand 16/32 or more bit
  7742. m64 - Memory operand 64-bit
  7743. reg8 - Register 8 bit
  7744. reg - Register 16/32 bit
  7745. mm - MMX register Integer (64-bit)
  7746. xmm - MMX2 register F.P (128-bit)
  7747. imm8 - Immediate 8 bit
  7748. imm - Immediate 16/32 bit
  7749. ----------------------- [TABLE00]: ---------------------------
  7750. 00 ADD mem8,reg8
  7751. 01 ADD mem,reg
  7752. 02 ADD reg8,mem8
  7753. 03 ADD reg,mem
  7754. 04 ADD AL,imm8
  7755. 05 ADD AX,imm
  7756. 06 PUSH ES
  7757. 07 POP ES
  7758. 08 OR mem8,reg8
  7759. 09 OR mem,reg
  7760. 0A OR reg8,mem8
  7761. 0B OR reg,mem
  7762. 0C OR AL,imm8
  7763. 0D OR AX,imm
  7764. 0E PUSH CS
  7765. 0F POP CS ; 8088 non CMOS versions
  7766. >>> TABLE 01 ; NECs & 286+
  7767. Invalid Opcode ; 186/188
  7768. 10 ADC mem8,reg8
  7769. 11 ADC mem,reg
  7770. 12 ADC reg8,mem8
  7771. 13 ADC reg,mem
  7772. 14 ADC AL,imm8
  7773. 15 ADC AX,imm
  7774. 16 PUSH SS
  7775. 17 POP SS
  7776. 18 SBB mem8,reg8
  7777. 19 SBB mem,reg
  7778. 1A SBB reg8,mem8
  7779. 1B SBB reg,mem
  7780. 1C SBB AL,imm8
  7781. 1D SBB AX,imm
  7782. 1E PUSH DS
  7783. 1F POP DS
  7784. 20 AND mem8,reg8
  7785. 21 AND mem,reg
  7786. 22 AND reg8,mem8
  7787. 23 AND reg,mem
  7788. 24 AND AL,imm8
  7789. 25 AND AX,imm
  7790. 26 ES: segment prefix
  7791. 27 DAA
  7792. 28 SUB mem8,reg8
  7793. 29 SUB mem,reg
  7794. 2A SUB reg8,mem8
  7795. 2B SUB reg,mem
  7796. 2C SUB AL,imm8
  7797. 2D SUB AX,imm
  7798. 2E CS: segment prefix
  7799. 2F DAS
  7800. 30 XOR mem8,reg8
  7801. 31 XOR mem,reg
  7802. 32 XOR reg8,mem8
  7803. 33 XOR reg,mem
  7804. 34 XOR AL,imm8
  7805. 35 XOR AX,imm
  7806. 36 SS: segment prefix
  7807. 37 AAA
  7808. 38 CMP mem8,reg8
  7809. 39 CMP mem,reg
  7810. 3A CMP reg8,mem8
  7811. 3B CMP reg,mem
  7812. 3C CMP AL,imm8
  7813. 3D CMP AX,imm
  7814. 3E DS: segment prefix
  7815. 3F AAS
  7816. 40 INC AX
  7817. 41 INC CX
  7818. 42 INC DX
  7819. 43 INC BX
  7820. 44 INC SP
  7821. 45 INC BP
  7822. 46 INC SI
  7823. 47 INC DI
  7824. 48 DEC AX
  7825. 49 DEC CX
  7826. 4A DEC DX
  7827. 4B DEC BX
  7828. 4C DEC SP
  7829. 4D DEC BP
  7830. 4E DEC SI
  7831. 4F DEC DI
  7832. 50 PUSH AX
  7833. 51 PUSH CX
  7834. 52 PUSH DX
  7835. 53 PUSH BX
  7836. 54 PUSH SP
  7837. 55 PUSH BP
  7838. 56 PUSH SI
  7839. 57 PUSH DI
  7840. 58 POP AX
  7841. 59 POP CX
  7842. 5A POP DX
  7843. 5B POP BX
  7844. 5C POP SP
  7845. 5D POP BP
  7846. 5E POP SI
  7847. 5F POP DI
  7848. 60 PUSHA ; NECs & 186+
  7849. 61 POPA ; NECs & 186+
  7850. 62 BOUND reg,mem ; NECs & 186+
  7851. 63 ARPL reg,mem ; 286+ PM
  7852. 64 FS: segment prefix ; 386+
  7853. 65 GS: segment prefix ; 386+
  7854. 66 Memory access size prefix ; 386+
  7855. 67 Operands size prefix ; 386+
  7856. 68 PUSH imm ; NECs & 186+
  7857. 69 IMUL reg,imm,mem ; NECs & 186+
  7858. 6A PUSH imm8 ; NECs & 186+
  7859. 6B IMUL reg,imm8,mem ; NECs & 186+
  7860. 6C INSB ; 186+
  7861. 6D INS ; 186+
  7862. 6E OUTSB ; 186+
  7863. 6F OUTS ; 186+
  7864. 70 JO rel8
  7865. 71 JNO rel8
  7866. 72 JC rel8
  7867. 73 JNC rel8
  7868. 74 JZ rel8
  7869. 75 JNZ rel8
  7870. 76 JNA rel8
  7871. 77 JA rel8
  7872. 78 JS rel8
  7873. 79 JNS rel8
  7874. 7A JP rel8
  7875. 7B JNP rel8
  7876. 7C JL rel8
  7877. 7D JNL rel8
  7878. 7E JNG rel8
  7879. 7F JG rel8
  7880. 80 code extention [1]
  7881. 81 code extention [2]
  7882. 82 code extention [3]
  7883. 83 code extention [4]
  7884. 84 TEST mem8,reg8
  7885. 85 TEST mem,reg
  7886. 86 XCHG mem8,reg8
  7887. 87 XCHG mem,reg
  7888. 88 MOV mem8,reg8
  7889. 89 MOV mem,reg
  7890. 8A MOV reg8,mem8
  7891. 8B MOV reg,mem
  7892. 8C code extention [5]
  7893. 8D LEA reg,mem
  7894. 8E code extention [6]
  7895. 8F code extention [7]
  7896. 90 NOP
  7897. 91 XCHG AX,CX
  7898. 92 XCHG AX,DX
  7899. 93 XCHG AX,BX
  7900. 94 XCHG AX,SP
  7901. 95 XCHG AX,BP
  7902. 96 XCHG AX,SI
  7903. 97 XCHG AX,DI
  7904. 98 CBW
  7905. 66 98 CWDE ; 386+
  7906. 99 CWD
  7907. 66 99 CDQ ; 386+
  7908. 9A CALL FAR seg:offs
  7909. 9B WAIT/FWAIT
  7910. 9C PUSHF
  7911. 66 9C PUSHFD ; 386+
  7912. 9D POPF
  7913. 66 9D POPFD ; 386+
  7914. 9E SAHF
  7915. 9F LAHF
  7916. A0 MOV AL,[imm]
  7917. A1 MOV AX,[imm]
  7918. A2 MOV [imm],AL
  7919. A3 MOV [imm],ax
  7920. A4 MOVSB
  7921. A5 MOVS
  7922. A6 CMPSB
  7923. A7 CMPS
  7924. A8 TEST AL,imm8
  7925. A9 TEST AX,imm
  7926. AA STOSB
  7927. AB STOS
  7928. AC LODSB
  7929. AD LODS
  7930. AE SCASB
  7931. AF SCAS
  7932. B0 MOV AL,imm8
  7933. B1 MOV CL,imm8
  7934. B2 MOV DL,imm8
  7935. B3 MOV BL,imm8
  7936. B4 MOV AH,imm8
  7937. B5 MOV CH,imm8
  7938. B6 MOV DH,imm8
  7939. B7 MOV BH,imm8
  7940. B8 MOV AX,imm
  7941. B9 MOV CX,imm
  7942. BA MOV DX,imm
  7943. BB MOV BX,imm
  7944. BC MOV SP,imm
  7945. BD MOV BP,imm
  7946. BE MOV SI,imm
  7947. BF MOV DI,imm
  7948. C0 code extention [8]
  7949. C1 code extention [9]
  7950. C2 RET NEAR imm
  7951. C3 RET NEAR
  7952. C4 LES reg,mem
  7953. C5 LDS reg,mem
  7954. C6 code extention [10]
  7955. C7 code extention [11]
  7956. C8 ENTER imm,imm8 ; NECs & 186+
  7957. C9 LEAVE ; NECs & 186+
  7958. CA RET FAR imm
  7959. CB RET FAR
  7960. CC INT 3
  7961. CD INT imm8
  7962. CE INTO
  7963. CF IRET
  7964. D0 code extention [12]
  7965. D1 code extention [13]
  7966. D2 code extention [14]
  7967. D3 code extention [15]
  7968. D4 AAM imm8 ; NECs w/o imm8 but D4 0A only
  7969. D5 AAD imm8 ; NECs w/o imm8 but D4 0A only
  7970. D6 SETALC ; 286+
  7971. D7 XLAT
  7972. D8-DF ESC imm6,mem ; Note: Refer to Appendix F1
  7973. ; (Cooprocessor commands).
  7974. E0 LOOPNZ rel8
  7975. E1 LOOPZ rel8
  7976. E2 LOOP rel8
  7977. E3 JCXZ rel8
  7978. 66 E3 JECXZ rel8 ; 386+
  7979. E4 IN AL,imm8
  7980. E5 IN AX,imm8
  7981. E6 OUT imm8,AL
  7982. E7 OUT imm8,AX
  7983. E8 CALL NEAR rel16
  7984. E9 JMP NEAR rel16
  7985. EA JMP FAR seg:offs
  7986. EB JMP SHORT rel8
  7987. EC IN AL,DX
  7988. ED IN AX,DX
  7989. EE OUT DX,AL
  7990. EF OUT DX,AX
  7991. F0 LOCK prefix
  7992. F1 SMI ; AMD Am386/486DXLV
  7993. F2 REPNZ
  7994. F3 REP/REPZ ; Used in KNI/MMX2 as
  7995. ; Modificator !!!!!!
  7996. F4 HLT
  7997. F5 CMC
  7998. F6 code extention [16]
  7999. F7 code extention [17]
  8000. F8 CLC
  8001. F9 STC
  8002. FA CLI
  8003. FB STI
  8004. FC CLD
  8005. FD STD
  8006. FE code extention [18]
  8007. FF code extention [19]
  8008. ----------------------- [TABLE 01]: ---------------------------
  8009. Note: First Byte of Operation is 0Fh
  8010. 00 Extended Opcode 20 ; 286+
  8011. 01 Extended Opcode 21 ; 286+
  8012. 02 LAR reg,mem ; 286+
  8013. 03 LSL reg,mem ; 286+
  8014. 04 LOADALL ; 286 only
  8015. 05 LOADALL ; 286 only
  8016. 05 SYSCALL ; AMD K6
  8017. 06 CLTS ; 286+
  8018. 07 LOADALL ; 386,486, None Pentium+
  8019. RES3 ; AMD Am386zXLV
  8020. RES4 ; AMD Am486DXLV
  8021. ICERET ; IBM 386SLC,486SLC,486SLC2
  8022. SYSRET ; AMD K6
  8023. 08 INVD ; 486+
  8024. 09 WBINVD ; 486+
  8025. 0A Reserved, INT 6
  8026. 0B UD2 ; all, but documented on
  8027. ; Pentium Pro only
  8028. 0C
  8029. 0D code extention [25] ; AMD 3D
  8030. 0E FEMMS ; AMD 3D
  8031. 0F >>> TABLE 02 ; AMD 3D
  8032. 10 UMOV mem8,reg8 ; Really different op. space
  8033. ; 386-486, Never Pentium+
  8034. ; on AMD Amz86zXLV,never Cx5x86+
  8035. TEST1 mem8,CL ; NEC V20+
  8036. MOVSS xmm,xmm/mem ; KNI/MMX2 (F3 0F 10)
  8037. MOVUPS xmm,xmm/mem ; KNI/MMX2
  8038. 11 UMOV mem,reg ; see 0Fh,10h
  8039. TEST1 mem,CL ; NEC V20+
  8040. MOVSS xmm/mem,xmm ; KNI/MMX2 (F3 0F 11)
  8041. MOVUPS xmm/mem,xmm ; KNI/MMX2
  8042. 12 UMOV reg8,mem8 ; see 0Fh,10h
  8043. CLEAR1 mem8,CL ; NEC V20+
  8044. MOVLPS xmm,xmm/mem ; KNI/MMX2
  8045. 13 UMOV reg,mem ; see 0Fh,10h
  8046. CLEAR1 mem,CL ; NEC V20+
  8047. MOVLPS xmm/mem,xmm ; KNI/MMX2
  8048. 14 SET1 mem8,CL ; NEC V20+
  8049. UNPCKLPS xmm,xmm/mem ; KNI/MMX2
  8050. 15 SET1 mem,CL ; NEC V20+
  8051. UNPCKHPS xmm,xmm/mem ; KNI/MMX2
  8052. 16 NOT1 mem8,CL ; NEC V20+
  8053. MOVHPS xmm,xmm/mem ; KNI/MMX2
  8054. 17 NOT1 mem,CL ; NEC V20+
  8055. MOVHPS xmm/mem,xmm ; KNI/MMX2
  8056. 18 TEST1 mem8,imm8 ; NEC V20+
  8057. code extension [26] ; KNI/MMX2
  8058. 19 TEST1 mem,imm8 ; NEC V20+
  8059. 1A CLEAR1 mem8,imm8 ; NEC V20+
  8060. 1B CLEAR1 mem,imm8 ; NEC V20+
  8061. 1C SET1 mem8,imm8 ; NEC V20+
  8062. 1D SET1 mem,imm8 ; NEC V20+
  8063. 1E NOT1 mem8,imm8 ; NEC V20+
  8064. 1F NOT1 mem,imm8 ; NEC V20+
  8065. 20 MOV reg32,CRn ; 386+
  8066. ADD4S ; NEC V20+
  8067. 21 MOV reg32,DRn ; 386+
  8068. 22 MOV CRn,reg32 ; 386+
  8069. SUB4S ; NEC V20+
  8070. 23 MOV DRn,reg32 ; 386+
  8071. 24 MOV reg32,TRn ; 386-486 only, and Cyrix
  8072. 25
  8073. 26 MOV TRn,reg32 ; 386-486 only, and Cyrix
  8074. CMPS4S ; NEC V20+
  8075. 27
  8076. 28 ROL4 mem8 ; NEC V20+
  8077. MOVAPS xmm,xmm/mem ; KNI/MMX2
  8078. 29 MOVAPS xmm/mem,xmm ; KNI/MMX2
  8079. 2A ROL4 mem8 ; NEC V20+
  8080. CVTPI2PS xmm,mm/mem ; KNI/MMX2
  8081. CVTSI2SS xmm,r32/mem ; KNI/MMX2 (F3 0F 2A)
  8082. 2B MOVNTPS xmm/mem,xmm ; KNI/MMX2
  8083. 2C CVTTPS2PI mm,xmm/mem ; KNI/MMX2
  8084. CVTTSS2SI r32,xmm/mem ; KNI/MMX2 (F3 0F 2C)
  8085. 2D CVTPS2PI mm,xmm/mem ; KNI/MMX2
  8086. CVTSS2SI r32,xmm/mem ; KNI/MMX2 (F3 0F 2D)
  8087. 2E UCOMISS xmm,xmm/mem ; KNI/MMX2
  8088. 2F COMISS xmm,xmm/mem ; KNI/MMX2
  8089. 30 WRMSR ; Pentium+, IBM 386SLC,486SLC/SLC2
  8090. 31 RDTSC ; Pentium+
  8091. INS reg8,reg8 ; NEC V20+ ; Note: NECINS
  8092. 32 RDMSR ; Pentium, IBM 386SLC,486SLC/SLC2
  8093. 33 EXT reg8,reg8 ; NEC V20+
  8094. RDPMC ; Pentium Pro+
  8095. 34 SYSENTER ; Pentium II+
  8096. 35 SYSEXIT ; Pentium II+
  8097. 36 RDSHR reg/mem32 ; Cx6x86MX (SMM only)
  8098. 37 WRSHR reg/mem32 ; Cx6x86MX (SMM only)
  8099. 38
  8100. 39
  8101. 3A
  8102. 3B
  8103. 3C
  8104. 3D
  8105. 3E
  8106. 3F
  8107. 40 CMOVO reg,mem ; Pentium Pro+
  8108. 41 CMOVNO reg,mem ; Pentium Pro+
  8109. 42 CMOVC reg,mem ; Pentium Pro+
  8110. 43 CMOVNC reg,mem ; Pentium Pro+
  8111. 44 CMOVZ reg,mem ; Pentium Pro+
  8112. 45 CMOVNZ reg,mem ; Pentium Pro+
  8113. 46 CMOVA reg,mem ; Pentium Pro+
  8114. 47 CMOVNA reg,mem ; Pentium Pro+
  8115. 48 CMOVS reg,mem ; Pentium Pro+
  8116. 49 CMOVNS reg,mem ; Pentium Pro+
  8117. 4A CMOVP reg,mem ; Pentium Pro+
  8118. 4B CMOVNP reg,mem ; Pentium Pro+
  8119. 4C CMOVL reg,mem ; Pentium Pro+
  8120. 4D CMOVNL reg,mem ; Pentium Pro+
  8121. 4E CMOVNG reg,mem ; Pentium Pro+
  8122. 4F CMOVG reg,mem ; Pentium Pro+
  8123. 50 PAVEB mm,mm/m64 ; Cyrix EMMX
  8124. MOVMSKPS r32,xmm ; KNI/MMX2
  8125. 51 PADDSIW mm,mm/m64 ; Cyrix EMMX
  8126. SQRTPS xmm,xmm/mem ; KNI/MMX2
  8127. SQRTSS xmm,xmm/mem ; KNI/MMX2 (F3 0F 51)
  8128. 52 PMAGW mm,mm/m64 ; Cyrix EMMX
  8129. PSQRTPS xmm,xmm/mem ; KNI/MMX2
  8130. PSQRTSS xmm,xmm/mem ; KNI/MMX2 (F3 0F 52)
  8131. 53 RCPPS xmm,xmm/mem ; KNI/MMX2
  8132. RCPSS xmm,xmm/mem ; KNI/MMX2 (F3 0F 53)
  8133. 54 PDISTIB mm,m64 ; Cyrix EMMX
  8134. ANDPS xmm,xmm/mem ; KNI/MMX2
  8135. 55 PSUBSIW mm,mm/m64 ; Cyrix EMMX
  8136. ANDNPS xmm,xmm/mem ; KNI/MMX2
  8137. 56 ORPS xmm,xmm/mem ; KNI/MMX2
  8138. 57 XORPS xmm,xmm/mem ; KNI/MMX2
  8139. 58 PMVZB mm,m64 ; Cyrix EMMX
  8140. ADDPS xmm,xmm/mem ; KNI/MMX2
  8141. ADDSS xmm,xmm/mem ; KNI/MMX2 (F3 0F 58)
  8142. 59 PMULHRW mm,mm/m64 ; Cyrix EMMX
  8143. MULPS xmm,xmm/mem ; KNI/MMX2
  8144. MULSS xmm,xmm/mem ; KNI/MMX2 (F3 0F 59)
  8145. 5A PMVNZB mm,m64 ; Cyrix EMMX
  8146. 5B PMVLZB mm,m64 ; Cyrix EMMX
  8147. 5C PMVGEZB mm,m64 ; Cyrix EMMX
  8148. SUBPS xmm,xmm/mem ; KNI/MMX2
  8149. SUBSS xmm,xmm/mem ; KNI/MMX2 (F3 0F 5C)
  8150. 5D PMULHRIW mm,mm/m64 ; Cyrix EMMX
  8151. MINPS xmm,xmm/mem ; KNI/MMX2
  8152. MINSS xmm,xmm/mem ; KNI/MMX2 (F3 0F 5D)
  8153. 5E PMACHRIW mm,m64 ; Cyrix EMMX
  8154. DIVPS xmm,xmm/mem ; KNI/MMX2
  8155. DIVSS xmm,xmm/mem ; KNI/MMX2 (F3 0F 5E)
  8156. 5F MAXPS xmm,xmm/mem ; KNI/MMX2
  8157. MAXSS xmm,xmm/mem ; KNI/MMX2 (F3 0F 5F)
  8158. 60 PUNPCKLBW mm,mm/m32 ; MMX
  8159. 61 PUNPCKLWD mm,mm/m32 ; MMX
  8160. 62 PUNPCKLDQ mm,mm/m32 ; MMX
  8161. 63 PACKSSWB mm,mm/m64 ; MMX
  8162. 64 PCMPGTB mm,mm/m64 ; MMX
  8163. 65 PCMPGTW mm,mm/m64 ; MMX
  8164. 66 PCMPGTD mm,mm/m64 ; MMX
  8165. 67 PACKUSWB mm,mm/m64 ; MMX
  8166. 68 PUNPCKHBW mm,mm/m64 ; MMX
  8167. 69 PUNPCKHWD mm,mm/m64 ; MMX
  8168. 6A PUNPCKHDQ mm,mm/m64 ; MMX
  8169. 6B PACKSSDW mm,mm/m64 ; MMX
  8170. 6C
  8171. 6D
  8172. 6E MOVD mm,r/m32 ; MMX
  8173. 6F MOVD mm,mm/m64 ; MMX
  8174. 70 PSHUF mm,mm/mem,i8 ; KNI/MMX2
  8175. 71 code extention [24] ; MMX
  8176. 72 code extention [25] ; MMX
  8177. 73 code extention [26] ; MMX
  8178. 74 PCMPEQB mm,mm/m64 ; MMX
  8179. 75 PCMPEQW mm,mm/m64 ; MMX
  8180. 76 PCMPEQD mm,mm/m64 ; MMX
  8181. 77 EMMS ; MMX
  8182. 78 SVDC mem,sreg ; Cyrix M5+ (SMM only)
  8183. 79 RSDC sreg,mem ; Cyrix M5+ (SMM only)
  8184. 7A SVLDT mem ; Cyrix M5+ (SMM only)
  8185. 7B RSLDT mem ; Cyrix M5+ (SMM only)
  8186. 7C SVTS mem ; Cyrix M5+ (SMM only)
  8187. 7D RSTS mem ; Cyrix M5+ (SMM only)
  8188. 7E SMINT ; Cyrix M6+
  8189. 7E MOVD r/m32,mm ; MMX
  8190. 7F MOVD mm/m64,mm ; MMX
  8191. 80 JO rel16 ; 386+
  8192. 81 JNO rel16 ; 386+
  8193. 82 JC rel16 ; 386+
  8194. 83 JNC rel16 ; 386+
  8195. 84 JZ rel16 ; 386+
  8196. 85 JNZ rel16 ; 386+
  8197. 86 JNA rel16 ; 386+
  8198. 87 JA rel16 ; 386+
  8199. 88 JS rel16 ; 386+
  8200. 89 JNS rel16 ; 386+
  8201. 8A JP rel16 ; 386+
  8202. 8B JNP rel16 ; 386+
  8203. 8C JL rel16 ; 386+
  8204. 8D JNL rel16 ; 386+
  8205. 8E JNG rel16 ; 386+
  8206. 8F JG rel16 ; 386+
  8207. 90 SETO mem8 ; 386+
  8208. 91 SETNO mem8 ; 386+
  8209. 92 SETC mem8 ; 386+
  8210. 93 SETNC mem8 ; 386+
  8211. 94 SETZ mem8 ; 386+
  8212. 95 SETNZ mem8 ; 386+
  8213. 96 SETNA mem8 ; 386+
  8214. 97 SETA mem8 ; 386+
  8215. 98 SETS mem8 ; 386+
  8216. 99 SETNS mem8 ; 386+
  8217. 9A SETP mem8 ; 386+
  8218. 9B SETNP mem8 ; 386+
  8219. 9C SETL mem8 ; 386+
  8220. 9D SETNL mem8 ; 386+
  8221. 9E SETNG mem8 ; 386+
  8222. 9F SETG mem8 ; 386+
  8223. A0 PUSH FS ; 386+
  8224. A1 POP FS ; 386+
  8225. A2 CPUID ; 486 SL enhanced, Pentium+
  8226. ; UMC,i386CX,Cyrix M1+,AMD K5+,
  8227. ; Some NexGen, IDT
  8228. A3 BT mem,reg ; 386+
  8229. A4 SHLD mem,reg,imm ; 386+
  8230. A5 SHLD mem,reg,CL ; 386+
  8231. A6 XBTS reg,mem,AX,CL ; Intel (!!!) 80386 steps A0-B0
  8232. CMPXCHG mem8,reg8 ; Intel (!!!) 80486 steps A0-B0
  8233. A7 IBTS mem,AX,CL,reg ; Intel (!!!) 80386 steps A0-B0
  8234. CMPXCHG mem,reg ; Intel (!!!) 80486 steps A0-B0
  8235. A8 PUSH GS ; 386+
  8236. A9 POP GS ; 386+
  8237. AA RSM ; i486 SL Enhanced, i386CX
  8238. ; Intel Pentium+, etc
  8239. AB BTS mem,reg ; 386+
  8240. AC SHRD mem,reg,imm ; 386+
  8241. AD SHRD mem,reg,CL ; 386+
  8242. AE code extention [24]
  8243. AF IMUL reg,mem ; 386+
  8244. B0 CMPXCHG mem8,reg8 ; 486+ (Intel B1+ step only)
  8245. B1 CMPXCHG mem,reg ; 486+ (Intel B1+ step only)
  8246. B2 LSS reg,mem ; 386+
  8247. B3 BTR mem,reg ; 386+
  8248. B4 LFS reg,mem ; 386+
  8249. B5 LGS reg,mem ; 386+
  8250. B6 MOVZX reg,mem8 ; 386+
  8251. B7 MOVZX reg32,mem ; 386+
  8252. B8
  8253. B9 UD2 ; one more Undefined Opcode-2
  8254. BA code extention [22]
  8255. BB BTC mem,reg ; 386+
  8256. BC BSF reg,mem ; 386+
  8257. BD BSR reg,mem ; 386+
  8258. BE MOVSX reg,mem8 ; 386+
  8259. BF MOVSX reg32,mem ; 386+
  8260. C0 XADD mem8,reg8 ; 486+
  8261. C1 XADD mem,reg ; 486+
  8262. C2 code extension [27] ; KNI/MMX2
  8263. C3
  8264. C4 PINSRW mm,r32/mem,i8 ; KNI/MMX2
  8265. C5 PEXTRW r32,mm,i8 ; KNI/MMX2
  8266. C6 SHUFPS xmm,xmm/mem,i8 ; KNI/MMX2
  8267. C7 code extention [23]
  8268. C8 BSWAP EAX ; 486+
  8269. C9 BSWAP ECX ; 486+
  8270. CA BSWAP EDX ; 486+
  8271. CB BSWAP EBX ; 486+
  8272. CC BSWAP ESP ; 486+
  8273. CD BSWAP EBP ; 486+
  8274. CE BSWAP ESI ; 486+
  8275. CF BSWAP EDI ; 486+
  8276. D0
  8277. D1 PSRLW mm,mm/m64 ; MMX
  8278. D2 PSRLD mm,mm/m64 ; MMX
  8279. D3 PSRLQ mm,mm/m64 ; MMX
  8280. D4
  8281. D5 PMULLW mm,mm/m64 ; MMX
  8282. D6
  8283. D7 PMOVMSKB r32/m32,mm ; KNI/MMX2
  8284. D8
  8285. D9
  8286. DA PMINUB mm,mm/mem ; KNI/MMX2
  8287. DB
  8288. DC
  8289. DD
  8290. DE PMAXSB mm,mm/m64 ; KNI/MMX2
  8291. DF PMAXSW mm,mm/m64 ; KNI/MMX2
  8292. E0 PAVGB mm,mm/m64 ; KNI/MMX2
  8293. E1 PSRAW mm,mm/m64 ; MMX
  8294. E2 PSRAD mm,mm/m64 ; MMX
  8295. E3 PAVGW mm,mm/m64 ; KNI/MMX2
  8296. E4 PMULHUW mm,mm/m64 ; KNI/MMX2
  8297. E5 PMULHW mm,mm/m64 ; MMX
  8298. E6
  8299. E7 MOVNTQ mem,mm ; KNI/MMX2
  8300. E8
  8301. E9
  8302. EA PMINSW mm,mm/m64 ; KNI/MMX2
  8303. EB
  8304. EC
  8305. ED
  8306. EE PMAXSW mm,mm/m64 ; KNI/MMX2
  8307. EF
  8308. F0
  8309. F1 PSLLW mm,mm/m64 ; MMX
  8310. F2 PSLLD mm,mm/m64 ; MMX
  8311. F3 PSLLQ mm,mm/m64 ; MMX
  8312. F4
  8313. F5 PMULADDWD mm,mm/m64 ; MMX
  8314. F6 PSADBW mm,mm/m64 ; KNI/MMX2
  8315. F7 MASKMOVQ mm,mm/m64 ; KNI/MMX2
  8316. F8
  8317. F9
  8318. FA
  8319. FB
  8320. FC
  8321. FD
  8322. FE
  8323. FF UD ; AMD Am5k86+ and all other CPUs
  8324. FF OIO ; Cyrix Cx6x86+ and all other CPUs
  8325. FF BRKEM imm8 ; NEC V20+
  8326. ---------------------- [TABLE 02] --------------------------
  8327. First bytes is 0Fh,0Fh
  8328. (In Table 02 marked only valid opcodes)
  8329. 0D PI2FD mm,mm/m64 ; AMD 3D
  8330. 1D PF2ID mm,mm/m64 ; AMD 3D
  8331. 90 PFCMPGE mm,mm/m64 ; AMD 3D
  8332. 94 PFMIN mm,mm/m64 ; AMD 3D
  8333. 96 PFRCP mm,mm/m64 ; AMD 3D
  8334. 97 PFRSQRT mm,mm/m64 ; AMD 3D
  8335. 9A PFSUB mm,mm/m64 ; AMD 3D
  8336. 9E PFADD mm,mm/m64 ; AMD 3D
  8337. A0 PFCMPGT mm,mm/m64 ; AMD 3D
  8338. A4 PFMAX mm,mm/m64 ; AMD 3D
  8339. A6 PFRCPIT1 mm,mm/m64 ; AMD 3D
  8340. A7 PFRSQIT1 mm,mm/m64 ; AMD 3D
  8341. AA PFSUBR mm,mm/m64 ; AMD 3D
  8342. AE PFACC mm,mm/m64 ; AMD 3D
  8343. B0 PFCMPEQ mm,mm/m64 ; AMD 3D
  8344. B4 PFMUL mm,mm/m64 ; AMD 3D
  8345. B6 PFRCPIT2 mm,mm/m64 ; AMD 3D
  8346. B7 PMULHRW mm,mm/m64 ; AMD 3D
  8347. BF PAVGUSB mm,mm/m64 ; AMD 3D
  8348. **************************************************
  8349. CODE EXTENTIONS:
  8350. First byte(s) look at TABLES#00,01
  8351. Next byte have format
  8352. MMOOOMMM : MM is memory mode (see postbyte)
  8353. OOO select operation in this extention code field
  8354. MMM is memory field (see Postbyte)
  8355. Code Extention # 1
  8356. (First byte(s) = 80h)
  8357. Field
  8358. OOO Operation
  8359. 000 ADD mem8,imm8
  8360. 001 OR mem8,imm8
  8361. 010 ADC mem8,imm8
  8362. 011 SBB mem8,imm8
  8363. 100 AND mem8,imm8
  8364. 101 SUB mem8,imm8
  8365. 110 XOR mem8,imm8
  8366. 111 CMP mem8,imm8
  8367. Code Extention # 2
  8368. (First byte(s) = 81h)
  8369. Field
  8370. OOO Operation
  8371. 000 ADD mem,imm
  8372. 001 OR mem,imm
  8373. 010 ADC mem,imm
  8374. 011 SBB mem,imm
  8375. 100 AND mem,imm
  8376. 101 SUB mem,imm
  8377. 110 XOR mem,imm
  8378. 111 CMP mem,imm
  8379. Code Extention # 3
  8380. (First byte(s) = 82h)
  8381. Note: On some models, undefined code do nothing, on any work as 83h
  8382. None INT 6 at all.
  8383. Field
  8384. OOO Operation
  8385. 000 ADD mem8,simm8
  8386. 001
  8387. 010 ADC mem8,simm8
  8388. 011 SBB mem8,simm8
  8389. 100
  8390. 101 SUB mem8,simm8
  8391. 110
  8392. 111 CMP mem8,simm8
  8393. Code Extention # 4
  8394. (First byte(s) = 83h)
  8395. Field
  8396. OOO Operation
  8397. 000 ADD mem,simm8
  8398. 001 OR mem,simm8 ; 386+
  8399. 010 ADC mem,simm8
  8400. 011 SBB mem,simm8
  8401. 100 AND mem,simm8 ; 386+
  8402. 101 SUB mem,simm8
  8403. 110 XOR mem,simm8 ; 388+
  8404. 111 CMP mem,simm8
  8405. Code Extention # 5
  8406. (First byte(s) = 8Ch)
  8407. Field
  8408. OOO Operation
  8409. 000 MOV mem,ES
  8410. 001 MOV mem,CS
  8411. 010 MOV mem,SS
  8412. 011 MOV mem,DS
  8413. 100 MOV mem,FS ; 386+
  8414. 101 MOV mem,GS ; 386+
  8415. 110
  8416. 111
  8417. Code Extention # 6
  8418. (First byte(s) = 8Eh)
  8419. Field
  8420. OOO Operation
  8421. 000 MOV ES,mem
  8422. 001 MOV CS,mem ; Non CMOS version of 8086/8088 only
  8423. 010 MOV SS,mem
  8424. 011 MOV DS,mem
  8425. 100 MOV FS,mem ; 386+
  8426. 101 MOV GS,mem ; 386+
  8427. 110
  8428. 111
  8429. Code Extention # 7
  8430. (First byte(s) = 8Fh)
  8431. Note: i486 can eat any OOO.
  8432. Field
  8433. OOO Operation
  8434. 000 POP mem
  8435. 001
  8436. 010
  8437. 011
  8438. 100
  8439. 101
  8440. 110
  8441. 111
  8442. Code Extention # 8
  8443. (First byte(s) = C0h)
  8444. Field
  8445. OOO Operation
  8446. 000 ROL mem8,imm8 ; 186+
  8447. 001 ROR mem8,imm8 ; 186+
  8448. 010 RCL mem8,imm8 ; 186+
  8449. 011 RCR mem8,imm8 ; 186+
  8450. 100 SHL mem8,imm8 ; 186+
  8451. 101 SHR mem8,imm8 ; 186+
  8452. 110 SAL mem8,imm8 ; 186+
  8453. 111 SAR mem8,imm8 ; 186+
  8454. Code Extention # 9
  8455. (First byte(s) = C1h)
  8456. Field
  8457. OOO Operation
  8458. 000 ROL mem,imm8 ; 186+
  8459. 001 ROR mem,imm8 ; 186+
  8460. 010 RCL mem,imm8 ; 186+
  8461. 011 RCR mem,imm8 ; 186+
  8462. 100 SHL mem,imm8 ; 186+
  8463. 101 SHR mem,imm8 ; 186+
  8464. 110 SAL mem,imm8 ; 186+
  8465. 111 SAR mem,imm8 ; 186+
  8466. Code Extention # 10
  8467. (First byte(s) = C6h)
  8468. Note: i486 can eat any OOO field.
  8469. Field
  8470. OOO Operation
  8471. 000 MOV mem8,imm8
  8472. 001
  8473. 010
  8474. 011
  8475. 100
  8476. 101
  8477. 110
  8478. 111
  8479. Code Extention # 11
  8480. (First byte(s) = C7h)
  8481. Note: i486 can eat any OOO field
  8482. Field
  8483. OOO Operation
  8484. 000 MOV mem,imm16
  8485. 001
  8486. 010
  8487. 011
  8488. 100
  8489. 101
  8490. 110
  8491. 111
  8492. Code Extention # 12
  8493. (First byte(s) = D0h)
  8494. Field
  8495. OOO Operation
  8496. 000 ROL mem8,1
  8497. 001 ROR mem8,1
  8498. 010 RCL mem8,1
  8499. 011 RCR mem8,1
  8500. 100 SHL mem8,1
  8501. 101 SHR mem8,1
  8502. 110 SAL mem8,1
  8503. 111 SAR mem8,1
  8504. Code Extention # 13
  8505. (First byte(s) = D1h)
  8506. Field
  8507. OOO Operation
  8508. 000 ROL mem,1
  8509. 001 ROR mem,1
  8510. 010 RCL mem,1
  8511. 011 RCR mem,1
  8512. 100 SHL mem,1
  8513. 101 SHR mem,1
  8514. 110 SAL mem,1
  8515. 111 SAR mem,1
  8516. Code Extention # 14
  8517. (First byte(s) = D2h)
  8518. Field
  8519. OOO Operation
  8520. 000 ROL mem8,CL
  8521. 001 ROR mem8,CL
  8522. 010 RCL mem8,CL
  8523. 011 RCR mem8,CL
  8524. 100 SHL mem8,CL
  8525. 101 SHR mem8,CL
  8526. 110 SAL mem8,CL
  8527. 111 SAR mem8,CL
  8528. Code Extention # 15
  8529. (First byte(s) = D3h)
  8530. Field
  8531. OOO Operation
  8532. 000 ROL mem,CL
  8533. 001 ROR mem,CL
  8534. 010 RCL mem,CL
  8535. 011 RCR mem,CL
  8536. 100 SHL mem,CL
  8537. 101 SHR mem,CL
  8538. 110 SAL mem,CL
  8539. 111 SAR mem,CL
  8540. Code Extention # 16
  8541. (First byte(s) = F6h)
  8542. Note: Usually 001 do same thing as 000, TEST mem8,imm8
  8543. Field
  8544. OOO Operation
  8545. 000 TEST mem8,imm8
  8546. 001
  8547. 010 NOT mem8
  8548. 011 NEG mem8
  8549. 100 MUL mem8
  8550. 101 IMUL mem8
  8551. 110 DIV mem8
  8552. 111 IDIV mem8
  8553. Code Extention # 17
  8554. (First byte(s) = F7h)
  8555. Note: Usually 001 do same thing as 000, TEST mem,imm16
  8556. Field
  8557. OOO Operation
  8558. 000 TEST mem,imm16
  8559. 001
  8560. 010 NOT mem
  8561. 011 NEG mem
  8562. 100 MUL mem
  8563. 101 IMUL mem
  8564. 110 DIV mem
  8565. 111 IDIV mem
  8566. Code Extention # 18
  8567. (First byte(s) = FEh)
  8568. Field
  8569. OOO Operation
  8570. 000 INC mem8
  8571. 001 DEC mem8
  8572. 010
  8573. 011
  8574. 100
  8575. 101
  8576. 110
  8577. 111
  8578. Code Extention # 19
  8579. (First byte(s) = FFh)
  8580. Field
  8581. OOO Operation
  8582. 000 INC mem
  8583. 001 DEC mem
  8584. 010 CALL NEAR mem
  8585. 011 CALL FAR mem
  8586. 100 JMP NEAR mem
  8587. 101 JMP FAR mem
  8588. 110 PUSH mem
  8589. 111
  8590. Code Extention # 20
  8591. (First byte(s) = 0FH,00H)
  8592. Field
  8593. OOO Operation
  8594. 000 SLDT mem ; 286+
  8595. 001 STR mem ; 286+
  8596. 010 LLDT mem ; 286+
  8597. 011 LTR mem ; 286+
  8598. 100 VERR mem ; 286+
  8599. 101 VERW mem ; 286+
  8600. 110
  8601. 111
  8602. Code Extention # 21
  8603. (First byte(s) = 0Fh,01h)
  8604. Field
  8605. OOO Operation
  8606. 000 SGDT mem ; 286+
  8607. 001 SIDT mem ; 286+
  8608. 010 LGDT mem ; 286+
  8609. 011 LIDT mem ; 286+
  8610. 100 SMSW mem ; 286+
  8611. 101
  8612. 110 LMSW mem ; 286+
  8613. 111 INVLPG mem ; 486+
  8614. Code Extention # 22
  8615. (First byte(s) = 0Fh,BAh)
  8616. Field
  8617. OOO Operation
  8618. 000
  8619. 001
  8620. 010
  8621. 011
  8622. 100 BT mem,imm8 ; 386+
  8623. 101 BTS mem,imm8 ; 386+
  8624. 110 BTR mem,imm8 ; 386+
  8625. 111 BTC mem,imm8 ; 386+
  8626. Code Extention # 23
  8627. (First byte(s) = 0Fh,C7h)
  8628. Field
  8629. OOO Operation
  8630. 000
  8631. 001 CMPXCHG8B mem ; Pentium
  8632. 010
  8633. 011
  8634. 100
  8635. 101
  8636. 110
  8637. 111
  8638. Code Extention # 24
  8639. (First byte(s) = 0Fh,AEh)
  8640. Field
  8641. OOO Operation
  8642. 000 FXSAVE mem512b ; KNI/MMX2
  8643. 001 FXRSTOR mem512b ; KNI/MMX2
  8644. 010 LDMXCSR mem ; KNI/MMX2
  8645. 011 STMXCSR mem ; KNI/MMX2
  8646. 100
  8647. 101
  8648. 110
  8649. 111 SFENCE ; KNI/MMX2 (0F AE FF)
  8650. Code Extention # 25
  8651. (First byte(s) = 0Fh,0Dh)
  8652. Field
  8653. OOO Operation
  8654. 000 PREFETCH ; AMD 3D
  8655. 001 PREFETCHW ; AMD 3D
  8656. 010
  8657. 011
  8658. 100
  8659. 101
  8660. 110
  8661. 111
  8662. Code Extention # 26
  8663. (First byte(s) = 0Fh,18h)
  8664. Field
  8665. OOO Operation
  8666. 000 PREFETCHNTA mem ; KNI/MMX2
  8667. 001 PREFETCHT0 mem ; KNI/MMX2
  8668. 010 PREFETCHT1 mem ; KNI/MMX2
  8669. 011 PREFETCHT2 mem ; KNI/MMX2
  8670. 100
  8671. 101
  8672. 110
  8673. 111
  8674. Code Extension # 27
  8675. (First byte(s) = (F3h) 0Fh,C2h) ; KNI/MMX2 All extension
  8676. .
  8677. Instruction have unusuall x86 format:
  8678. <0Fh> <C2h> <Postbyte> [<Memory>] <Nextbyte>
  8679. <F3h> <0Fh> <C2h> <Postbyte> [<Memory>] <Nextbyte>
  8680. .
  8681. Next byte (w/o F3h Prefix) (with F3 prefix)
  8682. 00 CMPEQPS xmm,xmm/mem CMPEQSS xmm,xmm/mem
  8683. 01 CMPLTPS xmm,xmm/mem CMPLTSS xmm,xmm/mem
  8684. 02 CMPLEPS xmm,xmm/mem CMPLESS xmm,xmm/mem
  8685. 03 CMPUNORDPS xmm,xmm/mem CMPUNORDSS xmm,xmm/mem
  8686. 04 CMPNEPS xmm,xmm/mem CMPNESS xmm,xmm/mem
  8687. 05 CMPNLTPS xmm,xmm/mem CMPNLTSS xmm,xmm/mem
  8688. 06 CMPNLEPS xmm,xmm/mem CMPNLESS xmm,xmm/mem
  8689. 07 CMPORDPS xmm,xmm/mem CMPORDSS xmm,xmm/mem
  8690. ------------------------------------------------
  8691. APPENDIX F1 FLOATING POINT OPCODES
  8692. ESC 0 (First byte = D8h)
  8693. ==========================
  8694. ESCAPE 000 MMRRRMMM
  8695. ==========================
  8696. Operation
  8697. RRR If MM<>11 If MM=11
  8698. 000 FADD mem32r FADD ST,ST(i)
  8699. 001 FMUL mem32r FMUL ST,ST(i)
  8700. 010 FCOM mem32r FCOM ST(i)
  8701. 011 FCOMP mem32r FCOMP ST(i)
  8702. 100 FSUB mem32r FSUB ST,ST(i)
  8703. 101 FSUBR mem32r FSUBR ST,ST(i)
  8704. 110 FDIV mem32r FDIV ST,ST(i)
  8705. 111 FDIVR mem32r FDIVR ST,ST(i)
  8706. ESC 1 (First byte = D9h)
  8707. ==========================
  8708. ESCAPE 001 MMRRRMMM
  8709. ==========================
  8710. Operation
  8711. RRR If MM<>11 If MM=11
  8712. 000 FLD mem32r FLD ST(i)
  8713. 001 empty FXCH ST(i)
  8714. 010 FST mem32r See Table marked ESC1-Extended codes
  8715. 011 FSTP mem32r FSTP ST(i)
  8716. 100 FLDENV mem See Table marked ESC1-Extended codes
  8717. 101 FLDCW mem See Table marked ESC1-Extended codes
  8718. 110 FSTENV mem See Table marked ESC1-Extended codes
  8719. 111 FSTCW mem See Table marked ESC1-Extended codes
  8720. ESC1-Extended codes:
  8721. \ RRR
  8722. MMM \ 010 100 101 110 111
  8723. 000 FNOP FCHS FLD1 F2XM1 FPREM
  8724. 001 FABS FLDL2T FYL2X FYL2XP1
  8725. 010 FLDL2E FPTAN FSQRT
  8726. 011 FLDPI FPATAN FSINCOS'
  8727. 100 FTST FLDLG2 FXTRACT FRNDINT
  8728. 101 FXAM FLDLN2 FPREM1 FSCALE
  8729. 110 FLDZ FDECSTP FSIN'
  8730. 111 FINCSTP FCOS'
  8731. ' means 387+ (include 287XL/XLT, 187!!!)
  8732. ESC 2 (First byte = DAh)
  8733. ==========================
  8734. ESCAPE 010 MMRRRMMM
  8735. ==========================
  8736. Operation
  8737. RRR If MM<>11
  8738. 000 FIADD mem32i
  8739. 001 FIMUL mem32i
  8740. 010 FICOM mem32i
  8741. 011 FICOMP mem32i
  8742. 100 FISUB mem32i
  8743. 101 FISUBR mem32i
  8744. 110 FIDIV mem32i
  8745. 111 FIDIVR mem32i
  8746. Note: P6
  8747. DA C0+i FCMOVB ST0,STi
  8748. DA C8+i FCMOVE ST0,STi
  8749. DA D0+i FCMOVBE ST0,STi
  8750. DA D8+i FCMOVU ST0,STi
  8751. ESC 3 (First byte = DBh)
  8752. ==========================
  8753. ESCAPE 011 MMRRRMMM
  8754. ==========================
  8755. Operation
  8756. RRR If MM<>11
  8757. 000 FILD mem32i
  8758. 001
  8759. 010 FIST mem32i
  8760. 011 FISTP mem32i
  8761. 100
  8762. 101 FLD mem80r
  8763. 110
  8764. 111 FSTP mem80r
  8765. So,If MM=11 we have next command (first byte = DBh)
  8766. Mnemonic Second byte of code
  8767. FNENI E0H (8087 only, others do nothing)
  8768. FNDISI E1H (8087 only, others do nothing)
  8769. FNCLEX E2H
  8770. FNINIT E3H
  8771. FSETPM E4H (287s only)
  8772. FRSTPM E5H (287XL/XLT only)
  8773. FSTB0 E8H (IIT)
  8774. FSTB2 EAH (IIT)
  8775. FSTB1 EBH (IIT)
  8776. F4X4 F1H (IIT)
  8777. FRINT2 FCH (Cyrix)
  8778. FUCOMI ST0,STi E8H+i (P6)
  8779. FCMOVNB ST0,STi C0H+i (P6)
  8780. FCMOVNE ST0,STi C8H+i (P6)
  8781. FCMOVNBE ST0,STi D0H+i (P6)
  8782. FCMOVNU ST0,STi D8H+i (P6)
  8783. FCOMPI ST0,STi F0H+i (P6)
  8784. ESC 4 (First byte = DCh)
  8785. ==========================
  8786. ESCAPE 100 MMRRRMMM
  8787. ==========================
  8788. Operation
  8789. RRR If MM<>11 If MM=11
  8790. 000 FADD mem64r FADD ST(i),ST
  8791. 001 FMUL mem64r FMUL ST(i),ST
  8792. 010 FCOM mem64r FCOM ST(i)
  8793. 011 FCOMP mem64r FCOMP ST(i)
  8794. 100 FSUB mem64r FSUB ST(i),ST
  8795. 101 FSUBR mem64r FSUBR ST(i),ST
  8796. 110 FDIV mem64r FDIV ST(i),ST
  8797. 111 FDIVR mem64r FDIVR ST(i),ST
  8798. ESC 5 (First byte = DDh)
  8799. ==========================
  8800. ESCAPE 101 MMRRRMMM
  8801. ==========================
  8802. Operation
  8803. RRR If MM<>11 If MM=11
  8804. 000 FLD mem64r FFREE ST(i)
  8805. 001 FXCH ST(i)
  8806. 010 FST mem64r FST ST(i)
  8807. 011 FSTP mem64r FSTP ST(i)
  8808. 100 FNRSTOR mem
  8809. 101
  8810. 110 FNSAVE mem FUCOM ST(i)
  8811. 111 FSTSW mem FUCOMP ST(i)
  8812. Note: FRICHOP have opcode (DDh FCh) (Cyrix)
  8813. ESC 6 (First byte = DEh)
  8814. ==========================
  8815. ESCAPE 110 MMRRRMMM
  8816. ==========================
  8817. Operation
  8818. RRR If MM<>11 If MM=11
  8819. 000 FIADD mem16i FADDP ST(i),ST
  8820. 001 FIMUL mem16i FMULP ST(i),ST
  8821. 010 FICOM mem16i FCOMP ST(i),ST
  8822. 011 FICOMP mem16i
  8823. 100 FISUB mem16i FSUBP ST(i),ST
  8824. 101 FISUBR mem16i FSUBRP ST(i),ST
  8825. 110 FIDIV mem16i FDIVP ST(i),ST
  8826. 111 FIDIVR mem16i FDIVRP ST(i),ST
  8827. Note: FCOMPP have opcode (DEh D9h) (Intel and all)
  8828. ESC 7 (First byte = DFh)
  8829. ==========================
  8830. ESCAPE 111 MMRRRMMM
  8831. ==========================
  8832. Operation
  8833. RRR If MM<>11 If MM=11
  8834. 000 FILD mem16i FFREE ST(i)
  8835. 001 FXCH ST(i)
  8836. 010 FIST mem16i FST ST(i)
  8837. 011 FISTP mem16i FSTP ST(i)
  8838. 100 FBLD mem80b
  8839. 101 FILD mem64i
  8840. 110 FBSTP mem80b
  8841. 111 FISTP mem64i
  8842. Note: Next Instruction have opcodes:
  8843. Mnemonic Opcode
  8844. FNSTSW AX DFh E0h (287+)
  8845. FNSTDW AX DFh E1h (387SL Mobile)
  8846. FSTSG AX DFh E2h (387SL Mobile)
  8847. FRINEAR DFh FCh (Cyrix)
  8848. FUCOMIP ST0,STi DFH E8H+i (P6)
  8849. FCOMIP ST0,STi DFH F0H+i (P6)
  8850. ------------------------------------------
  8851. APPENDIX G
  8852. BUGS & CPU IDENTIFICATION INFO
  8853. 1) How to separate i386SX and i386DX
  8854. (Cx486SLC and Cx486DLC)
  8855. Note: With 386DX type CPU possible to used
  8856. 287 class NPX, and bit 4 in CR0
  8857. ET - Extention Type on DX we may to
  8858. clear to 0, but for SX and REAL 486
  8859. this bit always 1.
  8860. Routine:
  8861. mov eax,cr0
  8862. push eax
  8863. and al,0efh
  8864. mov cr0,eax
  8865. mov eax,cr0
  8866. test al,10h
  8867. pop eax
  8868. mov cr0,eax
  8869. jne SX/SLC
  8870. jmp DX/DLC
  8871. 2) How to separate i486SX and i487SX/i486DX/DX2 etc
  8872. Routine:
  8873. memory_location DW ?
  8874. mov memory_location,0
  8875. fninit
  8876. fstcw memory_location
  8877. cmp memory_location,037Fh
  8878. jz i486SX
  8879. jmp i486DX/DX2etc/i487SX
  8880. 3) How to separate Cyrix's CPUs and other
  8881. Be sure that Your CPU no Pentium before
  8882. UMOV executed on Intel and other in
  8883. Non SM modes as MOV.
  8884. But Cyrix executed this instruction as
  8885. Double NOP, and never generate INT 6.
  8886. So.
  8887. Mem_Loc DW 1
  8888. xor ax,ax
  8889. umov ax,Mem_Loc
  8890. or ax,ax
  8891. jz Cyrix
  8892. jmp No_Cyrix
  8893. 4) Standart Way: Part 1
  8894. (Intel recomended this way)
  8895. pushf
  8896. pop ax
  8897. and ax,0fffh ; Clear bits 15..12
  8898. push ax
  8899. popf
  8900. pushf
  8901. pop ax
  8902. and ax,0f000h ; Is bits 15..12=0 ?
  8903. jz 286_CPU
  8904. and ax,8000h ; Is bit 15=0
  8905. jz 386_and_Higher
  8906. jmp 86_88and186_186etc
  8907. 5) How separate 86/88, 186/188 and NECs
  8908. mov ax,1
  8909. mov cl,33
  8910. shl ax,cl
  8911. jnz 186_188
  8912. pusha ; Executed on 8086/8088 as JMP $+2
  8913. stc
  8914. jc NECs
  8915. jmp 86_88
  8916. 6) Non CMOS 8086/88 execute command MOV CS,xxxx (Opcode 8Eh ...)
  8917. CMOS 80C86/88 ignore it.
  8918. 7) Then Invalid Opcode NEC/Sony V40/V50 do INT 6
  8919. NEC/Sony V20/V30 don't.
  8920. 8) Remember POP CS instruction on non-CMOS 8086/8088.
  8921. 9) PUSH SP
  8922. 286 placed in stack new value of SP
  8923. 86/88 old.
  8924. 10) Best way to Reset 286+ in Real Mode:
  8925. mov sp,1 (LOW BOUND)
  8926. push smth
  8927. note:
  8928. mov sp,ffffh (HIGH BOUND)
  8929. pop smth
  8930. caused non Stack Fault, but GPF.
  8931. 11) Maximal Length of Instructian
  8932. 86: N/R
  8933. 286: 10 byte
  8934. 386+: 15 byte
  8935. 12) UMC Chips Detection (UMC U486SX, for other use CPUID)
  8936. db 64h,0dbh ; look like "SETALC FS:", but it none
  8937. cmp eax,0ab6b1b07h
  8938. je u486SX
  8939. jne Other
  8940. 13) MSW on 386/486
  8941. On 386 MSR reserved bits = 1, so Real Mode 386 usually MSW = FFF0
  8942. Real Mode 486+ usually MSW = 0010
  8943. smsw ax
  8944. and ah,ah
  8945. jnz cpu_386
  8946. jz cpu_486_and_more
  8947. 14) Selectors PUSH
  8948. 486 write 2 bytes to stack and ADD ESP,4
  8949. Pentium Write all 4 bytes (and two of it are zero)
  8950. (The same situation, then pushing 16-bit error code on exception)
  8951. 15) TSS I/O Map Addressing
  8952. Then I/O Map Base Address in TSS contain for example FFFFh,
  8953. (don't forget TSS Limit)
  8954. i486 wrap around segment and access invalid address near start of TSS.
  8955. Pentium caused GPF.
  8956. 16) Prefetcher
  8957. up to 486 and 486 then instruction fetched to prefetcher and we write
  8958. into memory area, where this instruction placed, will be execute
  8959. already-prefetched command, but non-new.
  8960. Pentium flush prefetcher, when detect modify of fetched cache line,
  8961. so, for avoid this flush use different linear addresses for modify.
  8962. CPU Size_of_prefetch_queue Number_of_empty_bytes_in
  8963. (bytes) queue_needed_for_initiate
  8964. prefetch_cycle
  8965. 8086/186/V20 6 2
  8966. 8088/188/V30 4 1
  8967. 286 6 2
  8968. 386SX 16 2
  8969. 386DX 16 4
  8970. 17) DR4/DR5 :))
  8971. on 486 then accessing DR4/DR5 CPU accessed DR6/DR7.
  8972. on Pentium if CR4.DE=0 the same situation as on 486,
  8973. but if CR4.DE=1 then MOV from/to DR4/DR5 caused GPF.
  8974. 18) NexGen Nx586
  8975. On Pentium and 486 we cannot set ET flag in CR0.
  8976. We may set ET flag in CR0.
  8977. (On 386 we may set this flag too).
  8978. 19) IDIV
  8979. if result of IDIV will be 80h (byte IDIV) or 8000h (word IDIV)
  8980. 86/88 caused INT 0 - Division by zero,
  8981. on 286+ 80h/8000h keeps as result and no exception
  8982. 20) Division by zero
  8983. On 86/88 pointer in stack then caused Division by zero
  8984. pointed to DIV/IDIV instruction,
  8985. on 286+ pointed to next instruction.
  8986. 21) FPU Exception
  8987. So, then FPU command with prefixes caused exception
  8988. on 86/88 pointer to failed instruction on stack pointed to ESC command,
  8989. on 386+ pointed to one of prefixes before ESC.
  8990. 22) String commands
  8991. if while 86/88 execute string instruction interrupt caused,
  8992. CPU end execute instruction and goto next instruction,
  8993. CX,SI and DI have values after last complete iteration
  8994. To avoid it, use:
  8995. pushf
  8996. cli
  8997. rep STRING
  8998. popf
  8999. 23) How to separate C&T 386 CPU form other (AMD,Intel)
  9000. (C&T none have POPAD bug, but Intel and AMD have)
  9001. mov esi,32
  9002. mov eax,12345678h
  9003. loop:
  9004. mov ebx,eax
  9005. mov edx,0
  9006. mov esi,0
  9007. pushad
  9008. popad
  9009. mov ecx,[edx+edi]
  9010. cmp eax,ebx
  9011. jnz AMD_Intel
  9012. rol eax,1
  9013. dec esi
  9014. jnz loop
  9015. jmp C_T_CPUs
  9016. ------------------------------------------------
  9017. APPENDIX H
  9018. Internal Names Of Processors
  9019. (Intel)
  9020. P9 i386SX
  9021. P4 i486DX
  9022. P4S i486SX
  9023. P23S i487SX
  9024. P23T OverDrive for PGA(169)
  9025. P4T OverDrive for PGA(168)
  9026. P24S i486DX2
  9027. P24T Pentium OverDrive for i486DX2 socket 3 (Vcc=5V,core=3V).
  9028. P24CT Pentium OverDrive for Socket 3 (Vcc=3V)
  9029. P5 Pentium-60,66
  9030. P5T Overdrive for P5 socket (120/133 MHz).
  9031. P54C Pentium-90,100,75 x1.5 usually with APIC and Multiprocessing features
  9032. P54CS Pentium-120,133 x2 with reduced APIC and multipr. features
  9033. P55C Pentium w/MMX
  9034. P54LM Pentium P54C with 2.9V (for Notebooks)
  9035. P24C IntelDX4
  9036. P24D i486DX2 with WB cache (IntelDX2 (tm) WriteBack Enhanced)
  9037. P54M Overdrive ( include to P54C but P54C work too)
  9038. P6 Pentium Pro (no comments)
  9039. P6T Pentium Pro OverDrive (for extended Pentium Sockets)
  9040. P7 "Merced" (IA-64, VLIW command set "Tahoe")
  9041. P54CSQ 3xCLK Pentiums P120 etc.
  9042. P54CSLM P54CS with Low Power.
  9043. P6L Pentium II "Klamath" (w/o L2 build-in cache, with IA MMX)
  9044. "Katmai" (IA MMX2, 100MHz system bus)
  9045. "Deschutes" (High-tech "Klamath" for Mobile computers)
  9046. "Celeron" ("Klamath" w/o L2 cache)
  9047. P68 "Willamette" (High-tech "Pentium Pro")
  9048. "Xeon" (Slot 2, IA MMX2)
  9049. (Cyrix)
  9050. M5 Cx486S/S2
  9051. M6 Cx486D/D2
  9052. C6 Cx487D
  9053. M7 Cx486DX/Cx486DX2
  9054. M8 Cx486DX4
  9055. M1 Cx6x86
  9056. M1SC Cx5x86
  9057. M1R Cx6x86L (0.35 mkm, reduced due size)
  9058. M2 Cx6x86MX
  9059. M3
  9060. MediaGX
  9061. (AMD)
  9062. SSA/5 Am5k86 early series (K5 with big due size and with reduced some
  9063. features, 'cos don't work).
  9064. K5 Am5k86
  9065. K6 Am6k86 (IA MMX support)
  9066. -------------------------------------------------
  9067. APPENDIX I FORMAT OF DEBUG CONTROL REGISTERS (DR6/DR7)
  9068. +---------+
  9069. | DR6 |
  9070. +---------+
  9071. [Am386xx/i386xx/i486xx/Am486xx]
  9072. 3322222222221111 1 1 1 111
  9073. 1098765432109876 5 4 3 210987654 3 2 1 0
  9074. ----------------------------------------
  9075. 0000000000000000 B B B 000000000 B B B B
  9076. T S D 3 2 1 0
  9077. ----------------------------------------
  9078. [Intel Pentium]
  9079. 3322222222221111 1 1 1 111
  9080. 1098765432109876 5 4 3 210987654 3 2 1 0
  9081. ----------------------------------------
  9082. 1111111111111111 B B B 111111111 B B B B
  9083. T S D 3 2 1 0
  9084. ----------------------------------------
  9085. [Cyrix Cx486DX,TI 486SXLC, TI 486SLC/e]
  9086. 3322222222221111 1 1 1 111
  9087. 1098765432109876 5 4 3 210987654 3 2 1 0
  9088. ----------------------------------------
  9089. 1111111111111111 B B 0 011111111 B B B B
  9090. T S 3 2 1 0
  9091. ----------------------------------------
  9092. [TI 486SXL/Cx486SLC]
  9093. 3322222222221111 1 1 1 111
  9094. 1098765432109876 5 4 3 210987654 3 2 1 0
  9095. ----------------------------------------
  9096. 1111111111111111 B B 1 011111111 B B B B
  9097. T S 3 2 1 0
  9098. ----------------------------------------
  9099. [IBM 486SLC2]
  9100. 3322222222221111 1 1 1 1 11
  9101. 1098765432109876 5 4 3 2 10987654 3 2 1 0
  9102. -----------------------------------------
  9103. 0000000000000000 B B B B 00000000 B B B B
  9104. T S D K 3 2 1 0
  9105. ----------------------------------------
  9106. [AMD Am486SXLV/Am386DXLV/Am386SXLV]
  9107. 3322222222221111 1 1 1 1 11
  9108. 1098765432109876 5 4 3 2 10987654 3 2 1 0
  9109. -----------------------------------------
  9110. 0000000000000000 B B B S 00000000 B B B B
  9111. T S D M 3 2 1 0
  9112. M
  9113. S
  9114. ----------------------------------------
  9115. [Cyrix Cx6x86] [Cx6x86MX]
  9116. 3322222222221111 1 1 1 1 11
  9117. 1098765432109876 5 4 3 2 10987654 3 2 1 0
  9118. -----------------------------------------
  9119. 0000000000000000 B B 0 0 11111111 B B B B
  9120. T S 3 2 1 0
  9121. ----------------------------------------
  9122. BT - Debug Trap due to Task Switch
  9123. BS - Debug Trap due to Single-Step
  9124. BD - Debug Fault due to attemped registeracess when GD bit set
  9125. BK - Debug Trap due to ICE
  9126. This bit set if exception 1 will invoked due to occurence of
  9127. ICEMD interrupt or ICEBP software breakpoint.
  9128. SMMS - SMM Status
  9129. if = 1 SMM is entered
  9130. B3 - Debug fault/trap due to Breakpoint # 3
  9131. B2 - Debug fault/trap due to Breakpoint # 2
  9132. B1 - Debug fault/trap due to Breakpoint # 1
  9133. B0 - Debug fault/trap due to Breakpoint # 0
  9134. +--------+
  9135. | DR7 |
  9136. +--------+
  9137. [Am386xx/i386xx/i486xx/Am486xx]
  9138. [TI486SXL/Cx486SLC]
  9139. 33 22 22 22 22 22 11 11 11 1 111
  9140. 10 98 76 54 32 10 98 76 54 3 210 9 8 7 6 5 4 3 2 1 0
  9141. ----------------------------------------------------
  9142. LL RR LL RR LL RR LL RR 00 G 000 G L G L G L G L G L
  9143. EE // EE // EE // EE // D E E 3 3 2 2 1 1 0 0
  9144. NN WW NN WW NN WW NN WW
  9145. 33 33 22 22 11 11 00 00
  9146. ----------------------------------------------------
  9147. [Pentium/Cx486DX/Cx486DX2/Cx486DX4]
  9148. [TI486SLC/e / TI486SXLC/Cx6x86] [Cx6x86MX]
  9149. 33 22 22 22 22 22 11 11 11 1 111
  9150. 10 98 76 54 32 10 98 76 54 3 210 9 8 7 6 5 4 3 2 1 0
  9151. ----------------------------------------------------
  9152. LL RR LL RR LL RR LL RR 00 G 001 G L G L G L G L G L
  9153. EE // EE // EE // EE // D E E 3 3 2 2 1 1 0 0
  9154. NN WW NN WW NN WW NN WW
  9155. 33 33 22 22 11 11 00 00
  9156. ----------------------------------------------------
  9157. [IBM486SLC2]
  9158. 33 22 22 22 22 22 11 11 1 1 1 1 1 1
  9159. 10 98 76 54 32 10 98 76 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  9160. -------------------------------------------------------
  9161. LL RR LL RR LL RR LL RR T T G T G 0 G L G L G L G L G L
  9162. EE // EE // EE // EE // T B D P M E E 3 3 2 2 1 1 0 0
  9163. NN WW NN WW NN WW NN WW
  9164. 33 33 22 22 11 11 00 00
  9165. -------------------------------------------------------
  9166. [Am486SXLV/Am386DXLV/Am386SXLV]
  9167. 33 22 22 22 22 22 11 11 111 1 11
  9168. 10 98 76 54 32 10 98 76 543 2 10 9 8 7 6 5 4 3 2 1 0
  9169. -----------------------------------------------------
  9170. LL RR LL RR LL RR LL RR 000 S 00 G L G L G L G L G L
  9171. EE // EE // EE // EE // M E E 3 3 2 2 1 1 0 0
  9172. NN WW NN WW NN WW NN WW I
  9173. 33 33 22 22 11 11 00 00 E
  9174. ----------------------------------------------------
  9175. [Am486xx]
  9176. 33 22 22 22 22 22 11 11 111111
  9177. 10 98 76 54 32 10 98 76 543210 9 8 7 6 5 4 3 2 1 0
  9178. ----------------------------------------------------
  9179. LL RR LL RR LL RR LL RR 000000 G L G L G L G L G L
  9180. EE // EE // EE // EE // E E 3 3 2 2 1 1 0 0
  9181. NN WW NN WW NN WW NN WW
  9182. 33 33 22 22 11 11 00 00
  9183. ----------------------------------------------------
  9184. LENi - Length of Breakpoint
  9185. 00 - byte
  9186. 01 - word
  9187. 10 - undefined
  9188. 11 - dword
  9189. R/Wi - Reaw/Write Instructions Enable
  9190. 00 - Instruction Execute cause Debug Interrupt
  9191. 01 - Data Writes only
  9192. 10 - I/O Reads or Writes
  9193. 11 - Data Reads or Writes
  9194. GD - Global Debug Register Access Protect
  9195. INT 1 will be caused if any instructions will be read/write
  9196. DRs. This bit cleared when invoking Debug Exception.
  9197. GE - Global Exact
  9198. Any data breakpoint traps will be reported exactly after
  9199. competition of the instruction that caused the operand
  9200. transfer.
  9201. LE - Local Exact (Cleared on Task Switches)
  9202. Note: 486+ always does exact data breakpoint matches,
  9203. regardless of GE/LE bits. But 386 not.
  9204. G3 - Global Enable Breakpoint # 3
  9205. L3 - Local Enable Breakpoint # 3 (Cleared on Task Switches)
  9206. G2 - Global Enable Breakpoint # 2
  9207. L2 - Local Enable Breakpoint # 2 (Cleared on Task Switches)
  9208. G1 - Global Enable Breakpoint # 1
  9209. L1 - Local Enable Breakpoint # 1 (Cleared on Task Switches)
  9210. G0 - Global Enable Breakpoint # 0
  9211. L0 - Local Enable Breakpoint # 0 (Cleared on Task Switches)
  9212. TT - Enable Task Trace Messages (to External ICE hardware)
  9213. TB - Enable Branch Trace Messages (to External ICE hardware)
  9214. TP - Exception 1 Handler Entry Convention
  9215. if TP=0 exception 1 will interrupt 1 in user address space
  9216. if TP=1 exception 1 will enter ICE mode
  9217. GM - Enable Global Mapping
  9218. if =1 Enable Mapping user memory addresses into ICE space.
  9219. (Paging Must be disabled)
  9220. SMIE - Software SMI Enable
  9221. if = 1 enable
  9222. Note:
  9223. DR7: Undocument features on Intel's CPUs.
  9224. see IBM 486SLC2. All this bits in DR7 exist on Intel CPUs,
  9225. but where thay are undocument. (bits 15,14,12).
  9226. -------------------------------------------------
  9227. APPENDIX I FORMAT OF DEBUG DATA REGISTERS (except DR0-DR5)
  9228. +---------+ +---------+
  9229. | DR4 | | DR5 |
  9230. +---------+ +---------+
  9231. DR4 and DR5 physically not exist, but then You accessing it using
  9232. MOV from/to DR, thay are aliasing to DR6,DR7.
  9233. +---------+
  9234. | DR3 |
  9235. +---------+
  9236. [386+]
  9237. 3322222222221111111111
  9238. 10987654321098765432109876543210
  9239. --------------------------------
  9240. BREAKPOINT_3_LINEAR_ADDRESS
  9241. --------------------------------
  9242. +---------+
  9243. | DR2 |
  9244. +---------+
  9245. [386+]
  9246. 3322222222221111111111
  9247. 10987654321098765432109876543210
  9248. --------------------------------
  9249. BREAKPOINT_2_LINEAR_ADDRESS
  9250. --------------------------------
  9251. +---------+
  9252. | DR1 |
  9253. +---------+
  9254. [386+]
  9255. 3322222222221111111111
  9256. 10987654321098765432109876543210
  9257. --------------------------------
  9258. BREAKPOINT_1_LINEAR_ADDRESS
  9259. --------------------------------
  9260. +---------+
  9261. | DR0 |
  9262. +---------+
  9263. [386+]
  9264. 3322222222221111111111
  9265. 10987654321098765432109876543210
  9266. --------------------------------
  9267. BREAKPOINT_0_LINEAR_ADDRESS
  9268. --------------------------------
  9269. -------------------------------------------------
  9270. APPENDIX K FORMAT OF CACHE TEST REGISTER (TR4/TR5/TR3)
  9271. +-------+
  9272. | TR4 |
  9273. +-------+
  9274. [i486xx/Cx486xx]
  9275. 332222222222111111111 1
  9276. 109876543210987654321 0 987 6543 210
  9277. -------------------------------------
  9278. TTTTTTTTTTTTTTTTTTTTT V LLL VVVV %%%
  9279. AAAAAAAAAAAAAAAAAAAAA RRR AAAA
  9280. GGGGGGGGGGGGGGGGGGGGG UUU LLLL
  9281. IIII
  9282. DDDD
  9283. --------------------------------------
  9284. [Cx486SXL/e]
  9285. 3322222222221111111111
  9286. 10987654321098765432109 8 7 6543 210
  9287. -------------------------------------
  9288. TTTTTTTTTTTTTTTTTTTTTTT % L VVVV 000
  9289. AAAAAAAAAAAAAAAAAAAAAAA R AAAA
  9290. GGGGGGGGGGGGGGGGGGGGGGG U LLLL
  9291. IIII
  9292. DDDD
  9293. -------------------------------------
  9294. [WB-Enhanced IntelDX2 WB-mode]
  9295. 332222222222111111111 1
  9296. 109876543210987654321 0 987 65432 1 0
  9297. --------------------------------------
  9298. TTTTTTTTTTTTTTTTTTTTT % LLL %%%%% V V
  9299. AAAAAAAAAAAAAAAAAAAAA RRR H L
  9300. GGGGGGGGGGGGGGGGGGGGG UUU
  9301. --------------------------------------
  9302. [IntelDX4]
  9303. 33222222222211111111 1 1
  9304. 10987654321098765432 1 0 987 6543 210
  9305. --------------------------------------
  9306. TTTTTTTTTTTTTTTTTTTT % V LLL VVVV %%%
  9307. AAAAAAAAAAAAAAAAAAAA RRR AAAA
  9308. GGGGGGGGGGGGGGGGGGGG UUU LLLL
  9309. IIII
  9310. DDDD
  9311. --------------------------------------
  9312. [WB-Enhanced IntelDX4 WB-mode]
  9313. 33222222222211111111 11
  9314. 10987654321098765432 10 987 65432 10
  9315. --------------------------------------
  9316. TTTTTTTTTTTTTTTTTTTT %% LLL %%%%% V V
  9317. AAAAAAAAAAAAAAAAAAAA RRR H L
  9318. GGGGGGGGGGGGGGGGGGGG UUU
  9319. --------------------------------------
  9320. [TI486SXL]
  9321. 3322222222221111111 111
  9322. 1098765432109876543 21098 7 6543 2 10
  9323. --------------------------------------
  9324. TTTTTTTTTTTTTTTTTTT %%%%% L VVVV V 00
  9325. AAAAAAAAAAAAAAAAAAA R AAAA A
  9326. GGGGGGGGGGGGGGGGGGG U LLLL L
  9327. IIII I
  9328. DDDD D
  9329. B
  9330. --------------------------------------
  9331. [AMD Enhanced 486 CPU with EXT=0]
  9332. 33222222222211111111 1 1
  9333. 10987654321098765432 1 0 987 6543 210
  9334. --------------------------------------
  9335. TTTTTTTTTTTTTTTTTTTT 0 V LLL VVVV %%%
  9336. AAAAAAAAAAAAAAAAAAAA RRR AAAA
  9337. GGGGGGGGGGGGGGGGGGGG UUU LLLL
  9338. IIII
  9339. DDDD
  9340. --------------------------------------
  9341. [AMD Enhanced 486 CPU with EXT=1]
  9342. 3 32 2 22 22 22 22 111111111 1
  9343. 1 09 8 76 54 32 10 987654321 0 987 6543 210
  9344. --------------------------------------------
  9345. % SS % SS SS SS SS %%%%%%%%% V LLL VVVV %%%
  9346. TT TT TT TT TT RRR AAAA
  9347. nn 33 22 11 00 UUU LLLL
  9348. IIII
  9349. DDDD
  9350. --------------------------------------------
  9351. [Cyrix Cx6x86]
  9352. 33222222222211111111 11
  9353. 10987654321098765432 1098 76 54 3210
  9354. --------------------------------------
  9355. TTTTTTTTTTTTTTTTTTTT %%%% MM MM MMMM
  9356. AAAAAAAAAAAAAAAAAAAA EE EE RRRR
  9357. GGGGGGGGGGGGGGGGGGGG SS SS UUUU
  9358. II II
  9359. UU LL
  9360. --------------------------------------
  9361. [Cyrix Cx6x86MX]
  9362. 3322222222221111111111
  9363. 109876543210987654321098765432 10
  9364. ---------------------------------
  9365. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  9366. DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
  9367. DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
  9368. RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
  9369. ---------------------------------
  9370. VALUD - dwords (or other size units) of Cache Line which Valid
  9371. LRU - LRU
  9372. V - is cache line entry valid
  9373. TAG - Tag of cache line
  9374. VL,VH - Define MESI state of line
  9375. VH VL State
  9376. 1 1 M
  9377. 0 1 E
  9378. 1 0 S
  9379. 0 0 I
  9380. VALIDB - Valid of Cache Line
  9381. STn - State of Cache Line (MESI)
  9382. ST3 - State of 3rd dword of cache line (MESI)
  9383. ST2 - State of 2nd dword of cache line (MESI)
  9384. ST1 - State of 1st dword of cache line (MESI)
  9385. ST0 - State of 0 dword of cache line (MESI)
  9386. 00 - Invalid
  9387. 01 - Exclusive
  9388. 10 - Modified
  9389. 11 - Shared
  9390. MESIU - Upper Sector of Cache Line MESI state
  9391. 00 - Modified
  9392. 01 - Shared
  9393. 10 - Exclusive
  9394. 11 - Invalid
  9395. MESIL - Lower Sector of Cache Line MESI state
  9396. 00 - Modified
  9397. 01 - Shared
  9398. 10 - Exclusive
  9399. 11 - Invalid
  9400. MRU - Used for Determinate LRU line
  9401. ADDR - Physical Address of Cache Line
  9402. +--------+
  9403. | TR5 |
  9404. +--------+
  9405. [i486xx/Am486xx/Cx486xx]
  9406. 332222222222111111111 1
  9407. 109876543210987654321 0987654 32 10
  9408. -------------------------------------
  9409. %%%%%%%%%%%%%%%%%%%%% SSSSSSS EE CC
  9410. EEEEEEE NN TT
  9411. TTTTTTT TT LL
  9412. --------------------------------------
  9413. [TI486SXL/e]
  9414. 33222222222211111111 11
  9415. 10987654321098765432 10987654 3 2 10
  9416. --------------------------------------
  9417. %%%%%%%%%%%%%%%%%%%% SSSSSSSS % E CC
  9418. EEEEEEEE N TT
  9419. TTTTTTTT T LL
  9420. --------------------------------------
  9421. [WB-Enhanced IndelDX2 WB-mode]
  9422. 332222222222111111 1 11 1
  9423. 109876543210987654 3 21 0987654 32 10
  9424. ---------------------------------------
  9425. %%%%%%%%%%%%%%%%%% S %% SSSSSSS EE CC
  9426. L EEEEEEE NN TT
  9427. F TTTTTTT TT LL
  9428. --------------------------------------
  9429. [IntelDX4]
  9430. 33222222222211111111 11
  9431. 10987654321098765432 10987654 32 10
  9432. -------------------------------------
  9433. %%%%%%%%%%%%%%%%%%%% SSSSSSSS EE CC
  9434. EEEEEEEE NN TT
  9435. TTTTTTTT TT LL
  9436. --------------------------------------
  9437. [WB-Enhanced IntelDX4 WB-mode]
  9438. 332222222222111111 1 1 11
  9439. 109876543210987654 3 2 10987654 32 10
  9440. -------------------------------------
  9441. %%%%%%%%%%%%%%%%%% S % SSSSSSSS EE CC
  9442. L EEEEEEEE NN TT
  9443. F TTTTTTTT TT LL
  9444. -------------------------------------
  9445. [TI486SXL]
  9446. 3322222222221111111 1 11
  9447. 1098765432109876543 2 10987654 32 10
  9448. -------------------------------------
  9449. %%%%%%%%%%%%%%%%%%% W SSSSSSSS EE CC
  9450. A EEEEEEEE NN TT
  9451. Y TTTTTTTT TT LL
  9452. -------------------------------------
  9453. [AMD Enhanced 486 in WT-mode]
  9454. 3322222222221111111 1 11
  9455. 1098765432109876543 2 10987654 32 10
  9456. -------------------------------------
  9457. %%%%%%%%%%%%%%%%%%% ( SSSSSSSS EE CC
  9458. S EEEEEEEE NN TT
  9459. E TTTTTTTT TT LL
  9460. T
  9461. )
  9462. -------------------------------------
  9463. [AMD Enhanced 486 in WB-mode]
  9464. 332222222222 1 11 1111 1 11
  9465. 109876543210 9 87 6543 2 10987654 32 10
  9466. -------------------------------------
  9467. %%%%%%%%%%%% E SS %%%% ( SSSSSSSS EE CC
  9468. X TT S EEEEEEEE NN TT
  9469. T E TTTTTTTT TT LL
  9470. T
  9471. )
  9472. -------------------------------------
  9473. [Cx6x86]
  9474. 332222222222111111 11 11
  9475. 109876543210987654 32 1098765 432 10
  9476. -------------------------------------
  9477. %%%%%%%%%%%%%%%%%% WW SSSSSSS EEE CC
  9478. AA EEEEEEE NNN TT
  9479. YY TTTTTTT TTT LL
  9480. -------------------------------------
  9481. [Cx6x86MX]
  9482. 33222222 2 222 1 111 1111 11
  9483. 10987654 3 210 9 876 5432 1098 76 54 32 10
  9484. ------------------------------------------
  9485. %%%%%%%% S %%% V MMM %%%% MMMM %% SS %% CC
  9486. M EEE RRRR EE TT
  9487. I SSS UUUU TT LL
  9488. III
  9489. ------------------------------------------
  9490. CTL - Control (Select operation)
  9491. 00 - Enable (Fill Buffer Write/Read Buffer Read)
  9492. 01 - Perform Cache Line Write
  9493. 10 - Perform Cache Line Read
  9494. 11 - Perform Cache Line Flush
  9495. ENT - Select Entry for Operation
  9496. SET - Select Set for Operation
  9497. SLF -
  9498. WAY - Select Way for Operation
  9499. ST - State of set will be writing during write operation
  9500. 00 - Invalid
  9501. 01 - Exclusive
  9502. 10 - Modified
  9503. 11 - Shared
  9504. EXT - Extension
  9505. if EXT=0 bits 31..11 of TR4 contain TAG
  9506. if EXT=1 bits 31..11 of TR4 contain STi
  9507. SMI - SMI Address bit. Select separate/cachable SMI code/data space.
  9508. V,MESI - Select Valid & MESI
  9509. V MESI Description
  9510. 1 000 Modified
  9511. 1 001 Shared
  9512. 1 010 Exclusive
  9513. 0 011 Invalid
  9514. 1 100 Locked Valid
  9515. 0 111 Locked Invalid
  9516. else Undefined
  9517. MRU - Used for determinate LRU.
  9518. +-------+
  9519. | TR3 |
  9520. +-------+
  9521. [any,which support Cache Testing (all 486+)]
  9522. 3322222222221111111111
  9523. 10987654321098765432109876543210
  9524. --------------------------------
  9525. ___________CACHE_DATA___________
  9526. --------------------------------
  9527. CACHE_DATA - Data which will be reading/writing to/from cache line part.
  9528. -------------------------------------------------
  9529. APPENDIX L FORMAT OF BTB TEST REGISTER (TR1/TR2)
  9530. Note: This kind of registers present only on Cx6x86 and may be
  9531. on Cx6x86MX.
  9532. +-------+
  9533. | TR1 |
  9534. +-------+
  9535. [Cx6x86]
  9536. 3322222222221111111111
  9537. 10987654321098765432109876 543 210
  9538. ----------------------------------
  9539. ?????????????????????????? III ???
  9540. DDD
  9541. XXX
  9542. ----------------------------------
  9543. IDX - Index of Register in BTB control space, which may be accessed via TR2.
  9544. +-------+
  9545. | TR2 |
  9546. +-------+
  9547. [Cx6x86]
  9548. 3322222222221111111111
  9549. 10987654321098765432109876543210
  9550. --------------------------------
  9551. _____________DATA_______________
  9552. --------------------------------
  9553. DATA - data which will be reading/writing from/to BTB control space registers.
  9554. Note: Refer to Appendix A5 for more details.
  9555. -------------------------------------------------
  9556. APPENDIX K FORMAT OF TLB TEST REGISTER (TR6/TR7)
  9557. Note: Pentium and Higher Intel CPUs not support Test registers (TRs) at all.
  9558. +-------+
  9559. | TR6 |
  9560. +-------+
  9561. [i386xx] [i486xx] [TI486SXL]
  9562. 33222222222211111111 1 1
  9563. 10987654321098765432 1 0 9 8 7 6 5 4321 0
  9564. -----------------------------------------
  9565. LLLLLLLLLLLLLLLLLLLL V D D U U W W %%%% O
  9566. AAAAAAAAAAAAAAAAAAAA # # # P
  9567. DDDDDDDDDDDDDDDDDDDD
  9568. DDDDDDDDDDDDDDDDDDDD
  9569. RRRRRRRRRRRRRRRRRRRR
  9570. -----------------------------------------
  9571. [Cx6x86]
  9572. 33222222222211111111 1 1
  9573. 10987654321098765432 1 0 9 8 7 6 5 4 3 210
  9574. ------------------------------------------
  9575. LLLLLLLLLLLLLLLLLLLL V D D U U W W A A CCC
  9576. AAAAAAAAAAAAAAAAAAAA # # # # MMM
  9577. DDDDDDDDDDDDDDDDDDDD DDD
  9578. DDDDDDDDDDDDDDDDDDDD
  9579. RRRRRRRRRRRRRRRRRRRR
  9580. ------------------------------------------
  9581. [Cx6x86MX]
  9582. 33222222222211111111 1 1
  9583. 10987654321098765432 1 0 9 8 7 6 5 4 3 210
  9584. ------------------------------------------
  9585. LLLLLLLLLLLLLLLLLLLL V D P U 0 W 0 A 0 CCC
  9586. AAAAAAAAAAAAAAAAAAAA G MMM
  9587. DDDDDDDDDDDDDDDDDDDD DDD
  9588. DDDDDDDDDDDDDDDDDDDD 222
  9589. RRRRRRRRRRRRRRRRRRRR
  9590. ------------------------------------------
  9591. LADDR - Linear Address
  9592. V - Valid bit for TLB entry
  9593. D,D# - The Dirty Bit for/from TLB entry (Normal and Reverse)
  9594. U,U# - The User/Supervisor bit for/from TLB Entry (Normal and Reverse)
  9595. W,W# - The Read/Write bit for/from TLB entry (Normal and Reverse)
  9596. OP - Operation
  9597. 0 - TLB Write
  9598. 1 - TLB LookUp
  9599. A,A# - The Accessed Bit (Normal and Reverse)
  9600. CMD - Array Command Select
  9601. 000 - Direct Write to main TLB
  9602. 001 - TLB lookup for an linear address in all arrays
  9603. 100 - Write to variable page size mask only
  9604. 110 - Write to variable page size, linear and physical addreses
  9605. 101 - Read variable page size and linear address.
  9606. 111 - Read variable page size cache physical and linear address
  9607. PG - Page Global bit
  9608. CMD2 - Array Command Select
  9609. Value Description
  9610. x00 - Write to L1 TLB
  9611. x01 - Write to L2 TLB
  9612. 010 - Read from L1 TLB X-port
  9613. 011 - Read from L2 TLB X-port
  9614. 110 - Read from L1 TLB Y-port
  9615. 111 - Read from L2 TLB Y-port
  9616. +-------+
  9617. | TR7 |
  9618. +-------+
  9619. [i386xx]
  9620. 33222222222211111111 11
  9621. 10987654321098765432 1098765 4 32 10
  9622. -------------------------------------
  9623. PPPPPPPPPPPPPPPPPPPP %%%%%%% H RR %%
  9624. HHHHHHHHHHHHHHHHHHHH T EE
  9625. YYYYYYYYYYYYYYYYYYYY PP
  9626. SSSSSSSSSSSSSSSSSSSS
  9627. -------------------------------------
  9628. [i486xx] [TI486SXL]
  9629. 33222222222211111111 1 1
  9630. 10987654321098765432 1 0 987 65 4 32 10
  9631. ---------------------------------------
  9632. PPPPPPPPPPPPPPPPPPPP P P LLL %% R RR %%
  9633. HHHHHHHHHHHHHHHHHHHH C W RRR P PP
  9634. YYYYYYYYYYYYYYYYYYYY D T UUU S //
  9635. SSSSSSSSSSSSSSSSSSSS / HH
  9636. H LL
  9637. I
  9638. ---------------------------------------
  9639. [Cx6x86]
  9640. 33222222222211111111 1 1
  9641. 10987654321098765432 1 0 987 6 5 4 3 210
  9642. ----------------------------------------
  9643. PPPPPPPPPPPPPPPPPPPP P P BBB % H H H %%%
  9644. HHHHHHHHHHHHHHHHHHHH C W III V D B
  9645. YYYYYYYYYYYYYYYYYYYY D T
  9646. SSSSSSSSSSSSSSSSSSSS
  9647. ----------------------------------------
  9648. [Cx6x86MX]
  9649. 33222222222211111111 1 1
  9650. 10987654321098765432 1 0 987 6 5 4 3 210
  9651. ----------------------------------------
  9652. PPPPPPPPPPPPPPPPPPPP P P SSS % H H % HHH
  9653. HHHHHHHHHHHHHHHHHHHH C W EEE 1 2 SSS
  9654. YYYYYYYYYYYYYYYYYYYY D T TTT EEE
  9655. SSSSSSSSSSSSSSSSSSSS TTT
  9656. ----------------------------------------
  9657. PHYS - Physiacl Address
  9658. HT - TLB Lookup Hit
  9659. REP - Replacement Pointer
  9660. PCD - Page Cache Disable
  9661. PWT - Page Write Throught
  9662. LRU - LRU
  9663. RPS/HI - Replacement Pointer Select (writes)/Hit Indication (LookUp)
  9664. RP/HL - Replacement Pointer (writes)/Hit Location (LookUp)
  9665. BI - Cell Index for victim TLB and block cache operation.
  9666. HV - Victim TLB Hit
  9667. HD - Main TLB Hit
  9668. HB - Variable-size Paging Mechanism Hit
  9669. SET - L2 TLB Set Selection (0..5h)
  9670. H1 - Hit in L1 TLB
  9671. H2 - Hit in L2 TLB
  9672. HSET - L2 set selection when L2 TLB hit occures (0h..5h)
  9673. ----------------------------------------------------
  9674. APPENDIX N EFLAGS register format
  9675. +---------+
  9676. | EFLAGS |
  9677. +---------+
  9678. [Pentium P5] [Pentium P54C] [IntelDX4] [Am5k86]
  9679. [Pentium Pro] [Pentium II] [Am6k86] [Pentium w/MMX (P55C)]
  9680. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  9681. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  9682. -----------------------------------------------------
  9683. I V V A V R N IO O D I T S Z A P C
  9684. 0000000000 D I I C M F 0 T PL F F F F F F 0 F 0 F 1 F
  9685. P F
  9686. -----------------------------------------------------
  9687. [i486 SL Enhanced SX,DX,DX2] [IntelSX2] [Cx5x86]
  9688. [UMC] [Cx6x86] [Cx6x86MX]
  9689. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  9690. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  9691. -----------------------------------------------------
  9692. I A V R N IO O D I T S Z A P C
  9693. 0000000000 D 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
  9694. -----------------------------------------------------
  9695. [i486 SX,DX,DX2] [OverDrive] [M5,M6,M7] [AMD Am486DX/DXL/DX2/DXL2 ] etc
  9696. [IBM BL486DX/DX2] [Cx486SLC/DLC/SLC2/DLC2] [NexGen Nx586]
  9697. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  9698. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  9699. -----------------------------------------------------
  9700. A V R N IO O D I T S Z A P C
  9701. 0000000000 0 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
  9702. -----------------------------------------------------
  9703. [i386 SX,DX,CX,EX] [AMD Am386 ] [C&T 38600 ] etc
  9704. [IBM 486SLC2]
  9705. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  9706. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  9707. -----------------------------------------------------
  9708. V R N IO O D I T S Z A P C
  9709. 0000000000 0 0 0 0 M F 0 T PL F F F F F F 0 F 0 F 1 F
  9710. -----------------------------------------------------
  9711. [i376]
  9712. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  9713. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  9714. -----------------------------------------------------
  9715. R N IO O D I T S Z A P C
  9716. 0000000000 0 0 0 0 0 F 0 T PL F F F F F F 0 F 0 F 1 F
  9717. -----------------------------------------------------
  9718. [i286 and all clones]
  9719. 1 1 11 1 1
  9720. 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  9721. ------------------------------
  9722. N IO O D I T S Z A P C
  9723. 0 T PL F F F F F F 0 F 0 F 1 F
  9724. ------------------------------
  9725. [NEC/Sony V20/V30]
  9726. 1 1 1 1 1 1
  9727. 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  9728. -------------------------------
  9729. M O D I T S Z A P C
  9730. D 1 1 1 F F F F F F 0 F 0 F 1 F
  9731. -------------------------------
  9732. [80x186 ,EA,EB,EC,XL] [8086/88 and all clones]
  9733. 1 1 1 1 1 1
  9734. 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  9735. -------------------------------
  9736. O D I T S Z A P C
  9737. 1 1 1 1 F F F F F F 0 F 0 F 1 F
  9738. -------------------------------
  9739. Flags Summary:
  9740. ID - Identification Flag
  9741. VIP - Virtual Interrupt Pending
  9742. VIF - Virtual Interrupt Flag
  9743. AC - Align Check
  9744. VM - Virtual 8086 Mode
  9745. RF - Resume Flag
  9746. MD - Mode Flag
  9747. NT - Nested Task flag
  9748. IOPL - Input/Output Privelege Level
  9749. OF - Overflow Flag
  9750. DF - Direction Flag
  9751. IF - Interrupt Flag
  9752. TF - Trap Flag
  9753. SF - Sign Flag
  9754. ZF - Zero Flag
  9755. AF - Auxiliary Carry Flag
  9756. PF - Parity Flag
  9757. CF - Carry Flag
  9758. ---------------------------------------------------
  9759. APPENDIX O OLD CONTROL REGISTERS FORMAT (CR0-CR3)
  9760. +---------+
  9761. | CR0 |
  9762. +---------+
  9763. [Pentium P5] [Pentium P54C] [Pentium Pro]
  9764. [Pentium II] [Pentium w/MMX]
  9765. [Cx6x86MX] [Am6k86] [Am5k86]
  9766. 3 3 2 2222222221 1 1 1 111111
  9767. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  9768. ---------------------------------------------
  9769. P C N A W N T E M P
  9770. G D W 0000000000 M 0 P 0000000000 E 1 S M P E
  9771. ---------------------------------------------
  9772. [IntelDX4] [486DX/DX2, IntelDX4 ]
  9773. 3 3 2 2222222221 1 1 1 111111
  9774. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  9775. ---------------------------------------------
  9776. P C N A W T M P
  9777. G D W 0000000000 M 0 P 0000000000 * 1 S 1 P E
  9778. ---------------------------------------------
  9779. [Cx486SLC]
  9780. 3 3 2 2222222221 1 1 1 111111
  9781. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  9782. ---------------------------------------------
  9783. P C A W T E M P
  9784. G D 0 0000000000 M 0 P 0000000000 0 1 S M P E
  9785. ---------------------------------------------
  9786. [Cx486DLC]
  9787. 3 3 2 2222222221 1 1 1 111111
  9788. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  9789. ---------------------------------------------
  9790. P C N A W E T E M P
  9791. G D W 0000000000 M 0 P 0000000000 0 T S M P E
  9792. ---------------------------------------------
  9793. [Intel i486SX,SX2]
  9794. 3 3 2 2222222221 1 1 1 111111
  9795. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  9796. ---------------------------------------------
  9797. P C N A W T E M P
  9798. G D W 0000000000 M 0 P 0000000000 * 1 S M P E
  9799. ---------------------------------------------
  9800. [IBM 486SLC2]
  9801. 3 32222222222111 1 111111
  9802. 1 09876543210987 6 54321098765 4 3 2 1 0
  9803. ---------------------------------------------
  9804. P W T E M P
  9805. G 00000000000000 P 0000000000 1 S M P E
  9806. ---------------------------------------------
  9807. [Intel i386SX]
  9808. 3 322222222221111111111
  9809. 1 09876543210987654321098765 4 3 2 1 0
  9810. ---------------------------------------------
  9811. P T E M P
  9812. G 0000000000000000000000000 1 S M P E
  9813. ---------------------------------------------
  9814. [Intel i386DX]
  9815. 3 322222222221111111111
  9816. 1 09876543210987654321098765 4 3 2 1 0
  9817. ---------------------------------------------
  9818. P E T E M P
  9819. G 0000000000000000000000000 T S M P E
  9820. ---------------------------------------------
  9821. [80286]
  9822. Note: None CR0, but MSW
  9823. 111111
  9824. 543210987654 3 2 1 0
  9825. ---------------------
  9826. T E M P
  9827. 000000000000 S M P E
  9828. ---------------------
  9829. PE - Protection Enable
  9830. MP - Monitor Processor
  9831. EM - Emulation
  9832. TS - Task Switch
  9833. ET - Extention Type
  9834. NE - Numeric Exception
  9835. WP - Write protect
  9836. AM - Align Mode
  9837. NW - No Write Throught
  9838. CD - Cache Disable
  9839. PG - Paging
  9840. +--------+
  9841. | CR1 |
  9842. +--------+
  9843. CR1 register not exist on x86 architecture. Usually aliased CR0.
  9844. +--------+
  9845. | CR2 |
  9846. +--------+
  9847. [386+]
  9848. 3 322222222221111111111
  9849. 1 0987654321098765432109876543210
  9850. ---------------------------------
  9851. LAST_PAGE_FAULT_LINEAR_ADDRESS
  9852. ---------------------------------
  9853. +--------+
  9854. | CR3 |
  9855. +--------+
  9856. [Intel i386xx] [Cyrix Cx486SLC]
  9857. 33222222222211111111 11
  9858. 10987654321098765432 109876543210
  9859. ---------------------------------
  9860. PPPPPPPPPPPPPPPPPPPP %%%%%%%%%%%%
  9861. DDDDDDDDDDDDDDDDDDDD
  9862. BBBBBBBBBBBBBBBBBBBB
  9863. RRRRRRRRRRRRRRRRRRRR
  9864. ---------------------------------
  9865. [Intel i486xx] [Cx6x86] [Cx6x86MX]
  9866. [Pentium] [Pentium Pro] [Pentium II]
  9867. [Pentium w/MMX]
  9868. 33222222222211111111 11
  9869. 10987654321098765432 1098765 4 3 210
  9870. ------------------------------------
  9871. PPPPPPPPPPPPPPPPPPPP %%%%%%% P P %%%
  9872. DDDDDDDDDDDDDDDDDDDD C W
  9873. BBBBBBBBBBBBBBBBBBBB D T
  9874. RRRRRRRRRRRRRRRRRRRR
  9875. ------------------------------------
  9876. see APPENDIX
  9877. PDBR - Page Directory Base Register
  9878. PCD - Page Cache Disable
  9879. PWT - Page Write Whrought
  9880. ---------------------------------------------------
  9881. APPENDIX P CR4 register format
  9882. +-------+
  9883. | CR4 |
  9884. +-------+
  9885. [Katmai] [Deschutes]
  9886. 3322222222221111111111
  9887. 1098765432109876543210 9 8 7 6 5 4 3 2 1 0
  9888. ------------------------------------------
  9889. F P P M P P D T P V
  9890. 0000000000000000000000 S C G C A S E S V M
  9891. R E E E E E D I E
  9892. ------------------------------------------
  9893. [Pentium Pro] [Pentium II]
  9894. 3322222222221111111111
  9895. 10987654321098765432109 8 7 6 5 4 3 2 1 0
  9896. -----------------------------------------
  9897. P P M P P D T P V
  9898. 00000000000000000000000 C G C A S E S V M
  9899. E E E E E D I E
  9900. -----------------------------------------
  9901. [IDT C6]
  9902. 3322222222221111111111
  9903. 10987654321098765432109 8 7 6 54 3 2 10
  9904. ---------------------------------------
  9905. P M D T
  9906. 00000000000000000000000 C 0 C 00 E S 00
  9907. E E D
  9908. ---------------------------------------
  9909. [Cx6x86MX]
  9910. 3322222222221111111111
  9911. 10987654321098765432109 8 7 654 3 2 10
  9912. ---------------------------------------
  9913. P P D T
  9914. 00000000000000000000000 C G 000 E S 00
  9915. E E D
  9916. ---------------------------------------
  9917. [AMD Am5k86] [AMD Am6k86]
  9918. 3322222222221111111111
  9919. 109876543210987654321098 7 6 5 4 3 2 1 0
  9920. ----------------------------------------
  9921. P M P D T P V
  9922. 000000000000000000000000 G C 0 S E S V M
  9923. E E E D I E
  9924. ----------------------------------------
  9925. [Pentium P5] [Pentium P54C]
  9926. 3322222222221111111111
  9927. 1098765432109876543210987 6 5 4 3 2 1 0
  9928. ---------------------------------------
  9929. M P D T P V
  9930. 0000000000000000000000000 C 0 S E S V M
  9931. E E D I E
  9932. ----------------------------------------
  9933. [IntelDX4] [486s SL Enhanced]
  9934. 3322222222221111111111
  9935. 109876543210987654321098765432 1 0
  9936. ----------------------------------
  9937. P V
  9938. 000000000000000000000000000000 V M
  9939. I E
  9940. ----------------------------------
  9941. FSR - Fast F.P. Context save/restore Enabled
  9942. PCE - Perfomance Monitoring Counters Enabled
  9943. PGE - Page Global Extension
  9944. MCE - Machine Check Enable
  9945. PAE - Physical Address Extention
  9946. PSE - Page Size Extention
  9947. DE - Debbuging Expection
  9948. TSD - Time Stamp Disable
  9949. PVI - Protected mode Virtual Interrupt
  9950. VME - Virtual Mode Exception
  9951. ------------------------------------------------------
  9952. APPENDIX Q TYPE OF INTEL'S SOCKETS
  9953. Socket # Pins Vcc CPU OverDrive
  9954. ----------------------------------------------
  9955. 1 169 5 i486SX IntelSX2 ODP
  9956. i486DX IntelDX2 ODP
  9957. ----------------------------------------------
  9958. 2 238 5 i486SX IntelSX2 ODP
  9959. i486DX IntelDX2 ODP
  9960. i486DX2 IntelDX4 ODP
  9961. Pentium ODP (P24T)
  9962. ----------------------------------------------
  9963. 3 237 3/5 i486SX IntelSX2 ODP
  9964. i486DX IntelDX2 ODP
  9965. i486DX2 IntelDX4 ODP
  9966. i486SX2 Pentium ODP (P24T)
  9967. IntelDX4
  9968. ----------------------------------------------
  9969. 4 273 5 Pentium (P5) Pentium ODP (P5T)
  9970. ----------------------------------------------
  9971. 5 320 3.3 Pentium (P54C) Pentium ODP (P54T)
  9972. ----------------------------------------------
  9973. 6 235 3.3 IntelDX4 Pentium ODP (P24T)
  9974. ----------------------------------------------
  9975. 7 321 2.9-3.3 Pentium (P54C) Pentium ODP (P54T)
  9976. Pentium (P55C)
  9977. ----------------------------------------------
  9978. 8 387 2.9-3.3 Pentium Pro(P6) Pentium Pro ODP (P6T)
  9979. ----------------------------------------------
  9980. Slot # Pins Vcc CPU Overdrive
  9981. ----------------------------------------------
  9982. 1 242 2.9-3.3 Pentium II
  9983. ----------------------------------------------
  9984. 2 ??? 2.4? "Deschutes"
  9985. -----------------------------------------------
  9986. Note: The main Pentium II chip have 528 pins.
  9987. ------------------------------------------------------
  9988. APPENDIX R UNDEFINED FLAGS
  9989. See CPUUTIL.ZIP for UFLAGS.COM !!
  9990. Hey, Guys! Do You really think about set of 80x86 CPU cores and
  9991. "That's mean UNDEFINED FLAGS?".
  9992. 1) Do You Ask Yourself: "How many 80x86 base cores are?"
  9993. Let's discuss about definitions:
  9994. What's mean "base core"?
  9995. "Base core" mean: same core clock for instructions, same undefined
  9996. features e.t.c., and was produced many CPUs this type.
  9997. (so, i486DX2 and i486DX have same core),
  9998. (but i486DX2 and IntelDX4 have differ (cos MUL time +etc.).
  9999. (i486SX integer core is look like i486DX core without NPX and all things
  10000. joined with it).
  10001. So we have next list of Main Base Cores:
  10002. 8086/8088 (186s skipped)
  10003. 286
  10004. 386 (have some differents on vendors)
  10005. Cx486SLC/Cx486DX (and all clones like TI486SXL)
  10006. i486
  10007. UMC U5S
  10008. Cyrix Cx5x86 (M1sc)
  10009. Pentium
  10010. NexGen Nx5x86
  10011. Cyrix Cx6x86 (M1)
  10012. AMD Am5k86
  10013. Pentium Pro
  10014. Of course one Main Base Core have many CPUs which have differents between
  10015. self, for example: TI486SXL have Cx486DLC Base Core.
  10016. This Base Cores is relative, of course.
  10017. (We may discuss Where to push C&T 38600DX etc., but it doesn't matter)
  10018. 2) How many situation with Undefined Flags exists?
  10019. Not too many, as You think:
  10020. MUL
  10021. DIV
  10022. IMUL
  10023. IDIV
  10024. NEG (ZF)
  10025. AND/OR/XOR/etc (AF)
  10026. Shift/Rotates (OF)
  10027. and some more.
  10028. 3) What's To Do?
  10029. Let's make next experiment:
  10030. AH = 0
  10031. AH -> FLG
  10032. PERFORM TEST SEQUENCE
  10033. FLG -> AH
  10034. GET RESULT # 1
  10035. AH = FF
  10036. AH -> FLG
  10037. PERFORM TEST SEQUENCE
  10038. FLG -> AH
  10039. GET RESULT # 2
  10040. ANALYSING RESULTS. (WHICH BIT PASSED, WHICH DRIVEN BY INSTRUCTION
  10041. Main Test Sequences are:
  10042. MUL: mov ax,0000h
  10043. mov bx,1234h
  10044. mul bx
  10045. DIV: mov ax,1234h
  10046. mov bl,22h
  10047. div bl
  10048. IMUL: mov ax,0092h
  10049. mov bl,22h
  10050. imul bl
  10051. IDIV: mov ax,0ffeeh
  10052. mov bl,22h
  10053. idiv bl
  10054. LOG: mov ax,0ff00h
  10055. mov bx,0f0fh
  10056. and ax,bx
  10057. 4) Result:
  10058. Here placed summary of Undefined flag analysis on CPUs.
  10059. ------------------------------------------------------------------------
  10060. CPU ------------- Sequence -------------
  10061. CORE MUL DIV IMUL IDIV LOG Note
  10062. ------------------------------------------------------------------------
  10063. 286 ALL ALL ALL ALL ALL as 386,i486
  10064. DRIVEN DRIVEN DRIVEN DRIVEN DRIVEN
  10065. ------------------------------------------------------------------------
  10066. 386 ALL ALL ALL ALL ALL as 286,i486
  10067. DRIVEN DRIVEN DRIVEN DRIVEN DRIVEN
  10068. ------------------------------------------------------------------------
  10069. i486 ALL ALL ALL ALL ALL as 286,386
  10070. DRIVEN DRIVEN DRIVEN DRIVEN DRIVEN
  10071. ------------------------------------------------------------------------
  10072. Cx486SLC Z,S,P,A ALL Z,S,P,A ALL AF
  10073. PASSED PASSED PASSED PASSSED PASSED
  10074. ------------------------------------------------------------------------
  10075. UMC U5S Z,S,P,A ALL Z,S,P,A ALL ALL
  10076. PASSED PASSED PASSED PASSED DRIVEN
  10077. ------------------------------------------------------------------------
  10078. Cx5x86 P,A C,O,P,A P,A C,O,P,A ALL
  10079. PASSED PASSED PASSED PASSED DRIVEN
  10080. ------------------------------------------------------------------------
  10081. Pentium Z,S,P,A ALL Z,S,P,A ALL ALL as Pentium Pro
  10082. PASSED DRIVEN PASSED DRIVEN DRIVEN
  10083. ------------------------------------------------------------------------
  10084. Nx5x86 ???? ???? ???? ???? ???? Somebody who have
  10085. ???? ???? ???? ???? ???? NexGen please contact Me.
  10086. -------------------------------------------------------------------------
  10087. Cx6x86 ALL C,O ALL C,O ALL
  10088. DRIVEN PASSED DRIVEN PASSED DRIVEN
  10089. ------------------------------------------------------------------------
  10090. Am5k86 Z,S,P,A C,O Z,S,P,A C,O ALL
  10091. PASSED PASSED PASSED PASSED DRIVEN
  10092. ------------------------------------------------------------------------
  10093. Pentium Pro Z,S,P,A ALL Z,S,P,A ALL ALL as Pentium
  10094. PASSED DRIVEN PASSED DRIVEN DRIVEN
  10095. ------------------------------------------------------------------------
  10096. Note: See utilites, included to this OPCODE.LST for getting UNDEFINED FLAGS
  10097. on Your processor.
  10098. ---------------------------------------------------
  10099. APPENDIX S FLOATING POINT REGISTERS FORMATS
  10100. +-------+
  10101. | CW |
  10102. +-------+
  10103. [8087]
  10104. 1111 1 11
  10105. 6543 2 10 98 7 6 5 4 3 2 1 0
  10106. ----------------------------
  10107. %%%% I RR PP I % P U O Z D I
  10108. C CC CC E M M M M M M
  10109. M
  10110. ----------------------------
  10111. [80287]
  10112. 1111 1 11
  10113. 6543 2 10 98 76 5 4 3 2 1 0
  10114. ---------------------------
  10115. %%%% I RR PP %% P U O Z D I
  10116. C CC CC M M M M M M
  10117. ---------------------------
  10118. [287XL/XLT,387SX/DX and all build-in FPUs]
  10119. 11111 11
  10120. 65432 10 98 76 5 4 3 2 1 0
  10121. ----------------------------
  10122. %%%%% RR PP %% P U O Z D I
  10123. CC CC M M M M M M
  10124. ----------------------------
  10125. IC - Infinity Control
  10126. if =0 Infinity is Projective
  10127. if =1 Infinity is Affine
  10128. RC - Round Control
  10129. 00 - Round to nearest or soon
  10130. 01 - Round down (toward -infinity)
  10131. 10 - Round up (toward +infinity)
  10132. 11 - Chop (Truncate toward 0)
  10133. PC - Precension Control
  10134. 00 - 24 bit
  10135. 01 - Reserved
  10136. 10 - 53 bit
  10137. 11 - 64 bit
  10138. IEM - Interrupt Mask Enable
  10139. 0 - Interrupts Enable
  10140. 1 - Interrupts Disable
  10141. PM - Precension mask
  10142. UM - Underflow mask
  10143. OM - Overflow Mask
  10144. ZM - Zero Maks
  10145. DM - Denormalized operand mask
  10146. IM - Invalid Operation Mask
  10147. All other F.P registers: ST(i), TAGS, SW have same format on all FPUs.
  10148. Present some different in FPU environment, but now is no time for describe
  10149. it here.
  10150. -------------------------------------------------
  10151. APPENDIX T FORMAT OF PAGE TABLES ENTRYES
  10152. In X86 Architecture there are 3 modes of Paging:
  10153. Mode A - i386..Pentium Compatible
  10154. The selection of paging mode:
  10155. CR0.PG CR4.PAE CR4.PSE page_desc.PS Page Size Address Space Paging Mode
  10156. 0 x x x ----- Paging Disable -----
  10157. 1 0 0 x 4K 32bit A
  10158. 1 0 1 0 4K 32bit A
  10159. 1 0 1 1 4M 32bit A
  10160. 1 1 x 0 4K 36bit B
  10161. 1 1 x 1 2M 36bit C
  10162. +----------------------------------------------------------------------------+
  10163. | ---------------- Paging Mode A ----------- |
  10164. +----------------------------------------------------------------------------+
  10165. Format of Linear Address:
  10166. (Table )
  10167. [32 bit address, 4K pages]
  10168. bit description
  10169. 31..22 index in PDT (Page Directory Table)
  10170. 21..12 index in PT (Page Table)
  10171. 11..0 offset within Page
  10172. [32 bit address, 4M pages]
  10173. bit description
  10174. 31..22 index in PDT (Page Directory Table)
  10175. 21..0 offset within Page
  10176. Format of CR3 register:
  10177. ----------------- (Table )
  10178. bit description
  10179. 31..12 PDT base address (31..12) (PDBR)
  10180. 11..5 Reserved
  10181. 4 PCD
  10182. 3 PWT
  10183. 2..0 Reserved (0)
  10184. +----------+
  10185. | CR3.PDBR |
  10186. +----------+
  10187. | PDT (Pages
  10188. | Directory Table)
  10189. \---->+----------------+
  10190. | .... |
  10191. +----------------+ PT (Pages Table)
  10192. | PT desc. |------>+-------------------+
  10193. +----------------+ | ...... |
  10194. | .... | +-------------------+
  10195. +----------------+ | Page desc. | ---> +-----------+
  10196. | | +-------------------+ | Page in |
  10197. | | | ..... | | memory 4K |
  10198. | | +-------------------+ +-----------+
  10199. +----------------+
  10200. | 4M page desc. |-----> +----------+
  10201. +----------------+ | Page in |
  10202. | | | memory |
  10203. +----------------+ | 4Mb |
  10204. +----------+
  10205. +------------------------------+
  10206. | Format of Pages Descriptors |
  10207. +------------------------------+
  10208. [Pentium Pro,Pentium II,AMD K5,K6]
  10209. (only page directory entrys support 4MB pages)
  10210. 33222222222211111111 11
  10211. 10987654321098765432 109 8 7 6 5 4 3 2 1 0
  10212. ------------------------------------------
  10213. PPPPPPPPPPPPPPPPPPPP AAA G P D A P P U R P
  10214. FFFFFFFFFFFFFFFFFFFF VVV S C W / /
  10215. AAAAAAAAAAAAAAAAAAAA LLL D T S W
  10216. ------------------------------------------
  10217. [Pentium,Cyrix Cx6x86MX]
  10218. (only page directory entrys support 4MB pages)
  10219. 33222222222211111111 11
  10220. 10987654321098765432 109 8 7 6 5 4 3 2 1 0
  10221. ------------------------------------------
  10222. PPPPPPPPPPPPPPPPPPPP AAA 0 P D A P P U R P
  10223. FFFFFFFFFFFFFFFFFFFF VVV S C W / /
  10224. AAAAAAAAAAAAAAAAAAAA LLL D T S W
  10225. ------------------------------------------
  10226. [i486 and clones]
  10227. 33222222222211111111 11
  10228. 10987654321098765432 109 8 7 6 5 4 3 2 1 0
  10229. ------------------------------------------
  10230. PPPPPPPPPPPPPPPPPPPP AAA 0 0 D A P P U R P
  10231. FFFFFFFFFFFFFFFFFFFF VVV C W / /
  10232. AAAAAAAAAAAAAAAAAAAA LLL D T S W
  10233. ------------------------------------------
  10234. [Cx486SLC/DLC,TI486SLC/DLC/e,TI486SXL and clones]
  10235. 33222222222211111111 11
  10236. 10987654321098765432 109 8 7 6 5 4 3 2 1 0
  10237. ------------------------------------------
  10238. PPPPPPPPPPPPPPPPPPPP AAA 0 0 D A P 0 U R P
  10239. FFFFFFFFFFFFFFFFFFFF VVV C / /
  10240. AAAAAAAAAAAAAAAAAAAA LLL D S W
  10241. ------------------------------------------
  10242. [i386 and all clones]
  10243. 33222222222211111111 11
  10244. 10987654321098765432 109 8 7 6 5 43 2 1 0
  10245. ------------------------------------------
  10246. PPPPPPPPPPPPPPPPPPPP AAA 0 0 D A 00 U R P
  10247. FFFFFFFFFFFFFFFFFFFF VVV / /
  10248. AAAAAAAAAAAAAAAAAAAA LLL S W
  10249. ------------------------------------------
  10250. PFA - Physical Frame address
  10251. AVL - Available for Operating System
  10252. G - Global Page (valid if PGE bit in CR4 set
  10253. PS - Page Size
  10254. =0 Directory entry (if in PDT)
  10255. 4K page (if in page table)
  10256. =1 4M boundary (descriptor must be in PDT only))
  10257. D - Dirty (ignored in PDT)
  10258. A - Accessed
  10259. PCD - Page Cache disable
  10260. PWT - Page Write throught
  10261. U/S - User/Supervisor
  10262. R/W - Read/Write
  10263. P - Present
  10264. +----------------------------------------------------------------------------+
  10265. | ---------------- Paging Modes B & C ----------- |
  10266. +----------------------------------------------------------------------------+
  10267. Schemes, which used in paging modes B and C support address extension
  10268. up to 64bit, but now can be used only 36 bits of it.
  10269. Format of Linear Address:
  10270. (Table )
  10271. [36 bit address, 4K pages] (mode B)
  10272. bit description
  10273. 31..30 index in PDPT (Page Directory Pointers Table)
  10274. 29..21 index in PDT (Page Directory Table)
  10275. 20..12 index in PT (Page Table)
  10276. 11..0 offset within Page
  10277. [36 bit address, 2M pages] (mode C)
  10278. bit description
  10279. 31..30 index in PDPT (Page Directory Pointers Table)
  10280. 29..21 index in PDT (Page Directory Table)
  10281. 20..0 offset within Page
  10282. Format of CR3 register:
  10283. -------------------- (Table )
  10284. bit description
  10285. 31..5 PDPT base address (38..12) (PDBR)
  10286. 4 PCD
  10287. 3 PWT
  10288. 2..0 Reserved (0)
  10289. PDPT (Page Directory
  10290. Pointer Table) +----------+
  10291. +----------+ <--------------------| CR3.PDBR |
  10292. | ... | +----------+
  10293. +----------+
  10294. | PDT desc |
  10295. +----------+
  10296. | PDT (Pages
  10297. | Directory Table)
  10298. \---->+----------------+
  10299. | .... |
  10300. +----------------+ PT (Pages Table)
  10301. | PT desc. |------>+-------------------+
  10302. +----------------+ | ...... |
  10303. | .... | +-------------------+
  10304. +----------------+ | Page desc. | ---> +-----------+
  10305. | | +-------------------+ | Page in |
  10306. | | | ..... | | memory 4K |
  10307. | | +-------------------+ +-----------+
  10308. +----------------+
  10309. | 2M page desc. |-----> +----------+
  10310. +----------------+ | Page in |
  10311. | | | memory |
  10312. +----------------+ | 2M |
  10313. +----------+
  10314. Format of Page Directory Pointer Table Entry (4 entry/PDPT):
  10315. ---------------------------------- (Table )
  10316. 6 3 3 1 1
  10317. 3 ... 6 5 ..... 2 1 ... 9 8..5 4 3 2..0
  10318. -------+---------+-------+----+-+-+----
  10319. %%%%%%%| PDT Base| | %% |P|P| %%%
  10320. %%%%%%%| Address | AVAIL | %% |C|W| %%%
  10321. %%%%%%%|(35..12) | | %% |D|T| %%%
  10322. -------+---------+-------+----+-+-+----
  10323. Format of Page Directory Table Entry (512 entry/PDT)
  10324. ---------------------------- (Table )
  10325. [4K pages DT]: (Mode B)
  10326. 6 3 3 1 1
  10327. 3 ... 6 5 ..... 2 1 ... 9 8..6 5 4 3 2 1 0
  10328. -------+---------+-------+----+-+-+-+-+-+-
  10329. %%%%%%%| PT Base | | %% | |P|P|U|R|
  10330. %%%%%%%| Address | AVAIL | %% |A|C|W|/|/|P
  10331. %%%%%%%|(35..12) | | %% | |D|T|S|W|
  10332. -------+---------+-------+----+-+-+-+-+-+-
  10333. [2M page]: (Mode C)
  10334. 6 3 3 2 2 1 1
  10335. 3 ... 6 5 ..... 1 0..2 1 ... 9 8 7 6 5 4 3 2 1 0
  10336. -------+---------+----+-------+-+-+-+-+-+-+-+-+-
  10337. %%%%%%%|Page Base| %% | | | | | |P|P|U|R|
  10338. %%%%%%%| Address | %% | AVAIL |G|1|D|A|C|W|/|/|P
  10339. %%%%%%%|(35..21) | %% | | | | | |D|T|S|W|
  10340. -------+---------+----+-------+-+-+-+-+-+-+-+-+-
  10341. Format of Page Table Entry (512 entry/PT):
  10342. ------------------------- (Table )
  10343. [2K page]: (Mode B)
  10344. 6 3 3 1 1
  10345. 3 ... 6 5 ..... 2 1 ... 9 8 7 6 5 4 3 2 1 0
  10346. -------+---------+-------+-+-+-+-+-+-+-+-+-
  10347. %%%%%%%|Page Base| | | | | |P|P|U|R|
  10348. %%%%%%%| Address | AVAIL |G|0|D|A|C|W|/|/|P
  10349. %%%%%%%|(35..21) | | | | | |D|T|S|W|
  10350. -------+---------+-------+-+-+-+-+-+-+-+-+-
  10351. The means of bits same as in Paging Mode A.
  10352. -------------------------------------------------
  10353. APPENDIX U FORMAT OF DESCRIPTORS
  10354. +-------------------------------+
  10355. | Format of Generic Descriptor: |
  10356. +-------------------------------+
  10357. +00 WORD Segment Limit (Low) (15..0)
  10358. +02 WORD Segment Base (Low) (15..0)
  10359. +04 BYTE Segment Base (Mid) (23..16)
  10360. +05 BYTE Access Rights Byte (AR)
  10361. +06 BYTE Segment Limit (High) (19..16)/AR2
  10362. +07 BYTE Segment Base (High) (31..24)
  10363. This format have data and code segment descriptors.
  10364. +----------+
  10365. | AR | Access Rights Byte
  10366. +----------+
  10367. +----+----+----+----+----+----+----+----+
  10368. | P | DPL | S | | | | | [General AR]
  10369. +----+----+----+----+----+----+----+----+
  10370. P - (Present segment)
  10371. =0 segment not present
  10372. =1 segment present in memory
  10373. DPL - (Descriptor Privelege Level)
  10374. 00 - Highest
  10375. 11 - Lowest
  10376. S - (System)
  10377. =0 descriptor is system
  10378. =1 descriptor is segment
  10379. +----+----+----+----+----+----+----+----+
  10380. | P | DPL | 1 | E | | | | [segment AR]
  10381. +----+----+----+----+----+----+----+----+
  10382. E - (Extended Type of Segment Descriptor)
  10383. =0 data segment
  10384. =1 code segment
  10385. +----+----+----+----+----+----+----+----+
  10386. | P | DPL | 1 | 1 | C | R | A | [Code segment AR]
  10387. +----+----+----+----+----+----+----+----+
  10388. C - (Control Bit)
  10389. =0 Working rules of calling segment wia gates, using PL.
  10390. =1 Segment may be immediate called using CALL FAR from
  10391. same or more privelege segment
  10392. R - (Readable segment)
  10393. =0 Reading disable (only execution enable)
  10394. =1 Enable reading
  10395. A - (Accessable)
  10396. =0 None accesses into segment was
  10397. =1 Some accesses was
  10398. +----+----+----+----+----+----+----+----+
  10399. | P | DPL | 1 | 0 | ED | W | A | [Data segment AR]
  10400. +----+----+----+----+----+----+----+----+
  10401. ED - (Expand Down)
  10402. =0 Expand Up
  10403. =1 Expand down
  10404. W - (Writable)
  10405. =0 Write disable
  10406. =1 Write enable
  10407. +----+----+----+----+----+----+----+----+
  10408. | P | DPL | 0 | T Y P E | [System descriptor AR]
  10409. +----+----+----+----+----+----+----+----+
  10410. TYPE - (Type of System descriptor)
  10411. 0000 - Not Used
  10412. 0001 - Available TSS (286 style)
  10413. 0010 - LDT
  10414. 0011 - Busy TSS (286 style)
  10415. 0100 - Call Gate (286 style)
  10416. 0101 - Task Gate (286 style)
  10417. 0110 - Interrupt Gate (286 style)
  10418. 0111 - Trap Gate (286 style)
  10419. 1000 - Not Used
  10420. 1001 - Available TSS (386 style)
  10421. 1010 - Reserved
  10422. 1011 - Busy TSS (386 style)
  10423. 1100 - Call Gate (386 style)
  10424. 1101 - Reserved
  10425. 1110 - Interrupt Gate (386 style)
  10426. 1111 - Trap Gate (386 style)
  10427. +--------+
  10428. | AR2 |
  10429. +--------+
  10430. +----+----+----+----+
  10431. | G | D | 0 | X |
  10432. +----+----+----+----+
  10433. G - (Granularity)
  10434. =0 Segment limit calculated in Bytes (up to 2^20 bytes)
  10435. =1 Segment limit calculated in Pages of 4K (up to 2^32 bytes)
  10436. D - (Dimensions)
  10437. =0 16 bit segment
  10438. =1 32 bit segment
  10439. Note: need for code segments, 'cos opcodes in 16-bit and 32-bit
  10440. segments are different.
  10441. X - Available for Operating System
  10442. +---------------------------------------------------------------------------+
  10443. | ------------------------ System Descriptors -----------------------------|
  10444. +---------------------------------------------------------------------------+
  10445. +-----+
  10446. | LDT |
  10447. +-----+
  10448. +00 WORD LDT Limit (Low) 15..0
  10449. +02 WORD LDT Base (15..0) (Low)
  10450. +04 BYTE LDT Base (23..16) (Mid)
  10451. +05 BYTE AR
  10452. +06 BYTE AR2
  10453. +07 BYTE LDT Base (31..24) (High)
  10454. +----+----+----+----+----+----+----+----+
  10455. | P | DPL | 0 | 0 | 0 | 1 | 0 | [AR]
  10456. +----+----+----+----+----+----+----+----+
  10457. +---------------+
  10458. | 286 Call Gate |
  10459. +---------------+
  10460. +00 WORD Offset 15..0
  10461. +02 WORD Selector
  10462. +04 BYTE Word Count (5 bit)
  10463. +05 BYTE AR
  10464. +06 WORD 0
  10465. +----+----+----+----+----+----+----+----+
  10466. | P | DPL | 0 | 0 | 1 | 0 | 0 | [AR]
  10467. +----+----+----+----+----+----+----+----+
  10468. +---------------+
  10469. | 386 Call Gate |
  10470. +---------------+
  10471. +00 WORD Offset 15..0 (Low)
  10472. +02 WORD Selector
  10473. +04 BYTE Dword Count (5 bit)
  10474. +05 BYTE AR
  10475. +06 WORD Offset 31..16
  10476. +----+----+----+----+----+----+----+----+
  10477. | P | DPL | 0 | 1 | 1 | 0 | 0 | [AR]
  10478. +----+----+----+----+----+----+----+----+
  10479. +---------+
  10480. | 286 TSS |
  10481. +---------+
  10482. +00 WORD TSS Limit (15..0)
  10483. +02 WORD TSS Base (15..0) (Low)
  10484. +04 BYTE TSS Base (23..16) (Mid)
  10485. +05 BYTE AR
  10486. +06 WORD 0
  10487. +----+----+----+----+----+----+----+----+
  10488. | P | DPL | 0 | 0 | 0 | B | 1 | [AR]
  10489. +----+----+----+----+----+----+----+----+
  10490. B - (Busy)
  10491. =0 TSS is available
  10492. =1 TSS is busy (active,current)
  10493. +---------+
  10494. | 386 TSS |
  10495. +---------+
  10496. +00 WORD TSS Limit (15..0) (Low)
  10497. +02 WORD TSS Base (15..0) (Low)
  10498. +04 BYTE TSS Base (23..16)(Mid)
  10499. +05 BYTE AR
  10500. +06 BYTE AR2/TSS Limit High (19..16)
  10501. +07 BYTE TSS Base (31..24) (High)
  10502. +----+----+----+----+----+----+----+----+
  10503. | P | DPL | 0 | 1 | 0 | B | 1 | [AR]
  10504. +----+----+----+----+----+----+----+----+
  10505. +-------------------------+
  10506. | Interrupt/Trap Gate 286 |
  10507. +-------------------------+
  10508. +00 WORD Offset 15..0
  10509. +02 WORD Selector
  10510. +04 BYTE 0
  10511. +05 BYTE AR
  10512. +06 WORD 0
  10513. +----+----+----+----+----+----+----+----+
  10514. | P | DPL | 0 | 0 | 1 | 1 | T | [AR]
  10515. +----+----+----+----+----+----+----+----+
  10516. T - (Trap Flag)
  10517. =0 Interrupt Gate
  10518. =1 Trap Gate
  10519. +-------------------------+
  10520. | Interrupt/Trap Gate 386 |
  10521. +-------------------------+
  10522. +00 WORD Offset 15..0 (Low)
  10523. +02 WORD Selector
  10524. +04 BYTE 0
  10525. +05 BYTE AR
  10526. +06 WORD Offset 31..16 (High)
  10527. +----+----+----+----+----+----+----+----+
  10528. | P | DPL | 0 | 1 | 1 | 1 | T | [AR]
  10529. +----+----+----+----+----+----+----+----+
  10530. +-----------+
  10531. | Task Gate |
  10532. +-----------+
  10533. +00 WORD 0
  10534. +02 WORD TSS Selector
  10535. +04 BYTE 0
  10536. +05 BYTE AR
  10537. +06 WORD 0
  10538. +----+----+----+----+----+----+----+----+
  10539. | P | DPL | 0 | 0 | 1 | 0 | 1 | [AR]
  10540. +----+----+----+----+----+----+----+----+
  10541. +----------------------------------+
  10542. | Possible Tables for Descriptors |
  10543. +----------------------------------+
  10544. ---------------+-----------------------+---------------------------
  10545. Lowest 5 bits | | Valid in
  10546. of AR | Type | GDT LDT IDT
  10547. ---------------+-----------------------+---------------------------
  10548. 00010 LDT + - -
  10549. 0*0*1 286 TSS + - -
  10550. 0*100 Call Gate + + -
  10551. 0*101 Task Gate + + +
  10552. 0*110 Interrupt Gate - - +
  10553. 0*111 Trap Gate - - +
  10554. 10*** Data segment + + -
  10555. 11*** Code segment + + -
  10556. -------------------------------------------------
  10557. APPENDIX V FORMAT OF TSS
  10558. +--------------------+
  10559. | Format of 286 TSS |
  10560. +--------------------+
  10561. +00 WORD Previous TSS Selector (Back Link)
  10562. +02 WORD Offset of stack ring 0
  10563. +04 WORD Selector of stack ring 0
  10564. +06 WORD Offset of stack ring 1
  10565. +08 WORD Selector of stack ring 1
  10566. +0A WORD Offset of stack ring 2
  10567. +0C WORD Selector of stack ring 2
  10568. +0E WORD IP
  10569. +10 WORD FLG
  10570. +12 WORD AX
  10571. +14 WORD CX
  10572. +16 WORD DX
  10573. +18 WORD BX
  10574. +1A WORD SP
  10575. +1C WORD BP
  10576. +1E WORD SI
  10577. +20 WORD DI
  10578. +22 WORD ES
  10579. +24 WORD CS
  10580. +26 WORD SS
  10581. +28 WORD DS
  10582. +2A WORD LDT
  10583. Note: Len of 286 TSS is 2Ch bytes (44d)
  10584. +--------------------+
  10585. | Format of 386 TSS |
  10586. +--------------------+
  10587. High word/Low word
  10588. +00 DWORD 0/Previous TSS selector (Back Link)
  10589. +04 DWORD Stack pointer for ring 0
  10590. +08 DWORD 0/Stack Selector for ring 0
  10591. +0C DWORD Stack pointer for ring 1
  10592. +10 DWORD 0/Stack Selector for ring 1
  10593. +14 DWORD Stack pointer for ring 2
  10594. +18 DWORD 0/Stack Selector for ring 2
  10595. +1C DWORD CR3
  10596. +20 DWORD EIP
  10597. +24 DWORD EFLAGS
  10598. +28 DWORD EAX
  10599. +2C DWORD ECX
  10600. +30 DWORD EDX
  10601. +34 DWORD EBX
  10602. +38 DWORD ESP
  10603. +3C DWORD EBP
  10604. +40 DWORD ESI
  10605. +44 DWORD EDI
  10606. +48 DWORD 0/ES
  10607. +4C DWORD 0/CS
  10608. +50 DWORD 0/SS
  10609. +54 DWORD 0/DS
  10610. +58 DWORD 0/FS
  10611. +5C DWORD 0/GS
  10612. +60 DWORD 0/LDT
  10613. +64 WORD Trap Bits
  10614. +66 WORD Offset within TSS to I/O Permission Map
  10615. Minimal Length of TSS is 68 bytes.
  10616. IPM is IO Permition Map Base address
  10617. TSS_LAST is last byte of TSS.
  10618. +IPM-20h 20h BYTEs Software Interrupt Redirection Bitmap (VME)
  10619. 1 bit/int
  10620. +IPM xxh BYTEs I/O Permition Bitmap
  10621. 1 bit/port
  10622. +TSS_LAST BYTE I/O PAD Byte
  10623. PAD byte show which bits in last byte of
  10624. I/O permission bitmap valid.
  10625. (recommended to set up this byte to FF)
  10626. TSS
  10627. +----------------+
  10628. | |
  10629. | ..... |
  10630. | |
  10631. +----------------+
  10632. | offset to IPM |----------------+
  10633. +----------------+ |
  10634. | .... | |
  10635. | .... | |
  10636. +----------------+ |
  10637. |Int Redir Bitmap| |
  10638. +----------------+ <--------------+
  10639. | IPM |
  10640. +----------------+
  10641. | PAD BYTE |
  10642. +----------------+ <------ TSS Limit
  10643. ---------------------------------------------------
  10644. APPENDIX V - Model Specific Registers List
  10645. [See MSR.LST]
  10646. ----------------------------------------------------------
  10647. APPENDIX X - SYSTEM MANAGMENT MODE (SMM)
  10648. +----------------+
  10649. | Base SM Modes: |
  10650. +----------------+
  10651. There are 4 base types of SMM in x86 CPUs (unfortunetly, I don't knew
  10652. SMM in NexGen):
  10653. Activation Bytes Hidden RAM Hidden RAM SMM
  10654. Vendor Hard Soft Saved Save Area SMM code start Type
  10655. AMD 386SXLV + SMI 228 6000:0000 FFFFFFF0 \
  10656. AMD 386DXLV + SMI 228 6000:0000 FFFFFFF0 | old AMD
  10657. AMD 486DXLV + SMI 364 6000:0000 FFFFFFF0 /
  10658. -----------------------------------------------------------
  10659. Cx486SLC/DLC + HLT - - - \
  10660. Cx486SLC/e + - 35 User Definded User Defined | Cyrix
  10661. Cx486S..Cx486MX + (SMINT) 48 User Defined User Defined /
  10662. -----------------------------------------------------------
  10663. IBM 386/486SLC + ICEBP 284 6000:0000 FFFFFFF0 ] IBM
  10664. -----------------------------------------------------------
  10665. i386SL/i486SL + Timer 512 3000:FE00 3000:8000 \
  10666. i486SL-Enhanced + - 512 3000:FE00 3000:8000 | Intel
  10667. Pentium + (APIC) 512 3000:FE00 3000:8000 |
  10668. Pentium Pro/II + (APIC) 512 3000:FE00 3000:8000 /
  10669. Intel Type SMM support all Intel CPUs (starting i386SL or i486
  10670. SL-Enhanced), and AMD K5, K6 and later, IDT C6.
  10671. +---------------+
  10672. | Intel SMM |
  10673. +---------------+
  10674. Format of SMRAM
  10675. Ofset from Actual
  10676. SMBASE Description Size Writeable
  10677. FFFC 4 CR0 32 -
  10678. FFF8 4 CR3 32 -
  10679. FFF4 4 EFLAGS 32 +
  10680. FFF0 4 EIP 32 +
  10681. FFEC 4 EDI 32 +
  10682. FFE8 4 ESI 32 +
  10683. FFE4 4 EBP 32 +
  10684. FFE0 4 ESP 32 +
  10685. FFDC 4 EBX 32 +
  10686. FFD8 4 EDX 32 +
  10687. FFD4 4 ECX 32 +
  10688. FFD0 4 EAX 32 +
  10689. FFCC 4 DR6 32 -
  10690. FFC8 4 DR7 32 -
  10691. FFC4 4 TR 16 -
  10692. FFC0 4 LDTR 16 -
  10693. FFBC 4 GS 16 -
  10694. FFB8 4 FS 16 -
  10695. FFB4 4 DS 16 -
  10696. FFB0 4 SS 16 -
  10697. FFAC 4 CS 16 -
  10698. FFA8 4 ES 16 -
  10699. FFA4 4 I/O trap Dword 32 -
  10700. FFA0 8 reserved -
  10701. FF9C 4 I/O trap EIP 32 -
  10702. FF94 8 reserved -
  10703. FF90 4 IDT Base 32 -
  10704. FF8C 4 IDT Limit 20 -
  10705. FF88 4 GDT Base 32 -
  10706. FF84 4 GDT Limit 20 -
  10707. FF80 4 TSS Attribute 12 -
  10708. FF7C 4 TSS Base 32 -
  10709. FF78 4 TSS Limit 20 -
  10710. FF74 4 LDT Attribute 12 -
  10711. FF70 4 LDT Base 32 -
  10712. FF6C 4 LDT Limit 20 -
  10713. FF68 4 GS Attribute 12 -
  10714. FF64 4 GS Base 32 -
  10715. FF60 4 GS Limit 20 -
  10716. FF5C 4 FS Attribute 12 -
  10717. FF58 4 FS Base 32 -
  10718. FF54 4 FS Limit 20 -
  10719. FF50 4 DS Attribute 12 -
  10720. FF4C 4 DS Base 32 -
  10721. FF48 4 DS Limit 20 -
  10722. FF44 4 SS Attribute 12 -
  10723. FF40 4 SS Base 32 -
  10724. FF3C 4 SS Limit 20 -
  10725. FF38 4 CS Attribute 12 -
  10726. FF34 4 CS Base 32 -
  10727. FF30 4 CS Limit 20 -
  10728. FF2C 4 ES Attribute 12 -
  10729. FF28 4 ES Base 32 -
  10730. FF24 4 ES Limit 20 -
  10731. FF18 12 reserved -
  10732. FF14 4 CR2 32 -
  10733. FF10 4 CR4 32 -
  10734. FF0C 4 I/O Restart ESI 32 -
  10735. FF08 4 I/O Restart ECX 32 -
  10736. FF04 4 I/O Restart EDI 32 -
  10737. FF02 2 Auto HALT Restart Slot 16* +
  10738. FF00 2 I/O Trap Restart Slot 16* +
  10739. FEFC 4 SMM Revision ID 32 -
  10740. FEF8 4 SMBASE Slot 32 +
  10741. 7E00 248 reserved -
  10742. Note: if Actual size < fiels size, then all upper that actual size bits are
  10743. reserved.
  10744. +---------------+
  10745. | Cyrix SMM |
  10746. +---------------+
  10747. Full description of Cyrix SMM will be placed in future OPCODE.LST.
  10748. Now see SMINT and some other Cyrix SMM commands for more details.
  10749. See APPENDIX A1-A6 for more details.
  10750. Format of SMRAM:
  10751. +00 <-------- Here pointed SMHR register (M2)
  10752. -04 4 DR7
  10753. -08 4 EFLAGS
  10754. -0C 4 CR0
  10755. -10 4 Current EIP
  10756. -14 4 Next EIP
  10757. -18 4 CS selector
  10758. -20 8 CS descriptor
  10759. -24 4 Bitfields
  10760. Bit Description
  10761. 22..21 CPL
  10762. 15 N (Nested SMI Indicator)
  10763. 13 IS (Internal SMI Indicator)
  10764. 4 H (SMI on HLT instruction)
  10765. 3 S (Software SMI entrance)
  10766. 2 P (REP INSx/OUTSx indicator)
  10767. 1 I (IN/INSx/OUT/OUTSx indicator)
  10768. 0 C (Code segment writable flag)
  10769. -26 2 I/O Write Data Size
  10770. -28 2 I/O Write Address
  10771. -2C 4 I/O Write Data
  10772. -30 4 ESI or EDI
  10773. +-------------------+
  10774. | Old-style AMD SMM |
  10775. +-------------------+
  10776. Format of SMRAM:
  10777. Offset Bytes Description
  10778. 60000 4 CR0
  10779. 60004 4 EFLAGS
  10780. 60008 4 EIP
  10781. 6000C 4 EDI
  10782. 60010 4 ESI
  10783. 60014 4 EBP
  10784. 60018 4 ESP
  10785. 6001C 4 EBX
  10786. 60020 4 EDX
  10787. 60024 4 ECX
  10788. 60028 4 EAX
  10789. 6002C 4 DR6
  10790. 60030 4 DR7
  10791. 60034 4 TR selector
  10792. 60038 4 LDT selector
  10793. 6003C 4 GS selector
  10794. 60040 4 FS selector
  10795. 60044 4 DS selector
  10796. 60048 4 SS selector
  10797. 6004C 4 CS selector
  10798. 60050 4 ES selector
  10799. 60054 4 TSS descriptor (ATTR)
  10800. 60058 4 TSS descriptor (BASE)
  10801. 6005C 4 TSS descriptor (LIMIT)
  10802. 60060 4 reserved
  10803. 60064 4 IDTR (BASE)
  10804. 60068 4 IDTR (LIMIT)
  10805. 6006C 4 REP OUTS Overrun Flag
  10806. 60070 4 GDTR (BASE)
  10807. 60074 4 GDTR (LIMIT)
  10808. 60078 4 LDT (ATTR)
  10809. 6007C 4 LDT (BASE)
  10810. 60080 4 LDT (LIMIT)
  10811. 60084 4 GS (ATTR)
  10812. 60088 4 GS (BASE)
  10813. 6008C 4 GS (LIMIT)
  10814. 60090 4 FS (ATTR)
  10815. 60094 4 FS (BASE)
  10816. 60098 4 FS (LIMIT)
  10817. 6009C 4 DS (ATTR)
  10818. 600A0 4 DS (BASE)
  10819. 600A4 4 DS (LIMIT)
  10820. 600A8 4 SS (ATTR)
  10821. 600AC 4 SS (BASE)
  10822. 600B0 4 SS (LIMIT)
  10823. 600B4 4 CS (ATTR)
  10824. 600B8 4 CS (BASE)
  10825. 600BC 4 CS (LIMIT)
  10826. 600C0 4 ES (ATTR)
  10827. 600C4 4 ES (BASE)
  10828. 600C8 4 ES (LIMIT)
  10829. ....
  10830. 60100 4 Temporary Register TST
  10831. 60104 4 Temporary Register IDX
  10832. 60108 4 Temporary Register TMPH
  10833. 6010C 4 Temporary Register TMPG
  10834. 60110 4 Temporary Register TMPF
  10835. 60114 4 Temporary Register TMPE
  10836. 60118 4 Temporary Register TMPD
  10837. 6011C 4 Temporary Register TMPC
  10838. 60120 4 Temporary Register TMPB
  10839. 60124 4 LEIP (Last EIP)
  10840. ------------- AMD Am486DXLV additional fields
  10841. 60128 4 PEIP
  10842. 6012C 36 Unused
  10843. 60150 88 F.P. Internal Registers
  10844. Note: See LOADALL for More Information
  10845. +-------------------+
  10846. | IBM SMM |
  10847. +-------------------+
  10848. Format of SMRAM:
  10849. Offset Bytes Description
  10850. 60000 4 CR0
  10851. 60004 4 EFLAGS
  10852. 60008 4 EIP
  10853. 6000C 4 EDI
  10854. 60010 4 ESI
  10855. 60014 4 EBP
  10856. 60018 4 ESP
  10857. 6001C 4 EBX
  10858. 60020 4 EDX
  10859. 60024 4 ECX
  10860. 60028 4 EAX
  10861. 6002C 4 DR6
  10862. 60030 4 DR7
  10863. 60034 4 TR selector
  10864. 60038 4 LDT selector
  10865. 6003C 4 GS selector
  10866. 60040 4 FS selector
  10867. 60044 4 DS selector
  10868. 60048 4 SS selector
  10869. 6004C 4 CS selector
  10870. 60050 4 ES selector
  10871. 60054 4 TSS descriptor (ATTR)
  10872. 60058 4 TSS descriptor (BASE)
  10873. 6005C 4 TSS descriptor (LIMIT)
  10874. 60060 4 reserved
  10875. 60064 4 IDTR (BASE)
  10876. 60068 4 IDTR (LIMIT)
  10877. 6006C 4 REP OUTS Overrun Flag
  10878. 60070 4 GDTR (BASE)
  10879. 60074 4 GDTR (LIMIT)
  10880. 60078 4 LDT (ATTR)
  10881. 6007C 4 LDT (BASE)
  10882. 60080 4 LDT (LIMIT)
  10883. 60084 4 GS (ATTR)
  10884. 60088 4 GS (BASE)
  10885. 6008C 4 GS (LIMIT)
  10886. 60090 4 FS (ATTR)
  10887. 60094 4 FS (BASE)
  10888. 60098 4 FS (LIMIT)
  10889. 6009C 4 DS (ATTR)
  10890. 600A0 4 DS (BASE)
  10891. 600A4 4 DS (LIMIT)
  10892. 600A8 4 SS (ATTR)
  10893. 600AC 4 SS (BASE)
  10894. 600B0 4 SS (LIMIT)
  10895. 600B4 4 CS (ATTR)
  10896. 600B8 4 CS (BASE)
  10897. 600BC 4 CS (LIMIT)
  10898. 600C0 4 ES (ATTR)
  10899. 600C4 4 ES (BASE)
  10900. 600C8 4 ES (LIMIT)
  10901. ...
  10902. 60100 4 Temporary Register TST
  10903. 60104 4 Temporary Register IDX
  10904. 60108 4 Temporary Register TMPH
  10905. 6010C 4 Temporary Register TMPG
  10906. 60110 4 Temporary Register TMPF
  10907. 60114 4 Temporary Register TMPE
  10908. 60118 4 Temporary Register TMPD
  10909. 6011C 4 Temporary Register TMPC
  10910. 60120 4 Temporary Register TMPB
  10911. 60124 4 Temporary Register TMPA
  10912. 60128 4 CR2
  10913. 6012C 4 CR3
  10914. 60130 4 MSR 1001h (0..31)
  10915. 60134 4 MSR 1001h (63..32)
  10916. 60138 4 MSR 1000h (0..31)
  10917. 6013C 4 DR0
  10918. 60140 4 DR1
  10919. 60144 4 DR2
  10920. 60148 4 DR3
  10921. 6014C 4 PEIP (Previous Hidden Memory Space Instruction Pointer)
  10922. Note: See ICEBP/ICERET for More Information
  10923. ----------------------------------------------------------
  10924. APPENDIX Y0 - Vendor Instruction Time for Intel 8088 CPU
  10925. AAA 4
  10926. AAD 60
  10927. AAM 83
  10928. AAS 4
  10929. ADC AL,imm8 4
  10930. ADC AX,imm16 4
  10931. ADC r/m8,imm8 4/17+EA
  10932. ADC r/m16,imm8 4/25+EA
  10933. ADC r/m16,imm16 4/25+EA
  10934. ADC r/m8,r8 3/16+EA
  10935. ADC r/m16,r16 3/24+EA
  10936. ADC r8,r/m8 3/9+EA
  10937. ADC r16,r/m16 3/13+EA
  10938. ADD AL,imm8 4
  10939. ADD AX,imm16 4
  10940. ADD r/m8,imm8 4/17+EA
  10941. ADD r/m16,imm8 4/25+EA
  10942. ADD r/m16,imm16 4/25+EA
  10943. ADD r/m8,r8 3/16+EA
  10944. ADD r/m16,r16 3/24+EA
  10945. ADD r8,r/m8 3/9+EA
  10946. ADD r16,r/m16 3/13+EA
  10947. AND AL,imm8 4
  10948. AND AX,imm16 4
  10949. AND r/m8,imm8 4/16+EA
  10950. AND r/m16,imm16 4/25+EA
  10951. AND r/m8,r8 3/16+EA
  10952. AND r/m16,r16 3/24+EA
  10953. AND r8,r/m8 3/9+EA
  10954. AND r16,r/m16 3/13+EA
  10955. CALL rel16 19(23)
  10956. CALL r/m16 16(24)/21(29)+EA
  10957. CALL ptr16:16 28(36)
  10958. CALL m16:16 37(57)+EA
  10959. CBW 2
  10960. CLC 2
  10961. CLD 2
  10962. CLI 2
  10963. CMC 2
  10964. CMP AL,imm8 4
  10965. CMP AX,imm16 4
  10966. CMP r/m8,imm8 4/10+EA
  10967. CMP r/m16,imm8 4/-
  10968. CMP r/m16,imm16 4/14+EA
  10969. CMP r/m8,r8 3/9+EA
  10970. CMP r/m16,r16 3/13+EA
  10971. CMP r8,r/m8 3/9+EA
  10972. CMP r16,r/m16 3/13+EA
  10973. CMPSB 22
  10974. CMPSW 30
  10975. CWD 5
  10976. DAA 4
  10977. DAS 4
  10978. DEC r/m8 3/15+EA
  10979. DEC r/m16 2/23+EA
  10980. DEC r16 2
  10981. DIV r/m8 80-90/(86-96)+EA
  10982. DIV r/m16 144-162/(154-172)+EA
  10983. HLT 2
  10984. IDIV r/m8 101-112/(107-118)+EA
  10985. IDIV r/m16 165-184/(175-194)+EA
  10986. IMUL r/m8 80-98/(86-104)+EA
  10987. IMUL r/m16 128-154/(138-164)+EA
  10988. IN AL,imm8 10
  10989. IN AX,imm8 14
  10990. IN AL,DX 8
  10991. IN AX,DX 12
  10992. INC r/m8 3/15+EA
  10993. INC r/m16 2/23+EA
  10994. INC r16 2
  10995. INT 3 53(72)
  10996. INT imm8 51(71)
  10997. INTO 53(73) or 4
  10998. IRET 32(44)
  10999. Jcc rel8 4 or 16
  11000. JCXZ rel8 6 or 18
  11001. JMP rel8 15
  11002. JMP rel16 15
  11003. JMP r/m16 11/18+EA
  11004. JMP ptr16:16 15
  11005. JMP m16:16 24+EA
  11006. LAHF 4
  11007. LDS r16,m16:16 24+EA
  11008. LES r16,m16:16 24+EA
  11009. LEA r16,m 2+EA
  11010. LODSB 12
  11011. LODSW 16
  11012. LOOP rel8 5 or 17
  11013. LOOPE rel8 6 or 18
  11014. LOOPNE rel8 5 or 19
  11015. MOV r/m8,r8 2/9+EA
  11016. MOV r/m16,r16 2/13+EA
  11017. MOV r8,r/m8 2/8+EA
  11018. MOV r16,r/m16 2/12+EA
  11019. MOV r/m16,sreg 2/9(13)+EA
  11020. MOV sreg,r/m16 2/8(12)+EA
  11021. MOV AL,moffs8 10
  11022. MOV AX,moffs16 14
  11023. MOV moffs8,AL 10
  11024. MOV moffs16,AX 14
  11025. MOV r8,imm8 4
  11026. MOV r16,imm16 4
  11027. MOV r/m8,imm8 4/10+EA
  11028. MOV r/m16,imm16 4/14+EA
  11029. MOVSB 18
  11030. MOVSW 26
  11031. MUL r/m8 70-77/(76-83)+EA
  11032. MUL r/m16 118-133/(128-143)+EA
  11033. NEG r/m8 3/16+EA
  11034. NEG r/m16 3/24+EA
  11035. NOP 3
  11036. NOT r/m8 3/16+EA
  11037. NOT r/m16 3/24+EA
  11038. OR AL,imm8 4
  11039. OR AX,imm16 4
  11040. OR r/m8,imm8 4/17+EA
  11041. OR r/m16,imm16 4/25+EA
  11042. OR r/m8,r8 3/16+EA
  11043. OR r/m16,r16 3/24+EA
  11044. OR r8,r/m8 3/9+EA
  11045. OR r16,r/m16 3/13+EA
  11046. OUT imm8,AL 10
  11047. OUT imm8,AX 14
  11048. OUT DX,AL 8
  11049. OUT DX,AX 12
  11050. POP m16 25+EA
  11051. POP r16 12
  11052. POP sreg 12
  11053. POPF 12
  11054. PUSH r/m16 15/24+EA
  11055. PUSH r16 15
  11056. PUSH sreg 14
  11057. PUSHF 14
  11058. RCL r/m8,1 2/15+EA
  11059. RCL r/m16,1 2/23+EA
  11060. RCL r/m8,CL 8+4*bit/20+EA+4*bit
  11061. RCL r/m16,CL 8+4*bit/28+EA+4*bit
  11062. RCR r/m8,1 2/15+EA
  11063. RCR r/m16,1 2/23+EA
  11064. RCR r/m8,CL 8+4*bit/20+EA+4*bit
  11065. RCR r/m16,CL 8+4*bit/28+EA+4*bit
  11066. ROL r/m8,1 2/15+EA
  11067. ROL r/m16,1 2/23+EA
  11068. ROL r/m8,CL 8+4*bit/20+EA+4*bit
  11069. ROL r/m16,CL 8+4*bit/28+EA+4*bit
  11070. ROR r/m8,1 2/15+EA
  11071. ROR r/m16,1 2/23+EA
  11072. ROR r/m8,CL 8+4*bit/20+EA+4*bit
  11073. ROR r/m16,CL 8+4*bit/28+EA+4*bit
  11074. REP MOVSB 9+17*reps
  11075. REP MOVSW 9+25*reps
  11076. REP LODSB n/a
  11077. REP LODSW n/a
  11078. REP STOSB 9+10*reps
  11079. REP STOSW 9+14*reps
  11080. REPE CMPSB 9+17*reps
  11081. REPE CMPSW 9+25*reps
  11082. REPE SCASB 9+15*reps
  11083. REPE SCASW 9+19*reps
  11084. REPNE CMPSB 9+17*reps
  11085. REPNE CMPSW 9+25*reps
  11086. REPNE SCASB 9+15*reps
  11087. REPNE SCASW 9+19*reps
  11088. RET (near) 20
  11089. RET imm16 (near) 24
  11090. RET (far) 32
  11091. RET imm16 (far) 31
  11092. SAHF 4
  11093. SAL r/m8,1 2/15+EA
  11094. SAL r/m16,1 2/23+EA
  11095. SAL r/m8,CL 8+4*bit/20+EA+4*bit
  11096. SAL r/m16,CL 8+4*bit/28+EA+4*bit
  11097. SAR r/m8,1 2/15+EA
  11098. SAR r/m16,1 2/23+EA
  11099. SAR r/m8,CL 8+4*bit/20+EA+4*bit
  11100. SAR r/m16,CL 8+4*bit/28+EA+4*bit
  11101. SHL r/m8,1 2/15+EA
  11102. SHL r/m16,1 2/23+EA
  11103. SHL r/m8,CL 8+4*bit/20+EA+4*bit
  11104. SHL r/m16,CL 8+4*bit/28+EA+4*bit
  11105. SHR r/m8,1 2/15+EA
  11106. SHR r/m16,1 2/23+EA
  11107. SHR r/m8,CL 8+4*bit/20+EA+4*bit
  11108. SHR r/m16,CL 8+4*bit/28+EA+4*bit
  11109. SBB AL,imm8 4
  11110. SBB AX,imm16 4
  11111. SBB r/m8,imm8 4/17+EA
  11112. SBB r/m16,imm8 4/25+EA
  11113. SBB r/m16,imm16 4/25+EA
  11114. SBB r/m8,r8 3/16+EA
  11115. SBB r/m16,r16 3/24+EA
  11116. SBB r8,r/m8 3/9+EA
  11117. SBB r16,r/m16 3/16+EA
  11118. SCASB 15
  11119. SCASW 19
  11120. SETALC n/a
  11121. STC 2
  11122. STD 2
  11123. STI 2
  11124. STOSB 11
  11125. STOSW 15
  11126. SUB AL,imm8 4
  11127. SUB AX,imm16 4
  11128. SUB r/m8,imm8 4/17+EA
  11129. SUB r/m16,imm8 4/25+EA
  11130. SUB r/m16,imm16 4/25+EA
  11131. SUB r/m8,r8 3/16+EA
  11132. SUB r/m16,r16 3/24+EA
  11133. SUB r8,r/m8 3/9+EA
  11134. SUB r16,r/m16 3/13+EA
  11135. TEST AL,imm8 4
  11136. TEST AX,imm16 4
  11137. TEST r/m8,imm8 5/11+EA
  11138. TEST r/m16,imm16 5/11+EA
  11139. TEST r/m8,r8 3/9+EA
  11140. TEST r/m16,r16 3/13+EA
  11141. WAIT 3+5*number_of_wait_cycles
  11142. XCHG AX,r16 3
  11143. XCHG r/m8,r8 4/17+EA
  11144. XCHG r/m16,r16 4/25+EA
  11145. XLAT 11
  11146. XOR AL,imm8 4
  11147. XOR AX,imm16 4
  11148. XOR r/m8,imm8 4/17+EA
  11149. XOR r/m16,imm16 4/25+EA
  11150. XOR r/m8,r8 3/16+EA
  11151. XOR r/m16,r16 3/24+EA
  11152. XOR r8,r/m8 3/9+EA
  11153. XOR r16,r/m16 3/13+EA
  11154. (END)
  11155. ----------------------------------------------------------
  11156. APPENDIX Y1 - Vendor Instruction Time for Intel i80186 CPU
  11157. AAA 8
  11158. AAD 15
  11159. AAD imm8 15 ?? (n/a)
  11160. AAM 19
  11161. AAM imm8 19 ?? (n/a)
  11162. AAS 7
  11163. ADC AL,imm8 3
  11164. ADC AX,imm16 4
  11165. ADC r/m8,imm8 4/16
  11166. ADC r/m16,imm16 4/16
  11167. ADC r/m8,r8 3/15
  11168. ADC r/m16,r16 3/15
  11169. ADC r8,r/m8 3/10
  11170. ADC r16,r/m16 3/10
  11171. ADD AL,imm8 3
  11172. ADD AX,imm16 4
  11173. ADD r/m8,imm8 4/16
  11174. ADD r/m32,imm8 4/16
  11175. ADD r/m8,r8 3/15
  11176. ADD r/m16,r16 3/15
  11177. ADD r8,r/m8 3/10
  11178. ADD r16,r/m16 3/10
  11179. AND AL,imm8 3
  11180. AND AX,imm16 4
  11181. AND r/m8,imm8 4/16
  11182. AND r/m16,imm16 4/16
  11183. AND r/m8,r8 3/15
  11184. AND r/m16,r16 3/15
  11185. AND r8,r/m8 3/10
  11186. AND r16,r/m16 3/10
  11187. BOUND r16,m16&16 33-35
  11188. CALL rel16 15
  11189. CALL r/m16 13/19
  11190. CALL ptr16:16 23
  11191. CALL m16:16 38
  11192. CBW 2
  11193. CLC 2
  11194. CLD 2
  11195. CLI 2
  11196. CMC 2
  11197. CMP AL,imm8 3
  11198. CMP AX,imm16 4
  11199. CMP r/m8,imm8 3/10
  11200. CMP r/m16,imm16 3/10
  11201. CMP r/m8,r8 3/10
  11202. CMP r/m16,r16 3/10
  11203. CMP r8,r/m8 3/10
  11204. CMP r16,r/m16 3/10
  11205. CMPSB 22
  11206. CMPSW 22
  11207. CWD 4
  11208. DAA 4
  11209. DAS 4
  11210. DEC r/m8 3/15
  11211. DEC r/m16 3/15
  11212. DEC r16 3
  11213. DIV r/m8 29/35
  11214. DIV r/m16 38/44
  11215. ESC imm4,r/m n/a
  11216. ENTER imm16,0 15
  11217. ENTER imm16,1 25
  11218. ENTER imm16,imm8 22+16*(level-1)
  11219. HLT 2
  11220. IDIV r/m8 44-52/50-58
  11221. IDIV r/m16 53-61/59-67
  11222. IMUL r/m8 25-28/31-34
  11223. IMUL r/m16 34-47/40-43
  11224. IMUL r16,imm8 22-25/29-32 (~)
  11225. IMUL r16,imm16 22-25/29-32 (~)
  11226. IMUL r16,r/m16,imm8 22-25/29-32 (~)
  11227. IMUL r16,r/m16,imm16 22-25/29-32 (~)
  11228. IN AL,imm8 10
  11229. IN AX,imm8 10
  11230. IN AL,DX 8
  11231. IN AX,DX 8
  11232. INC r/m8 3/15
  11233. INC r/m16 3/15
  11234. INC r16 3
  11235. INSB 14
  11236. INSW 14
  11237. INT 3 45
  11238. INT imm8 47
  11239. INTO 4 or 48
  11240. IRET 28
  11241. Jcc rel8 4 or 13
  11242. JCXZ rel8 5 or 15
  11243. JMP rel8 14
  11244. JMP rel16 14
  11245. JMP r/m16 11/17
  11246. JMP ptr16:16 14
  11247. JMP m16:16 26
  11248. LAHF 2
  11249. LDS r16,m16:16 18
  11250. LES r16,m16:16 18
  11251. LEA r16,m 6
  11252. LEAVE 8
  11253. LODSB 12
  11254. LODSW 12
  11255. LOOP rel8 6 or 16
  11256. LOOPE rel8 6 or 16
  11257. LOOPNE rel8 6 or 16
  11258. MOV r/m8,r8 2/12
  11259. MOV r/m16,r16 2/12
  11260. MOV r8,r/m8 2/9
  11261. MOV r16,r/m16 2/9
  11262. MOV r/m16,sreg 2/11
  11263. MOV sreg,r/m16 2/9
  11264. MOV AL,moffs8 8
  11265. MOV AX,moffs16 8
  11266. MOV moffs8,AL 9
  11267. MOV moffs16,AX 9
  11268. MOV r8,imm8 3
  11269. MOV r16,imm16 4
  11270. MOV r/m8,imm8 3/12
  11271. MOV r/m16,imm16 4/13
  11272. MOVSB 14
  11273. MOVSW 14
  11274. MUL r/m8 26-28/32-34
  11275. MUL r/m16 35-37/41-43
  11276. NEG r/m8 3/10
  11277. NEG r/m16 3/10
  11278. NOP 3
  11279. NOT r/m8 3/10
  11280. NOT r/m16 3/10
  11281. OR AL,imm8 3
  11282. OR AX,imm16 4
  11283. OR r/m8,imm8 4/16
  11284. OR r/m16,imm16 4/16
  11285. OR r/m8,r8 3/15
  11286. OR r/m16,r16 3/15
  11287. OR r8,r/m8 3/10
  11288. OR r16,r/m16 3/10
  11289. OUT imm8,AL 9
  11290. OUT imm8,AX 9
  11291. OUT DX,AL 7
  11292. OUT DX,AX 7
  11293. OUTSB 14
  11294. OUTSW 14
  11295. POP m16 20
  11296. POP r16 10
  11297. POP sreg 8
  11298. POPA 51
  11299. POPF 8
  11300. PUSH r/m16 10/16
  11301. PUSH r16 10
  11302. PUSH imm8 10
  11303. PUSH imm16 10
  11304. PUSH sreg 9
  11305. PUSHA 36
  11306. PUSHF 9
  11307. RCL r/m8,1 2/15
  11308. RCL r/m16,1 2/15
  11309. RCL r/m8,CL 5+n/17+n
  11310. RCL r/m16,CL 5+n/17+n
  11311. RCL r/m8,imm8 5+n/17+n
  11312. RCL r/m16,imm8 5+n/17+n
  11313. RCR r/m8,1 2/15
  11314. RCR r/m16,1 2/15
  11315. RCR r/m8,CL 5+n/17+n
  11316. RCR r/m16,CL 5+n/17+n
  11317. RCR r/m8,imm8 5+n/17+n
  11318. RCR r/m16,imm8 5+n/17+n
  11319. ROL r/m8,1 2/15
  11320. ROL r/m16,1 2/15
  11321. ROL r/m8,CL 5+n/17+n
  11322. ROL r/m16,CL 5+n/17+n
  11323. ROL r/m8,imm8 5+n/17+n
  11324. ROL r/m16,imm8 5+n/17+n
  11325. ROR r/m8,1 2/15
  11326. ROR r/m16,1 2/15
  11327. ROR r/m8,CL 5+n/17+n
  11328. ROR r/m16,CL 5+n/17+n
  11329. ROR r/m8,imm8 5+n/17+n
  11330. ROR r/m16,imm8 5+n/17+n
  11331. RET (near) 16
  11332. RET (far) 22
  11333. RET imm16 (near) 18
  11334. RET imm16 (far) 25
  11335. SAHF 3
  11336. SAL r/m8,1 2/15
  11337. SAL r/m16,1 2/15
  11338. SAL r/m8,CL 5+n/17+n
  11339. SAL r/m16,CL 5+n/17+n
  11340. SAL r/m8,imm8 5+n/17+n
  11341. SAL r/m16,imm8 5+n/17+n
  11342. SAR r/m8,1 2/15
  11343. SAR r/m16,1 2/15
  11344. SAR r/m8,CL 5+n/17+n
  11345. SAR r/m16,CL 5+n/17+n
  11346. SAR r/m8,imm8 5+n/17+n
  11347. SAR r/m16,imm8 5+n/17+n
  11348. SHL r/m8,1 2/15
  11349. SHL r/m16,1 2/15
  11350. SHL r/m8,CL 5+n/17+n
  11351. SHL r/m16,CL 5+n/17+n
  11352. SHL r/m8,imm8 5+n/17+n
  11353. SHL r/m16,imm8 5+n/17+n
  11354. SHR r/m8,1 2/15
  11355. SHR r/m16,1 2/15
  11356. SHR r/m8,CL 5+n/17+n
  11357. SHR r/m16,CL 5+n/17+n
  11358. SHR r/m8,imm8 5+n/17+n
  11359. SHR r/m16,imm8 5+n/17+n
  11360. SBB AL,imm8 3
  11361. SBB AX,imm16 4
  11362. SBB r/m8,imm8 4/16
  11363. SBB r/m16,imm16 4/16
  11364. SBB r/m8,r8 3/15
  11365. SBB r/m16,r16 3/15
  11366. SBB r8,r/m8 3/10
  11367. SBB r16,r/m16 3/10
  11368. SCASB 15
  11369. SCASW 15
  11370. SETALC n/a
  11371. STC 2
  11372. STD 2
  11373. STI 2
  11374. STOSB 10
  11375. STOSW 10
  11376. SUB AL,imm8 3
  11377. SUB AX,imm16 4
  11378. SUB r/m8,imm8 4/16
  11379. SUB r/m16,imm16 4/16
  11380. SUB r/m8,r8 3/15
  11381. SUB r/m16,r16 3/15
  11382. SUB r8,r/m8 3/10
  11383. SUB r16,r/m16 3/10
  11384. TEST AL,imm8 3
  11385. TEST AX,imm16 4
  11386. TEST r/m8,imm8 4/10
  11387. TEST r/m16,imm16 4/10
  11388. TEST r/m8,r8 3/10
  11389. TEST r/m16,r16 3/10
  11390. WAIT 6 (min)
  11391. XCHG AX,r16 3
  11392. XCHG r/m8,r8 4/17
  11393. XCHG r/m16,r16 4/17
  11394. XLAT 11
  11395. XOR AL,imm8 3
  11396. XOR AX,imm16 4
  11397. XOR r/m8,imm8 4/16
  11398. XOR r/m16,imm16 4/16
  11399. XOR r/m8,r8 3/15
  11400. XOR r/m16,r16 3/15
  11401. XOR r8,r/m8 3/10
  11402. XOR r16,r/m16 3/10
  11403. (END)
  11404. ----------------------------------------------------------
  11405. APPENDIX Y2 - Vendor Instruction Time for NEC V20 CPU
  11406. AAA 3
  11407. AAD 7
  11408. AAD imm8 7
  11409. AAM 15
  11410. AAM imm8 15
  11411. AAS 3
  11412. ADC AL,imm8 4
  11413. ADC AX,imm16 4
  11414. ADC r/m8,imm8 4/18
  11415. ADC r/m16,imm16 4/26
  11416. ADC r/m8,r8 2/15
  11417. ADC r/m16,r16 2/24
  11418. ADC r8,r/m8 2/11
  11419. ADC r16,r/m16 2/15
  11420. ADD AL,imm8 4
  11421. ADD AX,imm16 4
  11422. ADD r/m8,imm8 4/18
  11423. ADD r/m16,imm16 4/26
  11424. ADD r/m8,r8 2/15
  11425. ADD r/m16,r16 2/24
  11426. ADD r8,r/m8 2/11
  11427. ADD r16,r/m16 2/15
  11428. AND AL,imm8 4
  11429. AND AX,imm16 4
  11430. AND r/m8,imm8 4/18
  11431. AND r/m16,imm16 4/26
  11432. AND r/m8,r8 2/15
  11433. AND r/m16,r16 2/24
  11434. AND r8,r/m8 2/11
  11435. AND r16,r/m16 2/15
  11436. BOUND r16,m16&16 18-23/73-76
  11437. CALL rel16 16-20
  11438. CALL r/m16 14-18/23-31
  11439. CALL ptr16:16 21-29
  11440. CALL m16:16 31-47
  11441. CBW 2
  11442. CLC 2
  11443. CLD 2
  11444. CLI 2
  11445. CMC 2
  11446. CMP AL,imm8 4
  11447. CMP AX,imm16 4
  11448. CMP r/m8,imm8 4/13
  11449. CMP r/m16,imm16 4/17
  11450. CMP r/m8,r8 2/11
  11451. CMP r/m16,r16 2/15
  11452. CMP r8,r/m8 2/11
  11453. CMP r16,r/m16 2/15
  11454. CMPSB 7+14n !!
  11455. CMPSW 7+14n !!
  11456. CWD 4-5
  11457. DAA 3
  11458. DAS 7
  11459. DEC r/m8 2/16
  11460. DEC r/m16 2/24
  11461. DEC r16 2
  11462. DIV r/m8 19/25
  11463. DIV r/m16 25/35
  11464. ESC imm4,r/m n/a
  11465. ENTER imm16,0 16
  11466. ENTER imm16,1 23 ??
  11467. ENTER imm16,imm8 23+16*(level-1)
  11468. HLT 2
  11469. IDIV r/m8 29/35
  11470. IDIV r/m16 43/53
  11471. IMUL r/m8 33/39
  11472. IMUL r/m16 47/57
  11473. IMUL r16,r/m16,imm8 28-34/34-44
  11474. IMUL r16,r/m16,imm16 36-42/46-52
  11475. IN AL,imm8 9
  11476. IN AX,imm8 13
  11477. IN AL,DX 8
  11478. IN AX,DX 12
  11479. INC r/m8 2/16
  11480. INC r/m16 2/24
  11481. INC r16 2
  11482. INSB 9+8n !!
  11483. INSW 9+8n !!
  11484. INT 3 38-50
  11485. INT imm8 38-50
  11486. INTO 3 or 52
  11487. IRET 27-39
  11488. Jcc rel8 4 or 14
  11489. JCXZ rel8 5 or 13
  11490. JMP rel8 12
  11491. JMP rel16 13
  11492. JMP r/m16 11/20-24
  11493. JMP ptr16:16 15
  11494. JMP m16:16 27-35
  11495. LAHF 2
  11496. LDS r16,m16:16 18-26
  11497. LES r16,m16:16 18-26
  11498. LEA r16,m 4
  11499. LEAVE 6/10
  11500. LODSB 7+9n !!
  11501. LODSW 7+9n !!
  11502. LOOP rel8 5 or 13
  11503. LOOPE rel8 5 or 14
  11504. LOOPNE rel8 5 or 14
  11505. MOV r/m8,r8 2/9
  11506. MOV r/m16,r16 2/13
  11507. MOV r8,r/m8 2/11
  11508. MOV r16,r/m16 2/15
  11509. MOV r/m16,sreg 2/10-14
  11510. MOV sreg,r/m16 2/11-15
  11511. MOV AL,moffs8 10
  11512. MOV AX,moffs16 14
  11513. MOV moffs8,AL 9
  11514. MOV moffs16,AX 13
  11515. MOV r8,imm8 4
  11516. MOV r16,imm16 4
  11517. MOV r/m8,imm8 4/11
  11518. MOV r/m16,imm16 4/15
  11519. MOVSB 11+8n !!
  11520. MOVSW 11+8n !!
  11521. MUL r/m8 21/27
  11522. MUL r/m16 30/36
  11523. NEG r/m8 2/16
  11524. NEG r/m16 2/24
  11525. NOP 3
  11526. NOT r/m8 2/16
  11527. NOT r/m16 2/24
  11528. OR AL,imm8 4
  11529. OR AX,imm16 4
  11530. OR r/m8,imm8 4/18
  11531. OR r/m16,imm16 4/26
  11532. OR r/m8,r8 2/15
  11533. OR r/m16,r16 2/24
  11534. OR r8,r/m8 2/11
  11535. OR r16,r/m16 2/15
  11536. OUT imm8,AL 8
  11537. OUT imm8,AX 12
  11538. OUT DX,AL 8
  11539. OUT DX,AX 12
  11540. OUTSB 9+8n !!
  11541. OUTSW 9+8n !!
  11542. POP m16 17-25
  11543. POP r16 8-12
  11544. POP sreg 8-12
  11545. POPA 43-75
  11546. POPF 8-12
  11547. PUSH r/m16 8-12/18-26
  11548. PUSH r16 8-12
  11549. PUSH imm8 7
  11550. PUSH imm16 12
  11551. PUSH sreg 8-12
  11552. PUSHA 35-67
  11553. PUSHF 8-12
  11554. RCL r/m8,1 2/2-4
  11555. RCL r/m16,1 2/2-4
  11556. RCL r/m8,CL 7+n/19+n
  11557. RCL r/m16,CL 7+n/27+n
  11558. RCL r/m8,imm8 7+n/19+n
  11559. RCL r/m16,imm8 7+n/27+n
  11560. RCR r/m8,1 2/16
  11561. RCR r/m16,1 2/24
  11562. RCR r/m8,CL 7+n/19+n
  11563. RCR r/m16,CL 7+n/27+n
  11564. RCR r/m8,imm8 7+n/19+n
  11565. RCR r/m16,imm8 7+n/27+n
  11566. ROL r/m8,1 2/16
  11567. ROL r/m16,1 2/24
  11568. ROL r/m8,CL 7+n/19+n
  11569. ROL r/m16,CL 7+n/27+n
  11570. ROL r/m8,imm8 7+n/19+n
  11571. ROL r/m16,imm8 7+n/27+n
  11572. ROR r/m8,1 2/16
  11573. ROR r/m16,1 2/24
  11574. ROR r/m8,CL 7+n/19+n
  11575. ROR r/m16,CL 7+n/27+n
  11576. ROR r/m8,imm8 2/16
  11577. ROR r/m16,imm8 2/24
  11578. RET (near) 15-19
  11579. RET (far) 21-29
  11580. RET imm16 (near) 20-24
  11581. RET imm16 (far) 24-32
  11582. SAHF 3
  11583. SAL r/m8,1 2/16
  11584. SAL r/m16,1 2/24
  11585. SAL r/m8,CL 7+n/19+n
  11586. SAL r/m16,CL 7+n/27+n
  11587. SAL r/m8,imm8 7+n/19+n
  11588. SAL r/m16,imm8 7+n/27+n
  11589. SAR r/m8,1 2/16
  11590. SAR r/m16,1 2/24
  11591. SAR r/m8,CL 7+n/19+n
  11592. SAR r/m16,CL 7+n/27+n
  11593. SAR r/m8,imm8 7+n/19+n
  11594. SAR r/m16,imm8 7+n/27+n
  11595. SHL r/m8,1 2/16
  11596. SHL r/m16,1 2/24
  11597. SHL r/m8,CL 7+n/19+n
  11598. SHL r/m16,CL 7+n/27+n
  11599. SHL r/m8,imm8 7+n/19+n
  11600. SHL r/m16,imm8 7+n/27+n
  11601. SHR r/m8,1 2/16
  11602. SHR r/m16,1 2/24
  11603. SHR r/m8,CL 7+n/19+n
  11604. SHR r/m16,CL 7+n/27+n
  11605. SHR r/m8,imm8 7+n/19+n
  11606. SHR r/m16,imm8 7+n/27+n
  11607. SBB AL,imm8 4
  11608. SBB AX,imm16 4
  11609. SBB r/m8,imm8 4/18
  11610. SBB r/m16,imm16 4/26
  11611. SBB r/m8,r8 2/15
  11612. SBB r/m16,r16 2/24
  11613. SBB r8,r/m8 2/11
  11614. SBB r16,r/m16 2/15
  11615. SCASB 7+10n !!
  11616. SCASW 7+10n!!
  11617. SETALC n/a
  11618. STC 2
  11619. STD 2
  11620. STI 2
  11621. STOSB 7+4n !!
  11622. STOSW 7+4n !!
  11623. SUB AL,imm8 4
  11624. SUB AX,imm16 4
  11625. SUB r/m8,imm8 4/18
  11626. SUB r/m16,imm16 4/26
  11627. SUB r/m8,r8 2/15
  11628. SUB r/m16,r16 2/24
  11629. SUB r8,r/m8 2/11
  11630. SUB r16,r/m16 2/15
  11631. TEST AL,imm8 4
  11632. TEST AX,imm16 4
  11633. TEST r/m8,imm8 4/11
  11634. TEST r/m16,imm16 4/15
  11635. TEST r/m8,r8 2/10
  11636. TEST r/m16,r16 2/14
  11637. WAIT 2+5n (n = number of times POLL pin sampled)
  11638. XCHG AX,r16 2
  11639. XCHG r/m8,r8 3/16
  11640. XCHG r/m16,r16 3/24
  11641. XLAT 9
  11642. XOR AL,imm8 4
  11643. XOR AX,imm16 4
  11644. XOR r/m8,imm8 4/18
  11645. XOR r/m16,imm16 4/26
  11646. XOR r/m8,r8 2/15
  11647. XOR r/m16,r16 2/24
  11648. XOR r8,r/m8 2/11
  11649. XOR r16,r/m16 2/15
  11650. (END)
  11651. ----------------------------------------------------------
  11652. APPENDIX Y3 - Vendor Instruction Time for Intel i286 CPU
  11653. AAA 3
  11654. AAD 14
  11655. AAD imm8 n/a
  11656. AAM 16
  11657. AAM imm8 n/a
  11658. AAS 3
  11659. ADC AL,imm8 3
  11660. ADC AX,imm16 3
  11661. ADC r/m8,imm8 3/7+EA
  11662. ADC r/m16,imm16 3/7+EA
  11663. ADC r/m8,r8 2/7+EA
  11664. ADC r/m16,r16 2/7+EA
  11665. ADC r8,r/m8 2/7+EA
  11666. ADC r16,r/m16 2/7+EA
  11667. ADD AL,imm8 3
  11668. ADD AX,imm16 3
  11669. ADD r/m8,imm8 3/7+EA
  11670. ADD r/m16,imm16 3/7+EA
  11671. ADD r/m8,r8 2/7+EA
  11672. ADD r/m16,r16 2/7+EA
  11673. ADD r8,r/m8 2/7+EA
  11674. ADD r16,r/m16 2/7+EA
  11675. AND AL,imm8 3
  11676. AND AX,imm16 3
  11677. AND r/m8,imm8 3/7+EA
  11678. AND r/m16,imm16 3/7+EA
  11679. AND r/m8,r8 2/7+EA
  11680. AND r/m16,r16 2/7+EA
  11681. AND r8,r/m8 2/7+EA
  11682. AND r16,r/m16 2/7+EA
  11683. ARPL r/m16,r16 10/11+EA
  11684. BOUND r16,m16&16 13+EA
  11685. CALL rel16 7+m
  11686. CALL r/m16 7+m/11+m
  11687. CALL ptr16:16 13+m
  11688. CALL ptr16:16 (PM, direct segment) 26+m
  11689. CALL ptr16:16 (PM, via call gate, same p 41+m
  11690. CALL ptr16:16 (PM, via call gate, more p 82+m
  11691. CALL ptr16:16 (PM, via call gate, more p 86+4*param+m
  11692. CALL m16:16 16+m
  11693. CALL m16:16 (PM, direct segment) 29+m
  11694. CALL m16:16 (PM, via gate, same priveleg44+m
  11695. CALL m16:16 (PM, via gate, more priveleg83+m
  11696. CALL m16:16 (PM, via gate, more priveleg90+4*param+m
  11697. CBW 2
  11698. CLC 2
  11699. CLD 2
  11700. CLI 3
  11701. CLTS 2
  11702. CMC 2
  11703. CMP AL,imm8 3
  11704. CMP AX,imm16 3
  11705. CMP r/m8,imm8 3/6+
  11706. CMP r/m16,imm8 3/6+EA
  11707. CMP r/m16,imm16 3/6+EA
  11708. CMP r/m8,r8 2/7+EA
  11709. CMP r/m16,r16 2/7+EA
  11710. CMP r8,r/m8 2/6+EA
  11711. CMP r16,r/m16 2/6+EA
  11712. CMPSB f
  11713. CMPSW f
  11714. CWD 2
  11715. DAA 3
  11716. DAS 3
  11717. DEC r/m8 2/7+EA
  11718. DEC r/m16 2/7+EA
  11719. DEC r16 2
  11720. DIV r/m8 14/17+EA
  11721. DIV r/m16 22/25+EA
  11722. ESC imm4,r/m (9-20)+EA
  11723. ENTER imm16,0 11
  11724. ENTER imm16,1 15
  11725. ENTER imm16,imm8 16+4*(n-1)
  11726. HLT 2
  11727. IDIV r/m8 17/20+EA
  11728. IDIV r/m16 25/28+EA
  11729. IMUL r/m8 13/16+EA
  11730. IMUL r/m16 21/24+EA
  11731. IMUL r16,r/m16 21/24+EA
  11732. IMUL r16,imm8 ??
  11733. IMUL r16,imm16 ??
  11734. IMUL r16,r/m16,imm8 21/24+EA
  11735. IMUL r16,r/m16,imm16 21/24+EA
  11736. IN AL,imm8 5
  11737. IN AL,imm8 (PM, CPL <= IOPL) 5
  11738. IN AX,imm8 5
  11739. IN AX,imm8 (PM, CPL <= IOPL) 5
  11740. IN AL,DX 5
  11741. IN AL,DX (PM, CPL <= IOPL) 5
  11742. IN AX,DX 5
  11743. IN AX,DX (PM, CPL <= IOPL) 5
  11744. INC r/m8 2/7+EA
  11745. INC r/m16 2/7+EA
  11746. INC r16 2
  11747. INSB f
  11748. INSW f
  11749. INT 3 23+m
  11750. INT 3 (PM, same privilege) 40+m
  11751. INT 3 (PM, more privelege) 78+m
  11752. INT imm8 23+m
  11753. INT imm8 (PM, same privilege) 40+m
  11754. INT imm8 (PM, more privelege) 78+m
  11755. INTO 24+m or 3
  11756. INTO (PM, same privilege) 40+m or 3
  11757. INTO (PM, more privelege) 78+m or 3
  11758. IRET 17
  11759. IRET (PM, to same privilege) 31+m
  11760. IRET (PM, to lesser privilege) 55+m
  11761. Jcc rel8 7+m or 3
  11762. JCXZ rel8 8+m or 4
  11763. JMP rel8 7+m
  11764. JMP rel16 7+m
  11765. JMP r/m16 7/11+m
  11766. JMP ptr16:16 11/23+m
  11767. JMP ptr16:16 (PM, direct segment) f
  11768. JMP ptr16:16 (PM, via call gate, same pr38+m
  11769. JMP m16:16 15/26+m
  11770. JMP m16:16 (PM, direct segment) f
  11771. JMP m16:16 (PM, via call gate, same priv41+m
  11772. LAHF 2
  11773. LAR r16,r/m16 14/16+
  11774. LDS r16,m16:16 7+/21+
  11775. LDS r16,m16:16 (PM) f
  11776. LDS r32,m16:32 (PM) f
  11777. LES r16,m16:16 7+/21+
  11778. LES r16,m16:16 (PM) f
  11779. LES r32,m16:32 (PM) f
  11780. LEA r16,m 3+
  11781. LEAVE 5
  11782. LGDT m16&32 11+
  11783. LIDT m16&32 12+
  11784. LLDT r/m16 17/19+
  11785. LMSW r/m16 3/6+
  11786. LOADALL f
  11787. LODSB 5+4*n
  11788. LODSW 5+4*n
  11789. LOOP rel8 8/4
  11790. LOOPE rel8 8/4
  11791. LOOPNE rel8 8/4
  11792. LSL r16,r/m16 14/16
  11793. LTR r/m16 17/19+
  11794. MOV r/m8,r8 2/3+
  11795. MOV r/m16,r16 2/3+
  11796. MOV r8,r/m8 2/5+
  11797. MOV r16,r/m16 2/5+
  11798. MOV r/m16,sreg 2/3+
  11799. MOV sreg,r/m16 2/5+
  11800. MOV sreg,r/m16 (PM) 17/19+
  11801. MOV AL,moffs8 5
  11802. MOV AX,moffs16 5
  11803. MOV moffs8,AL 3
  11804. MOV moffs16,AX 3
  11805. MOV r8,imm8 2
  11806. MOV r16,imm16 2
  11807. MOV r/m8,imm8 2/3+
  11808. MOV r/m16,imm16 2/3+
  11809. MOVSB 5+4*n
  11810. MOVSW 5
  11811. MUL r/m8 13/16+
  11812. MUL r/m16 21/24+
  11813. NEG r/m8 2/7
  11814. NEG r/m16 2/7
  11815. NOP 3
  11816. NOT r/m8 2/7
  11817. NOT r/m16 2/7
  11818. OR AL,imm8 3
  11819. OR AX,imm16 3
  11820. OR r/m8,imm8 3/7
  11821. OR r/m16,imm16 3/7
  11822. OR r/m8,r8 2/7
  11823. OR r/m16,r16 2/7
  11824. OR r8,r/m8 2/7
  11825. OR r16,r/m16 2/7
  11826. OUT imm8,AL 3
  11827. OUT imm8,AL (PM, CPL <= IOPL) 3
  11828. OUT imm8,AX 3
  11829. OUT imm8,AX (PM, CPL <= IOPL) 3
  11830. OUT DX,AL 3
  11831. OUT DX,AL (PM, CPL <= IOPL) 3
  11832. OUT DX,AX 3
  11833. OUT DX,AX (PM, CPL <= IOPL) 3
  11834. OUTSB 5+4*n
  11835. OUTSW 5
  11836. POP m16 5+
  11837. POP r16 5
  11838. POP sreg 5/20
  11839. POP sreg (PM) 20
  11840. POPA 19
  11841. POPF 5
  11842. POPF (PM) 5
  11843. PUSH r/m16 5+
  11844. PUSH r16 3
  11845. PUSH imm8 3
  11846. PUSH imm16 3
  11847. PUSH sreg 3
  11848. PUSHA 17+
  11849. PUSHF 3
  11850. PUSHF (PM) 3
  11851. RCL r/m8,1 2/7
  11852. RCL r/m16,1 2/7
  11853. RCL r/m8,CL 5/8+n
  11854. RCL r/m16,CL 5/8+n
  11855. RCL r/m8,imm8 5/8+n
  11856. RCL r/m16,imm8 5/8+n
  11857. RCR r/m8,1 2/7
  11858. RCR r/m16,1 2/7
  11859. RCR r/m8,CL 5/8+n
  11860. RCR r/m16,CL 5/8+n
  11861. RCR r/m8,imm8 5/8+n
  11862. RCR r/m16,imm8 5/8+n
  11863. ROL r/m8,1 2/7
  11864. ROL r/m16,1 2/7
  11865. ROL r/m8,CL 5/8+n
  11866. ROL r/m16,CL 5/8+n
  11867. ROL r/m8,imm8 5/8+n
  11868. ROL r/m16,imm8 5/8+n
  11869. ROR r/m8,1 2/7
  11870. ROR r/m16,1 2/7
  11871. ROR r/m8,CL 5/8+n
  11872. ROR r/m16,CL 5/8+n
  11873. ROR r/m8,imm8 5/8+n
  11874. ROR r/m16,imm8 5/8+n
  11875. RDTSC f
  11876. RET (near) 11+m
  11877. RET (far) 15+m
  11878. RET (PM, far, same PL) 25+m
  11879. RET (PM, far, different PL) 55+m
  11880. RET imm16 (near) 11+m
  11881. RET imm16 (far) 15+m
  11882. RET imm16 (PM, far, same PL) 25+m
  11883. RET imm16 (PM, far, different PL) 55+m
  11884. SAHF 2
  11885. SAL r/m8,1 2/7
  11886. SAL r/m16,1 2/7
  11887. SAL r/m8,CL 5/8+n
  11888. SAL r/m16,CL 5/8+n
  11889. SAL r/m8,imm8 5/8+n
  11890. SAL r/m16,imm8 5/8+n
  11891. SAR r/m8,1 2/7
  11892. SAR r/m16,1 2/7
  11893. SAR r/m8,CL 5/8+n
  11894. SAR r/m16,CL 5/8+n
  11895. SAR r/m8,imm8 5/8+n
  11896. SAR r/m16,imm8 5/8+n
  11897. SHL r/m8,1 2/7
  11898. SHL r/m16,1 2/7
  11899. SHL r/m8,CL 5/8+n
  11900. SHL r/m16,CL 5/8+n
  11901. SHL r/m8,imm8 5/8+n
  11902. SHL r/m16,imm8 5/8+n
  11903. SHR r/m8,1 2/7
  11904. SHR r/m16,1 2/7
  11905. SHR r/m8,CL 5/8+n
  11906. SHR r/m16,CL 5/8+n
  11907. SHR r/m8,imm8 5/8+n
  11908. SHR r/m16,imm8 5/8+n
  11909. SBB AL,imm8 3
  11910. SBB AX,imm16 3
  11911. SBB r/m8,imm8 3/7
  11912. SBB r/m16,imm16 3/7
  11913. SBB r/m8,r8 2/7
  11914. SBB r/m16,r16 2/7
  11915. SBB r8,r/m8 2/7
  11916. SBB r16,r/m16 2/7
  11917. SCASB 5+8*n
  11918. SCASW 5+8*n
  11919. SETALC f
  11920. SGDT m16&32 11+
  11921. SIDT m16&32 12+
  11922. SLDT r/m16 2/3+
  11923. SMINT f
  11924. SMSW r/m16 2/3+
  11925. STC 2
  11926. STD 2
  11927. STI 2
  11928. STOSB 4+3*n
  11929. STOSW 4+3*n
  11930. STR r/m16 2/3
  11931. SUB AL,imm8 3
  11932. SUB AX,imm16 3
  11933. SUB r/m8,imm8 2/7
  11934. SUB r/m16,imm16 2/7
  11935. SUB r/m8,r8 2/6
  11936. SUB r/m16,r16 2/6
  11937. SUB r8,r/m8 2/6
  11938. SUB r16,r/m16 2/6
  11939. TEST AL,imm8 3
  11940. TEST AX,imm16 3
  11941. TEST r/m8,imm8 3/6
  11942. TEST r/m16,imm16 3/6
  11943. TEST r/m8,r8 2/6
  11944. TEST r/m16,r16 2/6
  11945. VERR r/m16 14/16+
  11946. VERW r/m16 14/16+
  11947. WAIT 3
  11948. XCHG AX,r16 3
  11949. XCHG r/m8,r8 3/5+
  11950. XCHG r/m16,r16 3/5+
  11951. XLAT 5
  11952. XOR AL,imm8 3
  11953. XOR AX,imm16 3
  11954. XOR r/m8,imm8 2/7+
  11955. XOR r/m16,imm16 2/7+
  11956. XOR r/m8,r8 2/6
  11957. XOR r/m16,r16 2/6
  11958. XOR r8,r/m8 2/6
  11959. XOR r16,r/m16 2/6
  11960. (END)
  11961. ----------------------------------------------------------
  11962. APPENDIX Y4 - Vendor Instruction Time for Intel i386DX CPU
  11963. AAA 4
  11964. AAD 19
  11965. AAD imm8 n/a
  11966. AAM 17
  11967. AAM imm8 m/a
  11968. AAS 4
  11969. ADC AL,imm8 2
  11970. ADC AX,imm16 2
  11971. ADC EAX,imm32 2
  11972. ADC r/m8,imm8 2/7
  11973. ADC r/m16,imm8 2/7
  11974. ADC r/m32,imm8 2/7
  11975. ADC r/m16,imm16 2/7
  11976. ADC r/m32,imm32 2/7
  11977. ADC r/m8,r8 2/7
  11978. ADC r/m16,r16 2/7
  11979. ADC r/m32,r32 2/7
  11980. ADC r8,r/m8 2/6
  11981. ADC r16,r/m16 2/6
  11982. ADC r32,r/m32 2/6
  11983. ADD AL,imm8 2
  11984. ADD AX,imm16 2
  11985. ADD EAX,imm32 2
  11986. ADD r/m8,imm8 2/7
  11987. ADD r/m16,imm8 2/7
  11988. ADD r/m32,imm8 2/7
  11989. ADD r/m16,imm16 2/7
  11990. ADD r/m32,imm32 2/7
  11991. ADD r/m8,r8 2/7
  11992. ADD r/m16,r16 2/7
  11993. ADD r/m32,r32 2/7
  11994. ADD r8,r/m8 2/6
  11995. ADD r16,r/m16 2/6
  11996. ADD r32,r/m32 2/6
  11997. AND AL,imm8 2
  11998. AND AX,imm16 2
  11999. AND EAX,imm32 2
  12000. AND r/m8,imm8 2/7
  12001. AND r/m16,imm8 2/7
  12002. AND r/m32,imm8 2/7
  12003. AND r/m16,imm16 2/7
  12004. AND r/m32,imm32 2/7
  12005. AND r/m8,r8 2/7
  12006. AND r/m16,r16 2/7
  12007. AND r/m32,r32 2/7
  12008. AND r8,r/m8 2/6
  12009. AND r16,r/m16 2/6
  12010. AND r32,r/m32 2/6
  12011. ARPL r/m16,r16 20/21
  12012. BOUND r16,m16&16 10 or 44
  12013. BOUND r32,m32&32 10 or 44
  12014. BSF r16,r/m16 11+3*n
  12015. BSF r32,r/m32 11+3*n
  12016. BSR r16,r/m16 9+3*n
  12017. BSR r32,r/m32 9+3*n
  12018. BT r/m16,r16 3/12
  12019. BT r/m32,r32 3/12
  12020. BT r/m16,imm8 3/6
  12021. BT r/m16,imm8 3/6
  12022. BTC r/m16,r16 6/13
  12023. BTC r/m32,r32 6/13
  12024. BTC r/m16,imm8 6/8
  12025. BTC r/m16,imm8 6/8
  12026. BTR r/m16,r16 6/13
  12027. BTR r/m32,r32 6/13
  12028. BTR r/m16,imm8 6/8
  12029. BTR r/m16,imm8 6/8
  12030. BTS r/m16,r16 6/13
  12031. BTS r/m32,r32 6/13
  12032. BTS r/m16,imm8 6/8
  12033. BTS r/m16,imm8 6/8
  12034. CALL rel16 7+m
  12035. CALL r/m16 7+m/10+m
  12036. CALL ptr16:16 17+m
  12037. CALL ptr16:16 (PM, direct segment) 34+m
  12038. CALL ptr16:16 (PM, via call gate, same p52+m
  12039. CALL ptr16:16 (PM, via call gate, more p86+m
  12040. CALL ptr16:16 (PM, via call gate, more p94+m+4*x
  12041. CALL m16:16 22+m
  12042. CALL m16:16 (PM, direct segment) 38+m
  12043. CALL m16:16 (PM, via gate, same priveleg56+m
  12044. CALL m16:16 (PM, via gate, more priveleg90+m
  12045. CALL m16:16 (PM, via gate, more priveleg98+m+4*x
  12046. CALL rel32 7+m
  12047. CALL r/m32 7+m/10+m
  12048. CALL ptr16:32 17+m
  12049. CALL ptr16:32 (PM, direct segment) 34+m
  12050. CALL ptr16:32 (PM, via gate, same privel52+m
  12051. CALL ptr16:32 (PM, via gate, more privel86+m
  12052. CALL ptr16:32 (PM, via gate, more privel94+m+4*x
  12053. CALL m16:32 22+m
  12054. CALL m16:32 (PM, direct segment) 38+m
  12055. CALL m16:32 (PM, via gate, same priveleg56+m
  12056. CALL m16:32 (PM, via gate, more priveleg90+m
  12057. CALL m16:32 (PM, via gate, more priveleg98+m+4*x
  12058. CBW 3
  12059. CWDE 2
  12060. CLC 2
  12061. CLD 2
  12062. CLI 3
  12063. CLTS 5
  12064. CMC 2
  12065. CMP AL,imm8 2
  12066. CMP AX,imm16 2
  12067. CMP EAX,imm32 2
  12068. CMP r/m8,imm8 2/5
  12069. CMP r/m16,imm8 2/5
  12070. CMP r/m32,imm8 2/5
  12071. CMP r/m16,imm16 2/5
  12072. CMP r/m32,imm32 2/5
  12073. CMP r/m8,r8 2/5
  12074. CMP r/m16,r16 2/5
  12075. CMP r/m32,r32 2/5
  12076. CMP r8,r/m8 2/6
  12077. CMP r16,r/m16 2/6
  12078. CMP r32,r/m32 2/6
  12079. CMPSB 10
  12080. CMPSW 10
  12081. CMPSD 10
  12082. CWD 2
  12083. CDQ 2
  12084. DAA 4
  12085. DAS 4
  12086. DEC r/m8 2/6
  12087. DEC r/m16 2/6
  12088. DEC r/m32 2/6
  12089. DEC r16 2
  12090. DEC r32 2
  12091. DIV r/m8 14/17
  12092. DIV r/m16 22/25
  12093. DIV r/m32 38/41
  12094. ESC imm4,r/m f
  12095. ENTER imm16,0 10
  12096. ENTER imm16,1 12
  12097. ENTER imm16,imm8 15+4*(n-1)
  12098. HLT 5
  12099. IBTS r/m16,AX,CL,r16 12/19
  12100. IBTS r/m32,EAX,CL,r32 12/19
  12101. IDIV r/m8 19/22
  12102. IDIV r/m16 27/30
  12103. IDIV r/m32 43/46
  12104. IMUL r/m8 12-17/15-20
  12105. IMUL r/m16 12-25/15-28
  12106. IMUL r/m32 12-41/15-44
  12107. IMUL r16,r/m16 12-17/15-20
  12108. IMUL r32,r/m32 12-41/15-44
  12109. IMUL r16,imm8 12-26/14-27
  12110. IMUL r32,imm8 13-42/14-43
  12111. IMUL r16,imm16 9/22-12/25
  12112. IMUL r32,imm32 9/38-12/41
  12113. IMUL r16,r/m16,imm8 9-14/12-17
  12114. IMUL r32,r/m32,imm8 9-14/12-17
  12115. IMUL r16,r/m16,imm16 9-22/12-25
  12116. IMUL r32,r/m32,imm32 9-38/12-41
  12117. IN AL,imm8 12
  12118. IN AL,imm8 (PM, CPL <= IOPL) 6/26
  12119. IN AL,imm8 (VM) 26
  12120. IN AX,imm8 12
  12121. IN AX,imm8 (PM, CPL <= IOPL) 6/26
  12122. IN AX,imm8 (VM) 26
  12123. IN EAX,imm8 12
  12124. IN EAX,imm8 (PM, CPL <= IOPL) 6/26
  12125. IN EAX,imm8 (VM) 26
  12126. IN AL,DX 13
  12127. IN AL,DX (PM, CPL <= IOPL) 7/27
  12128. IN AL,DX (VM) 27
  12129. IN AX,DX 13
  12130. IN AX,DX (PM, CPL <= IOPL) 7/27
  12131. IN AX,DX (VM) 27
  12132. IN EAX,DX 13
  12133. IN EAX,DX (PM, CPL <= IOPL) 7/27
  12134. IN EAX,DX (VM) 27
  12135. INC r/m8 2/6
  12136. INC r/m16 2/6
  12137. INC r/m32 2/6
  12138. INC r16 2
  12139. INC r32 2
  12140. INSB 15
  12141. INSW 15
  12142. INSD 15
  12143. INT 3 33
  12144. INT 3 (PM, same privilege) 59
  12145. INT 3 (PM, more privelege) 99
  12146. INT imm8 37
  12147. INT imm8 (PM, same privilege) 59
  12148. INT imm8 (PM, more privelege) 99
  12149. INTO 3/35
  12150. INTO (PM, same privilege) 3/59
  12151. INTO (PM, more privelege) 3/99
  12152. IRET 22/38
  12153. IRET (PM, to same privilege) 22/38
  12154. IRET (PM, to lesser privilege) 82
  12155. IRETD 22/38
  12156. IRETD (PM, to same privilege) 22/38
  12157. IRETD (PM, to lesser privilege) 82
  12158. Jcc rel8 7+m/3
  12159. Jcc rel16 7+m/3
  12160. Jcc rel32 7+m/3
  12161. JCXZ rel8 9+m/5
  12162. JECXZ rel8 9+m/5
  12163. JMP rel8 7+m
  12164. JMP rel16 7+m
  12165. JMP r/m16 7+m/10+m
  12166. JMP ptr16:16 12/27+m
  12167. JMP ptr16:16 (PM, direct segment) 12/27+m
  12168. JMP ptr16:16 (PM, via call gate, same pr45+m
  12169. JMP m16:16 43/31+m
  12170. JMP m16:16 (PM, direct segment) 43/31+m
  12171. JMP m16:16 (PM, via call gate, same priv49+m
  12172. JMP rel32 7+m
  12173. JMP r/m32 (7/10)+m
  12174. JMP ptr16:32 12/27+m
  12175. JMP ptr16:32 (PM, direct segment) 12/27+m
  12176. JMP ptr16:32 (PM, via call gate, same pr45+m
  12177. JMP m16:32 43/31+m
  12178. JMP m16:32 (PM, direct segment) 43/31+m
  12179. JMP m16:32 (PM, via call gate, same priv49+m
  12180. LAHF 2
  12181. LAR r16,r/m16 15/16
  12182. LAR r32,r/m32 15/16
  12183. LDS r16,m16:16 7/22
  12184. LDS r32,m16:32 7/22
  12185. LDS r16,m16:16 (PM) 7/22
  12186. LDS r32,m16:32 (PM) f
  12187. LSS r16,m16:16 7/22
  12188. LSS r32,m16:32 7/22
  12189. LSS r16,m16:16 (PM) 7/22
  12190. LSS r32,m16:32 (PM) f
  12191. LES r16,m16:16 7/22
  12192. LES r32,m16:32 7/22
  12193. LES r16,m16:16 (PM) 7/22
  12194. LES r32,m16:32 (PM) f
  12195. LFS r16,m16:16 7/25
  12196. LFS r32,m16:32 7/25
  12197. LFS r16,m16:16 (PM) 7/22
  12198. LFS r32,m16:32 (PM) f
  12199. LGS r16,m16:16 7/25
  12200. LGS r32,m16:32 7/25
  12201. LGS r16,m16:16 (PM) 7/22
  12202. LGS r32,m16:32 (PM) f
  12203. LEA r16,m 2
  12204. LEA r32,m 2
  12205. LEAVE 4
  12206. LGDT m16&32 11
  12207. LIDT m16&32 11
  12208. LLDT r/m16 20
  12209. LMSW r/m16 10/13
  12210. LOADALL f
  12211. LODSB 5
  12212. LODSW 5
  12213. LODSD 5
  12214. LOOP rel8 11+m
  12215. LOOPE rel8 11+m
  12216. LOOPNE rel8 11+m
  12217. LSL r16,r/m16 20/21
  12218. LSL r32,r/m32 20/21
  12219. LTR r/m16 23/27
  12220. MOV r/m8,r8 2/2
  12221. MOV r/m16,r16 2/2
  12222. MOV r/m32,r32 2/2
  12223. MOV r8,r/m8 2/4
  12224. MOV r16,r/m16 2/4
  12225. MOV r32,r/m32 2/4
  12226. MOV r/m16,sreg 2/2
  12227. MOV sreg,r/m16 2/5 18/19
  12228. MOV sreg,r/m16 (PM) f
  12229. MOV AL,moffs8 4
  12230. MOV AX,moffs16 4
  12231. MOV EAX,moffs32 4
  12232. MOV moffs8,AL 2
  12233. MOV moffs16,AX 2
  12234. MOV moffs32,EAX 2
  12235. MOV r8,imm8 2
  12236. MOV r16,imm16 2
  12237. MOV r32,imm32 2
  12238. MOV r/m8,imm8 2/2
  12239. MOV r/m16,imm16 2/2
  12240. MOV r/m32,imm32 2/2
  12241. MOV CR0,r32 10
  12242. MOV CR2,r32 4/5
  12243. MOV CR3,r32 4/5
  12244. MOV CR4,r32 f
  12245. MOV r32,CRi 6
  12246. MOV r32,DR0-DR3 22
  12247. MOV r32,DR4-DR5 f
  12248. MOV r32,DR6-DR7 14
  12249. MOV DR0-DR3,r32 22
  12250. MOV DR4-DR5,r32 f
  12251. MOV DR6-DR7,r32 16
  12252. MOV r32,TR4-TR7 12
  12253. MOV TR4-TR7,r32 12
  12254. MOVSB 7
  12255. MOVSW 7
  12256. MOVSD 7
  12257. MOVSX r16,r/m8 3/6
  12258. MOVSX r32,r/m8 3/6
  12259. MOVSX r32,r/m16 3/6
  12260. MOVZX r16,r/m8 3/6
  12261. MOVZX r32,r/m8 3/6
  12262. MOVZX r32,r/m16 3/6
  12263. MUL r/m8 9/14-12/17
  12264. MUL r/m16 9/22-12/25
  12265. MUL r/m32 9/38-12/41
  12266. NEG r/m8 2/6
  12267. NEG r/m16 2/6
  12268. NEG r/m32 2/6
  12269. NOP 3
  12270. NOT r/m8 2/6
  12271. NOT r/m16 2/6
  12272. NOT r/m32 2/6
  12273. OR AL,imm8 2
  12274. OR AX,imm16 2
  12275. OR EAX,imm32 2
  12276. OR r/m8,imm8 2/7
  12277. OR r/m16,imm8 2/7
  12278. OR r/m32,imm8 2/7
  12279. OR r/m16,imm16 2/7
  12280. OR r/m32,imm32 2/7
  12281. OR r/m8,r8 2/7
  12282. OR r/m16,r16 2/7
  12283. OR r/m32,r32 2/7
  12284. OR r8,r/m8 2/6
  12285. OR r16,r/m16 2/6
  12286. OR r32,r/m32 2/6
  12287. OUT imm8,AL 10
  12288. OUT imm8,AL (PM, CPL <= IOPL) 4/24
  12289. OUT imm8,AL (VM) 4/24
  12290. OUT imm8,AX 10
  12291. OUT imm8,AX (PM, CPL <= IOPL) 4/24
  12292. OUT imm8,AX (VM) 4/24
  12293. OUT imm8,EAX 10
  12294. OUT imm8,EAX (PM, CPL <= IOPL) 4/24
  12295. OUT imm8,EAX (VM) 4/24
  12296. OUT DX,AL 11
  12297. OUT DX,AL (PM, CPL <= IOPL) 5/25
  12298. OUT DX,AL (VM) 5/25
  12299. OUT DX,AX 11
  12300. OUT DX,AX (PM, CPL <= IOPL) 5/25
  12301. OUT DX,AX (VM) 5/25
  12302. OUT DX,EAX 11
  12303. OUT DX,EAX (PM, CPL <= IOPL) 5/25
  12304. OUT DX,EAX (VM) 5/25
  12305. OUTSB 14
  12306. OUTSW 14
  12307. OUTSD 14
  12308. POP m16 5
  12309. POP m32 5
  12310. POP r16 4
  12311. POP r32 4
  12312. POP sreg 7/21
  12313. POP sreg (PM) 7/21
  12314. POPA 24
  12315. POPAD 24
  12316. POPF 5
  12317. POPF (PM) 5
  12318. POPF (VM) ??
  12319. POPFD 5
  12320. POPFD (PM) 5
  12321. POPFD (VM) ??
  12322. PUSH r/m16 5
  12323. PUSH r/m32 5
  12324. PUSH r16 2
  12325. PUSH r32 2
  12326. PUSH imm8 2
  12327. PUSH imm16 2
  12328. PUSH imm32 2
  12329. PUSH sreg 2
  12330. PUSHA 18
  12331. PUSHAD 18
  12332. PUSHF 4
  12333. PUSHF (PM) 4
  12334. PUSHF (VM) 4 ??
  12335. PUSHFD 4
  12336. PUSHFD (PM) 4
  12337. PUSHFD (VM) 4 ??
  12338. RCL r/m8,1 9/10
  12339. RCL r/m16,1 9/10
  12340. RCL r/m32,1 9/10
  12341. RCL r/m8,CL 9/10
  12342. RCL r/m16,CL 9/10
  12343. RCL r/m32,CL 9/10
  12344. RCL r/m8,imm8 9/10
  12345. RCL r/m16,imm8 9/10
  12346. RCL r/m32,imm8 9/10
  12347. RCR r/m8,1 9/10
  12348. RCR r/m16,1 9/10
  12349. RCR r/m32,1 9/10
  12350. RCR r/m8,CL 9/10
  12351. RCR r/m16,CL 9/10
  12352. RCR r/m32,CL 9/10
  12353. RCR r/m8,imm8 9/10
  12354. RCR r/m16,imm8 9/10
  12355. RCR r/m32,imm8 9/10
  12356. ROL r/m8,1 3/7
  12357. ROL r/m16,1 3/7
  12358. ROL r/m32,1 3/7
  12359. ROL r/m8,CL 3/7
  12360. ROL r/m16,CL 3/7
  12361. ROL r/m32,CL 3/7
  12362. ROL r/m8,imm8 3/7
  12363. ROL r/m16,imm8 3/7
  12364. ROL r/m32,imm8 3/7
  12365. ROR r/m8,1 3/7
  12366. ROR r/m16,1 3/7
  12367. ROR r/m32,1 3/7
  12368. ROR r/m8,CL 3/7
  12369. ROR r/m16,CL 3/7
  12370. ROR r/m32,CL 3/7
  12371. ROR r/m8,imm8 3/7
  12372. ROR r/m16,imm8 3/7
  12373. ROR r/m32,imm8 3/7
  12374. RDTSC f
  12375. RET (near) 10+m
  12376. RET (far) 18+m
  12377. RET (PM, far, same PL) 32+m
  12378. RET (PM, far, different PL) 68
  12379. RET imm16 (near) 10+m
  12380. RET imm16 (far) 18+m
  12381. RET imm16 (PM, far, same PL) 32+m
  12382. RET imm16 (PM, far, different PL) 68
  12383. SAHF 3
  12384. SAL r/m8,1 3/7
  12385. SAL r/m16,1 3/7
  12386. SAL r/m32,1 3/7
  12387. SAL r/m8,CL 3/7
  12388. SAL r/m16,CL 3/7
  12389. SAL r/m32,CL 3/7
  12390. SAL r/m8,imm8 3/7
  12391. SAL r/m16,imm8 3/7
  12392. SAL r/m32,imm8 3/7
  12393. SAR r/m8,1 3/7
  12394. SAR r/m16,1 3/7
  12395. SAR r/m32,1 3/7
  12396. SAR r/m8,CL 3/7
  12397. SAR r/m16,CL 3/7
  12398. SAR r/m32,CL 3/7
  12399. SAR r/m8,imm8 3/7
  12400. SAR r/m16,imm8 3/7
  12401. SAR r/m32,imm8 3/7
  12402. SHL r/m8,1 3/7
  12403. SHL r/m16,1 3/7
  12404. SHL r/m32,1 3/7
  12405. SHL r/m8,CL 3/7
  12406. SHL r/m16,CL 3/7
  12407. SHL r/m32,CL 3/7
  12408. SHL r/m8,imm8 3/7
  12409. SHL r/m16,imm8 3/7
  12410. SHL r/m32,imm8 3/7
  12411. SHR r/m8,1 3/7
  12412. SHR r/m16,1 3/7
  12413. SHR r/m32,1 3/7
  12414. SHR r/m8,CL 3/7
  12415. SHR r/m16,CL 3/7
  12416. SHR r/m32,CL 3/7
  12417. SHR r/m8,imm8 3/7
  12418. SHR r/m16,imm8 37/
  12419. SHR r/m32,imm8 3/7
  12420. SBB AL,imm8 2
  12421. SBB AX,imm16 2
  12422. SBB EAX,imm32 2
  12423. SBB r/m8,imm8 2/7
  12424. SBB r/m16,imm8 2/7
  12425. SBB r/m32,imm8 2/7
  12426. SBB r/m16,imm16 2/7
  12427. SBB r/m32,imm32 2/7
  12428. SBB r/m8,r8 2/7
  12429. SBB r/m16,r16 2/7
  12430. SBB r/m32,r32 2/7
  12431. SBB r8,r/m8 2/6
  12432. SBB r16,r/m16 2/6
  12433. SBB r32,r/m32 2/6
  12434. SCASB 7
  12435. SCASW 7
  12436. SCASD 7
  12437. SETALC f
  12438. SETcc r/m8 4/5
  12439. SGDT m16&32 9
  12440. SIDT m16&32 9
  12441. SHLD r/m16,r16,imm8 3/7
  12442. SHLD r/m32,r32,imm8 3/7
  12443. SHLD r/m16,r16,CL 3/7
  12444. SHLD r/m32,r32,CL 3/7
  12445. SHRD r/m16,r16,imm8 3/7
  12446. SHRD r/m32,r32,imm8 3/7
  12447. SHRD r/m16,r16,CL 3/7
  12448. SHRD r/m32,r32,CL 3/7
  12449. SLDT r/m16 2/2
  12450. SLDT r/m32 f
  12451. SMINT f
  12452. SMSW r/m16 2/3 2/2
  12453. STC 2
  12454. STD 2
  12455. STI 2
  12456. STOSB 4
  12457. STOSW 4
  12458. STOSD 4
  12459. STR r/m16 23/27
  12460. SUB AL,imm8 2/8
  12461. SUB AX,imm16 2/7
  12462. SUB EAX,imm32 2/7
  12463. SUB r/m8,imm8 2/7
  12464. SUB r/m16,imm8 2/7
  12465. SUB r/m32,imm8 2/7
  12466. SUB r/m16,imm16 2/7
  12467. SUB r/m32,imm32 2/7
  12468. SUB r/m8,r8 2/7
  12469. SUB r/m16,r16 2/7
  12470. SUB r/m32,r32 2/7
  12471. SUB r8,r/m8 2/6
  12472. SUB r16,r/m16 2/6
  12473. SUB r32,r/m32 2/6
  12474. TEST AL,imm8 2
  12475. TEST AX,imm16 2
  12476. TEST EAX,imm32 2
  12477. TEST r/m8,imm8 2/5
  12478. TEST r/m16,imm16 2/5
  12479. TEST r/m32,imm32 2/5
  12480. TEST r/m8,r8 2/5
  12481. TEST r/m16,r16 2/5
  12482. TEST r/m32,r32 2/5
  12483. UMOV r8,r/m8 f
  12484. UMOV r16,r/m16 f
  12485. UMOV r32,r/m32 f
  12486. UMOV r/m8,r8 f
  12487. UMOV r/m16,r16 f
  12488. UMOV r/m32,r32 f
  12489. VERR r/m16 10/11
  12490. VERW r/m16 15/16
  12491. WAIT 6min
  12492. XBTS r16,r/m16,AX,CL 6/13
  12493. XBTS r32,r/m32,EAX,CL 6/13
  12494. XCHG AX,r16 3
  12495. XCHG EAX,r32 3
  12496. XCHG r/m8,r8 3/5
  12497. XCHG r/m16,r16 3/5
  12498. XCHG r/m32,r32 3/5
  12499. XLAT 5
  12500. XOR AL,imm8 2
  12501. XOR AX,imm16 2
  12502. XOR EAX,imm32 2
  12503. XOR r/m8,imm8 2
  12504. XOR r/m16,imm8 2/7
  12505. XOR r/m32,imm8 2/7
  12506. XOR r/m16,imm16 2/7
  12507. XOR r/m32,imm32 2/7
  12508. XOR r/m8,r8 2/7
  12509. XOR r/m16,r16 2/7
  12510. XOR r/m32,r32 2/7
  12511. XOR r8,r/m8 2/6
  12512. XOR r16,r/m16 2/6
  12513. XOR r32,r/m32 2/6
  12514. (END)
  12515. ----------------------------------------------------------
  12516. APPENDIX Y5 - Vendor Instruction Time for Intel i486DX CPU
  12517. AAA 3
  12518. AAD 14
  12519. AAD imm8 n/a
  12520. AAM 15
  12521. AAM imm8 n/a
  12522. AAS 3
  12523. ADC AL,imm8 1
  12524. ADC AX,imm16 1
  12525. ADC EAX,imm32 1
  12526. ADC r/m8,imm8 1/3
  12527. ADC r/m16,imm8 1/3
  12528. ADC r/m32,imm8 1/3
  12529. ADC r/m16,imm16 1/3
  12530. ADC r/m32,imm32 f
  12531. ADC r/m8,r8 1/3
  12532. ADC r/m16,r16 1/3
  12533. ADC r/m32,r32 f
  12534. ADC r8,r/m8 1/2
  12535. ADC r16,r/m16 1/2
  12536. ADC r32,r/m32 1/2
  12537. ADD AL,imm8 1
  12538. ADD AX,imm16 1
  12539. ADD EAX,imm32 1
  12540. ADD r/m8,imm8 1/3
  12541. ADD r/m16,imm8 1/3
  12542. ADD r/m32,imm8 1/3
  12543. ADD r/m16,imm16 1/3
  12544. ADD r/m32,imm32 1/3
  12545. ADD r/m8,r8 1/3
  12546. ADD r/m16,r16 1/3
  12547. ADD r/m32,r32 1/3
  12548. ADD r8,r/m8 1/2
  12549. ADD r16,r/m16 1/2
  12550. ADD r32,r/m32 1/2
  12551. AND AL,imm8 1
  12552. AND AX,imm16 1
  12553. AND EAX,imm32 1
  12554. AND r/m8,imm8 1/3
  12555. AND r/m16,imm8 1/3
  12556. AND r/m32,imm8 1/3
  12557. AND r/m16,imm16 1/3
  12558. AND r/m32,imm32 1/3
  12559. AND r/m8,r8 1/3
  12560. AND r/m16,r16 1/3
  12561. AND r/m32,r32 1/3
  12562. AND r8,r/m8 1/2
  12563. AND r16,r/m16 1/2
  12564. AND r32,r/m32 1/2
  12565. ARPL r/m16,r16 9/9
  12566. BOUND r16,m16&16 7
  12567. BOUND r32,m32&32 7
  12568. BSF r16,r/m16 6-42/7-43
  12569. BSF r32,r/m32 6-42/7-43
  12570. BSR r16,r/m16 6-103/7-104
  12571. BSR r32,r/m32 6-103/7-104
  12572. BSWAP r32 1
  12573. BT r/m16,r16 3/8
  12574. BT r/m32,r32 3/8
  12575. BT r/m16,imm8 3/3
  12576. BT r/m16,imm8 3/3
  12577. BTC r/m16,r16 6/13
  12578. BTC r/m32,r32 6/13
  12579. BTC r/m16,imm8 6/8
  12580. BTC r/m16,imm8 6/8
  12581. BTR r/m16,r16 6/13
  12582. BTR r/m32,r32 6/13
  12583. BTR r/m16,imm8 6/8
  12584. BTR r/m16,imm8 6/8
  12585. BTS r/m16,r16 6/13
  12586. BTS r/m32,r32 6/13
  12587. BTS r/m16,imm8 6/8
  12588. BTS r/m16,imm8 6/8
  12589. CALL rel16 3
  12590. CALL r/m16 5/5
  12591. CALL ptr16:16 18
  12592. CALL ptr16:16 (PM, direct segment) 20
  12593. CALL ptr16:16 (PM, via call gate, same p35
  12594. CALL ptr16:16 (PM, via call gate, more p69
  12595. CALL ptr16:16 (PM, via call gate, more p77+4*p
  12596. CALL m16:16 17
  12597. CALL m16:16 (PM, direct segment) 20
  12598. CALL m16:16 (PM, via gate, same priveleg35
  12599. CALL m16:16 (PM, via gate, more priveleg69
  12600. CALL m16:16 (PM, via gate, more priveleg77+4*p
  12601. CALL rel32 3
  12602. CALL r/m32 5/5
  12603. CALL ptr16:32 18
  12604. CALL ptr16:32 (PM, direct segment) 20
  12605. CALL ptr16:32 (PM, via gate, same privel35
  12606. CALL ptr16:32 (PM, via gate, more privel69
  12607. CALL ptr16:32 (PM, via gate, more privel77+4*p
  12608. CALL m16:32 17
  12609. CALL m16:32 (PM, direct segment) 20
  12610. CALL m16:32 (PM, via gate, same priveleg35
  12611. CALL m16:32 (PM, via gate, more priveleg69
  12612. CALL m16:32 (PM, via gate, more priveleg77+4*p
  12613. CBW 3
  12614. CWDE 3
  12615. CLC 2
  12616. CLD 2
  12617. CLI 5
  12618. CLTS 7
  12619. CMC 2
  12620. CMOVcc r16,r/m16 f
  12621. CMOVcc r32,r/m32 f
  12622. CMP AL,imm8 1
  12623. CMP AX,imm16 1
  12624. CMP EAX,imm32 1
  12625. CMP r/m8,imm8 1/2
  12626. CMP r/m16,imm8 1/2
  12627. CMP r/m32,imm8 1/2
  12628. CMP r/m16,imm16 1/2
  12629. CMP r/m32,imm32 1/2
  12630. CMP r/m8,r8 1/2
  12631. CMP r/m16,r16 1/2
  12632. CMP r/m32,r32 1/2
  12633. CMP r8,r/m8 1/3
  12634. CMP r16,r/m16 1/3
  12635. CMP r32,r/m32 1/3
  12636. CMPSB 8
  12637. CMPSW 8
  12638. CMPSD 8
  12639. CMPXCHG r/m8,r8 6/7 6/10
  12640. CMPXCHG r/m16,r16 6/7 6/10
  12641. CMPXCHG r/m32,r32 6/7 6/10
  12642. CPUID (SL Enhanced only)
  12643. CWD 3
  12644. CDQ 3
  12645. DAA 2
  12646. DAS 2
  12647. DEC r/m8 1/3
  12648. DEC r/m16 1/3
  12649. DEC r/m32 1/3
  12650. DEC r16 1
  12651. DEC r32 1
  12652. DIV r/m8 16/16
  12653. DIV r/m16 24/24
  12654. DIV r/m32 40/40
  12655. ESC imm4,r/m f
  12656. ENTER imm16,0 14
  12657. ENTER imm16,1 17
  12658. ENTER imm16,imm8 17+3*n
  12659. HLT 4
  12660. IDIV r/m8 19/20
  12661. IDIV r/m16 27/28
  12662. IDIV r/m32 43/44
  12663. IMUL r/m8 13-18/13-18
  12664. IMUL r/m16 13-26/13-26
  12665. IMUL r/m32 12-42/13-42
  12666. IMUL r16,r/m16 13-26/13-26
  12667. IMUL r32,r/m32 13-42/13-42
  12668. IMUL r16,imm8 13-26
  12669. IMUL r32,imm8 13-26
  12670. IMUL r16,imm16 13-26/13-26
  12671. IMUL r32,imm32 13-42/13-42
  12672. IMUL r16,r/m16,imm8 13-26/13-26
  12673. IMUL r32,r/m32,imm8 13-42/13-42
  12674. IMUL r16,r/m16,imm16 13-26/13-26
  12675. IMUL r32,r/m32,imm32 13-42/13-42
  12676. IN AL,imm8 14
  12677. IN AL,imm8 (PM, CPL <= IOPL) 8/28
  12678. IN AL,imm8 (VM) 27
  12679. IN AX,imm8 14
  12680. IN AX,imm8 (PM, CPL <= IOPL) 8/28
  12681. IN AX,imm8 (VM) 27
  12682. IN EAX,imm8 14
  12683. IN EAX,imm8 (PM, CPL <= IOPL) 8/28
  12684. IN EAX,imm8 (VM) 27
  12685. IN AL,DX 14
  12686. IN AL,DX (PM, CPL <= IOPL) 8/28
  12687. IN AL,DX (VM) 27
  12688. IN AX,DX 14
  12689. IN AX,DX (PM, CPL <= IOPL) 8/28
  12690. IN AX,DX (VM) 2
  12691. IN EAX,DX 14
  12692. IN EAX,DX (PM, CPL <= IOPL) 8/28
  12693. IN EAX,DX (VM) 27
  12694. INC r/m8 1/3
  12695. INC r/m16 1/3
  12696. INC r/m32 1/3
  12697. INC r16 1
  12698. INC r32 1
  12699. INSB 17
  12700. INSW 17
  12701. INSD 17
  12702. INT 3 26
  12703. INT 3 (PM, same privilege) 44
  12704. INT 3 (PM, more privelege) 71
  12705. INT imm8 30
  12706. INT imm8 (PM, same privilege) 44
  12707. INT imm8 (PM, more privelege) 71
  12708. INTO 3/28
  12709. INTO (PM, same privilege) 3/46
  12710. INTO (PM, more privelege) 3/73
  12711. INVD 4
  12712. INVLPG m 12
  12713. IRET 15
  12714. IRET (PM, to same privilege) 15
  12715. IRET (PM, to lesser privilege) 36
  12716. IRETD 15
  12717. IRETD (PM, to same privilege) 15
  12718. IRETD (PM, to lesser privilege) 36
  12719. Jcc rel8 3/1
  12720. Jcc rel16 3/1
  12721. Jcc rel32 3/1
  12722. JCXZ rel8 8/5
  12723. JECXZ rel8 8/5
  12724. JMP rel8 3
  12725. JMP rel16 3
  12726. JMP r/m16 5/5
  12727. JMP ptr16:16 17/19
  12728. JMP ptr16:16 (PM, direct segment) 17/19
  12729. JMP ptr16:16 (PM, via call gate, same pr32
  12730. JMP m16:16 13/18
  12731. JMP m16:16 (PM, direct segment) 13/18
  12732. JMP m16:16 (PM, via call gate, same priv31
  12733. JMP rel32 3
  12734. JMP r/m32 5/5
  12735. JMP ptr16:32 13/18
  12736. JMP ptr16:32 (PM, direct segment) 13/18
  12737. JMP ptr16:32 (PM, via call gate, same pr31
  12738. JMP m16:32 13/18
  12739. JMP m16:32 (PM, direct segment) 13/18
  12740. JMP m16:32 (PM, via call gate, same priv31
  12741. LAHF 3
  12742. LAR r16,r/m16 11/11
  12743. LAR r32,r/m32 11/11
  12744. LDS r16,m16:16 6/12p
  12745. LDS r32,m16:32 6/12p
  12746. LDS r16,m16:16 (PM) f
  12747. LDS r32,m16:32 (PM) f
  12748. LSS r16,m16:16 7/22p
  12749. LSS r32,m16:32 7/22p
  12750. LSS r16,m16:16 (PM) f
  12751. LSS r32,m16:32 (PM) f
  12752. LES r16,m16:16 7/22p
  12753. LES r32,m16:32 7/22p
  12754. LES r16,m16:16 (PM) f
  12755. LES r32,m16:32 (PM) f
  12756. LFS r16,m16:16 6/12p
  12757. LFS r32,m16:32 6/12p
  12758. LFS r16,m16:16 (PM) f
  12759. LFS r32,m16:32 (PM) f
  12760. LGS r16,m16:16 6/12p
  12761. LGS r32,m16:32 6/12p
  12762. LGS r16,m16:16 (PM) f
  12763. LGS r32,m16:32 (PM) f
  12764. LEA r16,m 1
  12765. LEA r32,m 1
  12766. LEAVE 5
  12767. LGDT m16&32 11
  12768. LIDT m16&32 11
  12769. LLDT r/m16 11/11
  12770. LMSW r/m16 13/13
  12771. LOADALL f
  12772. LODSB 5
  12773. LODSW 5
  12774. LODSD 5
  12775. LOOP rel8 2,6
  12776. LOOPE rel8 9,6
  12777. LOOPNE rel8 9,6
  12778. LSL r16,r/m16 10/10
  12779. LSL r32,r/m32 10/10
  12780. LTR r/m16 20/20
  12781. MOV r/m8,r8 1
  12782. MOV r/m16,r16 1
  12783. MOV r/m32,r32 1
  12784. MOV r8,r/m8 1
  12785. MOV r16,r/m16 1
  12786. MOV r32,r/m32 1
  12787. MOV r/m16,sreg 3/3
  12788. MOV sreg,r/m16 3/9
  12789. MOV sreg,r/m16 (PM) f
  12790. MOV AL,moffs8 1
  12791. MOV AX,moffs16 1
  12792. MOV EAX,moffs32 1
  12793. MOV moffs8,AL 1
  12794. MOV moffs16,AX 1
  12795. MOV moffs32,EAX 1
  12796. MOV r8,imm8 1
  12797. MOV r16,imm16 1
  12798. MOV r32,imm32 1
  12799. MOV r/m8,imm8 1
  12800. MOV r/m16,imm16 1
  12801. MOV r/m32,imm32 1
  12802. MOV CR0,r32 16
  12803. MOV CR2,r32 4
  12804. MOV CR3,r32 4
  12805. MOV CR4,r32 (SL Enhanced only)
  12806. MOV r32,CRi 4
  12807. MOV r32,DR0-DR3 10
  12808. MOV r32,DR4-DR5 9 (alias to DR6-DR7)
  12809. MOV r32,DR6-DR7 10
  12810. MOV DR0-DR3,r32 11
  12811. MOV DR4-DR5,r32 10 (alias to DR6-DR7)
  12812. MOV DR6-DR7,r32 11
  12813. MOV r32,TR4-TR7 4
  12814. MOV r32,TR3 4
  12815. MOV TR3,r32 6
  12816. MOV TR4-TR7,r32 f
  12817. MOVSB 7
  12818. MOVSW 7
  12819. MOVSD 7
  12820. MOVSX r16,r/m8 3/3
  12821. MOVSX r32,r/m8 3/3
  12822. MOVSX r32,r/m16 3/3
  12823. MOVZX r16,r/m8 3/3
  12824. MOVZX r32,r/m8 3/3
  12825. MOVZX r32,r/m16 3/3
  12826. MUL r/m8 13-18/
  12827. MUL r/m16 13-26/
  12828. MUL r/m32 13-42/
  12829. NEG r/m8 1/3
  12830. NEG r/m16 1/3
  12831. NEG r/m32 1/3
  12832. NOP 1
  12833. NOT r/m8 1/3
  12834. NOT r/m16 1/3
  12835. NOT r/m32 1/3
  12836. OR AL,imm8 1
  12837. OR AX,imm16 1
  12838. OR EAX,imm32 1
  12839. OR r/m8,imm8 1/3
  12840. OR r/m16,imm8 1/3
  12841. OR r/m32,imm8 1/3
  12842. OR r/m16,imm16 1/3
  12843. OR r/m32,imm32 1/3
  12844. OR r/m8,r8 1/3
  12845. OR r/m16,r16 1/3
  12846. OR r/m32,r32 1/3
  12847. OR r8,r/m8 1/2
  12848. OR r16,r/m16 1/2
  12849. OR r32,r/m32 1/2
  12850. OUT imm8,AL 16
  12851. OUT imm8,AL (PM, CPL <= IOPL) 11/31
  12852. OUT imm8,AL (VM) 25
  12853. OUT imm8,AX 16
  12854. OUT imm8,AX (PM, CPL <= IOPL) 11/31
  12855. OUT imm8,AX (VM) 25
  12856. OUT imm8,EAX 16
  12857. OUT imm8,EAX (PM, CPL <= IOPL) 11/31
  12858. OUT imm8,EAX (VM) 25
  12859. OUT DX,AL 16
  12860. OUT DX,AL (PM, CPL <= IOPL) 11/31
  12861. OUT DX,AL (VM) 25
  12862. OUT DX,AX 16
  12863. OUT DX,AX (PM, CPL <= IOPL) 11/31
  12864. OUT DX,AX (VM) 25
  12865. OUT DX,EAX 16
  12866. OUT DX,EAX (PM, CPL <= IOPL) 11/31
  12867. OUT DX,EAX (VM) 25
  12868. OUTSB 17
  12869. OUTSW 10/32
  12870. OUTSD 30
  12871. POP m16 6
  12872. POP m32 6
  12873. POP r16 4
  12874. POP r32 4
  12875. POP sreg 3
  12876. POP sreg (PM) f
  12877. POPA 9
  12878. POPAD 9
  12879. POPF 9/6p
  12880. POPF (PM) 6
  12881. POPF (VM) 9
  12882. POPFD 9/6p
  12883. POPFD (PM) 6
  12884. POPFD (VM) 9
  12885. PUSH r/m16 4
  12886. PUSH r/m32 4
  12887. PUSH r16 1
  12888. PUSH r32 1
  12889. PUSH imm8 1
  12890. PUSH imm16 1
  12891. PUSH imm32 1
  12892. PUSH sreg 3
  12893. PUSHA 11
  12894. PUSHAD 11
  12895. PUSHF 4/3p
  12896. PUSHF (PM) 3
  12897. PUSHF (VM) 4
  12898. PUSHFD 4/3p
  12899. PUSHFD (PM) 3
  12900. PUSHFD (VM) 4
  12901. RCL r/m8,1 3/4
  12902. RCL r/m16,1 3/4
  12903. RCL r/m32,1 3/4
  12904. RCL r/m8,CL 8-30/9-31
  12905. RCL r/m16,CL 8-30/9-31
  12906. RCL r/m32,CL 8-30/9-31
  12907. RCL r/m8,imm8 8-30/9-31
  12908. RCL r/m16,imm8 8-30/9-31
  12909. RCL r/m32,imm8 8-30/9-31
  12910. RCR r/m8,1 3/4
  12911. RCR r/m16,1 3/4
  12912. RCR r/m32,1 3/4
  12913. RCR r/m8,CL 8-30/9-31
  12914. RCR r/m16,CL 8-30/9-31
  12915. RCR r/m32,CL 8-30/9-31
  12916. RCR r/m8,imm8 8-30/9-31
  12917. RCR r/m16,imm8 8-30/9-31
  12918. RCR r/m32,imm8 8-30/9-31
  12919. ROL r/m8,1 3/4
  12920. ROL r/m16,1 3/4
  12921. ROL r/m32,1 3/4
  12922. ROL r/m8,CL 3/4
  12923. ROL r/m16,CL 3/4
  12924. ROL r/m32,CL 3/4
  12925. ROL r/m8,imm8 2/4
  12926. ROL r/m16,imm8 2/4
  12927. ROL r/m32,imm8 2/4
  12928. ROR r/m8,1 3/4
  12929. ROR r/m16,1 3/4
  12930. ROR r/m32,1 3/4
  12931. ROR r/m8,CL 3/4
  12932. ROR r/m16,CL 3/4
  12933. ROR r/m32,CL 3/4
  12934. ROR r/m8,imm8 2/4
  12935. ROR r/m16,imm8 2/4
  12936. ROR r/m32,imm8 2/4
  12937. RET (near) 5
  12938. RET (far) 13
  12939. RET (PM, far, same PL) 18
  12940. RET (PM, far, different PL) 33
  12941. RET imm16 (near) 5
  12942. RET imm16 (far) 14
  12943. RET imm16 (PM, far, same PL) f
  12944. RET imm16 (PM, far, different PL) f
  12945. SAHF 2
  12946. SAL r/m8,1 3/4
  12947. SAL r/m16,1 3/4
  12948. SAL r/m32,1 3/4
  12949. SAL r/m8,CL 3/4
  12950. SAL r/m16,CL 3/4
  12951. SAL r/m32,CL 3/4
  12952. SAL r/m8,imm8 2/4
  12953. SAL r/m16,imm8 2/4
  12954. SAL r/m32,imm8 2/4
  12955. SAR r/m8,1 3/4
  12956. SAR r/m16,1 3/4
  12957. SAR r/m32,1 3/4
  12958. SAR r/m8,CL 3/4
  12959. SAR r/m16,CL 3/4
  12960. SAR r/m32,CL 3/4
  12961. SAR r/m8,imm8 2/4
  12962. SAR r/m16,imm8 2/4
  12963. SAR r/m32,imm8 2/4
  12964. SHL r/m8,1 3/4
  12965. SHL r/m16,1 3/4
  12966. SHL r/m32,1 3/4
  12967. SHL r/m8,CL 3/4
  12968. SHL r/m16,CL 3/4
  12969. SHL r/m32,CL 3/4
  12970. SHL r/m8,imm8 2/4
  12971. SHL r/m16,imm8 2/4
  12972. SHL r/m32,imm8 2/4
  12973. SHR r/m8,1 3/4
  12974. SHR r/m16,1 3/4
  12975. SHR r/m32,1 3/4
  12976. SHR r/m8,CL 3/4
  12977. SHR r/m16,CL 3/4
  12978. SHR r/m32,CL 3/4
  12979. SHR r/m8,imm8 2/4
  12980. SHR r/m16,imm8 2/4
  12981. SHR r/m32,imm8 2/4
  12982. SBB AL,imm8 1
  12983. SBB AX,imm16 1
  12984. SBB EAX,imm32 1
  12985. SBB r/m8,imm8 1/3
  12986. SBB r/m16,imm8 1/3
  12987. SBB r/m32,imm8 1/3
  12988. SBB r/m16,imm16 1/3
  12989. SBB r/m32,imm32 1/3
  12990. SBB r/m8,r8 1/3
  12991. SBB r/m16,r16 1/3
  12992. SBB r/m32,r32 1/3
  12993. SBB r8,r/m8 1/2
  12994. SBB r16,r/m16 1/2
  12995. SBB r32,r/m32 1/2
  12996. SCASB 6
  12997. SCASW 6
  12998. SCASD 6
  12999. SETALC f
  13000. SETcc r/m8 4/3
  13001. SGDT m16&32 10
  13002. SIDT m16&32 10
  13003. SHLD r/m16,r16,imm8 2/3
  13004. SHLD r/m32,r32,imm8 2/3
  13005. SHLD r/m16,r16,CL 3/4
  13006. SHLD r/m32,r32,CL 3/4
  13007. SHRD r/m16,r16,imm8 2/3
  13008. SHRD r/m32,r32,imm8 2/3
  13009. SHRD r/m16,r16,CL 3/4
  13010. SHRD r/m32,r32,CL 3/4
  13011. SLDT r/m16 2/3
  13012. SLDT r/m32 2/3
  13013. SMINT f
  13014. SMSW r/m16 2/3
  13015. STC 2
  13016. STD 2
  13017. STI 5
  13018. STOSB 5
  13019. STOSW 5
  13020. STOSD 5
  13021. STR r/m16 2/3
  13022. SUB AL,imm8 1
  13023. SUB AX,imm16 1
  13024. SUB EAX,imm32 1
  13025. SUB r/m8,imm8 1/3
  13026. SUB r/m16,imm8 1/3
  13027. SUB r/m32,imm8 1/3
  13028. SUB r/m16,imm16 1/3
  13029. SUB r/m32,imm32 1/3
  13030. SUB r/m8,r8 1/3
  13031. SUB r/m16,r16 1/3
  13032. SUB r/m32,r32 1/3
  13033. SUB r8,r/m8 1/2
  13034. SUB r16,r/m16 1/2
  13035. SUB r32,r/m32 1/2
  13036. TEST AL,imm8 1
  13037. TEST AX,imm16 1
  13038. TEST EAX,imm32 1
  13039. TEST r/m8,imm8 1/2
  13040. TEST r/m16,imm16 1/2
  13041. TEST r/m32,imm32 1/2
  13042. TEST r/m8,r8 1/2
  13043. TEST r/m16,r16 1/2
  13044. TEST r/m32,r32 1/2
  13045. UMOV r8,r/m8 ??
  13046. UMOV r16,r/m16 ??
  13047. UMOV r32,r/m32 ??
  13048. UMOV r/m8,r8 ??
  13049. UMOV r/m16,r16 ??
  13050. UMOV r/m32,r32 ??
  13051. VERR r/m16 11/11
  13052. VERW r/m16 11/11
  13053. WAIT 1-3
  13054. WBINVD 5
  13055. XADD r/m8,r8 3/4
  13056. XADD r/m16,r16 3/4
  13057. XADD r/m32,r32 3/4
  13058. XCHG AX,r16 3
  13059. XCHG EAX,r32 3
  13060. XCHG r/m8,r8 3/5
  13061. XCHG r/m16,r16 3/5
  13062. XCHG r/m32,r32 3/5
  13063. XLAT 4
  13064. XOR AL,imm8 1
  13065. XOR AX,imm16 1
  13066. XOR EAX,imm32 1
  13067. XOR r/m8,imm8 1/3
  13068. XOR r/m16,imm8 1/3
  13069. XOR r/m32,imm8 1/3
  13070. XOR r/m16,imm16 1/3
  13071. XOR r/m32,imm32 1/3
  13072. XOR r/m8,r8 1/3
  13073. XOR r/m16,r16 1/3
  13074. XOR r/m32,r32 1/3
  13075. XOR r8,r/m8 1/2
  13076. XOR r16,r/m16 1/2
  13077. XOR r32,r/m32 1/2
  13078. (END)
  13079. ----------------------------------------------------------
  13080. APPENDIX Y6 - Vendor Instruction Time for Cyrix Cx486DX CPU
  13081. AAA 4
  13082. AAD 4
  13083. AAD imm8 4
  13084. AAM 16
  13085. AAM imm8 16
  13086. AAS 4
  13087. ADC AL,imm8 1
  13088. ADC AX,imm16 1
  13089. ADC EAX,imm32 1
  13090. ADC r/m8,imm8 1/3
  13091. ADC r/m16,imm8 1/3
  13092. ADC r/m32,imm8 1/3
  13093. ADC r/m16,imm16 1/3
  13094. ADC r/m32,imm32 1/3
  13095. ADC r/m8,r8 1/3
  13096. ADC r/m16,r16 1/3
  13097. ADC r/m32,r32 1/3
  13098. ADC r8,r/m8 1/3
  13099. ADC r16,r/m16 1/3
  13100. ADC r32,r/m32 1/3
  13101. ADD AL,imm8 1
  13102. ADD AX,imm16 1
  13103. ADD EAX,imm32 1
  13104. ADD r/m8,imm8 1/3
  13105. ADD r/m16,imm8 1/3
  13106. ADD r/m32,imm8 1/3
  13107. ADD r/m16,imm16 1/3
  13108. ADD r/m32,imm32 1/3
  13109. ADD r/m8,r8 1/3
  13110. ADD r/m16,r16 1/3
  13111. ADD r/m32,r32 1/3
  13112. ADD r8,r/m8 1/3
  13113. ADD r16,r/m16 1/3
  13114. ADD r32,r/m32 1/3
  13115. AND AL,imm8 1
  13116. AND AX,imm16 1
  13117. AND EAX,imm32 1
  13118. AND r/m8,imm8 1/3
  13119. AND r/m16,imm8 1/3
  13120. AND r/m32,imm8 1/3
  13121. AND r/m16,imm16 1/3
  13122. AND r/m32,imm32 1/3
  13123. AND r/m8,r8 1/3
  13124. AND r/m16,r16 1/3
  13125. AND r/m32,r32 1/3
  13126. AND r8,r/m8 1/3
  13127. AND r16,r/m16 1/3
  13128. AND r32,r/m32 1/3
  13129. ARPL r/m16,r16 6/10
  13130. BOUND r16,m16&16 11 or 11+int
  13131. BOUND r32,m32&32 11 or 11+int
  13132. BSF r16,r/m16 5+n/7+n
  13133. BSF r32,r/m32 5+n/7+n
  13134. BSR r16,r/m16 5+n/7+n
  13135. BSR r32,r/m32 5+n/7+n
  13136. BSWAP r32 4
  13137. BT r/m16,r16 3/6
  13138. BT r/m32,r32 3/6
  13139. BT r/m16,imm8 3/4
  13140. BT r/m16,imm8 3/4
  13141. BTC r/m16,r16 5/8
  13142. BTC r/m32,r32 5/8
  13143. BTC r/m16,imm8 4/5
  13144. BTC r/m16,imm8 4/5
  13145. BTR r/m16,r16 5/8
  13146. BTR r/m32,r32 5/8
  13147. BTR r/m16,imm8 4/5
  13148. BTR r/m16,imm8 4/5
  13149. BTS r/m16,r16 4/7
  13150. BTS r/m32,r32 4/7
  13151. BTS r/m16,imm8 3/5
  13152. BTS r/m16,imm8 3/5
  13153. CALL rel16 7
  13154. CALL r/m16 8/9
  13155. CALL ptr16:16 12
  13156. CALL ptr16:16 (PM, direct segment) 30
  13157. CALL ptr16:16 (PM, via call gate, same p41
  13158. CALL ptr16:16 (PM, via call gate, more p83
  13159. CALL ptr16:16 (PM, via call gate, more p81+4*param
  13160. CALL m16:16 14
  13161. CALL m16:16 (PM, direct segment) 14
  13162. CALL m16:16 (PM, via gate, same priveleg43
  13163. CALL m16:16 (PM, via gate, more priveleg85
  13164. CALL m16:16 (PM, via gate, more priveleg86+4*param
  13165. CALL rel32 7
  13166. CALL r/m32 8/9
  13167. CALL ptr16:32 12
  13168. CALL ptr16:32 (PM, direct segment) 30
  13169. CALL ptr16:32 (PM, via gate, same privel41
  13170. CALL ptr16:32 (PM, via gate, more privel83
  13171. CALL ptr16:32 (PM, via gate, more privel81+4*param
  13172. CALL m16:32 14
  13173. CALL m16:32 (PM, direct segment) 14
  13174. CALL m16:32 (PM, via gate, same priveleg43
  13175. CALL m16:32 (PM, via gate, more priveleg85
  13176. CALL m16:32 (PM, via gate, more priveleg86+4*param
  13177. CBW 3
  13178. CWDE 3
  13179. CLC 1
  13180. CLD 1
  13181. CLI 7
  13182. CLTS 5
  13183. CMC 1
  13184. CMP AL,imm8 1
  13185. CMP AX,imm16 1
  13186. CMP EAX,imm32 1
  13187. CMP r/m8,imm8 1/3
  13188. CMP r/m16,imm8 1/3
  13189. CMP r/m32,imm8 1/3
  13190. CMP r/m16,imm16 1/3
  13191. CMP r/m32,imm32 1/3
  13192. CMP r/m8,r8 1/3
  13193. CMP r/m16,r16 1/3
  13194. CMP r/m32,r32 1/3
  13195. CMP r8,r/m8 1/3
  13196. CMP r16,r/m16 1/3
  13197. CMP r32,r/m32 1/3
  13198. CMPSB 7
  13199. CMPSW 7
  13200. CMPSD 7
  13201. CMPXCHG r/m8,r8 5/7
  13202. CMPXCHG r/m16,r16 5/7
  13203. CMPXCHG r/m32,r32 5/7
  13204. CWD 1
  13205. CDQ 1
  13206. DAA 4
  13207. DAS 4
  13208. DEC r/m8 1/3
  13209. DEC r/m16 1/3
  13210. DEC r/m32 1/3
  13211. DEC r16 1
  13212. DEC r32 1
  13213. DIV r/m8 14/15
  13214. DIV r/m16 22/23
  13215. DIV r/m32 38/39
  13216. ESC imm4,r/m n/a
  13217. ENTER imm16,0 7
  13218. ENTER imm16,1 10
  13219. ENTER imm16,imm8 6+4*level
  13220. HLT 3
  13221. IDIV r/m8 19/20
  13222. IDIV r/m16 27/28
  13223. IDIV r/m32 43/44
  13224. IMUL r/m8 3/5
  13225. IMUL r/m16 3/5
  13226. IMUL r/m32 7/9
  13227. IMUL r16,r/m16 3/5
  13228. IMUL r32,r/m32 7/9
  13229. IMUL r16,imm8 3/5
  13230. IMUL r32,imm8 7/9
  13231. IMUL r16,imm16 3/5
  13232. IMUL r32,imm32 7/9
  13233. IMUL r16,r/m16,imm8 3/5
  13234. IMUL r32,r/m32,imm8 7/9
  13235. IMUL r16,r/m16,imm16 3/5
  13236. IMUL r32,r/m32,imm32 7/9
  13237. IN AL,imm8 16
  13238. IN AL,imm8 (PM, CPL <= IOPL) 6
  13239. IN AL,imm8 (VM) 19
  13240. IN AX,imm8 16
  13241. IN AX,imm8 (PM, CPL <= IOPL) 6
  13242. IN AX,imm8 (VM) 19
  13243. IN EAX,imm8 16
  13244. IN EAX,imm8 (PM, CPL <= IOPL) 6
  13245. IN EAX,imm8 (VM) 19
  13246. IN AL,DX 16
  13247. IN AL,DX (PM, CPL <= IOPL) 6
  13248. IN AL,DX (VM) 19
  13249. IN AX,DX 16
  13250. IN AX,DX (PM, CPL <= IOPL) 6
  13251. IN AX,DX (VM) 19
  13252. IN EAX,DX 16
  13253. IN EAX,DX (PM, CPL <= IOPL) 6
  13254. IN EAX,DX (VM) 19
  13255. INC r/m8 1/3
  13256. INC r/m16 1/3
  13257. INC r/m32 1/3
  13258. INC r16 1
  13259. INC r32 1
  13260. INSB 20
  13261. INSW 20
  13262. INSD 20
  13263. INT 3 14
  13264. INT 3 (PM, same privilege) 49
  13265. INT 3 (PM, more privelege) 77
  13266. INT imm8 14
  13267. INT imm8 (PM, same privilege) 49
  13268. INT imm8 (PM, more privelege) 77
  13269. INTO 1 or 15
  13270. INTO (PM, same privilege) 1 or 49
  13271. INTO (PM, more privelege) 1 or 77
  13272. INVD 4
  13273. INVLPG m 4
  13274. IRET 14
  13275. IRET (PM, to same privilege) 31
  13276. IRET (PM, to lesser privilege) 66
  13277. IRETD 14
  13278. IRETD (PM, to same privilege) 31
  13279. IRETD (PM, to lesser privilege) 66
  13280. Jcc rel8 1 or 4
  13281. Jcc rel16 1 or 4
  13282. Jcc rel32 1 or 4
  13283. JCXZ rel8 3 or 7
  13284. JECXZ rel8 3 or 7
  13285. JMP rel8 4
  13286. JMP rel16 4
  13287. JMP r/m16 6/8
  13288. JMP ptr16:16 9
  13289. JMP ptr16:16 (PM, direct segment) 26
  13290. JMP ptr16:16 (PM, via call gate, same pr37
  13291. JMP m16:16 11
  13292. JMP m16:16 (PM, direct segment) 30
  13293. JMP m16:16 (PM, via call gate, same priv39
  13294. JMP rel32 4
  13295. JMP r/m32 6/8
  13296. JMP ptr16:32 9
  13297. JMP ptr16:32 (PM, direct segment) 26
  13298. JMP ptr16:32 (PM, via call gate, same pr37
  13299. JMP m16:32 11
  13300. JMP m16:32 (PM, direct segment) 30
  13301. JMP m16:32 (PM, via call gate, same priv39
  13302. LAHF 2
  13303. LAR r16,r/m16 11/12
  13304. LAR r32,r/m32 11/12
  13305. LDS r16,m16:16 6
  13306. LDS r32,m16:32 6
  13307. LDS r16,m16:16 (PM) 19
  13308. LDS r32,m16:32 (PM) 19
  13309. LSS r16,m16:16 6
  13310. LSS r32,m16:32 6
  13311. LSS r16,m16:16 (PM) 19
  13312. LSS r32,m16:32 (PM) 19
  13313. LES r16,m16:16 6
  13314. LES r32,m16:32 6
  13315. LES r16,m16:16 (PM) 19
  13316. LES r32,m16:32 (PM) 19
  13317. LFS r16,m16:16 6
  13318. LFS r32,m16:32 6
  13319. LFS r16,m16:16 (PM) 19
  13320. LFS r32,m16:32 (PM) 19
  13321. LGS r16,m16:16 6
  13322. LGS r32,m16:32 6
  13323. LGS r16,m16:16 (PM) 19
  13324. LGS r32,m16:32 (PM) 19
  13325. LEA r16,m 2 (w/o index)/3(with index)
  13326. LEA r32,m 2 (w/o index)/3(with index)
  13327. LEAVE 3
  13328. LGDT m16&32 9
  13329. LIDT m16&32 9
  13330. LLDT r/m16 16/17
  13331. LMSW r/m16 5
  13332. LODSB 4
  13333. LODSW 4
  13334. LODSD 4
  13335. LOOP rel8 3 or 7
  13336. LOOPE rel8 3 or 7
  13337. LOOPNE rel8 3 or 7
  13338. LSL r16,r/m16 14/15
  13339. LSL r32,r/m32 14/15
  13340. LTR r/m16 16/17
  13341. MOV r/m8,r8 1/2
  13342. MOV r/m16,r16 1/2
  13343. MOV r/m32,r32 1/2
  13344. MOV r8,r/m8 1/2
  13345. MOV r16,r/m16 1/2
  13346. MOV r32,r/m32 1/2
  13347. MOV r/m16,sreg 1/2
  13348. MOV sreg,r/m16 2/3
  13349. MOV sreg,r/m16 (PM) 15/16
  13350. MOV AL,moffs8 2
  13351. MOV AX,moffs16 2
  13352. MOV EAX,moffs32 2
  13353. MOV moffs8,AL 1/2
  13354. MOV moffs16,AX 1/2
  13355. MOV moffs32,EAX 1/2
  13356. MOV r8,imm8 1
  13357. MOV r16,imm16 1
  13358. MOV r32,imm32 1
  13359. MOV r/m8,imm8 1/2
  13360. MOV r/m16,imm16 1/2
  13361. MOV r/m32,imm32 1/2
  13362. MOV CR0,r32 11
  13363. MOV CR2,r32 3
  13364. MOV CR3,r32 3
  13365. MOV r32,CRi 1 (if CR0)/3 (if CR2,CR3)
  13366. MOV r32,DR0-DR3 3
  13367. MOV r32,DR4-DR5 3
  13368. MOV r32,DR6-DR7 3
  13369. MOV DR0-DR3,r32 1
  13370. MOV DR4-DR5,r32 1
  13371. MOV DR6-DR7,r32 1
  13372. MOV r32,TR4-TR7 3
  13373. MOV r32,TR3 5
  13374. MOV TR3,r32 5
  13375. MOV TR4-TR7,r32 1
  13376. MOVSB 5
  13377. MOVSW 5
  13378. MOVSD 5
  13379. MOVSX r16,r/m8 1/3
  13380. MOVSX r32,r/m8 1/3
  13381. MOVSX r32,r/m16 1/3
  13382. MOVZX r16,r/m8 2/3
  13383. MOVZX r32,r/m8 2/3
  13384. MOVZX r32,r/m16 2/3
  13385. MUL r/m8 3/5
  13386. MUL r/m16 3/5
  13387. MUL r/m32 7/9
  13388. NEG r/m8 1/3
  13389. NEG r/m16 1/3
  13390. NEG r/m32 1/3
  13391. NOP 1
  13392. NOT r/m8 1/3
  13393. NOT r/m16 1/3
  13394. NOT r/m32 1/3
  13395. OR AL,imm8 1
  13396. OR AX,imm16 1
  13397. OR EAX,imm32 1
  13398. OR r/m8,imm8 1/3
  13399. OR r/m16,imm8 1/3
  13400. OR r/m32,imm8 1/3
  13401. OR r/m16,imm16 1/3
  13402. OR r/m32,imm32 1/3
  13403. OR r/m8,r8 1/3
  13404. OR r/m16,r16 1/3
  13405. OR r/m32,r32 1/3
  13406. OR r8,r/m8 1/3
  13407. OR r16,r/m16 1/3
  13408. OR r32,r/m32 1/3
  13409. OUT imm8,AL 18
  13410. OUT imm8,AL (PM, CPL <= IOPL) 4
  13411. OUT imm8,AL (VM) 17
  13412. OUT imm8,AX 18
  13413. OUT imm8,AX (PM, CPL <= IOPL) 4
  13414. OUT imm8,AX (VM) 17
  13415. OUT imm8,EAX 18
  13416. OUT imm8,EAX (PM, CPL <= IOPL) 4
  13417. OUT imm8,EAX (VM) 17
  13418. OUT DX,AL 18
  13419. OUT DX,AL (PM, CPL <= IOPL) 4
  13420. OUT DX,AL (VM) 17
  13421. OUT DX,AX 18
  13422. OUT DX,AX (PM, CPL <= IOPL) 4
  13423. OUT DX,AX (VM) 17
  13424. OUT DX,EAX 18
  13425. OUT DX,EAX (PM, CPL <= IOPL) 4
  13426. OUT DX,EAX (VM) 17
  13427. OUTSB 20
  13428. OUTSW 20
  13429. OUTSD 20
  13430. POP m16 5
  13431. POP m32 5
  13432. POP r16 3
  13433. POP r32 3
  13434. POP sreg 4
  13435. POP sreg (PM) 18
  13436. POPA 18
  13437. POPAD 18
  13438. POPF 4
  13439. POPF (PM) 4
  13440. POPF (VM) 4
  13441. POPFD 4
  13442. POPFD (PM) 4
  13443. POPFD (VM) 4
  13444. PUSH r/m16 2/4
  13445. PUSH r/m32 2/4
  13446. PUSH r16 2
  13447. PUSH r32 2
  13448. PUSH imm8 2
  13449. PUSH imm16 2
  13450. PUSH imm32 2
  13451. PUSH sreg 2
  13452. PUSHA 17
  13453. PUSHAD 17
  13454. PUSHF 2
  13455. PUSHF (PM) 2
  13456. PUSHF (VM) 2
  13457. PUSHFD 2
  13458. PUSHFD (PM) 2
  13459. PUSHFD (VM) 2
  13460. RCL r/m8,1 9/9
  13461. RCL r/m16,1 9/9
  13462. RCL r/m32,1 9/9
  13463. RCL r/m8,CL 9/9
  13464. RCL r/m16,CL 9/9
  13465. RCL r/m32,CL 9/9
  13466. RCL r/m8,imm8 9/9
  13467. RCL r/m16,imm8 9/9
  13468. RCL r/m32,imm8 9/9
  13469. RCR r/m8,1 9/9
  13470. RCR r/m16,1 9/9
  13471. RCR r/m32,1 9/9
  13472. RCR r/m8,CL 9/9
  13473. RCR r/m16,CL 9/9
  13474. RCR r/m32,CL 9/9
  13475. RCR r/m8,imm8 9/9
  13476. RCR r/m16,imm8 9/9
  13477. RCR r/m32,imm8 9/9
  13478. ROL r/m8,1 2/4
  13479. ROL r/m16,1 2/4
  13480. ROL r/m32,1 2/4
  13481. ROL r/m8,CL 3/5
  13482. ROL r/m16,CL 3/5
  13483. ROL r/m32,CL 3/5
  13484. ROL r/m8,imm8 2/4
  13485. ROL r/m16,imm8 2/4
  13486. ROL r/m32,imm8 2/4
  13487. ROR r/m8,1 2/4
  13488. ROR r/m16,1 2/4
  13489. ROR r/m32,1 2/4
  13490. ROR r/m8,CL 3/5
  13491. ROR r/m16,CL 3/5
  13492. ROR r/m32,CL 3/5
  13493. ROR r/m8,imm8 2/4
  13494. ROR r/m16,imm8 2/4
  13495. ROR r/m32,imm8 2/4
  13496. RET (near) 10
  13497. RET (far) 13
  13498. RET (PM, far, same PL) 26
  13499. RET (PM, far, different PL) 61
  13500. RET imm16 (near) 10
  13501. RET imm16 (far) 13
  13502. RET imm16 (PM, far, same PL) 26
  13503. RET imm16 (PM, far, different PL) 61
  13504. RSDC m80,sreg 10
  13505. RSLDT m80 10
  13506. RSM 76
  13507. RSTS m80 10
  13508. SAHF 2
  13509. SAL r/m8,1 2/4
  13510. SAL r/m16,1 2/4
  13511. SAL r/m32,1 2/4
  13512. SAL r/m8,CL 3/5
  13513. SAL r/m16,CL 3/5
  13514. SAL r/m32,CL 3/5
  13515. SAL r/m8,imm8 2/4
  13516. SAL r/m16,imm8 2/4
  13517. SAL r/m32,imm8 2/4
  13518. SAR r/m8,1 2/4
  13519. SAR r/m16,1 2/4
  13520. SAR r/m32,1 2/4
  13521. SAR r/m8,CL 3/5
  13522. SAR r/m16,CL 3/5
  13523. SAR r/m32,CL 3/5
  13524. SAR r/m8,imm8 2/4
  13525. SAR r/m16,imm8 2/4
  13526. SAR r/m32,imm8 2/4
  13527. SHL r/m8,1 1/3
  13528. SHL r/m16,1 1/3
  13529. SHL r/m32,1 1/3
  13530. SHL r/m8,CL 2/4
  13531. SHL r/m16,CL 2/4
  13532. SHL r/m32,CL 2/4
  13533. SHL r/m8,imm8 1/3
  13534. SHL r/m16,imm8 1/3
  13535. SHL r/m32,imm8 1/3
  13536. SHR r/m8,1 1/3
  13537. SHR r/m16,1 1/3
  13538. SHR r/m32,1 1/3
  13539. SHR r/m8,CL 2/4
  13540. SHR r/m16,CL 2/4
  13541. SHR r/m32,CL 2/4
  13542. SHR r/m8,imm8 1/3
  13543. SHR r/m16,imm8 1/3
  13544. SHR r/m32,imm8 1/3
  13545. SBB AL,imm8 1
  13546. SBB AX,imm16 1
  13547. SBB EAX,imm32 1
  13548. SBB r/m8,imm8 1/3
  13549. SBB r/m16,imm8 1/3
  13550. SBB r/m32,imm8 1/3
  13551. SBB r/m16,imm16 1/3
  13552. SBB r/m32,imm32 1/3
  13553. SBB r/m8,r8 1/3
  13554. SBB r/m16,r16 1/3
  13555. SBB r/m32,r32 1/3
  13556. SBB r8,r/m8 1/3
  13557. SBB r16,r/m16 1/3
  13558. SBB r32,r/m32 1/3
  13559. SCASB 5
  13560. SCASW 5
  13561. SCASD 5
  13562. SETALC n/a
  13563. SETcc r/m8 2/2
  13564. SGDT m16&32 6
  13565. SIDT m16&32 6
  13566. SHLD r/m16,r16,imm8 1/3
  13567. SHLD r/m32,r32,imm8 1/3
  13568. SHLD r/m16,r16,CL 3/5
  13569. SHLD r/m32,r32,CL 3/5
  13570. SHRD r/m16,r16,imm8 1/3
  13571. SHRD r/m32,r32,imm8 1/3
  13572. SHRD r/m16,r16,CL 3/5
  13573. SHRD r/m32,r32,CL 3/5
  13574. SLDT r/m16 1/2
  13575. SLDT r/m32 1/2
  13576. SMINT 24
  13577. SMSW r/m16 1/2
  13578. STC 1
  13579. STD 1
  13580. STI 7
  13581. STOSB 3
  13582. STOSW 3
  13583. STOSD 3
  13584. STR r/m16 1/2
  13585. SUB AL,imm8 1
  13586. SUB AX,imm16 1
  13587. SUB EAX,imm32 1
  13588. SUB r/m8,imm8 1/3
  13589. SUB r/m16,imm8 1/3
  13590. SUB r/m32,imm8 1/3
  13591. SUB r/m16,imm16 1/3
  13592. SUB r/m32,imm32 1/3
  13593. SUB r/m8,r8 1/3
  13594. SUB r/m16,r16 1/3
  13595. SUB r/m32,r32 1/3
  13596. SUB r8,r/m8 1/3
  13597. SUB r16,r/m16 1/3
  13598. SUB r32,r/m32 1/3
  13599. SVDC sreg,m80 18
  13600. SVLDT m80 18
  13601. SVTS m80 18
  13602. TEST AL,imm8 1
  13603. TEST AX,imm16 1
  13604. TEST EAX,imm32 1
  13605. TEST r/m8,imm8 1/3
  13606. TEST r/m16,imm16 1/3
  13607. TEST r/m32,imm32 1/3
  13608. TEST r/m8,r8 1/3
  13609. TEST r/m16,r16 1/3
  13610. TEST r/m32,r32 1/3
  13611. UMOV r8,r/m8 n/a
  13612. UMOV r16,r/m16 n/a
  13613. UMOV r32,r/m32 n/a
  13614. UMOV r/m8,r8 n/a
  13615. UMOV r/m16,r16 n/a
  13616. UMOV r/m32,r32 n/a
  13617. VERR r/m16 9/10
  13618. VERW r/m16 9/10
  13619. WAIT 5
  13620. WBINVD 4
  13621. XADD r/m8,r8 3/6
  13622. XADD r/m16,r16 3/6
  13623. XADD r/m32,r32 3/6
  13624. XCHG AX,r16 3
  13625. XCHG EAX,r32 3
  13626. XCHG r/m8,r8 3/4
  13627. XCHG r/m16,r16 3/4
  13628. XCHG r/m32,r32 3/4
  13629. XLAT 3
  13630. XOR AL,imm8 1
  13631. XOR AX,imm16 1
  13632. XOR EAX,imm32 1
  13633. XOR r/m8,imm8 1/3
  13634. XOR r/m16,imm8 1/3
  13635. XOR r/m32,imm8 1/3
  13636. XOR r/m16,imm16 1/3
  13637. XOR r/m32,imm32 1/3
  13638. XOR r/m8,r8 1/3
  13639. XOR r/m16,r16 1/3
  13640. XOR r/m32,r32 1/3
  13641. XOR r8,r/m8 1/3
  13642. XOR r16,r/m16 1/3
  13643. XOR r32,r/m32 1/3
  13644. (END)
  13645. ----------------------------------------------------------
  13646. APPENDIX Y7 - Vendor Instruction Time for Intel Pentium Processor
  13647. AAA 3
  13648. AAD 10
  13649. AAD imm8 n/a
  13650. AAM 18
  13651. AAM imm8 n/a
  13652. AAS 3
  13653. ADC AL,imm8 1
  13654. ADC AX,imm16 1
  13655. ADC EAX,imm32 1
  13656. ADC r/m8,imm8 1/3
  13657. ADC r/m16,imm8 1/3
  13658. ADC r/m32,imm8 1/3
  13659. ADC r/m16,imm16 1/3
  13660. ADC r/m32,imm32 1/3
  13661. ADC r/m8,r8 1/3
  13662. ADC r/m16,r16 1/3
  13663. ADC r/m32,r32 1/3
  13664. ADC r8,r/m8 1/2
  13665. ADC r16,r/m16 1/2
  13666. ADC r32,r/m32 1/2
  13667. ADD AL,imm8 1
  13668. ADD AX,imm16 1
  13669. ADD EAX,imm32 1
  13670. ADD r/m8,imm8 1/3
  13671. ADD r/m16,imm8 1/3
  13672. ADD r/m32,imm8 1/3
  13673. ADD r/m16,imm16 1/3
  13674. ADD r/m32,imm32 1/3
  13675. ADD r/m8,r8 1/3
  13676. ADD r/m16,r16 1/3
  13677. ADD r/m32,r32 1/3
  13678. ADD r8,r/m8 1/2
  13679. ADD r16,r/m16 1/2
  13680. ADD r32,r/m32 1/2
  13681. AND AL,imm8 1
  13682. AND AX,imm16 1
  13683. AND EAX,imm32 1
  13684. AND r/m8,imm8 1/3
  13685. AND r/m16,imm8 1/3
  13686. AND r/m32,imm8 1/3
  13687. AND r/m16,imm16 1/3
  13688. AND r/m32,imm32 1/3
  13689. AND r/m8,r8 1/3
  13690. AND r/m16,r16 1/3
  13691. AND r/m32,r32 1/3
  13692. AND r8,r/m8 1/2
  13693. AND r16,r/m16 1/2
  13694. AND r32,r/m32 1/2
  13695. ARPL r/m16,r16 f
  13696. BOUND r16,m16&16 8/int+32
  13697. BOUND r32,m32&32 f
  13698. BSF r16,r/m16 6-34/6-35
  13699. BSF r32,r/m32 6-42/6-43
  13700. BSR r16,r/m16 7-39/7-40
  13701. BSR r32,r/m32 7-71/7-72
  13702. BSWAP r32 1
  13703. BT r/m16,r16 4/9
  13704. BT r/m32,r32 4/9
  13705. BT r/m16,imm8 4
  13706. BT r/m16,imm8 4
  13707. BTC r/m16,r16 7/13
  13708. BTC r/m32,r32 7/13
  13709. BTC r/m16,imm8 7/8
  13710. BTC r/m16,imm8 7/8
  13711. BTR r/m16,r16 7/13
  13712. BTR r/m32,r32 7/13
  13713. BTR r/m16,imm8 7/8
  13714. BTR r/m16,imm8 7/8
  13715. BTS r/m16,r16 7/13
  13716. BTS r/m32,r32 7/13
  13717. BTS r/m16,imm8 7/8
  13718. BTS r/m16,imm8 7/8
  13719. CALL rel16 1
  13720. CALL r/m16 2
  13721. CALL ptr16:16 4
  13722. CALL ptr16:16 (PM, direct segment) f
  13723. CALL ptr16:16 (PM, via call gate, same p22
  13724. CALL ptr16:16 (PM, via call gate, more p44
  13725. CALL ptr16:16 (PM, via call gate, more p45+2*x
  13726. CALL m16:16 5
  13727. CALL m16:16 (PM, direct segment) f
  13728. CALL m16:16 (PM, via gate, same priveleg22
  13729. CALL m16:16 (PM, via gate, more priveleg44
  13730. CALL m16:16 (PM, via gate, more priveleg45+2*x
  13731. CALL rel32 1
  13732. CALL r/m32 2
  13733. CALL ptr16:32 4
  13734. CALL ptr16:32 (PM, direct segment) f
  13735. CALL ptr16:32 (PM, via gate, same privel22
  13736. CALL ptr16:32 (PM, via gate, more privel44
  13737. CALL ptr16:32 (PM, via gate, more privel45+2*x
  13738. CALL m16:32 5
  13739. CALL m16:32 (PM, direct segment) f
  13740. CALL m16:32 (PM, via gate, same priveleg22
  13741. CALL m16:32 (PM, via gate, more priveleg44
  13742. CALL m16:32 (PM, via gate, more priveleg45+2*x
  13743. CBW 3
  13744. CWDE 3
  13745. CLC 2
  13746. CLD 2
  13747. CLI 7
  13748. CLTS 10
  13749. CMC 2
  13750. CMOVcc r16,r/m16 f
  13751. CMOVcc r32,r/m32 f
  13752. CMP AL,imm8 1
  13753. CMP AX,imm16 1
  13754. CMP EAX,imm32 1
  13755. CMP r/m8,imm8 1/2
  13756. CMP r/m16,imm8 1/2
  13757. CMP r/m32,imm8 1/2
  13758. CMP r/m16,imm16 1/2
  13759. CMP r/m32,imm32 1/2
  13760. CMP r/m8,r8 1/2
  13761. CMP r/m16,r16 1/2
  13762. CMP r/m32,r32 1/2
  13763. CMP r8,r/m8 1/2
  13764. CMP r16,r/m16 1/2
  13765. CMP r32,r/m32 1/2
  13766. CMPSB 5
  13767. CMPSW 5
  13768. CMPSD 5
  13769. CMPXCHG r/m8,r8 6
  13770. CMPXCHG r/m16,r16 6
  13771. CMPXCHG r/m32,r32 6
  13772. CMPXCHG8B r/m32 10
  13773. CPUID 14
  13774. CWD 2
  13775. CDQ 2
  13776. DAA 3
  13777. DAS 3
  13778. DEC r/m8 1/3
  13779. DEC r/m16 1/3
  13780. DEC r/m32 1/3
  13781. DEC r16 1
  13782. DEC r32 1
  13783. DIV r/m8 17
  13784. DIV r/m16 25
  13785. DIV r/m32 41
  13786. ESC imm4,r/m f
  13787. ENTER imm16,0 11
  13788. ENTER imm16,1 15
  13789. ENTER imm16,imm8 15+2*n
  13790. HLT imfinity
  13791. IBTS r/m16,AX,CL,r16 None
  13792. IBTS r/m32,EAX,CL,r32 f
  13793. IDIV r/m8 22
  13794. IDIV r/m16 30
  13795. IDIV r/m32 46
  13796. IMUL r/m8 11
  13797. IMUL r/m16 11
  13798. IMUL r/m32 10
  13799. IMUL r16,r/m16 10
  13800. IMUL r32,r/m32 10
  13801. IMUL r16,imm8 10
  13802. IMUL r32,imm8 10
  13803. IMUL r16,imm16 10
  13804. IMUL r32,imm32 10
  13805. IMUL r16,r/m16,imm8 10
  13806. IMUL r32,r/m32,imm8 10
  13807. IMUL r16,r/m16,imm16 10
  13808. IMUL r32,r/m32,imm32 10
  13809. IN AL,imm8 7
  13810. IN AL,imm8 (PM, CPL <= IOPL) 4/21
  13811. IN AL,imm8 (VM) 19
  13812. IN AX,imm8 7
  13813. IN AX,imm8 (PM, CPL <= IOPL) 4/21
  13814. IN AX,imm8 (VM) 19
  13815. IN EAX,imm8 7
  13816. IN EAX,imm8 (PM, CPL <= IOPL) 4/21
  13817. IN EAX,imm8 (VM) 19
  13818. IN AL,DX 7
  13819. IN AL,DX (PM, CPL <= IOPL) 4/21
  13820. IN AL,DX (VM) 19
  13821. IN AX,DX 7
  13822. IN AX,DX (PM, CPL <= IOPL) 4/21
  13823. IN AX,DX (VM) 19
  13824. IN EAX,DX 7
  13825. IN EAX,DX (PM, CPL <= IOPL) 4/21
  13826. IN EAX,DX (VM) 19
  13827. INC r/m8 1/3
  13828. INC r/m16 1/3
  13829. INC r/m32 1/3
  13830. INC r16 1
  13831. INC r32 1
  13832. INSB 9
  13833. INSW 9
  13834. INSD 9
  13835. INT 3 13
  13836. INT 3 (PM, same privilege) 27
  13837. INT 3 (PM, more privelege) 44
  13838. INT imm8 16
  13839. INT imm8 (PM, same privilege) 31
  13840. INT imm8 (PM, more privelege) 48
  13841. INTO 4/13
  13842. INTO (PM, same privilege) 4/27
  13843. INTO (PM, more privelege) 4/44
  13844. INVD 15
  13845. INVLPG m 25
  13846. IRET 10
  13847. IRET (PM, to same privilege) 10
  13848. IRET (PM, to lesser privilege) 27
  13849. IRETD 10
  13850. IRETD (PM, to same privilege) 10
  13851. IRETD (PM, to lesser privilege) 27
  13852. Jcc rel8 1
  13853. Jcc rel16 1
  13854. Jcc rel32 1
  13855. JCXZ rel8 6,5
  13856. JECXZ rel8 6,5
  13857. JMP rel8 1
  13858. JMP rel16 1
  13859. JMP r/m16 2
  13860. JMP ptr16:16 3
  13861. JMP ptr16:16 (PM, direct segment) 3
  13862. JMP ptr16:16 (PM, via call gate, same pr18
  13863. JMP m16:16 4
  13864. JMP m16:16 (PM, direct segment) 4
  13865. JMP m16:16 (PM, via call gate, same priv18
  13866. JMP rel32 1
  13867. JMP r/m32 2
  13868. JMP ptr16:32 3
  13869. JMP ptr16:32 (PM, direct segment) 3
  13870. JMP ptr16:32 (PM, via call gate, same pr18
  13871. JMP m16:32 4
  13872. JMP m16:32 (PM, direct segment) 4
  13873. JMP m16:32 (PM, via call gate, same priv18
  13874. LAHF 2
  13875. LAR r16,r/m16 8
  13876. LAR r32,r/m32 8
  13877. LDS r16,m16:16 4
  13878. LDS r32,m16:32 4
  13879. LDS r16,m16:16 (PM) f
  13880. LDS r32,m16:32 (PM) f
  13881. LSS r16,m16:16 4
  13882. LSS r32,m16:32 4
  13883. LSS r16,m16:16 (PM) 8
  13884. LSS r32,m16:32 (PM) 8
  13885. LES r16,m16:16 4
  13886. LES r32,m16:32 4
  13887. LES r16,m16:16 (PM) f
  13888. LES r32,m16:32 (PM) f
  13889. LFS r16,m16:16 4
  13890. LFS r32,m16:32 4
  13891. LFS r16,m16:16 (PM) f
  13892. LFS r32,m16:32 (PM) f
  13893. LGS r16,m16:16 4
  13894. LGS r32,m16:32 4
  13895. LGS r16,m16:16 (PM) f
  13896. LGS r32,m16:32 (PM) f
  13897. LEA r16,m 1
  13898. LEA r32,m 1
  13899. LEAVE 3
  13900. LGDT m16&32 6
  13901. LIDT m16&32 6
  13902. LLDT r/m16 9
  13903. LMSW r/m16 8
  13904. LOADALL f
  13905. LODSB 2
  13906. LODSW 2
  13907. LODSD 2
  13908. LOOP rel8 5/6
  13909. LOOPE rel8 7/8
  13910. LOOPNE rel8 7/8
  13911. LSL r16,r/m16 8
  13912. LSL r32,r/m32 8
  13913. LTR r/m16 10
  13914. MOV r/m8,r8 1
  13915. MOV r/m16,r16 1
  13916. MOV r/m32,r32 1
  13917. MOV r8,r/m8 1
  13918. MOV r16,r/m16 1
  13919. MOV r32,r/m32 1
  13920. MOV r/m16,sreg 1
  13921. MOV sreg,r/m16 2/3
  13922. MOV sreg,r/m16 (PM) f
  13923. MOV AL,moffs8 1
  13924. MOV AX,moffs16 1
  13925. MOV EAX,moffs32 1
  13926. MOV moffs8,AL 1
  13927. MOV moffs16,AX 1
  13928. MOV moffs32,EAX 1
  13929. MOV r8,imm8 1
  13930. MOV r16,imm16 1
  13931. MOV r32,imm32 1
  13932. MOV r/m8,imm8 1
  13933. MOV r/m16,imm16 1
  13934. MOV r/m32,imm32 1
  13935. MOV CR0,r32 22
  13936. MOV CR2,r32 12/21,46
  13937. MOV CR3,r32 12/21,46
  13938. MOV CR4,r32 14
  13939. MOV r32,CRi 4
  13940. MOV r32,DR0-DR3 11
  13941. MOV r32,DR4-DR5 11
  13942. MOV r32,DR6-DR7 11
  13943. MOV DR0-DR3,r32 11
  13944. MOV DR4-DR5,r32 12
  13945. MOV DR6-DR7,r32 11
  13946. MOV r32,TR4-TR7 None
  13947. MOV r32,TR3 None
  13948. MOV TR3,r32 None
  13949. MOV TR4-TR7,r32 None
  13950. MOVSB 4
  13951. MOVSW 4
  13952. MOVSD 4
  13953. MOVSX r16,r/m8 3
  13954. MOVSX r32,r/m8 3
  13955. MOVSX r32,r/m16 3
  13956. MOVZX r16,r/m8 3
  13957. MOVZX r32,r/m8 3
  13958. MOVZX r32,r/m16 3
  13959. MUL r/m8 11
  13960. MUL r/m16 11
  13961. MUL r/m32 10
  13962. NEG r/m8 1/3
  13963. NEG r/m16 1/3
  13964. NEG r/m32 1/3
  13965. NOP 1
  13966. NOT r/m8 1/3
  13967. NOT r/m16 1/3
  13968. NOT r/m32 1/3
  13969. OR AL,imm8 1
  13970. OR AX,imm16 1
  13971. OR EAX,imm32 1
  13972. OR r/m8,imm8 1/3
  13973. OR r/m16,imm8 1/3
  13974. OR r/m32,imm8 1/3
  13975. OR r/m16,imm16 1/3
  13976. OR r/m32,imm32 1/3
  13977. OR r/m8,r8 1/3
  13978. OR r/m16,r16 1/3
  13979. OR r/m32,r32 1/3
  13980. OR r8,r/m8 1/2
  13981. OR r16,r/m16 1/2
  13982. OR r32,r/m32 1/2
  13983. OUT imm8,AL 12
  13984. OUT imm8,AL (PM, CPL <= IOPL) 9/25
  13985. OUT imm8,AL (VM) 24
  13986. OUT imm8,AX 12
  13987. OUT imm8,AX (PM, CPL <= IOPL) 9/25
  13988. OUT imm8,AX (VM) 24
  13989. OUT imm8,EAX 12
  13990. OUT imm8,EAX (PM, CPL <= IOPL) 9/25
  13991. OUT imm8,EAX (VM) 24
  13992. OUT DX,AL 12
  13993. OUT DX,AL (PM, CPL <= IOPL) 9/25
  13994. OUT DX,AL (VM) 24
  13995. OUT DX,AX 12
  13996. OUT DX,AX (PM, CPL <= IOPL) 9/25
  13997. OUT DX,AX (VM) 24
  13998. OUT DX,EAX 12
  13999. OUT DX,EAX (PM, CPL <= IOPL) 9/25
  14000. OUT DX,EAX (VM) 24
  14001. OUTSB 13
  14002. OUTSW 13
  14003. OUTSD 13
  14004. POP m16 3
  14005. POP m32 3
  14006. POP r16 1
  14007. POP r32 1
  14008. POP sreg 3
  14009. POP sreg (PM) f
  14010. POPA 5
  14011. POPAD 5
  14012. POPF f
  14013. POPF (PM) 4
  14014. POPF (VM) 6
  14015. POPFD f
  14016. POPFD (PM) 4
  14017. POPFD (VM) 6
  14018. PUSH r/m16 2
  14019. PUSH r/m32 2
  14020. PUSH r16 1
  14021. PUSH r32 1
  14022. PUSH imm8 1
  14023. PUSH imm16 1
  14024. PUSH imm32 1
  14025. PUSH sreg 1
  14026. PUSHA 5
  14027. PUSHAD 5
  14028. PUSHF f
  14029. PUSHF (PM) 3
  14030. PUSHF (VM) 4
  14031. PUSHFD f
  14032. PUSHFD (PM) 3
  14033. PUSHFD (VM) 4
  14034. RCL r/m8,1 1/3
  14035. RCL r/m16,1 1/3
  14036. RCL r/m32,1 1/3
  14037. RCL r/m8,CL 7-24/9-26
  14038. RCL r/m16,CL 7-24/9-26
  14039. RCL r/m32,CL 7-24/9-26
  14040. RCL r/m8,imm8 8-25/10-27
  14041. RCL r/m16,imm8 8-25/10-27
  14042. RCL r/m32,imm8 8-25/10-27
  14043. RCR r/m8,1 1/3
  14044. RCR r/m16,1 1/3
  14045. RCR r/m32,1 1/3
  14046. RCR r/m8,CL 7-24/9-26
  14047. RCR r/m16,CL 7-24/9-26
  14048. RCR r/m32,CL 7-24/9-26
  14049. RCR r/m8,imm8 8-25/10-27
  14050. RCR r/m16,imm8 8-25/10-27
  14051. RCR r/m32,imm8 8-25/10-27
  14052. ROL r/m8,1 1/3
  14053. ROL r/m16,1 1/3
  14054. ROL r/m32,1 1/3
  14055. ROL r/m8,CL 4
  14056. ROL r/m16,CL 4
  14057. ROL r/m32,CL 4
  14058. ROL r/m8,imm8 1/3
  14059. ROL r/m16,imm8 1/3
  14060. ROL r/m32,imm8 1/3
  14061. ROR r/m8,1 1/3
  14062. ROR r/m16,1 1/3
  14063. ROR r/m32,1 1/3
  14064. ROR r/m8,CL 4
  14065. ROR r/m16,CL 4
  14066. ROR r/m32,CL 4
  14067. ROR r/m8,imm8 1/3
  14068. ROR r/m16,imm8 1/3
  14069. ROR r/m32,imm8 1/3
  14070. RDMSR 20-24
  14071. RDTSC f
  14072. RET (near) 3
  14073. RET (far) 4
  14074. RET (PM, far, same PL) 4
  14075. RET (PM, far, different PL) 23
  14076. RET imm16 (near) 4
  14077. RET imm16 (far) 4
  14078. RET imm16 (PM, far, same PL) 4
  14079. RET imm16 (PM, far, different PL) 23
  14080. RSDC m80,sreg f
  14081. RSLDT m80 f
  14082. RSM 83
  14083. RSTS m80 f
  14084. SAHF 2
  14085. SAL r/m8,1 1/3
  14086. SAL r/m16,1 1/3
  14087. SAL r/m32,1 1/3
  14088. SAL r/m8,CL 4
  14089. SAL r/m16,CL 4
  14090. SAL r/m32,CL 4
  14091. SAL r/m8,imm8 1/3
  14092. SAL r/m16,imm8 1/3
  14093. SAL r/m32,imm8 1/3
  14094. SAR r/m8,1 1/3
  14095. SAR r/m16,1 1/3
  14096. SAR r/m32,1 1/3
  14097. SAR r/m8,CL 4
  14098. SAR r/m16,CL 4
  14099. SAR r/m32,CL 4
  14100. SAR r/m8,imm8 1/3
  14101. SAR r/m16,imm8 1/3
  14102. SAR r/m32,imm8 1/3
  14103. SHL r/m8,1 1/3
  14104. SHL r/m16,1 1/3
  14105. SHL r/m32,1 1/3
  14106. SHL r/m8,CL 4
  14107. SHL r/m16,CL 4
  14108. SHL r/m32,CL 4
  14109. SHL r/m8,imm8 1/3
  14110. SHL r/m16,imm8 1/3
  14111. SHL r/m32,imm8 1/3
  14112. SHR r/m8,1 1/3
  14113. SHR r/m16,1 1/3
  14114. SHR r/m32,1 1/3
  14115. SHR r/m8,CL 4
  14116. SHR r/m16,CL 4
  14117. SHR r/m32,CL 4
  14118. SHR r/m8,imm8 1/3
  14119. SHR r/m16,imm8 1/3
  14120. SHR r/m32,imm8 1/3
  14121. SBB AL,imm8 1
  14122. SBB AX,imm16 1
  14123. SBB EAX,imm32 1
  14124. SBB r/m8,imm8 1/3
  14125. SBB r/m16,imm8 1/3
  14126. SBB r/m32,imm8 1/3
  14127. SBB r/m16,imm16 1/3
  14128. SBB r/m32,imm32 1/3
  14129. SBB r/m8,r8 1/3
  14130. SBB r/m16,r16 1/3
  14131. SBB r/m32,r32 1/3
  14132. SBB r8,r/m8 1/2
  14133. SBB r16,r/m16 1/2
  14134. SBB r32,r/m32 1/2
  14135. SCASB 4
  14136. SCASW 4
  14137. SCASD 4
  14138. SETALC f
  14139. SETcc r/m8 1/2
  14140. SGDT m16&32 4
  14141. SIDT m16&32 4
  14142. SHLD r/m16,r16,imm8 4
  14143. SHLD r/m32,r32,imm8 4
  14144. SHLD r/m16,r16,CL 4/5
  14145. SHLD r/m32,r32,CL 4/5
  14146. SHRD r/m16,r16,imm8 4
  14147. SHRD r/m32,r32,imm8 4
  14148. SHRD r/m16,r16,CL 4/5
  14149. SHRD r/m32,r32,CL 4/5
  14150. SLDT r/m16 2
  14151. SLDT r/m32 f
  14152. SMINT f
  14153. SMSW r/m16 4
  14154. STC 2
  14155. STD 2
  14156. STI 7
  14157. STOSB 3
  14158. STOSW 3
  14159. STOSD 3
  14160. STR r/m16 2
  14161. SUB AL,imm8 1
  14162. SUB AX,imm16 1
  14163. SUB EAX,imm32 1
  14164. SUB r/m8,imm8 1/3
  14165. SUB r/m16,imm8 1/3
  14166. SUB r/m32,imm8 1/3
  14167. SUB r/m16,imm16 1/3
  14168. SUB r/m32,imm32 1/3
  14169. SUB r/m8,r8 1/3
  14170. SUB r/m16,r16 1/3
  14171. SUB r/m32,r32 1/3
  14172. SUB r8,r/m8 1/2
  14173. SUB r16,r/m16 1/2
  14174. SUB r32,r/m32 1/2
  14175. SVDC sreg,m80 f
  14176. SVLDT m80 f
  14177. SVTS m80 f
  14178. TEST AL,imm8 1
  14179. TEST AX,imm16 1
  14180. TEST EAX,imm32 1
  14181. TEST r/m8,imm8 1/2
  14182. TEST r/m16,imm16 1/2
  14183. TEST r/m32,imm32 1/2
  14184. TEST r/m8,r8 1/2
  14185. TEST r/m16,r16 1/2
  14186. TEST r/m32,r32 1/2
  14187. UMOV r8,r/m8 f
  14188. UMOV r16,r/m16 f
  14189. UMOV r32,r/m32 f
  14190. UMOV r/m8,r8 f
  14191. UMOV r/m16,r16 f
  14192. UMOV r/m32,r32 f
  14193. VERR r/m16 7
  14194. VERW r/m16 7
  14195. WAIT 1
  14196. WBINVD 2000+
  14197. WRMSR 30-45
  14198. XADD r/m8,r8 3/4
  14199. XADD r/m16,r16 3/4
  14200. XADD r/m32,r32 3/4
  14201. XCHG AX,r16 2
  14202. XCHG EAX,r32 2
  14203. XCHG r/m8,r8 3
  14204. XCHG r/m16,r16 3
  14205. XCHG r/m32,r32 3
  14206. XLAT 4
  14207. XOR AL,imm8 1
  14208. XOR AX,imm16 1
  14209. XOR EAX,imm32 1
  14210. XOR r/m8,imm8 1/3
  14211. XOR r/m16,imm8 1/3
  14212. XOR r/m32,imm8 1/3
  14213. XOR r/m16,imm16 1/3
  14214. XOR r/m32,imm32 1/3
  14215. XOR r/m8,r8 1/3
  14216. XOR r/m16,r16 1/3
  14217. XOR r/m32,r32 1/3
  14218. XOR r8,r/m8 1/2
  14219. XOR r16,r/m16 1/2
  14220. XOR r32,r/m32 1/2
  14221. (END)
  14222. ----------------------------------------------------------
  14223. APPENDIX Y8 - Vendor Instruction Time for Cyrix Cx6x86 (M1) CPU
  14224. AAA 7
  14225. AAD 7
  14226. AAD imm8 7
  14227. AAM 13-21
  14228. AAM imm8 13-21??
  14229. AAS 7
  14230. ADC AL,imm8 1
  14231. ADC AX,imm16 1
  14232. ADC EAX,imm32 1
  14233. ADC r/m8,imm8 1
  14234. ADC r/m16,imm8 1
  14235. ADC r/m32,imm8 1
  14236. ADC r/m16,imm16 1
  14237. ADC r/m32,imm32 1
  14238. ADC r/m8,r8 1
  14239. ADC r/m16,r16 1
  14240. ADC r/m32,r32 1
  14241. ADC r8,r/m8 1
  14242. ADC r16,r/m16 1
  14243. ADC r32,r/m32 1
  14244. ADD AL,imm8 1
  14245. ADD AX,imm16 1
  14246. ADD EAX,imm32 1
  14247. ADD r/m8,imm8 1
  14248. ADD r/m16,imm8 1
  14249. ADD r/m32,imm8 1
  14250. ADD r/m16,imm16 1
  14251. ADD r/m32,imm32 1
  14252. ADD r/m8,r8 1
  14253. ADD r/m16,r16 1
  14254. ADD r/m32,r32 1
  14255. ADD r8,r/m8 1
  14256. ADD r16,r/m16 1
  14257. ADD r32,r/m32 1
  14258. AND AL,imm8 1
  14259. AND AX,imm16 1
  14260. AND EAX,imm32 1
  14261. AND r/m8,imm8 1
  14262. AND r/m16,imm8 1
  14263. AND r/m32,imm8 1
  14264. AND r/m16,imm16 1
  14265. AND r/m32,imm32 1
  14266. AND r/m8,r8 1
  14267. AND r/m16,r16 1
  14268. AND r/m32,r32 1
  14269. AND r8,r/m8 1
  14270. AND r16,r/m16 1
  14271. AND r32,r/m32 1
  14272. ARPL r/m16,r16 9
  14273. BOUND r16,m16&16 11 or 20
  14274. BOUND r32,m32&32 11 or 20
  14275. BSF r16,r/m16 3
  14276. BSF r32,r/m32 3
  14277. BSR r16,r/m16 3
  14278. BSR r32,r/m32 3
  14279. BSWAP r32 4
  14280. BT r/m16,r16 5/6
  14281. BT r/m32,r32 5/6
  14282. BT r/m16,imm8 2
  14283. BT r/m16,imm8 2
  14284. BTC r/m16,r16 5/6
  14285. BTC r/m32,r32 5/6
  14286. BTC r/m16,imm8 3
  14287. BTC r/m16,imm8 3
  14288. BTR r/m16,r16 5/6
  14289. BTR r/m32,r32 5/6
  14290. BTR r/m16,imm8 3
  14291. BTR r/m16,imm8 3
  14292. BTS r/m16,r16 5/6
  14293. BTS r/m32,r32 5/6
  14294. BTS r/m16,imm8 3
  14295. BTS r/m16,imm8 3
  14296. CALL rel16 1
  14297. CALL r/m16 1/3
  14298. CALL ptr16:16 3
  14299. CALL ptr16:16 (PM, direct segment) 4
  14300. CALL ptr16:16 (PM, via call gate, same p15
  14301. CALL ptr16:16 (PM, via call gate, more p26
  14302. CALL ptr16:16 (PM, via call gate, more p35+2*param
  14303. CALL m16:16 5
  14304. CALL m16:16 (PM, direct segment) 8
  14305. CALL m16:16 (PM, via gate, same priveleg20
  14306. CALL m16:16 (PM, via gate, more priveleg31
  14307. CALL m16:16 (PM, via gate, more priveleg40+2*param
  14308. CALL rel32 1
  14309. CALL r/m32 1/3
  14310. CALL ptr16:32 3
  14311. CALL ptr16:32 (PM, direct segment) 4
  14312. CALL ptr16:32 (PM, via gate, same privel15
  14313. CALL ptr16:32 (PM, via gate, more privel26
  14314. CALL ptr16:32 (PM, via gate, more privel35+2*param
  14315. CALL m16:32 5
  14316. CALL m16:32 (PM, direct segment) 8
  14317. CALL m16:32 (PM, via gate, same priveleg20
  14318. CALL m16:32 (PM, via gate, more priveleg31
  14319. CALL m16:32 (PM, via gate, more priveleg40+2*param
  14320. CBW 3
  14321. CWDE 2
  14322. CLC 1
  14323. CLD 7
  14324. CLI 7
  14325. CLTS 10
  14326. CMC 2
  14327. CMP AL,imm8 1
  14328. CMP AX,imm16 1
  14329. CMP EAX,imm32 1
  14330. CMP r/m8,imm8 1
  14331. CMP r/m16,imm8 1
  14332. CMP r/m32,imm8 1
  14333. CMP r/m16,imm16 1
  14334. CMP r/m32,imm32 1
  14335. CMP r/m8,r8 1
  14336. CMP r/m16,r16 1
  14337. CMP r/m32,r32 1
  14338. CMP r8,r/m8 1
  14339. CMP r16,r/m16 1
  14340. CMP r32,r/m32 1
  14341. CMPSB 5
  14342. CMPSW 5
  14343. CMPSD 5
  14344. CMPXCHG r/m8,r8 11
  14345. CMPXCHG r/m16,r16 11
  14346. CMPXCHG r/m32,r32 11
  14347. CPUID 12
  14348. CWD 2
  14349. CDQ 2
  14350. DAA 9
  14351. DAS 9
  14352. DEC r/m8 1
  14353. DEC r/m16 1
  14354. DEC r/m32 1
  14355. DEC r16 1
  14356. DEC r32 1
  14357. DIV r/m8 13-17
  14358. DIV r/m16 13-25
  14359. DIV r/m32 13-41
  14360. ENTER imm16,0 10
  14361. ENTER imm16,1 13
  14362. ENTER imm16,imm8 10+level*3
  14363. HLT 5
  14364. IDIV r/m8 16-20
  14365. IDIV r/m16 16-28
  14366. IDIV r/m32 17-45
  14367. IMUL r/m8 4
  14368. IMUL r/m16 4
  14369. IMUL r/m32 10
  14370. IMUL r16,r/m16 4
  14371. IMUL r32,r/m32 10
  14372. IMUL r16,imm8 ??
  14373. IMUL r32,imm8 ??
  14374. IMUL r16,imm16 ??
  14375. IMUL r32,imm32 ??
  14376. IMUL r16,r/m16,imm8 5
  14377. IMUL r32,r/m32,imm8 11
  14378. IMUL r16,r/m16,imm16 5
  14379. IMUL r32,r/m32,imm32 11
  14380. IN AL,imm8 14
  14381. IN AL,imm8 (PM, CPL <= IOPL) 14
  14382. IN AL,imm8 (VM) 28
  14383. IN AX,imm8 14
  14384. IN AX,imm8 (PM, CPL <= IOPL) 14
  14385. IN AX,imm8 (VM) 28
  14386. IN EAX,imm8 14
  14387. IN EAX,imm8 (PM, CPL <= IOPL) 14
  14388. IN EAX,imm8 (VM) 28
  14389. IN AL,DX 14
  14390. IN AL,DX (PM, CPL <= IOPL) 14
  14391. IN AL,DX (VM) 28
  14392. IN AX,DX 14
  14393. IN AX,DX (PM, CPL <= IOPL) 14
  14394. IN AX,DX (VM) 28
  14395. IN EAX,DX 14
  14396. IN EAX,DX (PM, CPL <= IOPL) 14
  14397. IN EAX,DX (VM) 28
  14398. INC r/m8 1
  14399. INC r/m16 1
  14400. INC r/m32 1
  14401. INC r16 1
  14402. INC r32 1
  14403. INSB 14
  14404. INSW 14
  14405. INSD 14
  14406. INT 3 9
  14407. INT 3 (PM, same privilege) 21
  14408. INT 3 (PM, more privelege) 32
  14409. INT imm8 9
  14410. INT imm8 (PM, same privilege) 21
  14411. INT imm8 (PM, more privelege) 32
  14412. INTO 6 or ??
  14413. INTO (PM, same privilege) 6 or 15+21
  14414. INTO (PM, more privelege) 6 or 15+32
  14415. INVD 12
  14416. INVLPG m 13
  14417. IRET 7
  14418. IRET (PM, to same privilege) 10
  14419. IRET (PM, to lesser privilege) 26
  14420. IRETD 7
  14421. IRETD (PM, to same privilege) 10
  14422. IRETD (PM, to lesser privilege) 26
  14423. Jcc rel8 1 or 1
  14424. Jcc rel16 1 or 1
  14425. Jcc rel32 1 or 1
  14426. JCXZ rel8 1 or 1
  14427. JECXZ rel8 1 or 1
  14428. JMP rel8 1
  14429. JMP rel16 1
  14430. JMP r/m16 1/3
  14431. JMP ptr16:16 1
  14432. JMP ptr16:16 (PM, direct segment) 4
  14433. JMP ptr16:16 (PM, via call gate, same pr14
  14434. JMP m16:16 5
  14435. JMP m16:16 (PM, direct segment) 7
  14436. JMP m16:16 (PM, via call gate, same priv17
  14437. JMP rel32 1
  14438. JMP r/m32 1/3
  14439. JMP ptr16:32 1
  14440. JMP ptr16:32 (PM, direct segment) 4
  14441. JMP ptr16:32 (PM, via call gate, same pr14
  14442. JMP m16:32 5
  14443. JMP m16:32 (PM, direct segment) 7
  14444. JMP m16:32 (PM, via call gate, same priv17
  14445. LAHF 2
  14446. LAR r16,r/m16 8
  14447. LAR r32,r/m32 8
  14448. LDS r16,m16:16 2
  14449. LDS r32,m16:32 2
  14450. LDS r16,m16:16 (PM) 4
  14451. LDS r32,m16:32 (PM) 4
  14452. LSS r16,m16:16 2
  14453. LSS r32,m16:32 2
  14454. LSS r16,m16:16 (PM) 4
  14455. LSS r32,m16:32 (PM) 4
  14456. LES r16,m16:16 2
  14457. LES r32,m16:32 2
  14458. LES r16,m16:16 (PM) 4
  14459. LES r32,m16:32 (PM) 4
  14460. LFS r16,m16:16 2
  14461. LFS r32,m16:32 2
  14462. LFS r16,m16:16 (PM) 4
  14463. LFS r32,m16:32 (PM) 4
  14464. LGS r16,m16:16 2
  14465. LGS r32,m16:32 2
  14466. LGS r16,m16:16 (PM) 4
  14467. LGS r32,m16:32 (PM) 4
  14468. LEA r16,m 1
  14469. LEA r32,m 1
  14470. LEAVE 4
  14471. LGDT m16&32 8
  14472. LIDT m16&32 8
  14473. LLDT r/m16 5
  14474. LMSW r/m16 13
  14475. LOADALL None
  14476. LODSB 3
  14477. LODSW 3
  14478. LODSD 3
  14479. LOOP rel8 1
  14480. LOOPE rel8 1
  14481. LOOPNE rel8 1
  14482. LSL r16,r/m16 8
  14483. LSL r32,r/m32 8
  14484. LTR r/m16 7
  14485. MOV r/m8,r8 1
  14486. MOV r/m16,r16 1
  14487. MOV r/m32,r32 1
  14488. MOV r8,r/m8 1
  14489. MOV r16,r/m16 1
  14490. MOV r32,r/m32 1
  14491. MOV r/m16,sreg 1
  14492. MOV sreg,r/m16 1
  14493. MOV sreg,r/m16 (PM) 1/3
  14494. MOV AL,moffs8 1
  14495. MOV AX,moffs16 1
  14496. MOV EAX,moffs32 1
  14497. MOV moffs8,AL 1
  14498. MOV moffs16,AX 1
  14499. MOV moffs32,EAX 1
  14500. MOV r8,imm8 1
  14501. MOV r16,imm16 1
  14502. MOV r32,imm32 1
  14503. MOV r/m8,imm8 1
  14504. MOV r/m16,imm16 1
  14505. MOV r/m32,imm32 1
  14506. MOV CR0,r32 20
  14507. MOV CR2,r32 5
  14508. MOV CR3,r32 5
  14509. MOV r32,CRi 6
  14510. MOV r32,DR0-DR3 14
  14511. MOV r32,DR4-DR5 14
  14512. MOV r32,DR6-DR7 14
  14513. MOV DR0-DR3,r32 16
  14514. MOV DR4-DR5,r32 16
  14515. MOV DR6-DR7,r32 16
  14516. MOV r32,TR4-TR7 6
  14517. MOV r32,TR3 5
  14518. MOV TR3,r32 10
  14519. MOV TR4-TR7,r32 10
  14520. MOVSB 4
  14521. MOVSW 4
  14522. MOVSD 4
  14523. MOVSX r16,r/m8 1
  14524. MOVSX r32,r/m8 1
  14525. MOVSX r32,r/m16 1
  14526. MOVZX r16,r/m8 1
  14527. MOVZX r32,r/m8 1
  14528. MOVZX r32,r/m16 1
  14529. MUL r/m8 4
  14530. MUL r/m16 4
  14531. MUL r/m32 10
  14532. NEG r/m8 1
  14533. NEG r/m16 1
  14534. NEG r/m32 1
  14535. NOP 1
  14536. NOT r/m8 1
  14537. NOT r/m16 1
  14538. NOT r/m32 1
  14539. OR AL,imm8 1
  14540. OR AX,imm16 1
  14541. OR EAX,imm32 1
  14542. OR r/m8,imm8 1
  14543. OR r/m16,imm8 1
  14544. OR r/m32,imm8 1
  14545. OR r/m16,imm16 1
  14546. OR r/m32,imm32 1
  14547. OR r/m8,r8 1
  14548. OR r/m16,r16 1
  14549. OR r/m32,r32 1
  14550. OR r8,r/m8 1
  14551. OR r16,r/m16 1
  14552. OR r32,r/m32 1
  14553. OUT imm8,AL 14
  14554. OUT imm8,AL (PM, CPL <= IOPL) 14
  14555. OUT imm8,AL (VM) 28
  14556. OUT imm8,AX 14
  14557. OUT imm8,AX (PM, CPL <= IOPL) 14
  14558. OUT imm8,AX (VM) 28
  14559. OUT imm8,EAX 14
  14560. OUT imm8,EAX (PM, CPL <= IOPL) 14
  14561. OUT imm8,EAX (VM) 28
  14562. OUT DX,AL 14
  14563. OUT DX,AL (PM, CPL <= IOPL) 14
  14564. OUT DX,AL (VM) 28
  14565. OUT DX,AX 14
  14566. OUT DX,AX (PM, CPL <= IOPL) 14
  14567. OUT DX,AX (VM) 28
  14568. OUT DX,EAX 14
  14569. OUT DX,EAX (PM, CPL <= IOPL) 14
  14570. OUT DX,EAX (VM) 28
  14571. OUTSB 14
  14572. OUTSW 14
  14573. OUTSD 14
  14574. POP m16 1
  14575. POP m32 1
  14576. POP r16 1
  14577. POP r32 1
  14578. POP sreg 1
  14579. POP sreg (PM) 3
  14580. POPA 6
  14581. POPAD 6
  14582. POPF 9
  14583. POPF (PM) 9
  14584. POPF (VM) 9
  14585. POPFD 9
  14586. POPFD (PM) 9
  14587. POPFD (VM) 9
  14588. PUSH r/m16 1
  14589. PUSH r/m32 1
  14590. PUSH r16 1
  14591. PUSH r32 1
  14592. PUSH imm8 1
  14593. PUSH imm16 1
  14594. PUSH imm32 1
  14595. PUSH sreg 1
  14596. PUSHA 6
  14597. PUSHAD 6
  14598. PUSHF 2
  14599. PUSHF (PM) 2
  14600. PUSHF (VM) 2
  14601. PUSHFD 2
  14602. PUSHFD (PM) 2
  14603. PUSHFD (VM) 2
  14604. RCL r/m8,1 3
  14605. RCL r/m16,1 3
  14606. RCL r/m32,1 3
  14607. RCL r/m8,CL 8
  14608. RCL r/m16,CL 8
  14609. RCL r/m32,CL 8
  14610. RCL r/m8,imm8 8
  14611. RCL r/m16,imm8 8
  14612. RCL r/m32,imm8 8
  14613. RCR r/m8,1 4
  14614. RCR r/m16,1 4
  14615. RCR r/m32,1 4
  14616. RCR r/m8,CL 9
  14617. RCR r/m16,CL 9
  14618. RCR r/m32,CL 9
  14619. RCR r/m8,imm8 9
  14620. RCR r/m16,imm8 9
  14621. RCR r/m32,imm8 9
  14622. ROL r/m8,1 1
  14623. ROL r/m16,1 1
  14624. ROL r/m32,1 1
  14625. ROL r/m8,CL 2
  14626. ROL r/m16,CL 2
  14627. ROL r/m32,CL 2
  14628. ROL r/m8,imm8 1
  14629. ROL r/m16,imm8 1
  14630. ROL r/m32,imm8 1
  14631. ROR r/m8,1 1
  14632. ROR r/m16,1 1
  14633. ROR r/m32,1 1
  14634. ROR r/m8,CL 2
  14635. ROR r/m16,CL 2
  14636. ROR r/m32,CL 2
  14637. ROR r/m8,imm8 1
  14638. ROR r/m16,imm8 1
  14639. ROR r/m32,imm8 1
  14640. RET (near) 3
  14641. RET (far) 4
  14642. RET (PM, far, same PL) 7
  14643. RET (PM, far, different PL) 23
  14644. RET imm16 (near) 4
  14645. RET imm16 (far) 4
  14646. RET imm16 (PM, far, same PL) 7
  14647. RET imm16 (PM, far, different PL) 23
  14648. RSDC m80,sreg 6
  14649. RSLDT m80 6
  14650. RSM 40
  14651. RSTS m80 6
  14652. SAHF 1
  14653. SAL r/m8,1 1
  14654. SAL r/m16,1 1
  14655. SAL r/m32,1 1
  14656. SAL r/m8,CL 2
  14657. SAL r/m16,CL 2
  14658. SAL r/m32,CL 2
  14659. SAL r/m8,imm8 1
  14660. SAL r/m16,imm8 1
  14661. SAL r/m32,imm8 1
  14662. SAR r/m8,1 1
  14663. SAR r/m16,1 1
  14664. SAR r/m32,1 1
  14665. SAR r/m8,CL 2
  14666. SAR r/m16,CL 2
  14667. SAR r/m32,CL 2
  14668. SAR r/m8,imm8 1
  14669. SAR r/m16,imm8 1
  14670. SAR r/m32,imm8 1
  14671. SHL r/m8,1 1
  14672. SHL r/m16,1 1
  14673. SHL r/m32,1 1
  14674. SHL r/m8,CL 2
  14675. SHL r/m16,CL 2
  14676. SHL r/m32,CL 2
  14677. SHL r/m8,imm8 1
  14678. SHL r/m16,imm8 1
  14679. SHL r/m32,imm8 1
  14680. SHR r/m8,1 1
  14681. SHR r/m16,1 1
  14682. SHR r/m32,1 1
  14683. SHR r/m8,CL 2
  14684. SHR r/m16,CL 2
  14685. SHR r/m32,CL 2
  14686. SHR r/m8,imm8 1
  14687. SHR r/m16,imm8 1
  14688. SHR r/m32,imm8 1
  14689. SBB AL,imm8 1
  14690. SBB AX,imm16 1
  14691. SBB EAX,imm32 1
  14692. SBB r/m8,imm8 1
  14693. SBB r/m16,imm8 1
  14694. SBB r/m32,imm8 1
  14695. SBB r/m16,imm16 1
  14696. SBB r/m32,imm32 1
  14697. SBB r/m8,r8 1
  14698. SBB r/m16,r16 1
  14699. SBB r/m32,r32 1
  14700. SBB r8,r/m8 1
  14701. SBB r16,r/m16 1
  14702. SBB r32,r/m32 1
  14703. SCASB 2
  14704. SCASW 2
  14705. SCASD 2
  14706. SETALC n/a
  14707. SETcc r/m8 1
  14708. SGDT m16&32 4
  14709. SIDT m16&32 4
  14710. SHLD r/m16,r16,imm8 4
  14711. SHLD r/m32,r32,imm8 4
  14712. SHLD r/m16,r16,CL 5
  14713. SHLD r/m32,r32,CL 5
  14714. SHRD r/m16,r16,imm8 4
  14715. SHRD r/m32,r32,imm8 4
  14716. SHRD r/m16,r16,CL 5
  14717. SHRD r/m32,r32,CL 5
  14718. SLDT r/m16 1
  14719. SLDT r/m32 1
  14720. SMINT 55
  14721. SMSW r/m16 6
  14722. STC 1
  14723. STD 7
  14724. STI 7
  14725. STOSB 2
  14726. STOSW 2
  14727. STOSD 2
  14728. STR r/m16 4
  14729. SUB AL,imm8 1
  14730. SUB AX,imm16 1
  14731. SUB EAX,imm32 1
  14732. SUB r/m8,imm8 1
  14733. SUB r/m16,imm8 1
  14734. SUB r/m32,imm8 1
  14735. SUB r/m16,imm16 1
  14736. SUB r/m32,imm32 1
  14737. SUB r/m8,r8 1
  14738. SUB r/m16,r16 1
  14739. SUB r/m32,r32 1
  14740. SUB r8,r/m8 1
  14741. SUB r16,r/m16 1
  14742. SUB r32,r/m32 1
  14743. SVDC sreg,m80 12
  14744. SVLDT m80 12
  14745. SVTS m80 14
  14746. TEST AL,imm8 1
  14747. TEST AX,imm16 1
  14748. TEST EAX,imm32 1
  14749. TEST r/m8,imm8 1
  14750. TEST r/m16,imm16 1
  14751. TEST r/m32,imm32 1
  14752. TEST r/m8,r8 1
  14753. TEST r/m16,r16 1
  14754. TEST r/m32,r32 1
  14755. VERR r/m16 7
  14756. VERW r/m16 7
  14757. WAIT 5
  14758. WBINVD 15
  14759. XADD r/m8,r8 2
  14760. XADD r/m16,r16 2
  14761. XADD r/m32,r32 2
  14762. XCHG AX,r16 2
  14763. XCHG EAX,r32 2
  14764. XCHG r/m8,r8 2
  14765. XCHG r/m16,r16 2
  14766. XCHG r/m32,r32 2
  14767. XLAT 4
  14768. XOR AL,imm8 1
  14769. XOR AX,imm16 1
  14770. XOR EAX,imm32 1
  14771. XOR r/m8,imm8 1
  14772. XOR r/m16,imm8 1
  14773. XOR r/m32,imm8 1
  14774. XOR r/m16,imm16 1
  14775. XOR r/m32,imm32 1
  14776. XOR r/m8,r8 1
  14777. XOR r/m16,r16 1
  14778. XOR r/m32,r32 1
  14779. XOR r8,r/m8 1
  14780. XOR r16,r/m16 1
  14781. XOR r32,r/m32 1
  14782. (END)
  14783. ---------------------------------------------------------
  14784. ---------------------------------------------------------
  14785. [Credits]:
  14786. 1) THANX specially for/to Martin Malik and RealSoft.
  14787. (malik@elf.stuba.sk)
  14788. Cyrix's CPUs type data. Many good info :)
  14789. Some Vendors strings for CPUID.
  14790. P54M ID code
  14791. Part of This Kind of Info (C) RealSoft.
  14792. 2) THANX to Grzegorz Mazur for His Interest to CPU
  14793. identification and to Cyrix-Vendor CPUs.
  14794. 3) THANX to Bas van Sisseren
  14795. He always looks this doc for 'ERORRS'.
  14796. 4) THANX to all people from Intel, AMD, TI, Cyrix, UMC,
  14797. who helped with information and CPU samples.
  14798. 5) THANX to all, who send notes, testing CPUs with PHG tools
  14799. 6) Great Special thanx for Jakub Bogusz for spell checking
  14800. and some rightfull notes :)
  14801. ----------------------------------------------------------
  14802. Q&A:
  14803. Q. - How to find latest version of OPCODE.LST ?
  14804. A. - You may find it within Ralf's INTERxx.ZIP.
  14805. Q. - Did PHG have WWW page, where placed OPCODE.LST ?
  14806. A. - Unfortunetly, No.
  14807. But it will be released somewhen. :))
  14808. -----------------------------------------------------------
  14809. [2 All]
  14810. If You found some errors or incorrections in this text
  14811. please send info 'bout it.
  14812. -----------------------------------------------------------
  14813. [Internal]
  14814. Thanx for Urri, Stas, Afo, Kernel.3,Den96
  14815. and all other numbers of
  14816. Potemkin's Hackers Group.
  14817. - - - - - - - - - - - - - -
  14818. Special Thanks for AX (MISA).
  14819. ------------------------------------------------------------
  14820. Sorry, But EOF