Ignore:
Timestamp:
Mar 9, 2007, 4:59:13 AM (18 years ago)
Author:
dai_9181
Message:

参照型の整数型パラメータに実数を代入すると「内部エラー」になってしまうバグを修正。
参照型の整数型にリテラル値を直接指定すると「内部エラー」になってしまうバグを修正。
バージョンをβ15にした。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler32/NumOpe_Arithmetic.cpp

    r3 r66  
    1111
    1212        //fistp qword ptr[esp]
    13         fpu_cast();
    14         OpBuffer[obp++]=(char)0xDF;
    15         OpBuffer[obp++]=(char)0x3C;
    16         OpBuffer[obp++]=(char)0x24;
    17         fpu_cast_end();
     13        op_fistp_ptr_esp( sizeof(_int64) );
    1814
    1915        //pop ebx
     
    3127
    3228        //fistp qword ptr[esp]
    33         fpu_cast();
    34         OpBuffer[obp++]=(char)0xDF;
    35         OpBuffer[obp++]=(char)0x3C;
    36         OpBuffer[obp++]=(char)0x24;
    37         fpu_cast_end();
     29        op_fistp_ptr_esp( sizeof(_int64) );
    3830
    3931        //pop ebx
     
    8476
    8577        //fistp qword ptr[esp]
    86         fpu_cast();
    87         OpBuffer[obp++]=(char)0xDF;
    88         OpBuffer[obp++]=(char)0x3C;
    89         OpBuffer[obp++]=(char)0x24;
    90         fpu_cast_end();
     78        op_fistp_ptr_esp( sizeof(_int64) );
    9179
    9280        //pop eax
     
    10492
    10593        //fistp qword ptr[esp]
    106         fpu_cast();
    107         OpBuffer[obp++]=(char)0xDF;
    108         OpBuffer[obp++]=(char)0x3C;
    109         OpBuffer[obp++]=(char)0x24;
    110         fpu_cast_end();
     94        op_fistp_ptr_esp( sizeof(_int64) );
    11195
    11296        //pop eax
     
    510494
    511495            //fistp dword ptr[esp]
    512             fpu_cast();
    513             OpBuffer[obp++]=(char)0xDB;
    514             OpBuffer[obp++]=(char)0x1C;
    515             OpBuffer[obp++]=(char)0x24;
    516             fpu_cast_end();
     496            op_fistp_ptr_esp( sizeof(long) );
    517497        }
    518498        else if(type[sp-1]==DEF_SINGLE){
     
    521501
    522502            //fistp dword ptr[esp]
    523             fpu_cast();
    524             OpBuffer[obp++]=(char)0xDB;
    525             OpBuffer[obp++]=(char)0x1C;
    526             OpBuffer[obp++]=(char)0x24;
    527             fpu_cast_end();
     503            op_fistp_ptr_esp( sizeof(long) );
    528504        }
    529505
     
    539515
    540516            //fistp dword ptr[esp]
    541             fpu_cast();
    542             OpBuffer[obp++]=(char)0xDB;
    543             OpBuffer[obp++]=(char)0x1C;
    544             OpBuffer[obp++]=(char)0x24;
    545             fpu_cast_end();
     517            op_fistp_ptr_esp( sizeof(long) );
    546518        }
    547519        else if(type[sp-2]==DEF_SINGLE){
     
    550522
    551523            //fistp dword ptr[esp]
    552             fpu_cast();
    553             OpBuffer[obp++]=(char)0xDB;
    554             OpBuffer[obp++]=(char)0x1C;
    555             OpBuffer[obp++]=(char)0x24;
    556             fpu_cast_end();
     524            op_fistp_ptr_esp( sizeof(long) );
    557525        }
    558526
     
    786754
    787755            //fistp dword ptr[esp]
    788             fpu_cast();
    789             OpBuffer[obp++]=(char)0xDB;
    790             OpBuffer[obp++]=(char)0x1C;
    791             OpBuffer[obp++]=(char)0x24;
    792             fpu_cast_end();
     756            op_fistp_ptr_esp( sizeof(long) );
    793757        }
    794758        else if(type[sp-1]==DEF_SINGLE){
     
    797761
    798762            //fistp dword ptr[esp]
    799             fpu_cast();
    800             OpBuffer[obp++]=(char)0xDB;
    801             OpBuffer[obp++]=(char)0x1C;
    802             OpBuffer[obp++]=(char)0x24;
    803             fpu_cast_end();
     763            op_fistp_ptr_esp( sizeof(long) );
    804764        }
    805765
     
    815775
    816776            //fistp dword ptr[esp]
    817             fpu_cast();
    818             OpBuffer[obp++]=(char)0xDB;
    819             OpBuffer[obp++]=(char)0x1C;
    820             OpBuffer[obp++]=(char)0x24;
    821             fpu_cast_end();
     777            op_fistp_ptr_esp( sizeof(long) );
    822778        }
    823779        else if(type[sp-2]==DEF_SINGLE){
     
    826782
    827783            //fistp dword ptr[esp]
    828             fpu_cast();
    829             OpBuffer[obp++]=(char)0xDB;
    830             OpBuffer[obp++]=(char)0x1C;
    831             OpBuffer[obp++]=(char)0x24;
    832             fpu_cast_end();
     784            op_fistp_ptr_esp( sizeof(long) );
    833785        }
    834786
     
    11191071
    11201072            //fistp dword ptr[esp]
    1121             fpu_cast();
    1122             OpBuffer[obp++]=(char)0xDB;
    1123             OpBuffer[obp++]=(char)0x1C;
    1124             OpBuffer[obp++]=(char)0x24;
    1125             fpu_cast_end();
     1073            op_fistp_ptr_esp( sizeof(long) );
    11261074
    11271075            //pop ecx
     
    11331081
    11341082            //fistp dword ptr[esp]
    1135             fpu_cast();
    1136             OpBuffer[obp++]=(char)0xDB;
    1137             OpBuffer[obp++]=(char)0x1C;
    1138             OpBuffer[obp++]=(char)0x24;
    1139             fpu_cast_end();
     1083            op_fistp_ptr_esp( sizeof(long) );
    11401084
    11411085            //pop ecx
     
    11601104
    11611105            //fistp qword ptr[esp]
    1162             fpu_cast();
    1163             OpBuffer[obp++]=(char)0xDF;
    1164             OpBuffer[obp++]=(char)0x3C;
    1165             OpBuffer[obp++]=(char)0x24;
    1166             fpu_cast_end();
     1106            op_fistp_ptr_esp( sizeof(_int64) );
    11671107
    11681108            //pop eax
     
    11801120
    11811121            //fistp qword ptr[esp]
    1182             fpu_cast();
    1183             OpBuffer[obp++]=(char)0xDF;
    1184             OpBuffer[obp++]=(char)0x3C;
    1185             OpBuffer[obp++]=(char)0x24;
    1186             fpu_cast_end();
     1122            op_fistp_ptr_esp( sizeof(_int64) );
    11871123
    11881124            //pop eax
     
    12451181
    12461182            //fistp dword ptr[esp]
    1247             fpu_cast();
    1248             OpBuffer[obp++]=(char)0xDB;
    1249             OpBuffer[obp++]=(char)0x1C;
    1250             OpBuffer[obp++]=(char)0x24;
    1251             fpu_cast_end();
     1183            op_fistp_ptr_esp( sizeof(long) );
    12521184
    12531185            //pop ecx
     
    12591191
    12601192            //fistp dword ptr[esp]
    1261             fpu_cast();
    1262             OpBuffer[obp++]=(char)0xDB;
    1263             OpBuffer[obp++]=(char)0x1C;
    1264             OpBuffer[obp++]=(char)0x24;
    1265             fpu_cast_end();
     1193            op_fistp_ptr_esp( sizeof(long) );
    12661194
    12671195            //pop ecx
     
    12881216
    12891217            //fistp dword ptr[esp]
    1290             fpu_cast();
    1291             OpBuffer[obp++]=(char)0xDB;
    1292             OpBuffer[obp++]=(char)0x1C;
    1293             OpBuffer[obp++]=(char)0x24;
    1294             fpu_cast_end();
     1218            op_fistp_ptr_esp( sizeof(long) );
    12951219        }
    12961220        else if(type[sp-2]==DEF_SINGLE){
     
    12991223
    13001224            //fistp dword ptr[esp]
    1301             fpu_cast();
    1302             OpBuffer[obp++]=(char)0xDB;
    1303             OpBuffer[obp++]=(char)0x1C;
    1304             OpBuffer[obp++]=(char)0x24;
    1305             fpu_cast_end();
     1225            op_fistp_ptr_esp( sizeof(long) );
    13061226        }
    13071227
     
    13531273
    13541274            //fistp dword ptr[esp]
    1355             fpu_cast();
    1356             OpBuffer[obp++]=(char)0xDB;
    1357             OpBuffer[obp++]=(char)0x1C;
    1358             OpBuffer[obp++]=(char)0x24;
    1359             fpu_cast_end();
     1275            op_fistp_ptr_esp( sizeof(long) );
    13601276
    13611277            //pop ecx
     
    13671283
    13681284            //fistp dword ptr[esp]
    1369             fpu_cast();
    1370             OpBuffer[obp++]=(char)0xDB;
    1371             OpBuffer[obp++]=(char)0x1C;
    1372             OpBuffer[obp++]=(char)0x24;
    1373             fpu_cast_end();
     1285            op_fistp_ptr_esp( sizeof(long) );
    13741286
    13751287            //pop ecx
     
    13941306
    13951307            //fistp qword ptr[esp]
    1396             fpu_cast();
    1397             OpBuffer[obp++]=(char)0xDF;
    1398             OpBuffer[obp++]=(char)0x3C;
    1399             OpBuffer[obp++]=(char)0x24;
    1400             fpu_cast_end();
     1308            op_fistp_ptr_esp( sizeof(_int64) );
    14011309
    14021310            //pop eax
     
    14141322
    14151323            //fistp qword ptr[esp]
    1416             fpu_cast();
    1417             OpBuffer[obp++]=(char)0xDF;
    1418             OpBuffer[obp++]=(char)0x3C;
    1419             OpBuffer[obp++]=(char)0x24;
    1420             fpu_cast_end();
     1324            op_fistp_ptr_esp( sizeof(_int64) );
    14211325
    14221326            //pop eax
     
    14901394
    14911395            //fistp dword ptr[esp]
    1492             fpu_cast();
    1493             OpBuffer[obp++]=(char)0xDB;
    1494             OpBuffer[obp++]=(char)0x1C;
    1495             OpBuffer[obp++]=(char)0x24;
    1496             fpu_cast_end();
     1396            op_fistp_ptr_esp( sizeof(long) );
    14971397
    14981398            //pop ecx
     
    15041404
    15051405            //fistp dword ptr[esp]
    1506             fpu_cast();
    1507             OpBuffer[obp++]=(char)0xDB;
    1508             OpBuffer[obp++]=(char)0x1C;
    1509             OpBuffer[obp++]=(char)0x24;
    1510             fpu_cast_end();
     1406            op_fistp_ptr_esp( sizeof(long) );
    15111407
    15121408            //pop ecx
     
    15331429
    15341430            //fistp dword ptr[esp]
    1535             fpu_cast();
    1536             OpBuffer[obp++]=(char)0xDB;
    1537             OpBuffer[obp++]=(char)0x1C;
    1538             OpBuffer[obp++]=(char)0x24;
    1539             fpu_cast_end();
     1431            op_fistp_ptr_esp( sizeof(long) );
    15401432        }
    15411433        else if(type[sp-2]==DEF_SINGLE){
     
    15441436
    15451437            //fistp dword ptr[esp]
    1546             fpu_cast();
    1547             OpBuffer[obp++]=(char)0xDB;
    1548             OpBuffer[obp++]=(char)0x1C;
    1549             OpBuffer[obp++]=(char)0x24;
    1550             fpu_cast_end();
     1438            op_fistp_ptr_esp( sizeof(long) );
    15511439        }
    15521440
Note: See TracChangeset for help on using the changeset viewer.