Browse Source

add analise lucas

Lucasfer 5 years ago
parent
commit
743e3977d1

BIN
build/classes/compiler/IVANNOSYS.class


+ 16 - 16
build/classes/tools/mips/memory/md.memory

@@ -23,18 +23,18 @@ DATA_RADIX = BIN;
 
 CONTENT
 BEGIN
-00000:	00000000000000000000000000000000;	% dec 0 %
-00004:	00000000000000000000000000000000;	% dec 0 %
-00008:	00000000000000000000000000000000;	% dec 0 %
-00012:	00000000000000000000000000000000;	% dec 0 %
-00016:	00000000000000000000000000000000;	% dec 0 %
-00020:	00000000000000000000000000000001;	% dec 1 %
-00024:	00000000000000000000000000000010;	% dec 2 %
-00028:	00000000000000000000000000000000;	% dec 0 %
-00032:	00000000000000000000000000000000;	% dec 0 %
-00036:	00000000000000000000000000000011;	% dec 3 %
-00040:	00000000000000000000000000000100;	% dec 4 %
-00044:	00000000000000000000000000000000;	% dec 0 %
+00000:	00000000000000000000000000000001;	% dec 1 %
+00004:	00000000000000000000000000000010;	% dec 2 %
+00008:	00000000000000000000000000000011;	% dec 3 %
+00012:	00000000000000000000000000000100;	% dec 4 %
+00016:	00000000000000000000000000000001;	% dec 1 %
+00020:	00000000000000000000000000000010;	% dec 2 %
+00024:	00000000000000000000000000000011;	% dec 3 %
+00028:	00000000000000000000000000000100;	% dec 4 %
+00032:	00000000000000000000000000000111;	% dec 7 %
+00036:	00000000000000000000000000001010;	% dec 10 %
+00040:	00000000000000000000000000001111;	% dec 15 %
+00044:	00000000000000000000000000010110;	% dec 22 %
 00048:	00000000000000000000000000000000;	% dec 0 %
 00052:	00000000000000000000000000000000;	% dec 0 %
 00056:	00000000000000000000000000000000;	% dec 0 %
@@ -48,8 +48,8 @@ BEGIN
 [108..16356]:	00000000000000000000000000000000;
 16360:	00000000000000000000000000000101;	% dec 5 %
 16364:	00000000000000000000000000000011;	% dec 3 %
-16368:	00000000000000000000000000000011;	% dec 3 %
-16372:	00000000000000000000000000000011;	% dec 3 %
-16376:	00000000000000000000000000000011;	% dec 3 %
-16380:	11111111111111111111111111111111;	% dec 4294967295 %
+16368:	00000000000000000000000000000000;	% dec 0 %
+16372:	00000000000000000000000000000010;	% dec 2 %
+16376:	00000000000000000000000000000010;	% dec 2 %
+16380:	00000000000000000000000000000010;	% dec 2 %
 END;

+ 143 - 207
build/classes/tools/mips/memory/mi.memory

@@ -25,230 +25,166 @@ CONTENT
 BEGIN
 000:	00001100000000000000000000000101;	% dec 201326597 %
 004:	00000000000000000000000000000000;	% dec 0 %
-008:	00001100000000000000000001011011;	% dec 201326683 %
+008:	00001100000000000000000001000110;	% dec 201326662 %
 012:	00000000000000000000000000000000;	% dec 0 %
 016:	11111111111111111111111111111111;	% dec 4294967295 %
-020:	00100111101111011111111111101000;	% dec 666763240 %
+020:	00100111101111011111111111110100;	% dec 666763252 %
 024:	00000000000111011111000000100001;	% dec 1962017 %
 028:	00100100000100000000000000000001;	% dec 605028353 %
 032:	10101111110100000000000000000000;	% dec 2949644288 %
-036:	00100100000100010000000000000011;	% dec 605093891 %
+036:	00100100000100010000000000000000;	% dec 605093888 %
 040:	10101111110100010000000000000100;	% dec 2949709828 %
-044:	00100100000100100000000000000011;	% dec 605159427 %
-048:	10101111110100100000000000001000;	% dec 2949775368 %
-052:	00100100000100110000000000000000;	% dec 605224960 %
-056:	10101111110100110000000000001100;	% dec 2949840908 %
-060:	00001000000000000000000001010010;	% dec 134217810 %
+044:	00001000000000000000000000111101;	% dec 134217789 %
+048:	00000000000000000000000000000000;	% dec 0 %
+052:	00100100000100100000000000000000;	% dec 605159424 %
+056:	10101111110100100000000000001000;	% dec 2949775368 %
+060:	00001000000000000000000000110011;	% dec 134217779 %
 064:	00000000000000000000000000000000;	% dec 0 %
-068:	00100100000101000000000000000000;	% dec 605290496 %
-072:	10101111110101000000000000010000;	% dec 2949906448 %
-076:	00001000000000000000000001001000;	% dec 134217800 %
-080:	00000000000000000000000000000000;	% dec 0 %
-084:	10001111110101010000000000001100;	% dec 2413101068 %
+068:	10001111110100110000000000000100;	% dec 2412969988 %
+072:	00000000000000000000000000000000;	% dec 0 %
+076:	00000000000100110101100000100001;	% dec 1267745 %
+080:	00000000000010110110000001000000;	% dec 745536 %
+084:	10001111110101000000000000001000;	% dec 2413035528 %
 088:	00000000000000000000000000000000;	% dec 0 %
-092:	00010010101000000000000000000110;	% dec 312475654 %
-096:	00000000000000000000000000000000;	% dec 0 %
-100:	10001111110101100000000000001100;	% dec 2413166604 %
-104:	10001111110101110000000000000100;	% dec 2413232132 %
+092:	00000000000101000110100000100001;	% dec 1337377 %
+096:	00000001100011010110000000100001;	% dec 26042401 %
+100:	00000000000011000111000010000000;	% dec 815232 %
+104:	10001111110101010000000000000000;	% dec 2413101056 %
 108:	00000000000000000000000000000000;	% dec 0 %
-112:	00010110110101110000000000000101;	% dec 383188997 %
-116:	00000000000000000000000000000000;	% dec 0 %
-120:	00100100000100000000000000000000;	% dec 605028352 %
-124:	10101111110100000000000000010100;	% dec 2949644308 %
-128:	00001000000000000000000000110111;	% dec 134217783 %
-132:	00000000000000000000000000000000;	% dec 0 %
-136:	10001111110100010000000000010000;	% dec 2412838928 %
+112:	00000011100011100111000000100001;	% dec 59666465 %
+116:	10101101110101010000000000000000;	% dec 2916417536 %
+120:	10001111110100110000000000000100;	% dec 2412969988 %
+124:	00000000000000000000000000000000;	% dec 0 %
+128:	00000000000100110111100000100001;	% dec 1275937 %
+132:	00000000000011111100000001000000;	% dec 1032256 %
+136:	10001111110101000000000000001000;	% dec 2413035528 %
 140:	00000000000000000000000000000000;	% dec 0 %
-144:	00010010001000000000000000000110;	% dec 304087046 %
-148:	00000000000000000000000000000000;	% dec 0 %
-152:	10001111110100100000000000010000;	% dec 2412904464 %
-156:	10001111110100110000000000001000;	% dec 2412969992 %
+144:	00000000000101000100000000100001;	% dec 1327137 %
+148:	00000011000010001100000000100001;	% dec 50905121 %
+152:	00000000000110000100100010000000;	% dec 1591424 %
+156:	10001111110101010000000000000000;	% dec 2413101056 %
 160:	00000000000000000000000000000000;	% dec 0 %
-164:	00010110010100110000000000000101;	% dec 374538245 %
-168:	00000000000000000000000000000000;	% dec 0 %
-172:	00100100000101000000000000000000;	% dec 605290496 %
-176:	10101111110101000000000000010100;	% dec 2949906452 %
-180:	00001000000000000000000000110111;	% dec 134217783 %
-184:	00000000000000000000000000000000;	% dec 0 %
-188:	10001111110101010000000000000000;	% dec 2413101056 %
+164:	00000011100010010100100000100001;	% dec 59328545 %
+168:	10101101001101010000000000010000;	% dec 2905931792 %
+172:	10001111110101010000000000000000;	% dec 2413101056 %
+176:	00000000000000000000000000000000;	% dec 0 %
+180:	00100110101101010000000000000001;	% dec 649396225 %
+184:	10101111110101010000000000000000;	% dec 2949971968 %
+188:	10001111110100000000000000001000;	% dec 2412773384 %
 192:	00000000000000000000000000000000;	% dec 0 %
-196:	00000000000101011011000000100001;	% dec 1421345 %
-200:	10101111110101100000000000010100;	% dec 2950037524 %
-204:	10001111110101010000000000000000;	% dec 2413101056 %
+196:	00100110000100000000000000000001;	% dec 638582785 %
+200:	10101111110100000000000000001000;	% dec 2949644296 %
+204:	10001111110100010000000000001000;	% dec 2412838920 %
 208:	00000000000000000000000000000000;	% dec 0 %
-212:	00100110101101010000000000000001;	% dec 649396225 %
-216:	10101111110101010000000000000000;	% dec 2949971968 %
-220:	10001111110101110000000000001100;	% dec 2413232140 %
+212:	00100100000011010000000000000010;	% dec 604831746 %
+216:	00000010001011010001000000100011;	% dec 36507683 %
+220:	00000100010000001111111111011001;	% dec 71368665 %
 224:	00000000000000000000000000000000;	% dec 0 %
-228:	00000000000101110100100000100001;	% dec 1525793 %
-232:	00000000000010010101000010000000;	% dec 610432 %
-236:	10001111110100000000000000010000;	% dec 2412773392 %
-240:	00000000000000000000000000000000;	% dec 0 %
-244:	00000000000100000101100000100001;	% dec 1071137 %
-248:	00000001010010110101000000100001;	% dec 21712929 %
-252:	00000000000010100110000010000000;	% dec 680064 %
-256:	10001111110100010000000000010100;	% dec 2412838932 %
-260:	00000000000000000000000000000000;	% dec 0 %
-264:	00000011100011000110000000100001;	% dec 59531297 %
-268:	10101101100100010000000000000000;	% dec 2911961088 %
-272:	10001111110100110000000000010000;	% dec 2412970000 %
-276:	00000000000000000000000000000000;	% dec 0 %
-280:	00100110011100110000000000000001;	% dec 645070849 %
-284:	10101111110100110000000000010000;	% dec 2949840912 %
-288:	10001111110101000000000000010000;	% dec 2413035536 %
-292:	00000000000000000000000000000000;	% dec 0 %
-296:	00100100000011100000000000000100;	% dec 604897284 %
-300:	00000010100011100001000000100011;	% dec 42864675 %
-304:	00000100010000001111111111001000;	% dec 71368648 %
+228:	10001111110100100000000000000100;	% dec 2412904452 %
+232:	00000000000000000000000000000000;	% dec 0 %
+236:	00100110010100100000000000000001;	% dec 642908161 %
+240:	10101111110100100000000000000100;	% dec 2949775364 %
+244:	10001111110101100000000000000100;	% dec 2413166596 %
+248:	00000000000000000000000000000000;	% dec 0 %
+252:	00100100000011100000000000000010;	% dec 604897282 %
+256:	00000010110011100001000000100011;	% dec 47058979 %
+260:	00000100010000001111111111001011;	% dec 71368651 %
+264:	00000000000000000000000000000000;	% dec 0 %
+268:	00100111101111010000000000001100;	% dec 666697740 %
+272:	00000000000111011111000000100001;	% dec 1962017 %
+276:	00000011111000000000000000001000;	% dec 65011720 %
+280:	00100111101111011111111111110000;	% dec 666763248 %
+284:	00000000000111011111000000100001;	% dec 1962017 %
+288:	00100100000100000000000000000000;	% dec 605028352 %
+292:	10101111110100000000000000000000;	% dec 2949644288 %
+296:	00100100000100010000000000000000;	% dec 605093888 %
+300:	10101111110100010000000000000100;	% dec 2949709828 %
+304:	00001000000000000000000010011011;	% dec 134217883 %
 308:	00000000000000000000000000000000;	% dec 0 %
-312:	10001111110101100000000000001100;	% dec 2413166604 %
-316:	00000000000000000000000000000000;	% dec 0 %
-320:	00100110110101100000000000000001;	% dec 651558913 %
-324:	10101111110101100000000000001100;	% dec 2950037516 %
-328:	10001111110101010000000000001100;	% dec 2413101068 %
-332:	00000000000000000000000000000000;	% dec 0 %
-336:	00100100000110000000000000000100;	% dec 605552644 %
-340:	00000010101110000001000000100011;	% dec 45617187 %
-344:	00000100010000001111111110111010;	% dec 71368634 %
+312:	00100100000100100000000000000000;	% dec 605159424 %
+316:	10101111110100100000000000001000;	% dec 2949775368 %
+320:	00001000000000000000000010010001;	% dec 134217873 %
+324:	00000000000000000000000000000000;	% dec 0 %
+328:	00100100000100110000000000000000;	% dec 605224960 %
+332:	10101111110100110000000000001100;	% dec 2949840908 %
+336:	00001000000000000000000001111000;	% dec 134217848 %
+340:	00000000000000000000000000000000;	% dec 0 %
+344:	10001111110101000000000000000100;	% dec 2413035524 %
 348:	00000000000000000000000000000000;	% dec 0 %
