Endian swapping functions converted to assembly.

IC_QUE -> IC_QUEUE
This commit is contained in:
xmm15 2020-02-17 01:18:27 -06:00
parent e34c2bca35
commit c08e36e6f4
24 changed files with 694 additions and 659 deletions

Binary file not shown.

Binary file not shown.

View file

@ -375,7 +375,7 @@ U0 ICQueueIns(CIntermediateCode *tmpi,I64 rip2)
ICMov(tmpi,MDF_DISP+RT_I64,REG_RBX,sizeof(U8 *),MDF_REG+RT_I64,r2,0,rip2);
}
U0 ICQueueInsRev(CIntermediateCode *tmpi,I64 rip2)
U0 ICQueueInsertRev(CIntermediateCode *tmpi,I64 rip2)
{
I64 r1,r2;
if (tmpi->arg2.type==MDF_REG+RT_I64 && tmpi->arg2.reg!=REG_RDX)

Binary file not shown.

View file

@ -74,17 +74,17 @@ $LK,"LexExpressionI64",A="FL:::/Compiler/ParseExp.CC,1140",BI=54$
$LK,"LexExpression",A="FL:::/Compiler/ParseExp.CC,1168",BI=55$
$LK,"LexInStr",A="FL:::/Compiler/Lex.CC,367",BI=56$
$LK,"internal_types_table",A="FL:::/Compiler/CInit.CC,6"$
$LK,"ICQueueInsRev",A="FL:::/Compiler/BackC.CC,378",BI=57$
$LK,"CN_INST",A="FL:::/Compiler/BackFA.CC,3"$
$LK,"CmdLinePrompt",A="FL:::/Compiler/CMisc.CC,127",BI=58$
$LK,"ParseClassNew",A="FL:::/Compiler/ParseLib.CC,40",BI=59$
$LK,"OptPass3",A="FL:::/Compiler/OptPass3.CC,1",BI=60$
$LK,"CmdLinePrompt",A="FL:::/Compiler/CMisc.CC,127",BI=57$
$LK,"ParseClassNew",A="FL:::/Compiler/ParseLib.CC,40",BI=58$
$LK,"OptPass3",A="FL:::/Compiler/OptPass3.CC,1",BI=59$
$LK,"comp_templates_dont_push2",A="FL:::/Compiler/CExterns.CC,44"$
$LK,"OptPass4",A="FL:::/Compiler/OptPass4.CC,133",BI=61$
$LK,"OptPass5",A="FL:::/Compiler/OptPass5.CC,1",BI=62$
$LK,"OptPass6",A="FL:::/Compiler/OptPass6.CC,96",BI=63$
$LK,"OptPass4",A="FL:::/Compiler/OptPass4.CC,133",BI=60$
$LK,"OptPass5",A="FL:::/Compiler/OptPass5.CC,1",BI=61$
$LK,"OptPass6",A="FL:::/Compiler/OptPass6.CC,96",BI=62$
$LK,"MODR_REG",A="FL:::/Compiler/BackLib.CC,126"$
$LK,"Echo",A="FL:::/Compiler/CMisc.CC,63",BI=64$
$LK,"Echo",A="FL:::/Compiler/CMisc.CC,63",BI=63$
$LK,"ICQueueInsertRev",A="FL:::/Compiler/BackC.CC,378",BI=64$
$LK,"ICQueueInit",A="FL:::/Compiler/BackC.CC,340",BI=65$
$LK,"ICAddRSP",A="FL:::/Compiler/BackLib.CC,59",BI=66$
$LK,"ICDiv",A="FL:::/Compiler/BackA.CC,355",BI=67$
@ -382,9 +382,9 @@ $LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CC,1",BI=269$
í
   5 9 9 M U ^ f k q   ¬ ± Ê â æ ù ù ù  þ -  B M S k ƒ ˆ  § ¯ ¸ À  È Ú ê ÿ   2 6 6 J R [ c h o ª ¯ È à ä ÷ ÷ ÷  ü +@KQi<00><00><00><00><00>¨ºÊáø&&9TTTuœ¦³ÍÛâõ÷%=Mgg2D<00>ÞÞî ##'*23\Ob؊؊øŠ!-277HLTlo{4<00>á÷÷ '2HHZss~<00>º¡Éàñ #;@HL^Q}š¸«óÚÍ +1E]bv~<00>­½ÓÕî

7<DHWJvŠŽ<00><00><00><00>°ÀÇÚõõ!//CQ_tŒ«º³Òâéú FHtttŒ½ÂÍÓÞ)@Ql§šÉ¼ñÞ)/C[`t|<00>«»ÑÓì*CW[jjj}ƒ<00>§ÂÂÂÞîüü7,J]b<00><00>¨¸Éçç  333S50ü„å<00>å”å–å›å6Dt<00>ª³¹ËËÏÒÚ7<<00>66FW`fju84o¸GG>GAGEGRG[GfGvG~GˆG°G°GÀGÅGÅGÕGÚGÚGêGïGïGÿGHHHHH)H.H.H>HCHCHSHXHXHhHmHmHmHpHyHH H·HÊHÌHÒHÔH×HèHíHíHóHIIII+ICIKIQIQIeIeInIqI1J9lz<00>~<00>~¥~´~¹~Î~»~Ý~à~à~í~ï~0Ib{”ž:¼ª7474C4W4t44©4Ù4Û4õ4 55+5=5D5K5_5f5f5u5ƒ55ª5¹5Æ5É5â5å5ê566!6%6,6j6;d(=ŠŠŠ<Ä n‡¬‡¬¤¬¬¬¯¬½¬ˬà¬é¬­­/­:­K­O­a­d­o­x­„­—­È­½­£­Ø­ï­®®®‹®<00>®®®”®É®Ì®Ñ®Ô®Ô®Û®ñ®ø®¯
¯¯‚¯‚¯š¯Ÿ¯Ÿ¯¯¯³¯įί߯é¯ü¯°°°°‘°¢°§°´°ɰɰΰذç°ì°ò°÷°÷°ü°±±± ±…±<00>±•±ž±µ±ɱÚ±ç±ì±²²‰²‰²‰²¡²·²¿²Ú²ë²ø²ú²³ ³ ³ ³³†³Œ³”³š³£³ɳÕ³Û³á³ð³ø³´-´>´K´M´[´[´`´`´g´u´z´<00>´™´¥´«´±´º´¿´¿´¿´¿´¿´×´Ü´Ü´Ü´Ü´Ü´í´í´í´í´í´í´í´í´í´í´µµ€µ€µ€µ‰µ£µ¯µ´µÖµâµâµçµçµçµçµçµçµçµçµüµ‰¶ª¶µ¶ƶ˶˶˶Ô¶ú¶···œ·¥·«·Ì·å·å·å·å·å·¸@¸I¸O¸U¸Z¸c¸l¸q¸q¸q¸q¸€¸”¸²¸¸ȸ͸͸à¸ô¸¹‰¹<00>¹”¹”¹§¹»¹á¹ô¹ú¹ú¹ÿ¹ÿ¹ÿ¹º<00>º<00>º<00>º<00>º<00>º•º•º•º•º•º•º•º•º•º•º•º•º•º•º•º•º¤º³º¾ºÀºÀºɺ˺˺ߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺáºáºøº» » »»»Š»¤»§»±»½»ã»¼м¥¼¥¼¨¼¸¼À¼Û¼ì¼ï¼ ½½Œ½­½Á½ݽɽù½¾”¾¢¾оò¾ò¾¿ ¿/¿C¿d¿x¿”¿€¿°¿°¿οÀÀö¿ë¿Ü¿ÀÀÀÀÀÀ À²Ã=IJ‚È‚È<00>ȞȥȲȾÈËÈÏÈàÈàÈéÈîÈöÈÉɠɠɴɶɶÉÀÉÈÉÈÉÒÉÚÉÚÉÚÉëÉëÉëÉñÉùÉÿÉÊÊ
ÊÊÊÊ<00>ÊŸÊ©Ê±Ê·ÊÆÊËÊÓÊÙÊÙÊÞÊåÊðʄ˔˚ˢ˱˶ËÃËËËÐËÐËÐËØËáËêË÷ËÿË ÌÌ…Ì‹Ì<00>Ì<00>̗̪̲ÌÇÌÏÌ×ÌìÌîÌùÌÍÍÍÍ€ÍŒÍ”Í©ÍµÍºÍÆÍÑÍÖÍÖÍÖÍìÍ ÎÎ΢ήζÎËÎ×ÎÜÎèÎóÎøÎøÎøÎøÎøÎøÎÏÏÏÏÏÏÏÏÏÏÏÏÏÏ Ï‰Ï<00>Ï—ÏŸÏ¡Ï©ÏÆÏÏÏ×ÏßÏæÏúÏÐ ÐÐЎЖХЯÐÉÐÑÐÖÐÖÐÖÐßÐèÐëÐõÐÑÑцђѪѽÑÅÑÔÑÙÑáÑèÑõÑþÑÒÒÒÒÒ‡Ò˜Ò›ÒžÒ¦Ò«Ò«Ò´Ò¹ÒÁÒÈÒÕÒêÒñÒÓÓ‚Ó<00>Ó™Ó¨Ó­Ó­ÓµÓ½ÓÊÓÏÓÏÓÏÓÓÓØÓØÓèÓíÓíÓíÓùÓÔÔÔԅԌԎԔԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛÔ<00>Ô<00>Ô¸ÔÂÔÐÔÐÔÕÔàÔçÔÕÕÕÕÕÕC×>x[G×G×]×d×k×v×}׎טןש׼×Ä×Ä×ß×ù×ÿ×ØØØØ‡Ø<00>ؤؤؤزØÙØâØêØüØÙÙÙÙككييي٘ٿÙÌÙÕÙÝÙïÙ÷Ù÷Ù÷ÙÚ Ú ÚÚÚˆÚ?x`ºŸÝŸÝ·ÝÇÝÎÝÕÝàÝóÝöÝþÝÞÞÞ<00>ތޓަ޲ÞÏÞØÞàÞßß ßß߈ß<00>߳߹߿ßÁßÇßÍßÍßÍßòß÷ßààààƒàŸà´à¼àÆàåàùàùà@ ?CŸ1Ÿ1©1±1¶1ADTaÿ|ÿ|} }6}"}E}G}_}w}}B ;z×â×âöâÿâããˆã¦ãºãÒãÙãÿãäƒä<00>ä<00>äšäŸä¸ä»ä»ä»ä»äÀäÆäâäðäüäåå‰åŽåŽåœåCPcsWAWAxAeAšA‡A©A¸AÀAËAÍAØAãAãAB BDPµÅ×û×ûëûðûÿûÿûü†üED$ss%s/s9sIsNsWscseswswsys©sFŒ´Šú¶ú¶úÉúÍúïúÿúûû ûûûšû¸û¸ûÕûG¨.ÆïÆïÎïÒïÞïïïñïð ðð‰ð‰ð“ðšð­ð¶ð½ðØðçðþðþðññHè700:0=0@0F0K0b0y0<00>0´0Ð0Ó0ò0 11+1A1R1W1b1j1j1t1t11„1™1Ÿ1¾1Ý1ß1ô1ú1282@2K2K2U2U2g2¥2½2Ï2I$ '['[R[;[\[d[JTHYÐeÐeâeäeíeöef ffff(f2f5f?fK¨!G(d(d8dAdTdadmdyd…dd¨d¨d·dÂdËdÒdÛdòd ee e/e;eMeMeVeyeye{eŽe<00>eªe¶e¹eÐeLlõŒÀpÀpÙpäpôp=qDqXq_qgqoqxq€qˆqŠqqšq¡q¨qÇqßqèqèqrGrPrrrŒr©rÓrßrss
7<DHWJvŠŽ<00><00><00><00>°ÀÇÚõõ!//CQ_tŒ«º³Òâéú FHtttŒ½ÂÍÓÞ)@Ql§šÉ¼ñÞ)/C[`t|<00>«»ÑÓì*CW[jjj}ƒ<00>§ÂÂÂÞîüü7,J]b<00><00>¨¸Éçç  333S50ü„å<00>å”å–å›å6Dt<00>ª³¹ËËÏÒÚ7<<00>66FW`fju84o¸GG>GAGEGRG[GfGvG~GˆG°G°GÀGÅGÅGÕGÚGÚGêGïGïGÿGHHHHH)H.H.H>HCHCHSHXHXHhHmHmHmHpHyHH H·HÊHÌHÒHÔH×HèHíHíHóHIIII+ICIKIQIQIeIeInIqI1J9¼ª7474C4W4t44©4Ù4Û4õ4 55+5=5D5K5_5f5f5u5ƒ55ª5¹5Æ5É5â5å5ê566!6%6,6j6:d(=ŠŠŠ;Ä n‡¬‡¬¤¬¬¬¯¬½¬ˬà¬é¬­­/­:­K­O­a­d­o­x­„­—­È­½­£­Ø­ï­®®®‹®<00>®®®”®É®Ì®Ñ®Ô®Ô®Û®ñ®ø®¯
¯¯‚¯‚¯š¯Ÿ¯Ÿ¯¯¯³¯įί߯é¯ü¯°°°°‘°¢°§°´°ɰɰΰذç°ì°ò°÷°÷°ü°±±± ±…±<00>±•±ž±µ±ɱÚ±ç±ì±²²‰²‰²‰²¡²·²¿²Ú²ë²ø²ú²³ ³ ³ ³³†³Œ³”³š³£³ɳÕ³Û³á³ð³ø³´-´>´K´M´[´[´`´`´g´u´z´<00>´™´¥´«´±´º´¿´¿´¿´¿´¿´×´Ü´Ü´Ü´Ü´Ü´í´í´í´í´í´í´í´í´í´í´µµ€µ€µ€µ‰µ£µ¯µ´µÖµâµâµçµçµçµçµçµçµçµçµüµ‰¶ª¶µ¶ƶ˶˶˶Ô¶ú¶···œ·¥·«·Ì·å·å·å·å·å·¸@¸I¸O¸U¸Z¸c¸l¸q¸q¸q¸q¸€¸”¸²¸¸ȸ͸͸à¸ô¸¹‰¹<00>¹”¹”¹§¹»¹á¹ô¹ú¹ú¹ÿ¹ÿ¹ÿ¹º<00>º<00>º<00>º<00>º<00>º•º•º•º•º•º•º•º•º•º•º•º•º•º•º•º•º¤º³º¾ºÀºÀºɺ˺˺ߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺߺáºáºøº» » »»»Š»¤»§»±»½»ã»¼м¥¼¥¼¨¼¸¼À¼Û¼ì¼ï¼ ½½Œ½­½Á½ݽɽù½¾”¾¢¾оò¾ò¾¿ ¿/¿C¿d¿x¿”¿€¿°¿°¿οÀÀö¿ë¿Ü¿ÀÀÀÀÀÀ À²Ã<IJ‚È‚È<00>ȞȥȲȾÈËÈÏÈàÈàÈéÈîÈöÈÉɠɠɴɶɶÉÀÉÈÉÈÉÒÉÚÉÚÉÚÉëÉëÉëÉñÉùÉÿÉÊÊ
ÊÊÊÊ<00>ÊŸÊ©Ê±Ê·ÊÆÊËÊÓÊÙÊÙÊÞÊåÊðʄ˔˚ˢ˱˶ËÃËËËÐËÐËÐËØËáËêË÷ËÿË ÌÌ…Ì‹Ì<00>Ì<00>̗̪̲ÌÇÌÏÌ×ÌìÌîÌùÌÍÍÍÍ€ÍŒÍ”Í©ÍµÍºÍÆÍÑÍÖÍÖÍÖÍìÍ ÎÎ΢ήζÎËÎ×ÎÜÎèÎóÎøÎøÎøÎøÎøÎøÎÏÏÏÏÏÏÏÏÏÏÏÏÏÏ Ï‰Ï<00>Ï—ÏŸÏ¡Ï©ÏÆÏÏÏ×ÏßÏæÏúÏÐ ÐÐЎЖХЯÐÉÐÑÐÖÐÖÐÖÐßÐèÐëÐõÐÑÑцђѪѽÑÅÑÔÑÙÑáÑèÑõÑþÑÒÒÒÒÒ‡Ò˜Ò›ÒžÒ¦Ò«Ò«Ò´Ò¹ÒÁÒÈÒÕÒêÒñÒÓÓ‚Ó<00>Ó™Ó¨Ó­Ó­ÓµÓ½ÓÊÓÏÓÏÓÏÓÓÓØÓØÓèÓíÓíÓíÓùÓÔÔÔԅԌԎԔԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛԛÔ<00>Ô<00>Ô¸ÔÂÔÐÔÐÔÕÔàÔçÔÕÕÕÕÕÕC×=x[G×G×]×d×k×v×}׎טןש׼×Ä×Ä×ß×ù×ÿ×ØØØØ‡Ø<00>ؤؤؤزØÙØâØêØüØÙÙÙÙككييي٘ٿÙÌÙÕÙÝÙïÙ÷Ù÷Ù÷ÙÚ Ú ÚÚÚˆÚ>x`ºŸÝŸÝ·ÝÇÝÎÝÕÝàÝóÝöÝþÝÞÞÞ<00>ތޓަ޲ÞÏÞØÞàÞßß ßß߈ß<00>߳߹߿ßÁßÇßÍßÍßÍßòß÷ßààààƒàŸà´à¼àÆàåàùàùà? ?CŸ1Ÿ1©1±1¶1@lz<00>~<00>~¥~´~¹~Î~»~Ý~à~à~í~ï~0Ib{”žADTaÿ|ÿ|} }6}"}E}G}_}w}}B ;z×â×âöâÿâããˆã¦ãºãÒãÙãÿãäƒä<00>ä<00>äšäŸä¸ä»ä»ä»ä»äÀäÆäâäðäüäåå‰åŽåŽåœåCPcsWAWAxAeAšA‡A©A¸AÀAËAÍAØAãAãAB BDPµÅ×û×ûëûðûÿûÿûü†üED$ss%s/s9sIsNsWscseswswsys©sFŒ´Šú¶ú¶úÉúÍúïúÿúûû ûûûšû¸û¸ûÕûG¨.ÆïÆïÎïÒïÞïïïñïð ðð‰ð‰ð“ðšð­ð¶ð½ðØðçðþðþðññHè700:0=0@0F0K0b0y0<00>0´0Ð0Ó0ò0 11+1A1R1W1b1j1j1t1t11„1™1Ÿ1¾1Ý1ß1ô1ú1282@2K2K2U2U2g2¥2½2Ï2I$ '['[R[;[\[d[JTHYÐeÐeâeäeíeöef ffff(f2f5f?fK¨!G(d(d8dAdTdadmdyd…dd¨d¨d·dÂdËdÒdÛdòd ee e/e;eMeMeVeyeye{eŽe<00>eªe¶e¹eÐeLlõŒÀpÀpÙpäpôp=qDqXq_qgqoqxq€qˆqŠqqšq¡q¨qÇqßqèqèqrGrPrrrŒr©rÓrßrss
sss4sPsws“sºsÖsýst@t\tƒtŸtÆtÆtÕtâtçtçtötuuuuu,uDu\utuvuvuvu}u}uŠu<00>u<00>u<00>u u®uÁuÖuvvvv!v>vLvjvsv|v‰v—v±vÍvÍvÍvßvív w'w'w'w2w5wdwfw}wƒw”w<00>wŸw¬w®w»w½wÊwÊwîwðw÷wxxx!x#x1x3xAxAxaxaxaxax<00>xµxÛxãxçxïxóxyyyyy!y)y7yEyEy_yjy€y”y´yÍyØyâyéyzzz.z.z@zEzGzMz^zoz~z…zzŸz¡z¯z±z¿zÁzÏzÏzÏzózóz{{ {#{/{2{@{D{R{V{d{h{h{<00>{ˆ{<00>{{®{µ{Ð{ð{|||#|%|4|>|>|L|U|k|r|—|œ|Å|õ|ú|}
}}!};}=}?}F}W}`}b}p}r}€}}<00>}<00>}°}°}°}°}°}Ï}Ï}Ï}Ú}ö}~4~9~9~9~[~`~`~`~€~…~…~…~¤~©~©~°~²~²~º~¼~¼~Ã~Ã~Æ~Ë~ê~%AUZZu„“œ¶¸¸½¸Þààèã#€#€#€B€B€B€c€h€h€h€Š€<00><00><00>¯€´€´€´€Ó€Ø€Ø€ó€<01><03><12><1B>5<>7<>7<><<3C>7<>]<5D>_<>_<>g<>b<>¢<>¢<>¢<>­<>­<>×<>×<>1<Rf—‚¯‚͂ςà‚ý‚ƒƒM7‰é£é±éÏéÚéöéöéöéêê ê ê ê€ê€ê¥ê©ê½êÏêNæd<00>ݡݡݧݯݷݿÝÇÝÍÝÚÝÚÝôÝùÝùÝÿÝÞÞ
ÞÞÞÞÞÞ€Þ‚Þ‚Þ‰Þ‹Þ‹Þ‘Þ‘Þ˜ÞšÞšÞ Þ Þ§Þ©Þ©Þ¯Þ¯Þ¶Þ¶Þ¾ÞÄÞÊÞÒÞÒÞÒÞÒÞÞÞæÞîÞöÞþÞßß߅ߋߓߚߢߪ߮ߴ߿ßÅßÒßÞßäßìßðß÷ßÿßà ààà àáOLœ«è‡è‡ˆˆ