-352:	00100111101111010000000000011000;	% dec 666697752 %
-356:	00000000000111011111000000100001;	% dec 1962017 %
-360:	00000011111000000000000000001000;	% dec 65011720 %
-364:	00100111101111011111111111101100;	% dec 666763244 %
-368:	00000000000111011111000000100001;	% dec 1962017 %
-372:	00100100000100000000000000000011;	% dec 605028355 %
-376:	10101111110100000000000000000000;	% dec 2949644288 %
-380:	00100100000100010000000000000011;	% dec 605093891 %
-384:	10101111110100010000000000000100;	% dec 2949709828 %
-388:	00100100000100100000000000000001;	% dec 605159425 %
-392:	10101111110100100000000000001000;	% dec 2949775368 %
-396:	00001000000000000000000011011011;	% dec 134217947 %
-400:	00000000000000000000000000000000;	% dec 0 %
-404:	00100100000100110000000000000001;	% dec 605224961 %
-408:	10101111110100110000000000001100;	% dec 2949840908 %
-412:	00001000000000000000000011010001;	% dec 134217937 %
-416:	00000000000000000000000000000000;	% dec 0 %
-420:	10001111110101000000000000001000;	% dec 2413035528 %
-424:	00000000000000000000000000000000;	% dec 0 %
-428:	00100110100011011111111111111111;	% dec 646840319 %
-432:	00000000000011010111000010000000;	% dec 880768 %
-436:	10001111110101010000000000001100;	% dec 2413101068 %
-440:	00000000000000000000000000000000;	% dec 0 %
-444:	00000000000101010111100000100001;	% dec 1407009 %
-448:	00000001110011110111000000100001;	% dec 30371873 %
-452:	00000000000011101100000010000000;	% dec 966784 %
-456:	00000011100110001100000000100001;	% dec 60342305 %
-460:	10001111000101100000000000000000;	% dec 2400583680 %
-464:	00000000000000000000000000000000;	% dec 0 %
-468:	00000000000101101011100000100001;	% dec 1488929 %
-472:	10101111110101110000000000010000;	% dec 2950103056 %
-476:	10001111110101000000000000001000;	% dec 2413035528 %
-480:	00000000000000000000000000000000;	% dec 0 %
-484:	00000000000101000100000000100001;	% dec 1327137 %
-488:	00000000000010000100100010000000;	% dec 542848 %
-492:	10001111110101010000000000001100;	% dec 2413101068 %
-496:	00000000000000000000000000000000;	% dec 0 %
-500:	00100110101010111111111111111111;	% dec 648806399 %
-504:	00000001001010110100100000100001;	% dec 19613729 %
-508:	00000000000010010110000010000000;	% dec 614528 %
-512:	00000011100011000110000000100001;	% dec 59531297 %
-516:	10001101100011010000000000000000;	% dec 2374828032 %
-520:	10001111110101110000000000010000;	% dec 2413232144 %
+352:	00000000000101000110000000100001;	% dec 1335329 %
+356:	00000000000011000110100001000000;	% dec 813120 %
+360:	10001111110101010000000000001100;	% dec 2413101068 %
+364:	00000000000000000000000000000000;	% dec 0 %
+368:	00000000000101010111000000100001;	% dec 1404961 %
+372:	00000001101011100110100000100001;	% dec 28207137 %
+376:	00000000000011010111100010000000;	% dec 882816 %
+380:	00000011100011110111100000100001;	% dec 59734049 %
+384:	10001101111110000000000000000000;	% dec 2381840384 %
+388:	10001111110101010000000000001100;	% dec 2413101068 %
+392:	00000000000000000000000000000000;	% dec 0 %
+396:	00000000000101010100000000100001;	% dec 1392673 %
+400:	00000000000010000100100001000000;	% dec 542784 %
+404:	10001111110101110000000000001000;	% dec 2413232136 %
+408:	00000000000000000000000000000000;	% dec 0 %
+412:	00000000000101110101000000100001;	% dec 1527841 %
+416:	00000001001010100100100000100001;	% dec 19548193 %
+420:	00000000000010010101100010000000;	% dec 612480 %
+424:	00000011100010110101100000100001;	% dec 59463713 %
+428:	10001101011100000000000000010000;	% dec 2372927504 %
+432:	00000000000000000000000000000000;	% dec 0 %
+436:	00000000000100000110000000100001;	% dec 1073185 %
+440:	00000011000011000111000000011000;	% dec 51146776 %
+444:	00000000000000000111000000010010;	% dec 28690 %
+448:	10001111110100010000000000000000;	% dec 2412838912 %
+452:	00000000000000000000000000000000;	% dec 0 %
+456:	00000010001011101000100000100001;	% dec 36603937 %
+460:	10101111110100010000000000000000;	% dec 2949709824 %
+464:	10001111110100100000000000001100;	% dec 2412904460 %
+468:	00000000000000000000000000000000;	% dec 0 %
+472:	00100110010100100000000000000001;	% dec 642908161 %
+476:	10101111110100100000000000001100;	% dec 2949775372 %
+480:	10001111110100110000000000001100;	% dec 2412969996 %
+484:	00000000000000000000000000000000;	% dec 0 %
+488:	00100100000011110000000000000010;	% dec 604962818 %
+492:	00000010011011110001000000100011;	% dec 40833059 %
+496:	00000100010000001111111111011001;	% dec 71368665 %
+500:	00000000000000000000000000000000;	% dec 0 %
+504:	10001111110101000000000000000100;	% dec 2413035524 %
+508:	00000000000000000000000000000000;	% dec 0 %
+512:	00000000000101000100000000100001;	% dec 1327137 %
+516:	00000000000010000101000001000000;	% dec 544832 %
+520:	10001111110101100000000000001000;	% dec 2413166600 %
 524:	00000000000000000000000000000000;	% dec 0 %
-528:	00000010111011011011100000100001;	% dec 49133601 %
-532:	10101111110101110000000000010000;	% dec 2950103056 %
-536:	10001111110101000000000000001000;	% dec 2413035528 %
-540:	00000000000000000000000000000000;	% dec 0 %
-544:	00000000000101000111100000100001;	% dec 1341473 %
-548:	00000000000011110111000010000000;	% dec 1011840 %
-552:	10001111110101010000000000001100;	% dec 2413101068 %
-556:	00000000000000000000000000000000;	% dec 0 %
-560:	00100110101010000000000000000001;	% dec 648544257 %
-564:	00000001110010000111000000100001;	% dec 29913121 %
-568:	00000000000011100101000010000000;	% dec 938112 %
-572:	00000011100010100101000000100001;	% dec 59396129 %
-576:	10001101010010110000000000000000;	% dec 2370502656 %
-580:	10001111110101110000000000010000;	% dec 2413232144 %
+528:	00000000000101100100100000100001;	% dec 1460257 %
+532:	00000001010010010101000000100001;	% dec 21581857 %
+536:	00000000000010100101100010000000;	% dec 678016 %
+540:	10001111110101010000000000000000;	% dec 2413101056 %
+544:	00000000000000000000000000000000;	% dec 0 %
+548:	00000011100010110101100000100001;	% dec 59463713 %
+552:	10101101011101010000000000100000;	% dec 2910126112 %
+556:	00100100000101010000000000000000;	% dec 605356032 %
+560:	10101111110101010000000000000000;	% dec 2949971968 %
+564:	10001111110100000000000000001000;	% dec 2412773384 %
+568:	00000000000000000000000000000000;	% dec 0 %
+572:	00100110000100000000000000000001;	% dec 638582785 %
+576:	10101111110100000000000000001000;	% dec 2949644296 %
+580:	10001111110100010000000000001000;	% dec 2412838920 %
 584:	00000000000000000000000000000000;	% dec 0 %
-588:	00000010111010111011100000100001;	% dec 49002529 %
-592:	10101111110101110000000000010000;	% dec 2950103056 %
-596:	10001111110101000000000000001000;	% dec 2413035528 %
+588:	00100100000011100000000000000010;	% dec 604897282 %
+592:	00000010001011100001000000100011;	% dec 36573219 %
+596:	00000100010000001111111110111100;	% dec 71368636 %
 600:	00000000000000000000000000000000;	% dec 0 %
-604:	00100110100011000000000000000001;	% dec 646709249 %
-608:	00000000000011000110100010000000;	% dec 813184 %
-612:	10001111110101010000000000001100;	% dec 2413101068 %
-616:	00000000000000000000000000000000;	% dec 0 %
-620:	00000000000101010111100000100001;	% dec 1407009 %
-624:	00000001101011110110100000100001;	% dec 28272673 %
-628:	00000000000011011100000010000000;	% dec 901248 %
-632:	00000011100110001100000000100001;	% dec 60342305 %
-636:	10001111000010000000000000000000;	% dec 2399666176 %
-640:	10001111110101110000000000010000;	% dec 2413232144 %
-644:	00000000000000000000000000000000;	% dec 0 %
-648:	00000010111010001011100000100001;	% dec 48805921 %
-652:	10101111110101110000000000010000;	% dec 2950103056 %
-656:	10001111110101000000000000001000;	% dec 2413035528 %
-660:	00000000000000000000000000000000;	% dec 0 %
-664:	00000000000101000111000000100001;	% dec 1339425 %
-668:	00000000000011100101000010000000;	% dec 938112 %
-672:	10001111110101010000000000001100;	% dec 2413101068 %
-676:	00000000000000000000000000000000;	% dec 0 %
-680:	00000000000101010101100000100001;	% dec 1398817 %
-684:	00000001010010110101000000100001;	% dec 21712929 %
-688:	00000000000010100100100010000000;	% dec 673920 %
-692:	00000011100010010100100000100001;	% dec 59328545 %
-696:	10001101001100110000000000000000;	% dec 2368929792 %
-700:	00000000000000000000000000000000;	% dec 0 %
-704:	00000000000100110110000000100001;	% dec 1269793 %
-708:	00100100000011110000000000000100;	% dec 604962820 %
-712:	00000001100011110110100000011000;	% dec 26175512 %
-716:	00000000000000000110100000010010;	% dec 26642 %
-720:	10001111110101110000000000010000;	% dec 2413232144 %
-724:	00000000000000000000000000000000;	% dec 0 %
-728:	00000010111011011011100000100011;	% dec 49133603 %
-732:	10101111110101110000000000010000;	% dec 2950103056 %
-736:	10001111110101110000000000010000;	% dec 2413232144 %
-740:	00000000000000000000000000000000;	% dec 0 %
-744:	00100100000110000000000011111111;	% dec 605552895 %
-748:	00000010111110000001000000100011;	% dec 49811491 %
-752:	00011000010000000000000000000011;	% dec 406847491 %
-756:	00000000000000000000000000000000;	% dec 0 %
-760:	00100100000101100000000011111111;	% dec 605421823 %
-764:	10101111110101100000000000010000;	% dec 2950037520 %
-768:	10001111110100000000000000001000;	% dec 2412773384 %
-772:	00000000000000000000000000000000;	% dec 0 %
-776:	00000000000100000111000000100001;	% dec 1077281 %
-780:	00000000000011100101100010000000;	% dec 940160 %
-784:	10001111110100010000000000001100;	% dec 2412838924 %
-788:	00000000000000000000000000000000;	% dec 0 %
-792:	00000000000100010101000000100001;	% dec 1134625 %
-796:	00000001011010100101100000100001;	% dec 23746593 %
-800:	00000000000010110100100010000000;	% dec 739456 %
-804:	10001111110100100000000000010000;	% dec 2412904464 %
-808:	00000000000000000000000000000000;	% dec 0 %
-812:	00000011100010010100100000100001;	% dec 59328545 %
-816:	10101101001100100000000001000000;	% dec 2905735232 %
-820:	10001111110101010000000000001100;	% dec 2413101068 %
-824:	00000000000000000000000000000000;	% dec 0 %
-828:	00100110101101010000000000000001;	% dec 649396225 %
-832:	10101111110101010000000000001100;	% dec 2949971980 %
-836:	10001111110100110000000000001100;	% dec 2412969996 %
-840:	10001111110101110000000000000100;	% dec 2413232132 %
-844:	00000000000000000000000000000000;	% dec 0 %
-848:	00000010011101110001000000100011;	% dec 41357347 %
-852:	00000100010000001111111110010011;	% dec 71368595 %
-856:	00000000000000000000000000000000;	% dec 0 %
-860:	10001111110101100000000000001000;	% dec 2413166600 %
-864:	00000000000000000000000000000000;	% dec 0 %
-868:	00100110110101100000000000000001;	% dec 651558913 %
-872:	10101111110101100000000000001000;	% dec 2950037512 %
-876:	10001111110100000000000000001000;	% dec 2412773384 %
-880:	10001111110100010000000000000000;	% dec 2412838912 %
-884:	00000000000000000000000000000000;	% dec 0 %
-888:	00000010000100010001000000100011;	% dec 34672675 %
-892:	00000100010000001111111110000101;	% dec 71368581 %
-896:	00000000000000000000000000000000;	% dec 0 %
-900:	00100111101111010000000000010100;	% dec 666697748 %
-904:	00000000000111011111000000100001;	% dec 1962017 %
-908:	00000011111000000000000000001000;	% dec 65011720 %
+604:	10001111110100100000000000000100;	% dec 2412904452 %
+608:	00000000000000000000000000000000;	% dec 0 %
+612:	00100110010100100000000000000001;	% dec 642908161 %
+616:	10101111110100100000000000000100;	% dec 2949775364 %
+620:	10001111110100110000000000000100;	% dec 2412969988 %
+624:	00000000000000000000000000000000;	% dec 0 %
+628:	00100100000011110000000000000010;	% dec 604962818 %
+632:	00000010011011110001000000100011;	% dec 40833059 %
+636:	00000100010000001111111110101110;	% dec 71368622 %
+640:	00000000000000000000000000000000;	% dec 0 %
+644:	00100111101111010000000000010000;	% dec 666697744 %
+648:	00000000000111011111000000100001;	% dec 1962017 %
+652:	00000011111000000000000000001000;	% dec 65011720 %
 END;

+ 2 - 1
nbproject/private/private.properties

@@ -1,6 +1,7 @@
 compile.on.save=true
 do.depend=false
 do.jar=true
+file.reference.antlr-4.7-complete.jar=C:\\Users\\lucas\\ivanosys\\ivannosys3\\antlr-4.7-complete.jar
 javac.debug=true
 javadoc.preview=true
-user.properties.file=C:\\Users\\EUGENIO CARVALHO\\AppData\\Roaming\\NetBeans\\7.4\\build.properties
+user.properties.file=C:\\Users\\lucas\\AppData\\Roaming\\NetBeans\\8.2\\build.properties

+ 1 - 7
nbproject/private/private.xml

@@ -27,12 +27,6 @@
         </file>
     </editor-bookmarks>
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
-        <group>
-            <file>file:/C:/Users/EUGENIO%20CARVALHO/Desktop/projects/Ivannosys/src/templates/Template.g4</file>
-            <file>file:/C:/Users/EUGENIO%20CARVALHO/Desktop/projects/Ivannosys/src/templates/input.txt</file>
-            <file>file:/C:/Users/EUGENIO%20CARVALHO/Desktop/projects/Ivannosys/src/libs/sync/sync.go</file>
-            <file>file:/C:/Users/EUGENIO%20CARVALHO/Desktop/projects/Ivannosys/src/samples/program_jun_bit_count.go</file>
-            <file>file:/C:/Users/EUGENIO%20CARVALHO/Desktop/projects/Ivannosys/src/grammar/IvannosysGrammar.g4</file>
-        </group>
+        <group/>
     </open-files>
 </project-private>

+ 1 - 1
src/API/Api.java

@@ -60,7 +60,7 @@ public class Api {
 
         String middlelist = Utils.Join(new String[]{
             // Remove labels não referenciadas
-//            "ir.clear.labels",
+            //            "ir.clear.labels",
             // Remove copias
             "ir.o.copies",
             // Propagacao de constantes

+ 447 - 0
src/analise/AnaliseDependenciaMiddleware.java

@@ -0,0 +1,447 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package analise;
+
+import API.MiddlewareInterface;
+import common.Instruction;
+import common.Block;
+import common.Code;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+
+/**
+ *
+ * @author lucas
+ */
+public class AnaliseDependenciaMiddleware implements MiddlewareInterface {
+
+    int id = 0;
+    protected Code target;
+    protected Code blocosBasicos = new Code("Blocos.Basicos");
+
+    public AnaliseDependenciaMiddleware() {
+
+    }
+
+    @Override
+    public void Exec(Code c, LinkedHashMap<String, MiddlewareInterface> cp) throws Exception {
+//        Block bloco = c.Block();
+        target = c;
+
+        System.out.println("Chamada analise dependencia");
+
+        for (Map.Entry<String, Block> entry : target.Blocks().entrySet()) {
+            Block mips = entry.getValue();
+
+            boolean first = true, isLabel, add;
+
+            for (Instruction inst : mips.Instructions()) {
+
+                isLabel = inst.eq("type", "label");
+
+//            inst.Get("inst.bin"); pra acessar os atributos
+//            inst.getint
+                if (first || isLabel || inst.eq("type", "J") || inst.in("inst", new String[]{"beq", "bne", "blez", "bgtz", "bgez", "bltz"})) {
+                    if (blocosBasicos.Block() != null) {
+                        if (!isLabel) {
+                            blocosBasicos.Block().Add(inst);
+                        }
+//                    System.out.println("blocosBasicos.Block().instructions > " + blocosBasicos.Block().instructions);
+                        if (blocosBasicos.Block().instructions.size() == 0) {
+                            blocosBasicos.stmts.remove(blocosBasicos.Block().getName());
+                        }
+                        blocosBasicos.CloseBlock();
+                    }
+                    blocosBasicos.OpenBlock("bloco." + (id++));
+                    if (first) {
+                        first = false;
+//                    if (!isLabel) {
+                        blocosBasicos.Block().Add(inst);
+//                    }
+                    }
+
+//            } else if (inst.eq("type", "label")) {
+//                System.out.println("Label:" + inst);
+                } else {
+                    blocosBasicos.Block().Add(inst);
+                }
+//            if (add) {;
+//                blocosBasicos.Block().Add(inst);
+//            }
+            }
+//        System.out.println("Print mips:" + mips.getName() + "\n" + mips.Instructions());
+        }
+        Post();
+    }
+
+    public void Post() {
+        ArrayList<String> contextTable = new ArrayList<>();
+        ArrayList<String> listaTrocar = new ArrayList<>();
+        ArrayList<String> lw_sw_Table = new ArrayList<>();
+
+        WriteTable writeBitmapTable = new WriteTable(5);
+        WriteTable readsTable = new WriteTable(5);
+        WriteTable nome = new WriteTable(5);
+        WriteTable lol = new WriteTable(5);
+
+        //Map valor, chave do bloco e suas instruções
+        for (Map.Entry<String, Block> b : blocosBasicos.Blocks().entrySet()) {
+            System.out.println("Bloco:" + b.getKey() + "\n" + b.getValue().Instructions());
+
+//            Pega os valores dos registradores
+            for (int i = 0; i < b.getValue().Instructions().size(); i++) {
+                System.out.println(b.getValue().Instructions().get(i).Get("inst") + ": " + "RS: " + b.getValue().Instructions().get(i).Get("rs") + " RT: " + b.getValue().Instructions().get(i).Get("rt") + " RD: " + b.getValue().Instructions().get(i).Get("rd"));
+//
+                contextTable.add(b.getValue().Instructions().get(i).Get("rs"));
+                contextTable.add(b.getValue().Instructions().get(i).Get("rt"));
+                contextTable.add(b.getValue().Instructions().get(i).Get("rd"));
+                for (int k = i + 1; k < b.getValue().Instructions().size(); k++) {
+
+                    //WAW  RT == RT
+                    if ((b.getValue().Instructions().get(i).Get("rt") == b.getValue().Instructions().get(k).Get("rt"))
+                            && (b.getValue().Instructions().get(k).diferente("inst", "beq")
+                            && b.getValue().Instructions().get(k).diferente("inst", "bne")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sb")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sh")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sw")
+                            && b.getValue().Instructions().get(k).diferente("inst", "swcl")
+                            && b.getValue().Instructions().get(k).diferente("inst", "add")
+                            && b.getValue().Instructions().get(k).diferente("inst", "addu")
+                            && b.getValue().Instructions().get(k).diferente("inst", "and")
+                            && b.getValue().Instructions().get(k).diferente("inst", "div")
+                            && b.getValue().Instructions().get(k).diferente("inst", "divu")
+                            && b.getValue().Instructions().get(k).diferente("inst", "mult")
+                            && b.getValue().Instructions().get(k).diferente("inst", "multu")
+                            && b.getValue().Instructions().get(k).diferente("inst", "nor")
+                            && b.getValue().Instructions().get(k).diferente("inst", "or")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sll")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sllv")
+                            && b.getValue().Instructions().get(k).diferente("inst", "slt")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sltu")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sra")
+                            && b.getValue().Instructions().get(k).diferente("inst", "srav")
+                            && b.getValue().Instructions().get(k).diferente("inst", "srl")
+                            && b.getValue().Instructions().get(k).diferente("inst", "srlv")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sub")
+                            && b.getValue().Instructions().get(k).diferente("inst", "subu")
+                            && b.getValue().Instructions().get(k).diferente("inst", "xor"))) {
+
+                        //Registradores a serem trocados
+                        listaTrocar.add(b.getValue().Instructions().get(k).Get("rt"));
+
+                    }
+                    //WAW CLASSICO RD == RD
+                    if (b.getValue().Instructions().get(i).Get("rd") == b.getValue().Instructions().get(k).Get("rd")) {
+                        listaTrocar.add(b.getValue().Instructions().get(k).Get("rd"));
+                    }
+
+                    if (b.getValue().Instructions().get(i).Get("rt") == b.getValue().Instructions().get(k).Get("rd")) {
+                        listaTrocar.add(b.getValue().Instructions().get(k).Get("rd"));
+
+                    }
+
+                    //Caso em que o RT nao é destino 
+                    if ((b.getValue().Instructions().get(i).Get("rs") == b.getValue().Instructions().get(k).Get("rt"))
+                            && (b.getValue().Instructions().get(k).diferente("inst", "beq")
+                            && b.getValue().Instructions().get(k).diferente("inst", "bne")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sb")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sh")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sw")
+                            && b.getValue().Instructions().get(k).diferente("inst", "swcl")
+                            && b.getValue().Instructions().get(k).diferente("inst", "add")
+                            && b.getValue().Instructions().get(k).diferente("inst", "addu")
+                            && b.getValue().Instructions().get(k).diferente("inst", "and")
+                            && b.getValue().Instructions().get(k).diferente("inst", "div")
+                            && b.getValue().Instructions().get(k).diferente("inst", "divu")
+                            && b.getValue().Instructions().get(k).diferente("inst", "mult")
+                            && b.getValue().Instructions().get(k).diferente("inst", "multu")
+                            && b.getValue().Instructions().get(k).diferente("inst", "nor")
+                            && b.getValue().Instructions().get(k).diferente("inst", "or")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sll")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sllv")
+                            && b.getValue().Instructions().get(k).diferente("inst", "slt")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sltu")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sra")
+                            && b.getValue().Instructions().get(k).diferente("inst", "srav")
+                            && b.getValue().Instructions().get(k).diferente("inst", "srl")
+                            && b.getValue().Instructions().get(k).diferente("inst", "srlv")
+                            && b.getValue().Instructions().get(k).diferente("inst", "sub")
+                            && b.getValue().Instructions().get(k).diferente("inst", "subu")
+                            && b.getValue().Instructions().get(k).diferente("inst", "xor"))) {
+                        listaTrocar.add(b.getValue().Instructions().get(k).Get("rt"));
+
+                    }
+
+                    if (b.getValue().Instructions().get(i).Get("rs") == b.getValue().Instructions().get(k).Get("rd")) {
+                        listaTrocar.add(b.getValue().Instructions().get(k).Get("rd"));
+
+                    }
+                }
+
+            }
+            //Remove blank da contextTable
+            contextTable.removeAll(Arrays.asList("", null));
+            listaTrocar.removeAll(Arrays.asList("", null));
+
+            //Remove repetições           
+            listaTrocar = new ArrayList<>(new LinkedHashSet<>(listaTrocar));
+
+            for (int i = 0; i < listaTrocar.size(); i++) {
+                for (int j = contextTable.size() - 1; j >= 0; j--) {
+                    if (listaTrocar.get(i) == contextTable.get(j)) {
+                        if (contextTable.get(j).equals("zero")) {
+                            contextTable.set(j, "r32");
+                        }
+                        if (contextTable.get(j).equals("at")) {
+                            contextTable.set(j, "r33");
+                        }
+                        if (contextTable.get(j).equals("v0")) {
+                            contextTable.set(j, "r34");
+                        }
+                        if (contextTable.get(j).equals("v1")) {
+                            contextTable.set(j, "r35");
+                        }
+                        if (contextTable.get(j).equals("a0")) {
+                            contextTable.set(j, "r36");
+                        }
+                        if (contextTable.get(j).equals("a1")) {
+                            contextTable.set(j, "r37");
+                        }
+                        if (contextTable.get(j).equals("a2")) {
+                            contextTable.set(j, "r38");
+                        }
+                        if (contextTable.get(j).equals("a3")) {
+                            contextTable.set(j, "r39");
+                        }
+                        if (contextTable.get(j).equals("t0")) {
+                            contextTable.set(j, "r40");
+                        }
+                        if (contextTable.get(j).equals("t1")) {
+                            contextTable.set(j, "r41");
+                        }
+                        if (contextTable.get(j).equals("t2")) {
+                            contextTable.set(j, "r42");
+                        }
+                        if (contextTable.get(j).equals("t3")) {
+                            contextTable.set(j, "r43");
+                        }
+                        if (contextTable.get(j).equals("t4")) {
+                            contextTable.set(j, "r44");
+                        }
+                        if (contextTable.get(j).equals("t5")) {
+                            contextTable.set(j, "r45");
+                        }
+                        if (contextTable.get(j).equals("t6")) {
+                            contextTable.set(j, "r46");
+                        }
+                        if (contextTable.get(j).equals("t7")) {
+                            contextTable.set(j, "r47");
+                        }
+                        if (contextTable.get(j).equals("s0")) {
+                            contextTable.set(j, "r48");
+                        }
+                        if (contextTable.get(j).equals("s1")) {
+                            contextTable.set(j, "r49");
+                        }
+                        if (contextTable.get(j).equals("s2")) {
+                            contextTable.set(j, "r50");
+                        }
+                        if (contextTable.get(j).equals("s3")) {
+                            contextTable.set(j, "r51");
+                        }
+                        if (contextTable.get(j).equals("s4")) {
+                            contextTable.set(j, "r52");
+                        }
+                        if (contextTable.get(j).equals("s5")) {
+                            contextTable.set(j, "r53");
+                        }
+                        if (contextTable.get(j).equals("s6")) {
+                            contextTable.set(j, "r54");
+                        }
+                        if (contextTable.get(j).equals("s7")) {
+                            contextTable.set(j, "r55");
+                        }
+                        if (contextTable.get(j).equals("t8")) {
+                            contextTable.set(j, "r56");
+                        }
+                        if (contextTable.get(j).equals("t9")) {
+                            contextTable.set(j, "r57");
+                        }
+                        if (contextTable.get(j).equals("k0")) {
+                            contextTable.set(j, "r58");
+                        }
+                        if (contextTable.get(j).equals("k1")) {
+                            contextTable.set(j, "r59");
+                        }
+                        if (contextTable.get(j).equals("gp")) {
+                            contextTable.set(j, "r60");
+                        }
+                        if (contextTable.get(j).equals("sp")) {
+                            contextTable.set(j, "r61");
+                        }
+                        if (contextTable.get(j).equals("fp")) {
+                            contextTable.set(j, "r62");
+                        }
+                        if (contextTable.get(j).equals("ra")) {
+                            contextTable.set(j, "r63");
+                        }
+
+                        break;
+                    }
+
+                }
+            }
+            contextTable = new ArrayList<>(new LinkedHashSet<>(contextTable));
+
+            //Para a writeBitmapTable
+            for (Instruction instrucao : b.getValue().Instructions()) {
+                switch (instrucao.Get("type")) {
+                    case "I":
+                        //WT
+
+                        if (instrucao.Get("inst") == "lw" || instrucao.Get("inst") == "sw"
+                                || instrucao.Get("inst") == "lb" || instrucao.Get("inst") == "lbu" || instrucao.Get("inst") == "sh") {
+                            lw_sw_Table.add(instrucao.Get("inst") + " " + instrucao.Get("rt"));
+
+                        } else {
+                            writeBitmapTable.Add(instrucao.Get("rs"), "", instrucao.Get("rt"));
+                        }
+
+                        //Gambiarra que mostra o que foi escrito e lido, para gerar a Reads
+                        nome.Add("", "", instrucao.Get("rt") + "<-" + instrucao.Get("inst"));
+                        readsTable.Add("", "", instrucao.Get("rs") + "->" + instrucao.Get("inst"));
+                        break;
+
+                    case "R":
+                        //WT
+
+                        if (instrucao.Get("inst") == "lw" || instrucao.Get("inst") == "sw"
+                                || instrucao.Get("inst") == "lb" || instrucao.Get("inst") == "lbu" || instrucao.Get("inst") == "sh") {
+                            lw_sw_Table.add(instrucao.Get("rt"));
+                        } else {
+                            writeBitmapTable.Add(instrucao.Get("rs"), instrucao.Get("rt"), instrucao.Get("rd"));
+                        }
+
+                        //Gambiarra que mostra o que foi escrito e lido, para gerar a Reads
+                        nome.Add("", "", instrucao.Get("rd") + "<-" + instrucao.Get("inst"));
+                        readsTable.Add("", "", instrucao.Get("rs") + "->" + instrucao.Get("inst"));
+                        //Caso tenha RD
+                        lol.Add("", "", instrucao.Get("rt") + "->" + instrucao.Get("inst"));
+
+                        break;
+                }
+            }
+            System.out.println("\nContextTable" + contextTable);
+            System.out.println("\nWriteTable" + writeBitmapTable.Get());
+            //Para saber qual o registrador trocado em WriteTable, é só olhar a ultima vez que o mesmo
+            //foi escrito, com excessão das instruções load store
+            System.out.println("\nTrocar" + listaTrocar);
+            System.out.println("\nlw_Sw_Resource" + lw_sw_Table);
+            System.out.println("\n" + "Escrito" + nome.Get());
+            System.out.println("\nLido" + readsTable.Get());
+            System.out.println("\nLido" + lol.Get());
+
+            lw_sw_Table.clear();
+            nome.Get().clear();
+            readsTable.Get().clear();
+            lol.Get().clear();
+            writeBitmapTable.Get().clear();
+            contextTable.clear();
+            listaTrocar.clear();
+
+            System.out.println("================================================\n");
+
+        }
+    }
+
+    //classe das ocorrencias
+    protected class Y {
+
+        public HashMap<String, Boolean> wt;
+        public ArrayList<String> ocorrences;
+
+        Y() {
+            this.wt = new HashMap<>();
+            this.ocorrences = new ArrayList<>();
+        }
+
+        //para imprimir só as ocorrencias(?)
+        @Override
+        public String toString() {
+            return this.ocorrences.toString();
+        }
+
+    }
+
+    protected class WriteTable {
+
+        protected int limitPerList;
+        ArrayList<Y> wt;
+
+        public WriteTable(int lpl) {
+            this.limitPerList = lpl;
+            this.wt = new ArrayList<>();
+        }
+
+        public ArrayList<Y> Get() {
+            return this.wt;
+        }
+
+        protected int Has(String rs) {
+            int pos = 0;
+            for (Y map : wt) {
+                if (map.wt.containsKey(rs)) {
+                    return pos;
+                }
+                pos++;
+            }
+            return -1;
+        }
+
+        public void Add(String rs, String rs2, String rd) {
+            int h1 = Has(rs);
+            int h2 = Has(rs2);
+            if (h1 < 0) {
+                if (h2 < 0) {
+                    this.AddNewList(rd, 0); // certo
+                } else {
+                    this.AddNewList(rd, h2 + 1); // certo
+                }
+            } else if (h2 < 0) {
+                this.AddNewList(rd, h1 + 1);
+            } else {
+                this.AddNewList(rd, Math.max(h1, h2) + 1);
+            }
+        }
+
+        protected void AddNewList(String rd, int index) {
+
+            Y tmp = new Y();
+            int next = index + 1;
+
+            if (wt.size() > index) {
+                if (wt.get(index).ocorrences.size() < this.limitPerList) {
+                    tmp = wt.get(index);
+                } else if (wt.size() > next) {
+                    tmp = wt.get(next);
+                } else {
+                    wt.add(tmp);
+                }
+            } else {
+                wt.add(tmp);
+            }
+
+            tmp.wt.put(rd, Boolean.TRUE);
+            tmp.ocorrences.add(rd);
+        }
+
+    }
+
+}