View file

@ -169,10 +169,10 @@ class CIntermediateStruct
#define IC_BSF 0x7E
#define IC_BSR 0x7F
#define IC_QUE_INIT 0x80
#define IC_QUE_INS 0x81
#define IC_QUE_INS_REV 0x82
#define IC_QUE_REM 0x83
#define IC_QUEUE_INIT 0x80
#define IC_QUEUE_INSERT 0x81
#define IC_QUEUE_INSERT_REV 0x82
#define IC_QUEUE_REMOVE 0x83
#define IC_STRLEN 0x84

View file

@ -1240,10 +1240,10 @@ args.
case IC_BTS:
case IC_BTR:
case IC_BTC:
case IC_QUE_INIT:
case IC_QUE_REM:
case IC_QUE_INS:
case IC_QUE_INS_REV:
case IC_QUEUE_INIT:
case IC_QUEUE_REMOVE:
case IC_QUEUE_INSERT:
case IC_QUEUE_INSERT_REV:
case IC_OUT_U32:
case IC_OUT_U16:
case IC_OUT_U8:

View file

@ -456,10 +456,10 @@ here1:
case IC_SWAP_U16:
case IC_SWAP_U32:
case IC_SWAP_I64:
case IC_QUE_INIT:
case IC_QUE_INS:
case IC_QUE_INS_REV:
case IC_QUE_REM:
case IC_QUEUE_INIT:
case IC_QUEUE_INSERT:
case IC_QUEUE_INSERT_REV:
case IC_QUEUE_REMOVE:
case IC_IN_U32:
case IC_IN_U16:
case IC_IN_U8:

View file

@ -643,10 +643,10 @@ p4_sib:
case IC_SWAP_U16:
case IC_SWAP_U32:
case IC_SWAP_I64:
case IC_QUE_INIT:
case IC_QUE_INS:
case IC_QUE_INS_REV:
case IC_QUE_REM:
case IC_QUEUE_INIT:
case IC_QUEUE_INSERT:
case IC_QUEUE_INSERT_REV:
case IC_QUEUE_REMOVE:
case IC_IN_U32:
case IC_IN_U16:
case IC_IN_U8:

View file

@ -890,16 +890,16 @@ cc->pass==10 is final pass, code is placed into buf.
case IC_SWAP_I64:
ICSwap(tmpi,rip2);
break;
case IC_QUE_INIT:
case IC_QUEUE_INIT:
ICQueueInit(tmpi,rip2);
break;
case IC_QUE_INS:
case IC_QUEUE_INSERT:
ICQueueIns(tmpi,rip2);
break;
case IC_QUE_INS_REV:
ICQueueInsRev(tmpi,rip2);
case IC_QUEUE_INSERT_REV:
ICQueueInsertRev(tmpi,rip2);
break;
case IC_QUE_REM:
case IC_QUEUE_REMOVE:
ICQueueRemove(tmpi,rip2);
break;
case IC_STRLEN:

View file

@ -80,7 +80,7 @@
#define IC_XOR_XOR 0x42
#define IC_COLON 0x43
#define IC_QUESTION 0x44
#define IC_QUEUESTION 0x44
#define IC_ASSIGN 0x45
#define IC_ASSIGN_PP 0x46
@ -162,9 +162,9 @@
#define IC_BSF 0x8B
#define IC_BSR 0x8C
#define IC_QUE_INS 0x8D
#define IC_QUE_INS_REV 0x8E
#define IC_QUE_REM 0x8F
#define IC_QUEUE_INSERT 0x8D
#define IC_QUEUE_INSERT_REV 0x8E
#define IC_QUEUE_REMOVE 0x8F
#define IC_STRLEN 0x90
#define IC_MEMCPY 0x91

View file

@ -1,17 +1,10 @@
/*ZenithOS has a feature that allows
access to bytes and words of larger
ints.
/*ZenithOS has a feature that allows access to bytes and words of larger ints.
See $LK,"U64i union",A="FF:::/Kernel/KernelA.HH,U64i union"$.
The versions with "i" are internal data types.
Use "I64" instead of "U64i" and you
will have access to subbytes and
subwords.
The versions with "i" are internal data types. Use "I64" instead of "U64i" and you will have access to subbytes and subwords.
Unfortunately, byte access causes the
compiler to not use a reg for the
variable.
Unfortunately, byte access causes the compiler to not use a reg for the variable.
See $LK,"::/Demo/Lectures/FixedPoint.CC"$.
*/
@ -27,3 +20,4 @@ q1=q.i32[1].u8[2];
"q.i32[1].u8[2]\t=%016X\n",q1;
q1=q.i32[0].i8[1];
"q.i32[0].i8[1]\t=%016X\n",q1;