+ 430 - 0
src/analise/ModuleSchedulingMiddleware.java

@@ -0,0 +1,430 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package analise;
+
+import API.MiddlewareInterface;
+import common.Instruction;
+import common.Block;
+import common.Code;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.Map;
+
+/**
+ *
+ * @author lucas
+ */
+public class ModuleSchedulingMiddleware implements MiddlewareInterface {
+
+    protected Code target;
+    protected Integer NumeroElementosDeProcessamento = 5;
+    protected HashMap<String, String> instructionMap = new HashMap<String, String>() {
+        {
+            put("I", "rt");
+            put("R", "rd");
+        }
+    };
+
+    protected LinkedHashMap<String, Block> loops = new LinkedHashMap<>();
+    protected LinkedHashMap<String, ArrayList<No>> graphs = new LinkedHashMap<>();
+    private String loopId;
+    private Block loopInstructions;
+
+    public ModuleSchedulingMiddleware() {
+
+    }
+
+    @Override
+    public void Exec(Code c, LinkedHashMap<String, MiddlewareInterface> cp) throws Exception {
+//        Block bloco = c.Block();
+        System.out.println("Running Module Scheduling");
+        target = c;
+
+        for (Map.Entry<String, Block> entry : c.Blocks().entrySet()) {
+            ExtractLoopInstructions(entry.getValue());
+        }
+        ConstruirGrafoDeDependencia();
+
+//        Join();
+        System.out.println("Loops\n:" + loops.keySet());
+
+//        for (Map.Entry<String, Block> entry : loops.entrySet()) {
+//            System.out.println("Loop " + entry.getKey());
+//            System.out.println("F:" + entry.getValue().Instructions().getFirst());
+//            System.out.println("L:" + entry.getValue().Instructions().getLast());
+//        };
+        System.out.println("Detalhe dos grafos:");
+        for (Map.Entry<String, ArrayList<No>> entry : graphs.entrySet()) {
+            String key = entry.getKey();
+            ArrayList<No> value = entry.getValue();
+            System.out.println("Loop " + key + " (" + value.size() + ")");
+
+            for (No no : value) {
+                System.out.println(">>" + no.Dump(""));
+            }
+        }
+
+    }
+
+    protected void ExtractLoopInstructions(Block block) {
+        String loopId, lastLoopId = "";
+        HashMap<String, Boolean> removed = new HashMap<>();
+        boolean ne;
+        for (Instruction inst : block.Instructions()) {
+            loopId = inst.Get("inloop");
+//            System.out.println("loopId(" + inst.Get("global.position") + "):" + loopId);
+            // Se a instrucao não esta dentro de um loop
+            // Se é um loop mais externo e foi marcado como removido
+            // A instrucao não é adicionada
+            if (loopId.equals("") || removed.containsKey(loopId)) {
+                continue;
+            }
+            // Se for a primeira ocorrencia cria um bloco para o loop
+            if (!loops.containsKey(loopId)) {
+//                System.out.println("Add loop " + loopId);
+                loops.put(loopId, new Block(loopId));
+            }
+
+            // Adiciona a instrucao no loop atual
+            loops.get(loopId).Add(inst.copy());
+
+            // Se o id do loop anterior for mais externo que o atual remove o anterior
+            // E marca como removido para evitar de adicionar instrucoes nele
+            if (!loopId.equals(lastLoopId)) {
+
+                if (!lastLoopId.equals("") && loopId.contains(lastLoopId)) {
+                    loops.remove(lastLoopId);
+                    removed.put(lastLoopId, Boolean.TRUE);
+                }
+                // Atualiza o ultimo id
+                lastLoopId = loopId;
+            }
+        }
+    }
+
+    protected void ConstruirGrafoDeDependencia() {
+//        Block loopInstructions;
+        for (Map.Entry<String, Block> entry : loops.entrySet()) {
+            loopId = entry.getKey();
+            loopInstructions = entry.getValue();
+
+            if (!graphs.containsKey(loopId)) {
+                graphs.put(loopId, new ArrayList<>());
+            }
+            ContruirGrafoPara();
+        }
+    }
+
+//    protected void Join() {
+//        No next;
+//        for (Map.Entry<String, ArrayList<No>> entry : graphs.entrySet()) {
+//            for (No no : entry.getValue()) {
+//                if (no.root) {
+//                    MarcarFilhosComoNaoRoot(no);
+//                }
+//            }
+//            // Remove nos não root
+//            for (Iterator<No> iterator = entry.getValue().iterator(); iterator.hasNext();) {
+//                if (!iterator.next().root) {
+//                    iterator.remove();
+//                }
+//            }
+//        }
+//    }
+    protected void MarcarFilhosComoNaoRoot(No n) {
+
+        for (No dep : n.deps) {
+            dep.root = false;
+            MarcarFilhosComoNaoRoot(dep);
+        }
+//        n.deps.stream().map((dep) -> {
+//            dep.root = false;
+//            return dep;
+//        }).forEachOrdered((dep) -> {
+//            MarcarFilhosComoNaoRoot(dep);
+//        });
+    }
+
+    protected void ContruirGrafoPara() {
+        LinkedList<Instruction> instructions = loopInstructions.Instructions();
+        Instruction instruction;
+
+        for (int i = loopInstructions.Instructions().size() - 1; i >= 0; i--) {
+            instruction = instructions.get(i);
+            if (instruction.eq("visited", "true")) {
+                continue;
+            }
+            EncontreDependencias(
+                    instruction,
+                    i - 1,
+                    GetNo(instruction, true)
+            );
+        }
+
+    }
+
+    protected void EncontreDependencias(
+            Instruction instruction,
+            Integer after,
+            No n
+    ) {
+        LinkedList<Instruction> instructions = loopInstructions.Instructions();
+        Instruction tmp;
+        String dst;
+        No no;
+        instruction.eq("visited", "true");
+
+        ArrayList<String> sources = new ArrayList<>();
+
+        switch (instruction.Get("type")) {
+            case "R":
+                dst = instruction.Get("rt");
+                if (!"zerogpfp".contains(dst)) {
+                    sources.add(dst);
+                }
+//                System.out.println("ENCONTRA R:'" + dst + "'" + "zerogpfp".contains(dst));
+            case "I":
+
+                if (instruction.eq("inst", "sw")) {
+                    sources.add(instruction.Get("rt"));
+                }
+
+                dst = instruction.Get("rs");
+                if (!dst.equals("") && !"zerogpfp".contains(dst)) {
+                    sources.add(dst);
+                }
+//                System.out.println("ENCONTRA I:'" + dst + "'" + "zerogpfp".contains(dst));
+                break;
+        }
+
+        if (sources.isEmpty()) {
+            return;
+        }
+//
+//        System.out.println("In("
+//                + instruction.Get("global.position")
+//                + ") bd (" + sources + ") after {" + after
+//        );
+        String next;
+        for (int i = after; i >= 0; i--) {
+            // Se encontrou todas as dependencias, sai do loop
+            if (sources.isEmpty()) {
+
+//                System.out.println("Encontrei todas as dependecias de " + instruction.Get("global.position"));
+                break;
+            }
+
+            tmp = instructions.get(i);
+
+            if (tmp.eq("type", "label")) {
+                continue;
+            }
+
+            dst = tmp.Get(instructionMap.get(tmp.Get("type")));
+
+            for (Iterator<String> iterator = sources.iterator(); iterator.hasNext();) {
+                next = iterator.next();
+
+//                System.out.println(
+//                        "procurando em ( "
+//                        + tmp.Get("global.position")
+//                        + " ) dst( " + dst + " )"
+//                        + next
+//                        + ">" + dst.equals(next)
+//                );
+                if (dst.equals(next)) {
+//                    no =;
+//                    no.index = i;
+                    // Adiciona um no no grafo com a intrucao dependete
+                    n.deps.add(GetNo(tmp, false));
+                    iterator.remove();
+                    break;
+                }
+            }
+        }
+        // Busca recursiva pela dependencia das outras intrucoes
+    }
+    protected HashMap<String, No> instructionNodes = new HashMap<>();
+
+    protected No GetNo(Instruction tmp, boolean root) {
+        String key = tmp.Get("global.position");
+        boolean create = false;
+        if (!instructionNodes.containsKey(key)) {
+            create = true;
+            No n = new No(tmp, root);
+            if (root) {
+                graphs.get(loopId).add(n);
+            }
+            instructionNodes.put(key, n);
+        }
+//        System.out.println("GetNo:" + key + " (" + create + ")" + root);
+        return instructionNodes.get(key);
+    }
+
+}
+// 20:  0666763252	addiu sp,sp,-12		 -- prolog| push stack frame
+// 24:  0001962017	addu fp,zero,sp		 -- prolog|copy fp ← sp
+// 28:  0605028353	addiu s0,zero,1		.0 -- copy _V1 ← 1
+// 32:  2949644288	sw s0,fp,0		.1 -- store content of s0 in _V1
+// 36:  0605093888	addiu s1,zero,0		.2 -- copy _V2 ← 0
+// 40:  2949709828	sw s1,fp,4		.3 -- store content of s1 in _V2
+// 44:  0134217789	j f4 <preenche+0xe0>		.4 -- jump to preenche+_i3
+// 48:  0000000000	sll zero,zero,0		.4 -- Nop
+// 52:  0605159424	addiu s2,zero,0		.5 -- copy _V3 ← 0
+// 56:  2949775368	sw s2,fp,8		.6 -- store content of s2 in _V3
+// 60:  0134217779	j cc <preenche+0xb8>		.7 -- jump to preenche+_i7
+// 64:  0000000000	sll zero,zero,0		.7 -- Nop
+// 68:  2412969988	lw s3,fp,4		.8 -- load content from _V2 in s3
+// 72:  0000000000	sll zero,zero,0		.8 -- Nop
+// 76:  0001267745	addu t3,zero,s3		.9 -- copy _T4 ← _V2
+// 80:  0000745536	sll t4,t3,1		.10 -- _T5 = _T4 << 1
+// 84:  2413035528	lw s4,fp,8		.11 -- load content from _V3 in s4
+// 88:  0000000000	sll zero,zero,0		.11 -- Nop
+// 92:  0001337377	addu t5,zero,s4		.12 -- copy _T7 ← _V3
+// 96:  0026042401	addu t4,t4,t5		.13 -- _T5 = _T5 + _T7
+//100:  0000815232	sll t6,t4,2		.14 -- _T11 = _T5 << 2
+//104:  2413101056	lw s5,fp,0		.15 -- load content from _V1 in s5
+//108:  0000000000	sll zero,zero,0		.15 -- Nop
+//112:  0059666465	addu t6,gp,t6		.16
+//116:  2916417536	sw s5,t6,0		.16 -- store content of t6 in _G13[_T11]
+//120:  2412969988	lw s3,fp,4		.17 -- load content from _V2 in s3
+//124:  0000000000	sll zero,zero,0		.17 -- Nop
+//128:  0001275937	addu t7,zero,s3		.18 -- copy _T14 ← _V2
+//132:  0001032256	sll t8,t7,1		.19 -- _T15 = _T14 << 1
+//136:  2413035528	lw s4,fp,8		.20 -- load content from _V3 in s4
+//140:  0000000000	sll zero,zero,0		.20 -- Nop
+//144:  0001327137	addu t0,zero,s4		.21 -- copy _T17 ← _V3
+//148:  0050905121	addu t8,t8,t0		.22 -- _T15 = _T15 + _T17
+//152:  0001591424	sll t1,t8,2		.23 -- _T21 = _T15 << 2
+//156:  2413101056	lw s5,fp,0		.24 -- load content from _V1 in s5
+//160:  0000000000	sll zero,zero,0		.24 -- Nop
+//164:  0059328545	addu t1,gp,t1		.25
+//168:  2905931792	sw s5,t1,16		.25 -- store content of t1 in _G23[_T21]
+//172:  2413101056	lw s5,fp,0		.26 -- load content from _V1 in s5
+//176:  0000000000	sll zero,zero,0		.26 -- Nop
+//180:  0649396225	addiu s5,s5,1		.27 -- _V1 = _V1 + 1
+//184:  2949971968	sw s5,fp,0		.28 -- store content of s5 in _V1
+//188:  2412773384	lw s0,fp,8		.29 -- load content from _V3 in s0
+//192:  0000000000	sll zero,zero,0		.29 -- Nop
+//196:  0638582785	addiu s0,s0,1		.30 -- _V3 = _V3 + 1
+//200:  2949644296	sw s0,fp,8		.31 -- store content of s0 in _V3
+//204:  2412838920	lw s1,fp,8		.32 -- load content from _V3 in s1
+//208:  0000000000	sll zero,zero,0		.32 -- Nop
+//212:  0604831746	addiu t5,zero,2		.33
+//216:  0036507683	subu v0,s1,t5		.33
+//220:  0071368665	bltz v0,44 <preenche+0x30>		.33 -- branch if register < 0
+//224:  0000000000	sll zero,zero,0		.33 -- Nop
+//228:  2412904452	lw s2,fp,4		.34 -- load content from _V2 in s2
+//232:  0000000000	sll zero,zero,0		.34 -- Nop
+//236:  0642908161	addiu s2,s2,1		.35 -- _V2 = _V2 + 1
+//240:  2949775364	sw s2,fp,4		.36 -- store content of s2 in _V2
+//244:  2413166596	lw s6,fp,4		.37 -- load content from _V2 in s6
+//248:  0000000000	sll zero,zero,0		.37 -- Nop
+//252:  0604897282	addiu t6,zero,2		.38
+//256:  0047058979	subu v0,s6,t6		.38
+//260:  0071368651	bltz v0,34 <preenche+0x20>		.38 -- branch if register < 0
+//264:  0000000000	sll zero,zero,0		.38 -- Nop
+//268:  0666697740	addiu sp,sp,12		 -- epilog| pop stack frame
+//272:  0001962017	addu fp,zero,sp		 -- epilog| pop stack frame
+//276:  0065011720	jr ra		 -- epilog| return
+
+//280:  0666763248	addiu sp,sp,-16		 -- prolog| push stack frame
+//284:  0001962017	addu fp,zero,sp		 -- prolog|copy fp ← sp
+//288:  0605028352	addiu s0,zero,0		.0 -- copy _V24 ← 0
+//292:  2949644288	sw s0,fp,0		.1 -- store content of s0 in _V24
+//296:  0605093888	addiu s1,zero,0		.2 -- copy _V25 ← 0
+//300:  2949709828	sw s1,fp,4		.3 -- store content of s1 in _V25
+//304:  0134217883	j 26c <multiplica+0x154>		.4 -- jump to multiplica+_i11
+//308:  0000000000	sll zero,zero,0		.4 -- Nop
+//312:  0605159424	addiu s2,zero,0		.5 -- copy _V26 ← 0
+//316:  2949775368	sw s2,fp,8		.6 -- store content of s2 in _V26
+//320:  0134217873	j 244 <multiplica+0x12c>		.7 -- jump to multiplica+_i15
+//324:  0000000000	sll zero,zero,0		.7 -- Nop
+//328:  0605224960	addiu s3,zero,0		.8 -- copy _V27 ← 0
+//332:  2949840908	sw s3,fp,12		.9 -- store content of s3 in _V27
+//336:  0134217848	j 1e0 <multiplica+0xc8>		.10 -- jump to multiplica+_i19
+//340:  0000000000	sll zero,zero,0		.10 -- Nop
+//344:  2413035524	lw s4,fp,4		.11 -- load content from _V25 in s4
+//348:  0000000000	sll zero,zero,0		.11 -- Nop
+//352:  0001335329	addu t4,zero,s4		.12 -- copy _T28 ← _V25
+//356:  0000813120	sll t5,t4,1		.13 -- _T29 = _T28 << 1
+//360:  2413101068	lw s5,fp,12		.14 -- load content from _V27 in s5
+//364:  0000000000	sll zero,zero,0		.14 -- Nop
+//368:  0001404961	addu t6,zero,s5		.15 -- copy _T31 ← _V27
+//372:  0028207137	addu t5,t5,t6		.16 -- _T29 = _T29 + _T31
+//376:  0000882816	sll t7,t5,2		.17 -- _T35 = _T29 << 2
+//380:  0059734049	addu t7,gp,t7		.18
+//384:  2381840384	lw t8,t7,0		.18
+//388:  2413101068	lw s5,fp,12		.19 -- load content from _V27 in s5
+//392:  0000000000	sll zero,zero,0		.19 -- Nop
+//396:  0001392673	addu t0,zero,s5		.20 -- copy _T38 ← _V27
+//400:  0000542784	sll t1,t0,1		.21 -- _T39 = _T38 << 1
+//404:  2413232136	lw s7,fp,8		.22 -- load content from _V26 in s7
+//408:  0000000000	sll zero,zero,0		.22 -- Nop
+//412:  0001527841	addu t2,zero,s7		.23 -- copy _T41 ← _V26
+//416:  0019548193	addu t1,t1,t2		.24 -- _T39 = _T39 + _T41
+//420:  0000612480	sll t3,t1,2		.25 -- _T45 = _T39 << 2
+//424:  0059463713	addu t3,gp,t3		.26
+//428:  2372927504	lw s0,t3,16		.26
+//432:  0000000000	sll zero,zero,0		.26 -- Nop
+//436:  0001073185	addu t4,zero,s0		.26 -- copy t4 ← s0
+//440:  0051146776	mult t8,t4		.27 -- _T48 = _T37 * _T47
+//444:  0000028690	mflo t6		.27
+//448:  2412838912	lw s1,fp,0		.28 -- load content from _V24 in s1
+//452:  0000000000	sll zero,zero,0		.28 -- Nop
+//456:  0036603937	addu s1,s1,t6		.29 -- _V24 = _V24 + _T48
+//460:  2949709824	sw s1,fp,0		.30 -- store content of s1 in _V24
+//464:  2412904460	lw s2,fp,12		.31 -- load content from _V27 in s2
+//468:  0000000000	sll zero,zero,0		.31 -- Nop
+//472:  0642908161	addiu s2,s2,1		.32 -- _V27 = _V27 + 1
+//476:  2949775372	sw s2,fp,12		.33 -- store content of s2 in _V27
+//480:  2412969996	lw s3,fp,12		.34 -- load content from _V27 in s3
+//484:  0000000000	sll zero,zero,0		.34 -- Nop
+//488:  0604962818	addiu t7,zero,2		.35
+//492:  0040833059	subu v0,s3,t7		.35
+//496:  0071368665	bltz v0,158 <multiplica+0x40>		.35 -- branch if register < 0
+//500:  0000000000	sll zero,zero,0		.35 -- Nop
+//504:  2413035524	lw s4,fp,4		.36 -- load content from _V25 in s4
+//508:  0000000000	sll zero,zero,0		.36 -- Nop
+//512:  0001327137	addu t0,zero,s4		.37 -- copy _T50 ← _V25
+//516:  0000544832	sll t2,t0,1		.38 -- _T51 = _T50 << 1
+//520:  2413166600	lw s6,fp,8		.39 -- load content from _V26 in s6
+//524:  0000000000	sll zero,zero,0		.39 -- Nop
+//528:  0001460257	addu t1,zero,s6		.40 -- copy _T53 ← _V26
+//532:  0021581857	addu t2,t2,t1		.41 -- _T51 = _T51 + _T53
+//536:  0000678016	sll t3,t2,2		.42 -- _T57 = _T51 << 2
+//540:  2413101056	lw s5,fp,0		.43 -- load content from _V24 in s5
+//544:  0000000000	sll zero,zero,0		.43 -- Nop
+//548:  0059463713	addu t3,gp,t3		.44
+//552:  2910126112	sw s5,t3,32		.44 -- store content of t3 in _G59[_T57]
+//556:  0605356032	addiu s5,zero,0		.45 -- copy _V24 ← 0
+//560:  2949971968	sw s5,fp,0		.46 -- store content of s5 in _V24
+//564:  2412773384	lw s0,fp,8		.47 -- load content from _V26 in s0
+//568:  0000000000	sll zero,zero,0		.47 -- Nop
+//572:  0638582785	addiu s0,s0,1		.48 -- _V26 = _V26 + 1
+//576:  2949644296	sw s0,fp,8		.49 -- store content of s0 in _V26
+//580:  2412838920	lw s1,fp,8		.50 -- load content from _V26 in s1
+//584:  0000000000	sll zero,zero,0		.50 -- Nop
+//588:  0604897282	addiu t6,zero,2		.51
+//592:  0036573219	subu v0,s1,t6		.51
+//596:  0071368636	bltz v0,148 <multiplica+0x30>		.51 -- branch if register < 0
+//600:  0000000000	sll zero,zero,0		.51 -- Nop
+//604:  2412904452	lw s2,fp,4		.52 -- load content from _V25 in s2
+//608:  0000000000	sll zero,zero,0		.52 -- Nop
+//612:  0642908161	addiu s2,s2,1		.53 -- _V25 = _V25 + 1
+//616:  2949775364	sw s2,fp,4		.54 -- store content of s2 in _V25
+//620:  2412969988	lw s3,fp,4		.55 -- load content from _V25 in s3
+//624:  0000000000	sll zero,zero,0		.55 -- Nop
+//628:  0604962818	addiu t7,zero,2		.56
+//632:  0040833059	subu v0,s3,t7		.56
+//636:  0071368622	bltz v0,138 <multiplica+0x20>		.56 -- branch if register < 0
+//640:  0000000000	sll zero,zero,0		.56 -- Nop
+//644:  0666697744	addiu sp,sp,16		 -- epilog| pop stack frame
+//648:  0001962017	addu fp,zero,sp		 -- epilog| pop stack frame
+//652:  0065011720	jr ra	

+ 55 - 0
src/analise/No.java

@@ -0,0 +1,55 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package analise;
+
+import common.Instruction;
+import java.util.ArrayList;
+
+/**
+ *
+ * @author lucas
+ */
+public class No {
+
+    public Instruction instruction;
+    public ArrayList<No> deps = new ArrayList<>();
+    public boolean root;
+    public Integer index = 0;
+
+    No(Instruction instruction, boolean root) {
+        this.instruction = instruction;
+        this.root = root;
+    }
+
+    @Override
+    public String toString() {
+        return Dump("");
+    }
+
+    protected String Dump(String space) {
+        StringBuilder sb = new StringBuilder();
+        sb.append("(")
+                .append(instruction.Get("global.position"))
+                .append(")[")
+                .append(deps.size())
+                .append("| ")
+                .append(root)
+                .append("]");
+
+        if (instruction.eq("global.position", "168")) {
+//           System.out.println("DUMP: " + instruction);
+//            System.out.println("DUMP: " + deps.size());
+        }
+
+        deps.forEach((dep) -> {
+
+            sb.append("\n")
+                    .append(space)
+                    .append(dep.Dump(space + "   "));
+        });
+        return sb.toString(); //To change body of generated methods, choose Tools | Templates.
+    }
+}

+ 7 - 1
src/common/Block.java