View file

@ -1,10 +0,0 @@
$TR,"Zenith"$
$ID,2$$TR,"SysMessageFlags"$
$ID,2$sys_message_flags[0]=0;
$ID,-2$$TR,"SysRegVer"$
$ID,2$registry_version=0.100;
$ID,-2$$ID,-2$$TR,"Once"$
$ID,2$$TR,"Zenith"$
$ID,2$$ID,-2$$TR,"User"$
$ID,2$$ID,-2$$ID,-2$$TR,"AutoComplete"$
$ID,2$ac.col=50;ac.row=15;$ID,-2$

Binary file not shown.

View file

@ -4,39 +4,7 @@ U0 PortNop()
InU8(0x21);
}
U16 EndianU16(U16 d)
{//Swap big<-->little endian.
I64 res=0;
res.u8[1]=d.u8[0];
res.u8[0]=d.u8[1];
return res;
}
U32 EndianU32(U32 d)
{//Swap big<-->little endian.
I64 res=0;
res.u8[3]=d.u8[0];
res.u8[2]=d.u8[1];
res.u8[1]=d.u8[2];
res.u8[0]=d.u8[3];
return res;
}
I64 EndianI64(I64 d)
{//Swap big<-->little endian.
U64 res;
res.u8[7]=d.u8[0];
res.u8[6]=d.u8[1];
res.u8[5]=d.u8[2];
res.u8[4]=d.u8[3];
res.u8[3]=d.u8[4];
res.u8[2]=d.u8[5];
res.u8[1]=d.u8[6];
res.u8[0]=d.u8[7];
return res;
}
I64 BCount(I64 d)
I64 BCount(I64 d)
{//Count set bits in I64.
I64 res=0,i;
for (i=0;i<8;i++)

View file

@ -1,4 +1,5 @@
asm {
/***********************************/
_MEMSET::
PUSH RBP
MOV RBP,RSP
@ -12,6 +13,8 @@ _MEMSET::
POP RDI
POP RBP
RET1 24
/***********************************/
_MEMSET_U16::
PUSH RBP
MOV RBP,RSP
@ -25,6 +28,7 @@ _MEMSET_U16::
POP RDI
POP RBP
RET1 24
/***********************************/
_MEMSET_U32::
PUSH RBP
MOV RBP,RSP
@ -38,6 +42,7 @@ _MEMSET_U32::
POP RDI
POP RBP
RET1 24
/***********************************/
_MEMSET_I64::
PUSH RBP
MOV RBP,RSP
@ -51,6 +56,7 @@ _MEMSET_I64::
POP RDI
POP RBP
RET1 24
/***********************************/
_MEMCOPY::
PUSH RBP
MOV RBP,RSP
@ -66,6 +72,7 @@ _MEMCOPY::
POP RSI
POP RBP
RET1 24
/***********************************/
_MEMCOMPARE::
PUSH RBP
MOV RBP,RSP
@ -85,6 +92,7 @@ _MEMCOMPARE::
POP RSI
POP RBP
RET1 24
/***********************************/
_BEQUAL::
PUSH RBP
MOV RBP,RSP
@ -100,6 +108,7 @@ _BEQUAL::
@@10: ADC AL,0
POP RBP
RET1 24
/***********************************/
_LBEQUAL::
PUSH RBP
MOV RBP,RSP
@ -117,6 +126,7 @@ _LBEQUAL::
@@10: ADC AL,0
POP RBP
RET1 24
/***********************************/
_CLAMP_I64::
PUSH RBP
MOV RBP,RSP
@ -129,6 +139,7 @@ _CLAMP_I64::
CMOVG RAX,RDX
POP RBP
RET1 24
/***********************************/
_CLAMP_U64::
PUSH RBP
MOV RBP,RSP
@ -141,6 +152,7 @@ _CLAMP_U64::
CMOVA RAX,RDX
POP RBP
RET1 24
/***********************************/
_CALL::
PUSH RBP
MOV RBP,RSP
@ -150,6 +162,7 @@ _CALL::
CALL RAX
@@05: POP RBP
RET1 8
/***********************************/
_BIT_FIELD_OR_U32::
PUSH RBP
MOV RBP,RSP
@ -163,6 +176,7 @@ _BIT_FIELD_OR_U32::
OR U64 [RBX],RAX
POP RBP
RET1 24
/***********************************/
_BIT_FIELD_EXT_U32::
PUSH RBP
MOV RBP,RSP
@ -180,6 +194,7 @@ _BIT_FIELD_EXT_U32::
AND RAX,RDX
POP RBP
RET1 24
/***********************************/
_XCHG_I64::
PUSH RBP
MOV RBP,RSP
@ -188,6 +203,7 @@ _XCHG_I64::
XCHG U64 [RDX],RAX
POP RBP
RET1 16
/***********************************/
_XCHG_U32::
PUSH RBP
MOV RBP,RSP
@ -196,6 +212,7 @@ _XCHG_U32::
XCHG U32 [RDX],EAX
POP RBP
RET1 16
/***********************************/
_XCHG_U16::
PUSH RBP
MOV RBP,RSP
@ -204,6 +221,7 @@ _XCHG_U16::
XCHG U16 [RDX],AX
POP RBP
RET1 16
/***********************************/
_XCHG_U8::
PUSH RBP
MOV RBP,RSP
@ -212,7 +230,7 @@ _XCHG_U8::
XCHG U8 [RDX],AL
POP RBP
RET1 16
/***********************************/
_LXCHG_I64::
PUSH RBP
MOV RBP,RSP
@ -222,6 +240,7 @@ _LXCHG_I64::
XCHG U64 [RDX],RAX
POP RBP
RET1 16
/***********************************/
_LXCHG_U32::
PUSH RBP
MOV RBP,RSP
@ -231,6 +250,7 @@ _LXCHG_U32::
XCHG U32 [RDX],EAX
POP RBP
RET1 16
/***********************************/
_LXCHG_U16::
PUSH RBP
MOV RBP,RSP
@ -240,6 +260,7 @@ _LXCHG_U16::
XCHG U16 [RDX],AX
POP RBP
RET1 16
/***********************************/
_LXCHG_U8::
PUSH RBP
MOV RBP,RSP
@ -249,6 +270,31 @@ _LXCHG_U8::
XCHG U8 [RDX],AL
POP RBP
RET1 16
/***********************************/
_ENDIAN_U16::
PUSH RBP
MOV RBP, RSP
MOVZX RAX, U16 SF_ARG1[RBP]
XCHG AL, AH
POP RBP
RET1 8
/***********************************/
_ENDIAN_U32::
PUSH RBP
MOV RBP, RSP
MOV RAX, SF_ARG1[RBP]
BSWAP EAX
POP RBP
RET1 8
/***********************************/
_ENDIAN_U64::
PUSH RBP
MOV RBP, RSP
MOV RAX, SF_ARG1[RBP]
BSWAP RAX
POP RBP
RET1 8
/***********************************/
_REP_IN_U32::
PUSH RBP
MOV RBP,RSP
@ -260,6 +306,7 @@ _REP_IN_U32::
POP RDI
POP RBP
RET1 24
/***********************************/
_REP_IN_U16::
PUSH RBP
MOV RBP,RSP
@ -271,6 +318,7 @@ _REP_IN_U16::
POP RDI
POP RBP
RET1 24
/***********************************/
_REP_IN_U8::
PUSH RBP
MOV RBP,RSP
@ -282,6 +330,7 @@ _REP_IN_U8::
POP RDI
POP RBP
RET1 24
/***********************************/
_REP_OUT_U32::
PUSH RBP
MOV RBP,RSP
@ -293,6 +342,7 @@ _REP_OUT_U32::
POP RSI
POP RBP
RET1 24
/***********************************/
_REP_OUT_U16::
PUSH RBP
MOV RBP,RSP
@ -304,6 +354,7 @@ _REP_OUT_U16::
POP RSI
POP RBP
RET1 24
/***********************************/
_REP_OUT_U8::
PUSH RBP
MOV RBP,RSP
@ -315,6 +366,7 @@ _REP_OUT_U8::
POP RSI
POP RBP
RET1 24
/***********************************/
_CPUID::
PUSH RBP
MOV RBP,RSP
@ -329,14 +381,15 @@ _CPUID::
POP RSI
POP RBP
RET1 16
/***********************************/
_CALL_IND:: //See $LK,"_LAST_FUN",A="MN:_LAST_FUN"$
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RDX,U64 SF_ARG1[RBP]
MOV RCX,U64 SF_ARG2[RBP] //argc
LEA RSI,U64 SF_ARG3[RBP] //argv
MOV RCX,U64 SF_ARG2[RBP] //argc
LEA RSI,U64 SF_ARG3[RBP] //argv
SHL RCX,3
SUB RSP,RCX
MOV RDI,RSP
@ -350,7 +403,7 @@ _CALL_IND:: //See $LK,"_LAST_FUN",A="MN:_LAST_FUN"$
POP RBP
RET
@@05: MOV RCX,U64 SF_ARG2[RBP] //argc
@@05: MOV RCX,U64 SF_ARG2[RBP] //argc
SHL RCX,3
ADD RSP,RCX
XOR RAX,RAX
@ -358,14 +411,15 @@ _CALL_IND:: //See $LK,"_LAST_FUN",A="MN:_LAST_FUN"$
POP RSI
POP RBP
RET
/***********************************/
_CALLEXTNUM::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RDX,U64 SF_ARG1[RBP]
MOV RCX,U64 SF_ARG2[RBP] //argc
LEA RSI,U64 SF_ARG3[RBP] //argv
MOV RCX,U64 SF_ARG2[RBP] //argc
LEA RSI,U64 SF_ARG3[RBP] //argv
SHL RCX,3
SUB RSP,RCX
MOV RDI,RSP
@ -381,20 +435,21 @@ _CALLEXTNUM::
POP RBP
RET
@@05: MOV RCX,U64 SF_ARG2[RBP] //argc
@@05: MOV RCX,U64 SF_ARG2[RBP] //argc
SHL RCX,3
ADD RSP,RCX
POP RDI
POP RSI
POP RBP
RET
/***********************************/
_CALLEXTSTR::
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
MOV RCX,U64 SF_ARG2[RBP] //argc
LEA RSI,U64 SF_ARG3[RBP] //argv
MOV RCX,U64 SF_ARG2[RBP] //argc
LEA RSI,U64 SF_ARG3[RBP] //argv
SHL RCX,3
SUB RSP,RCX
MOV RDI,RSP
@ -422,13 +477,14 @@ _CALLEXTSTR::
POP RBP
RET
@@15: MOV RCX,U64 SF_ARG2[RBP] //argc
@@15: MOV RCX,U64 SF_ARG2[RBP] //argc
SHL RCX,3
ADD RSP,RCX
POP RDI
POP RSI
POP RBP
RET
/***********************************/
SET_GS_BASE::
PUSH RAX
PUSH RCX
@ -441,6 +497,7 @@ SET_GS_BASE::
POP RCX
POP RAX
RET
/***********************************/
SET_FS_BASE::
PUSH RAX
PUSH RCX
@ -452,8 +509,10 @@ SET_FS_BASE::
POP RDX
POP RCX
POP RAX
/***********************************/
_RET::
RET
/***********************************/
_SET_MSR::
PUSH RBP
MOV RBP,RSP
@ -464,6 +523,7 @@ _SET_MSR::
WRMSR
POP RBP
RET1 16
/***********************************/
_SYS_HLT::
CLI
@@05: HLT

File diff suppressed because one or more lines are too long

View file

@ -63,7 +63,7 @@ extern class CTask;
whole if no member is specified,
similar to bit fields.
See $LK,"EndianI64",A="MN:EndianI64"$() and $LK,"::/Demo/SubIntAccess.CC"$.
See $LK,"::/Demo/SubIntAccess.CC"$.
*/
U16i union U16
{
@ -2277,7 +2277,7 @@ class CUAsmGlobals
};
#help_index "Devices;PCI"

//PCI Registers, used with $LK,"PCIRead",A="MN:PCIReadU16"$ functions.
#define PCIR_VENDOR_ID 0x00
#define PCIR_DEVICE_ID 0x02

View file

@ -62,11 +62,11 @@ public _intern IC_STRLEN I64 StrLen(U8 *st); //String length.
#help_index "Data Types/Circular Queue"
#help_file "::/Doc/Queue"
public _intern IC_QUE_INIT U0 QueueInit(CQueue *head); //Init queue head links.
public _intern IC_QUE_INS U0 QueueInsert(CQueue *entry,CQueue *pred);//Insert item into que after predecessor.
public _intern IC_QUE_INS_REV U0 QueueInsRev(CQueue *entry,CQueue *succ);//Revd insert into que.
//Ins item into que before successor.
public _intern IC_QUE_REM U0 QueueRemove(CQueue *entry); //Remove item from queue.
public _intern IC_QUEUE_INIT U0 QueueInit(CQueue *head); //Init queue head links.
public _intern IC_QUEUE_INSERT U0 QueueInsert(CQueue *entry,CQueue *pred);//Insert item into que after predecessor.
public _intern IC_QUEUE_INSERT_REV U0 QueueInsertRev(CQueue *entry,CQueue *succ);//Revd insert into que.
//Ins item into que before successor.
public _intern IC_QUEUE_REMOVE U0 QueueRemove(CQueue *entry); //Remove item from queue.
#help_index "I/O;Processor/IO Port"
public _intern IC_IN_U16 U16 InU16(I64 port); //Read U16 from I/O port.
@ -253,14 +253,15 @@ public _intern IC_SET_RAX U0 SetRAX(I64 d); //Set RAX register value.
public _intern IC_SET_RBP U0 SetRBP(U8 *d); //Set RBP register value.
public _intern IC_SET_RFLAGS U0 SetRFlags(I64 d); //Set RFlags register value.
public _intern IC_SET_RSP U0 SetRSP(U8 *d); //Set RSP register value.
public _extern _CPUID U0 CPUId(
U32 rax,CRAXRBCRCXRDX *res); //Do CPUID inst.
public _extern _CPUID U0 CPUId(U32 rax,CRAXRBCRCXRDX *res); //Do CPUID inst.
public _extern _ENDIAN_U16 U16 EndianU16(U16 val); //Swap big<-->little endian U16.
public _extern _ENDIAN_U32 U32 EndianU32(U32 val); //Swap big<-->little endian U32.
public _extern _ENDIAN_U64 U64 EndianU64(U64 val); //Swap big<-->little endian U64.
public _extern _LXCHG_I64 I64 LXchgI64(I64 *dst,I64 d); //Locked eXchange I64s.
public _extern _LXCHG_U16 U16 LXchgU16(U16 *dst,U16 d); //Locked eXchange U16s.
public _extern _LXCHG_U32 U32 LXchgU32(U32 *dst,U32 d); //Locked eXchange U32s.
public _extern _LXCHG_U8 U8 LXchgU8(U8 *dst,U8 d); //Locked eXchange U8s.
public _extern _SET_MSR U0 SetMSR(
I64 model_specific_reg,I64 val); //Model Specific Reg See $LK,"MSRs",A="MN:IA32_EFER"$.
public _extern _SET_MSR U0 SetMSR(I64 model_specific_reg,I64 val); //Model Specific Reg See $LK,"MSRs",A="MN:IA32_EFER"$.
public _extern _SYS_HLT U0 SysHlt(); //Loops doing HLT inst.
public _extern _XCHG_I64 I64 XchgI64(I64 *dst,I64 d); //eXchange I64s.
public _extern _XCHG_U16 U16 XchgU16(U16 *dst,U16 d); //eXchange U16s.

View file

@ -596,9 +596,6 @@ public extern I64 ScanMessage(I64 *_arg1=NULL,I64 *_arg2=NULL,
I64 mask=~1,CTask *task=NULL);
#help_index "Misc"
public extern I64 EndianI64(I64 d);
public extern U16 EndianU16(U16 d);
public extern U32 EndianU32(U32 d);
public extern U0 QuickSort(U8 *base,I64 num, I64 width,
I64 (*fp_compare)(U8 *e1,U8 *e2));
public extern U0 QuickSortI64(I64 *base,I64 num,

View file

@ -10,9 +10,9 @@ Bool Mem32DevIns(CMemRange *tmpmr)
tmpmr2->flags=0;
tmpmr2->base=tmpmr1->base;
tmpmr2->size=tmpmr->base-tmpmr1->base;
QueueInsRev(tmpmr2,tmpmr1);
QueueInsertRev(tmpmr2,tmpmr1);
}
QueueInsRev(tmpmr,tmpmr1);
QueueInsertRev(tmpmr,tmpmr1);
tmpmr1->size=tmpmr1->base+tmpmr1->size-
(tmpmr->base+tmpmr->size);
tmpmr1->base=tmpmr->base+tmpmr->size;
@ -184,4 +184,4 @@ I64 Seg2Linear(U32 *ptr)
{//Convert 32-bit segmented farptr to linear address. Modify in place.
*ptr = *ptr >> 16 << 4 + *ptr & 0xFFFF;
return *ptr;
}
}

View file

@ -501,7 +501,7 @@ public Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL)
if (doc_e->type_u8==DOCT_TEXT && doc->cur_col>=k)
QueueInsert(doc_e2,doc_e);
else
QueueInsRev(doc_e2,doc_e);
QueueInsertRev(doc_e2,doc_e);
}
}
}
@ -1150,7 +1150,7 @@ rc_skip:
if (doc->cur_entry==doc && recalc_flags&RECALCF_ADD_CURSOR) {
doc_e2=DocEntryNewBase(doc,DOCT_CURSOR,,x,y,doc->page_line_num);
MemCopy(&doc_e2->settings,s,sizeof(CDocSettings));
QueueInsRev(doc_e2,doc);
QueueInsertRev(doc_e2,doc);
}
if (doc->min_x>doc->max_x) {

View file

@ -58,7 +58,7 @@ U0 DocBorderListDraw(CDoc *doc)
while (tmpl && tmpl->doc_signature==DOC_SIGNATURE_VAL) {
ch=tmpl->desc;
i=(Bsr(ch)+7)>>3; //StrLen
ch=EndianI64(ch<<((8-i)<<3));
ch=EndianU64(ch<<((8-i)<<3));
attr=win_task->border_attr<<8;
while (i-- && y>0) {
TextChar(win_task,TRUE,-1,--y,attr+ch&0xFF);