@@ -36,7 +36,7 @@ public class Block {
     public static int TYPE_INSTRUCTIONS = 0;
     public static int TYPE_CTRL = 1;
 
-    Block(String name, Code c) {
+    public Block(String name, Code c) {
         code = c;
         BaseAddress = c.Position();
         AddressIncrement = c.AddressIncrement;
@@ -45,6 +45,12 @@ public class Block {
         Context = new DataLayout(name);
     }
 
+    public Block(String name) {
+        this.name = name;
+        type = TYPE_INSTRUCTIONS;
+        Context = new DataLayout(name);
+    }
+
     public int Type() {
         return type;
     }

+ 0 - 1
src/common/Code.java

@@ -267,7 +267,6 @@ public class Code {
                     current.HasCall = true;
                     break;
                 case "label":
-//                    nr.Set("label.address", RegisterLabelAddress(nr.Get("label")));
                     break;
             }
             current.Add(nr);

+ 2 - 0
src/common/Instruction.java

@@ -5,6 +5,7 @@
  */
 package common;
 
+import java.util.ArrayList;
 import java.util.Map;
 
 /**
@@ -126,4 +127,5 @@ public class Instruction extends RegistroBase {
         return rb;
     }
 
+
 }

+ 8 - 2
src/common/RegistroBase.java

@@ -6,6 +6,7 @@
 package common;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -202,14 +203,14 @@ public class RegistroBase {
         return attr.get(attrib).equals(value);
     }
 
-    public boolean in(String atributo, String[] valores) {
+    public boolean in(String atributo, ArrayList<String> sources) {
         if (!attr.containsKey(atributo)) {
             return false;
         }
 
         boolean in = false;
 
-        for (String valor : valores) {
+        for (String valor : sources) {
             if (attr.get(atributo).equals(valor)) {
                 in = true;
                 break;
@@ -217,6 +218,11 @@ public class RegistroBase {
         }
 
         return in;
+
+    }
+
+    public boolean in(String atributo, String[] valores) {
+        return in(atributo, new ArrayList<>(Arrays.asList(valores)));
     }
 
     public boolean diferente(String atributo, String valor) {

+ 8 - 6
src/compiler/IVANNOSYS.java

@@ -41,6 +41,8 @@ public class IVANNOSYS {
                 case "create":
                     break;
                 default:
+                    Middleware.Add("mips.analise", new analise.AnaliseDependenciaMiddleware());
+                    Middleware.Add("mips.module.scheduling", new analise.ModuleSchedulingMiddleware());
 
                     COM = new IvannosysCompiler(
                             "UTF-8",
@@ -68,13 +70,13 @@ public class IVANNOSYS {
                     Mips.AddExportOption("simulation", new Simulation(new tools.mips.MipsSettings() {
                         {
                             // Não executar passo a passo
-                            Set("step.by.step", "false");
+                            Set("step.by.step", "true");
                             // Necessario para poder usar os breakpoints
                             Set("mode", "debug");
                             // Determina os pontos de para no codigo alvo
 //                            Set("breakpoints", "94-9c");
 //                            Set("breakpoints", "1d8,214,2e0,28c,2f0,250,330");
-                            Set("breakpoints", "1d8,214,250,2e0,28c,2dc,2d8,2f0,330");
+//                            Set("breakpoints", "1d8,214,250,2e0,28c,2dc,2d8,2f0,330");
                             // Caminho do arquivo de memoria de instrucoes
                             Set("memory.instruction", "\\src\\tools\\mips\\memory\\mi.memory");
                             // Tamanho da memorua de instrucoes 16 kb
@@ -83,7 +85,6 @@ public class IVANNOSYS {
                             Set("memory.data", "\\src\\tools\\mips\\memory\\md.memory");
                             // Tamanho da memorua de dados 16 kb
                             Set("memory.data.size", 16 * 1024);
-
                         }
                     }));
 
@@ -97,14 +98,15 @@ public class IVANNOSYS {
                     Middleware.On("mips", "before.translate.block", "mips.register.alloc");
                     Middleware.On("mips", "after.translate.block", "mips.o.L1,mips.copy.dep");
                     // Atualiza os enderecos de saltos e set no campo offset
-                    Middleware.On("mips", "after.translate", "mips.update.address");
+//                    Middleware.On("mips", "after.translate", "mips.update.address,mips.analise,mips.module.scheduling");
+                    Middleware.On("mips", "after.translate", "mips.update.address,mips.module.scheduling");
 
                     // file = "src\\samples\\program.go";
                     // file = "src\\samples\\program.go";
                     // file = "src\\samples\\program_mult_jon.go";
-//                    file = "src\\samples\\program_mult.go";
+                    file = "src\\samples\\program_mult.go";
 //                    file = "src\\samples\\program_jun_bit_count.go";
-                    file = "src\\samples\\program_jun_laplaciano.go";
+//                    file = "src\\samples\\program_jun_laplaciano.go";
 //                    file = "src\\samples\\program_jun_mult_manycore.go";
 
                     // Compila o arquivo de entrada

+ 1 - 1
src/targets/mips/MipsTemplateDescription.java

@@ -20,7 +20,7 @@ import templates.Functions;
 public class MipsTemplateDescription implements templates.TemplateDescription {
 
     public HashMap<String, String> Formats() throws Exception {
-        String base = "{[DEC(global.position,G.addressLen,' ')]':  '}{[INSTDEC()]}{[T(1)]}{[inst]' '}",
+        String base = "{[HEX(global.position,G.addressLen,' ')]':  '}{[INSTDEC()]}{[T(1)]}{[inst]' '}",
                 end = "{[T(2)]}{'.'[tac.position]}{' -- '[comment]}";
 
         return new HashMap<String, String>() {

+ 3 - 0
src/targets/mips/Translate.java

@@ -874,6 +874,9 @@ public class Translate extends API.TargetGen {
             Logger.getLogger(Translate.class
                     .getName()).log(Level.SEVERE, null, ex);
         }
+        if (currentIrInstruction != null) {
+            inst.Set("inloop", currentIrInstruction.Get("inloop"));
+        }
 
 //        System.out.println("Add:" + inst);
         return super.Add(inst); //To change body of generated methods, choose Tools | Templates.

+ 16 - 16
src/tools/mips/memory/md.memory

@@ -23,18 +23,18 @@ DATA_RADIX = BIN;
 
 CONTENT
 BEGIN
-00000:	00000000000000000000000000000000;	% dec 0 %
-00004:	00000000000000000000000000000000;	% dec 0 %
-00008:	00000000000000000000000000000000;	% dec 0 %
-00012:	00000000000000000000000000000000;	% dec 0 %
-00016:	00000000000000000000000000000000;	% dec 0 %
-00020:	00000000000000000000000000000001;	% dec 1 %
-00024:	00000000000000000000000000000010;	% dec 2 %
-00028:	00000000000000000000000000000000;	% dec 0 %
-00032:	00000000000000000000000000000000;	% dec 0 %
-00036:	00000000000000000000000000000011;	% dec 3 %
-00040:	00000000000000000000000000000100;	% dec 4 %
-00044:	00000000000000000000000000000000;	% dec 0 %
+00000:	00000000000000000000000000000001;	% dec 1 %
+00004:	00000000000000000000000000000010;	% dec 2 %
+00008:	00000000000000000000000000000011;	% dec 3 %
+00012:	00000000000000000000000000000100;	% dec 4 %
+00016:	00000000000000000000000000000001;	% dec 1 %
+00020:	00000000000000000000000000000010;	% dec 2 %
+00024:	00000000000000000000000000000011;	% dec 3 %
+00028:	00000000000000000000000000000100;	% dec 4 %
+00032:	00000000000000000000000000000111;	% dec 7 %
+00036:	00000000000000000000000000001010;	% dec 10 %
+00040:	00000000000000000000000000001111;	% dec 15 %
+00044:	00000000000000000000000000010110;	% dec 22 %
 00048:	00000000000000000000000000000000;	% dec 0 %
 00052:	00000000000000000000000000000000;	% dec 0 %
 00056:	00000000000000000000000000000000;	% dec 0 %
@@ -48,8 +48,8 @@ BEGIN
 [108..16356]:	00000000000000000000000000000000;
 16360:	00000000000000000000000000000101;	% dec 5 %
 16364:	00000000000000000000000000000011;	% dec 3 %
-16368:	00000000000000000000000000000011;	% dec 3 %
-16372:	00000000000000000000000000000011;	% dec 3 %
-16376:	00000000000000000000000000000011;	% dec 3 %
-16380:	11111111111111111111111111111111;	% dec 4294967295 %
+16368:	00000000000000000000000000000000;	% dec 0 %
+16372:	00000000000000000000000000000010;	% dec 2 %
+16376:	00000000000000000000000000000010;	% dec 2 %
+16380:	00000000000000000000000000000010;	% dec 2 %
 END;

+ 143 - 207
src/tools/mips/memory/mi.memory

@@ -25,230 +25,166 @@ CONTENT
 BEGIN
 000:	00001100000000000000000000000101;	% dec 201326597 %
 004:	00000000000000000000000000000000;	% dec 0 %
-008:	00001100000000000000000001011011;	% dec 201326683 %
+008:	00001100000000000000000001000110;	% dec 201326662 %
 012:	00000000000000000000000000000000;	% dec 0 %
 016:	11111111111111111111111111111111;	% dec 4294967295 %
-020:	00100111101111011111111111101000;	% dec 666763240 %
+020:	00100111101111011111111111110100;	% dec 666763252 %
 024:	00000000000111011111000000100001;	% dec 1962017 %
 028:	00100100000100000000000000000001;	% dec 605028353 %
 032:	10101111110100000000000000000000;	% dec 2949644288 %
-036:	00100100000100010000000000000011;	% dec 605093891 %
+036:	00100100000100010000000000000000;	% dec 605093888 %
 040:	10101111110100010000000000000100;	% dec 2949709828 %
-044:	00100100000100100000000000000011;	% dec 605159427 %
-048:	10101111110100100000000000001000;	% dec 2949775368 %
-052:	00100100000100110000000000000000;	% dec 605224960 %
-056:	10101111110100110000000000001100;	% dec 2949840908 %
-060:	00001000000000000000000001010010;	% dec 134217810 %
+044:	00001000000000000000000000111101;	% dec 134217789 %
+048:	00000000000000000000000000000000;	% dec 0 %
+052:	00100100000100100000000000000000;	% dec 605159424 %
+056:	10101111110100100000000000001000;	% dec 2949775368 %
+060:	00001000000000000000000000110011;	% dec 134217779 %
 064:	00000000000000000000000000000000;	% dec 0 %
-068:	00100100000101000000000000000000;	% dec 605290496 %
-072:	10101111110101000000000000010000;	% dec 2949906448 %
-076:	00001000000000000000000001001000;	% dec 134217800 %
-080:	00000000000000000000000000000000;	% dec 0 %
-084:	10001111110101010000000000001100;	% dec 2413101068 %
+068:	10001111110100110000000000000100;	% dec 2412969988 %
+072:	00000000000000000000000000000000;	% dec 0 %
+076:	00000000000100110101100000100001;	% dec 1267745 %
+080:	00000000000010110110000001000000;	% dec 745536 %
+084:	10001111110101000000000000001000;	% dec 2413035528 %
 088:	00000000000000000000000000000000;	% dec 0 %
-092:	00010010101000000000000000000110;	% dec 312475654 %
-096:	00000000000000000000000000000000;	% dec 0 %
-100:	10001111110101100000000000001100;	% dec 2413166604 %
-104:	10001111110101110000000000000100;	% dec 2413232132 %
+092:	00000000000101000110100000100001;	% dec 1337377 %
+096:	00000001100011010110000000100001;	% dec 26042401 %
+100:	00000000000011000111000010000000;	% dec 815232 %
+104:	10001111110101010000000000000000;	% dec 2413101056 %
 108:	00000000000000000000000000000000;	% dec 0 %
-112:	00010110110101110000000000000101;	% dec 383188997 %
-116:	00000000000000000000000000000000;	% dec 0 %
-120:	00100100000100000000000000000000;	% dec 605028352 %
-124:	10101111110100000000000000010100;	% dec 2949644308 %
-128:	00001000000000000000000000110111;	% dec 134217783 %
-132:	00000000000000000000000000000000;	% dec 0 %
-136:	10001111110100010000000000010000;	% dec 2412838928 %
+112:	00000011100011100111000000100001;	% dec 59666465 %
+116:	10101101110101010000000000000000;	% dec 2916417536 %
+120:	10001111110100110000000000000100;	% dec 2412969988 %
+124:	00000000000000000000000000000000;	% dec 0 %
+128:	00000000000100110111100000100001;	% dec 1275937 %
+132:	00000000000011111100000001000000;	% dec 1032256 %
+136:	10001111110101000000000000001000;	% dec 2413035528 %
 140:	00000000000000000000000000000000;	% dec 0 %
-144:	00010010001000000000000000000110;	% dec 304087046 %
-148:	00000000000000000000000000000000;	% dec 0 %
-152:	10001111110100100000000000010000;	% dec 2412904464 %
-156:	10001111110100110000000000001000;	% dec 2412969992 %
+144:	00000000000101000100000000100001;	% dec 1327137 %
+148:	00000011000010001100000000100001;	% dec 50905121 %
+152:	00000000000110000100100010000000;	% dec 1591424 %
+156:	10001111110101010000000000000000;	% dec 2413101056 %
 160:	00000000000000000000000000000000;	% dec 0 %
-164:	00010110010100110000000000000101;	% dec 374538245 %
-168:	00000000000000000000000000000000;	% dec 0 %
-172:	00100100000101000000000000000000;	% dec 605290496 %
-176:	10101111110101000000000000010100;	% dec 2949906452 %
-180:	00001000000000000000000000110111;	% dec 134217783 %
-184:	00000000000000000000000000000000;	% dec 0 %
-188:	10001111110101010000000000000000;	% dec 2413101056 %
+164:	00000011100010010100100000100001;	% dec 59328545 %
+168:	10101101001101010000000000010000;	% dec 2905931792 %
+172:	10001111110101010000000000000000;	% dec 2413101056 %
+176:	00000000000000000000000000000000;	% dec 0 %
+180:	00100110101101010000000000000001;	% dec 649396225 %
+184:	10101111110101010000000000000000;	% dec 2949971968 %
+188:	10001111110100000000000000001000;	% dec 2412773384 %
 192:	00000000000000000000000000000000;	% dec 0 %
-196:	00000000000101011011000000100001;	% dec 1421345 %
-200:	10101111110101100000000000010100;	% dec 2950037524 %
-204:	10001111110101010000000000000000;	% dec 2413101056 %
+196:	00100110000100000000000000000001;	% dec 638582785 %
+200:	10101111110100000000000000001000;	% dec 2949644296 %
+204:	10001111110100010000000000001000;	% dec 2412838920 %
 208:	00000000000000000000000000000000;	% dec 0 %
-212:	00100110101101010000000000000001;	% dec 649396225 %
-216:	10101111110101010000000000000000;	% dec 2949971968 %
-220:	10001111110101110000000000001100;	% dec 2413232140 %
+212:	00100100000011010000000000000010;	% dec 604831746 %
+216:	00000010001011010001000000100011;	% dec 36507683 %
+220:	00000100010000001111111111011001;	% dec 71368665 %
 224:	00000000000000000000000000000000;	% dec 0 %
-228:	00000000000101110100100000100001;	% dec 1525793 %
-232:	00000000000010010101000010000000;	% dec 610432 %
-236:	10001111110100000000000000010000;	% dec 2412773392 %
-240:	00000000000000000000000000000000;	% dec 0 %
-244:	00000000000100000101100000100001;	% dec 1071137 %
-248:	00000001010010110101000000100001;	% dec 21712929 %
-252:	00000000000010100110000010000000;	% dec 680064 %
-256:	10001111110100010000000000010100;	% dec 2412838932 %
-260:	00000000000000000000000000000000;	% dec 0 %
-264:	00000011100011000110000000100001;	% dec 59531297 %
-268:	10101101100100010000000000000000;	% dec 2911961088 %
-272:	10001111110100110000000000010000;	% dec 2412970000 %
-276:	00000000000000000000000000000000;	% dec 0 %
-280:	00100110011100110000000000000001;	% dec 645070849 %
-284:	10101111110100110000000000010000;	% dec 2949840912 %
-288:	10001111110101000000000000010000;	% dec 2413035536 %
-292:	00000000000000000000000000000000;	% dec 0 %
-296:	00100100000011100000000000000100;	% dec 604897284 %
-300:	00000010100011100001000000100011;	% dec 42864675 %
-304:	00000100010000001111111111001000;	% dec 71368648 %
+228:	10001111110100100000000000000100;	% dec 2412904452 %
+232:	00000000000000000000000000000000;	% dec 0 %
+236:	00100110010100100000000000000001;	% dec 642908161 %
+240:	10101111110100100000000000000100;	% dec 2949775364 %
+244:	10001111110101100000000000000100;	% dec 2413166596 %
+248:	00000000000000000000000000000000;	% dec 0 %
+252:	00100100000011100000000000000010;	% dec 604897282 %
+256:	00000010110011100001000000100011;	% dec 47058979 %
+260:	00000100010000001111111111001011;	% dec 71368651 %
+264:	00000000000000000000000000000000;	% dec 0 %
+268:	00100111101111010000000000001100;	% dec 666697740 %
+272:	00000000000111011111000000100001;	% dec 1962017 %
+276:	00000011111000000000000000001000;	% dec 65011720 %
+280:	00100111101111011111111111110000;	% dec 666763248 %
+284:	00000000000111011111000000100001;	% dec 1962017 %
+288:	00100100000100000000000000000000;	% dec 605028352 %
+292:	10101111110100000000000000000000;	% dec 2949644288 %
+296:	00100100000100010000000000000000;	% dec 605093888 %
+300:	10101111110100010000000000000100;	% dec 2949709828 %
+304:	00001000000000000000000010011011;	% dec 134217883 %
 308:	00000000000000000000000000000000;	% dec 0 %
-312:	10001111110101100000000000001100;	% dec 2413166604 %
-316:	00000000000000000000000000000000;	% dec 0 %
-320:	00100110110101100000000000000001;	% dec 651558913 %
-324:	10101111110101100000000000001100;	% dec 2950037516 %
-328:	10001111110101010000000000001100;	% dec 2413101068 %
-332:	00000000000000000000000000000000;	% dec 0 %
-336:	00100100000110000000000000000100;	% dec 605552644 %
-340:	00000010101110000001000000100011;	% dec 45617187 %
-344:	00000100010000001111111110111010;	% dec 71368634 %
+312:	00100100000100100000000000000000;	% dec 605159424 %
+316:	10101111110100100000000000001000;	% dec 2949775368 %
+320:	00001000000000000000000010010001;	% dec 134217873 %
+324:	00000000000000000000000000000000;	% dec 0 %
+328:	00100100000100110000000000000000;	% dec 605224960 %
+332:	10101111110100110000000000001100;	% dec 2949840908 %
+336:	00001000000000000000000001111000;	% dec 134217848 %
+340:	00000000000000000000000000000000;	% dec 0 %
+344:	10001111110101000000000000000100;	% dec 2413035524 %
 348:	00000000000000000000000000000000;	% dec 0 %
-352:	00100111101111010000000000011000;	% dec 666697752 %
-356:	00000000000111011111000000100001;	% dec 1962017 %
-360:	00000011111000000000000000001000;	% dec 65011720 %
-364:	00100111101111011111111111101100;	% dec 666763244 %
-368:	00000000000111011111000000100001;	% dec 1962017 %
-372:	00100100000100000000000000000011;	% dec 605028355 %
-376:	10101111110100000000000000000000;	% dec 2949644288 %
-380:	00100100000100010000000000000011;	% dec 605093891 %
-384:	10101111110100010000000000000100;	% dec 2949709828 %
-388:	00100100000100100000000000000001;	% dec 605159425 %
-392:	10101111110100100000000000001000;	% dec 2949775368 %
-396:	00001000000000000000000011011011;	% dec 134217947 %
-400:	00000000000000000000000000000000;	% dec 0 %
-404:	00100100000100110000000000000001;	% dec 605224961 %
-408:	10101111110100110000000000001100;	% dec 2949840908 %
-412:	00001000000000000000000011010001;	% dec 134217937 %
-416:	00000000000000000000000000000000;	% dec 0 %
-420:	10001111110101000000000000001000;	% dec 2413035528 %
-424:	00000000000000000000000000000000;	% dec 0 %
-428:	00100110100011011111111111111111;	% dec 646840319 %
-432:	00000000000011010111000010000000;	% dec 880768 %
-436:	10001111110101010000000000001100;	% dec 2413101068 %
-440:	00000000000000000000000000000000;	% dec 0 %
-444:	00000000000101010111100000100001;	% dec 1407009 %
-448:	00000001110011110111000000100001;	% dec 30371873 %
-452:	00000000000011101100000010000000;	% dec 966784 %
-456:	00000011100110001100000000100001;	% dec 60342305 %
-460:	10001111000101100000000000000000;	% dec 2400583680 %
-464:	00000000000000000000000000000000;	% dec 0 %
-468:	00000000000101101011100000100001;	% dec 1488929 %
-472:	10101111110101110000000000010000;	% dec 2950103056 %
-476:	10001111110101000000000000001000;	% dec 2413035528 %
-480:	00000000000000000000000000000000;	% dec 0 %
-484:	00000000000101000100000000100001;	% dec 1327137 %
-488:	00000000000010000100100010000000;	% dec 542848 %
-492:	10001111110101010000000000001100;	% dec 2413101068 %
-496:	00000000000000000000000000000000;	% dec 0 %
-500:	00100110101010111111111111111111;	% dec 648806399 %
-504:	00000001001010110100100000100001;	% dec 19613729 %
-508:	00000000000010010110000010000000;	% dec 614528 %
-512:	00000011100011000110000000100001;	% dec 59531297 %
-516:	10001101100011010000000000000000;	% dec 2374828032 %
-520:	10001111110101110000000000010000;	% dec 2413232144 %
+352:	00000000000101000110000000100001;	% dec 1335329 %
+356:	00000000000011000110100001000000;	% dec 813120 %
+360:	10001111110101010000000000001100;	% dec 2413101068 %
+364:	00000000000000000000000000000000;	% dec 0 %
+368:	00000000000101010111000000100001;	% dec 1404961 %
+372:	00000001101011100110100000100001;	% dec 28207137 %
+376:	00000000000011010111100010000000;	% dec 882816 %
+380:	00000011100011110111100000100001;	% dec 59734049 %
+384:	10001101111110000000000000000000;	% dec 2381840384 %
+388:	10001111110101010000000000001100;	% dec 2413101068 %
+392:	00000000000000000000000000000000;	% dec 0 %
+396:	00000000000101010100000000100001;	% dec 1392673 %
+400:	00000000000010000100100001000000;	% dec 542784 %
+404:	10001111110101110000000000001000;	% dec 2413232136 %
+408:	00000000000000000000000000000000;	% dec 0 %
+412:	00000000000101110101000000100001;	% dec 1527841 %
+416:	00000001001010100100100000100001;	% dec 19548193 %
+420:	00000000000010010101100010000000;	% dec 612480 %
+424:	00000011100010110101100000100001;	% dec 59463713 %
+428:	10001101011100000000000000010000;	% dec 2372927504 %
+432:	00000000000000000000000000000000;	% dec 0 %
+436:	00000000000100000110000000100001;	% dec 1073185 %
+440:	00000011000011000111000000011000;	% dec 51146776 %
+444:	00000000000000000111000000010010;	% dec 28690 %
+448:	10001111110100010000000000000000;	% dec 2412838912 %
+452:	00000000000000000000000000000000;	% dec 0 %
+456:	00000010001011101000100000100001;	% dec 36603937 %
+460:	10101111110100010000000000000000;	% dec 2949709824 %
+464:	10001111110100100000000000001100;	% dec 2412904460 %
+468:	00000000000000000000000000000000;	% dec 0 %
+472:	00100110010100100000000000000001;	% dec 642908161 %
+476:	10101111110100100000000000001100;	% dec 2949775372 %
+480:	10001111110100110000000000001100;	% dec 2412969996 %
+484:	00000000000000000000000000000000;	% dec 0 %
+488:	00100100000011110000000000000010;	% dec 604962818 %
+492:	00000010011011110001000000100011;	% dec 40833059 %
+496:	00000100010000001111111111011001;	% dec 71368665 %
+500:	00000000000000000000000000000000;	% dec 0 %
+504:	10001111110101000000000000000100;	% dec 2413035524 %
+508:	00000000000000000000000000000000;	% dec 0 %
+512:	00000000000101000100000000100001;	% dec 1327137 %
+516:	00000000000010000101000001000000;	% dec 544832 %
+520:	10001111110101100000000000001000;	% dec 2413166600 %
 524:	00000000000000000000000000000000;	% dec 0 %
-528:	00000010111011011011100000100001;	% dec 49133601 %
-532:	10101111110101110000000000010000;	% dec 2950103056 %
-536:	10001111110101000000000000001000;	% dec 2413035528 %
-540:	00000000000000000000000000000000;	% dec 0 %
-544:	00000000000101000111100000100001;	% dec 1341473 %
-548:	00000000000011110111000010000000;	% dec 1011840 %
-552:	10001111110101010000000000001100;	% dec 2413101068 %
-556:	00000000000000000000000000000000;	% dec 0 %
-560:	00100110101010000000000000000001;	% dec 648544257 %
-564:	00000001110010000111000000100001;	% dec 29913121 %
-568:	00000000000011100101000010000000;	% dec 938112 %
-572:	00000011100010100101000000100001;	% dec 59396129 %
-576:	10001101010010110000000000000000;	% dec 2370502656 %
-580:	10001111110101110000000000010000;	% dec 2413232144 %
+528:	00000000000101100100100000100001;	% dec 1460257 %
+532:	00000001010010010101000000100001;	% dec 21581857 %
+536:	00000000000010100101100010000000;	% dec 678016 %
+540:	10001111110101010000000000000000;	% dec 2413101056 %
+544:	00000000000000000000000000000000;	% dec 0 %
+548:	00000011100010110101100000100001;	% dec 59463713 %
+552:	10101101011101010000000000100000;	% dec 2910126112 %
+556:	00100100000101010000000000000000;	% dec 605356032 %
+560:	10101111110101010000000000000000;	% dec 2949971968 %
+564:	10001111110100000000000000001000;	% dec 2412773384 %
+568:	00000000000000000000000000000000;	% dec 0 %
+572:	00100110000100000000000000000001;	% dec 638582785 %
+576:	10101111110100000000000000001000;	% dec 2949644296 %
+580:	10001111110100010000000000001000;	% dec 2412838920 %
 584:	00000000000000000000000000000000;	% dec 0 %
-588:	00000010111010111011100000100001;	% dec 49002529 %
-592:	10101111110101110000000000010000;	% dec 2950103056 %
-596:	10001111110101000000000000001000;	% dec 2413035528 %
+588:	00100100000011100000000000000010;	% dec 604897282 %
+592:	00000010001011100001000000100011;	% dec 36573219 %
+596:	00000100010000001111111110111100;	% dec 71368636 %
 600:	00000000000000000000000000000000;	% dec 0 %
-604:	00100110100011000000000000000001;	% dec 646709249 %
-608:	00000000000011000110100010000000;	% dec 813184 %
-612:	10001111110101010000000000001100;	% dec 2413101068 %
-616:	00000000000000000000000000000000;	% dec 0 %
-620:	00000000000101010111100000100001;	% dec 1407009 %
-624:	00000001101011110110100000100001;	% dec 28272673 %
-628:	00000000000011011100000010000000;	% dec 901248 %
-632:	00000011100110001100000000100001;	% dec 60342305 %
-636:	10001111000010000000000000000000;	% dec 2399666176 %
-640:	10001111110101110000000000010000;	% dec 2413232144 %
-644:	00000000000000000000000000000000;	% dec 0 %
-648:	00000010111010001011100000100001;	% dec 48805921 %
-652:	10101111110101110000000000010000;	% dec 2950103056 %
-656:	10001111110101000000000000001000;	% dec 2413035528 %
-660:	00000000000000000000000000000000;	% dec 0 %
-664:	00000000000101000111000000100001;	% dec 1339425 %
-668:	00000000000011100101000010000000;	% dec 938112 %
-672:	10001111110101010000000000001100;	% dec 2413101068 %
-676:	00000000000000000000000000000000;	% dec 0 %
-680:	00000000000101010101100000100001;	% dec 1398817 %
-684:	00000001010010110101000000100001;	% dec 21712929 %
-688:	00000000000010100100100010000000;	% dec 673920 %
-692:	00000011100010010100100000100001;	% dec 59328545 %
-696:	10001101001100110000000000000000;	% dec 2368929792 %
-700:	00000000000000000000000000000000;	% dec 0 %
-704:	00000000000100110110000000100001;	% dec 1269793 %
-708:	00100100000011110000000000000100;	% dec 604962820 %
-712:	00000001100011110110100000011000;	% dec 26175512 %
-716:	00000000000000000110100000010010;	% dec 26642 %
-720:	10001111110101110000000000010000;	% dec 2413232144 %
-724:	00000000000000000000000000000000;	% dec 0 %
-728:	00000010111011011011100000100011;	% dec 49133603 %
-732:	10101111110101110000000000010000;	% dec 2950103056 %
-736:	10001111110101110000000000010000;	% dec 2413232144 %
-740:	00000000000000000000000000000000;	% dec 0 %
-744:	00100100000110000000000011111111;	% dec 605552895 %
-748:	00000010111110000001000000100011;	% dec 49811491 %
-752:	00011000010000000000000000000011;	% dec 406847491 %
-756:	00000000000000000000000000000000;	% dec 0 %
-760:	00100100000101100000000011111111;	% dec 605421823 %
-764:	10101111110101100000000000010000;	% dec 2950037520 %
-768:	10001111110100000000000000001000;	% dec 2412773384 %
-772:	00000000000000000000000000000000;	% dec 0 %
-776:	00000000000100000111000000100001;	% dec 1077281 %
-780:	00000000000011100101100010000000;	% dec 940160 %
-784:	10001111110100010000000000001100;	% dec 2412838924 %
-788:	00000000000000000000000000000000;	% dec 0 %
-792:	00000000000100010101000000100001;	% dec 1134625 %
-796:	00000001011010100101100000100001;	% dec 23746593 %
-800:	00000000000010110100100010000000;	% dec 739456 %
-804:	10001111110100100000000000010000;	% dec 2412904464 %
-808:	00000000000000000000000000000000;	% dec 0 %
-812:	00000011100010010100100000100001;	% dec 59328545 %
-816:	10101101001100100000000001000000;	% dec 2905735232 %
-820:	10001111110101010000000000001100;	% dec 2413101068 %
-824:	00000000000000000000000000000000;	% dec 0 %
-828:	00100110101101010000000000000001;	% dec 649396225 %
-832:	10101111110101010000000000001100;	% dec 2949971980 %
-836:	10001111110100110000000000001100;	% dec 2412969996 %
-840:	10001111110101110000000000000100;	% dec 2413232132 %
-844:	00000000000000000000000000000000;	% dec 0 %
-848:	00000010011101110001000000100011;	% dec 41357347 %
-852:	00000100010000001111111110010011;	% dec 71368595 %
-856:	00000000000000000000000000000000;	% dec 0 %
-860:	10001111110101100000000000001000;	% dec 2413166600 %
-864:	00000000000000000000000000000000;	% dec 0 %
-868:	00100110110101100000000000000001;	% dec 651558913 %
-872:	10101111110101100000000000001000;	% dec 2950037512 %
-876:	10001111110100000000000000001000;	% dec 2412773384 %
-880:	10001111110100010000000000000000;	% dec 2412838912 %
-884:	00000000000000000000000000000000;	% dec 0 %
-888:	00000010000100010001000000100011;	% dec 34672675 %
-892:	00000100010000001111111110000101;	% dec 71368581 %
-896:	00000000000000000000000000000000;	% dec 0 %
-900:	00100111101111010000000000010100;	% dec 666697748 %
-904:	00000000000111011111000000100001;	% dec 1962017 %
-908:	00000011111000000000000000001000;	% dec 65011720 %
+604:	10001111110100100000000000000100;	% dec 2412904452 %
+608:	00000000000000000000000000000000;	% dec 0 %
+612:	00100110010100100000000000000001;	% dec 642908161 %
+616:	10101111110100100000000000000100;	% dec 2949775364 %
+620:	10001111110100110000000000000100;	% dec 2412969988 %
+624:	00000000000000000000000000000000;	% dec 0 %
+628:	00100100000011110000000000000010;	% dec 604962818 %
+632:	00000010011011110001000000100011;	% dec 40833059 %
+636:	00000100010000001111111110101110;	% dec 71368622 %
+640:	00000000000000000000000000000000;	% dec 0 %
+644:	00100111101111010000000000010000;	% dec 666697744 %
+648:	00000000000111011111000000100001;	% dec 1962017 %
+652:	00000011111000000000000000001000;	% dec 65011720 %
 END;