Немига/EIS
< Немига
Этот документ создан для Emuverse и распространяется на условиях лицензии CC-BY-SA-3.0. |
Ошибки в выполнении MUL
Тест TSTVM2 от Titus показывает различия в исполнении команды MUL на Немиге и УКНЦ [1] — на Немиге три отличия:
MUL (even/odd) - ERROR: 0xD23D / 0x99EE MUL (odd/even) - ERROR: 0x35BA / 0xFDE3 MUL (table) - ERROR: 0x1C2B / 0x242B
Тест MULRR от Alex_K выявил лишнее выставление флага C в следующих случаях:
MUL R0,R1 R0 R1 R1' PSW' 000000670E: FFFF 8001 7FFF 0001 (-32767) * (-1) = 32767 00000180EE: 8001 FFFF 7FFF 0001 (-1) * (-32767) = 32767 0000026F0E: 7FFF 0001 7FFF 0001 32767 * 1 = 32767 00000388EE: 0001 7FFF 7FFF 0001 1 * 32767 = 32767
NTSMUL
Тест NTSMUL показывает содержимое регистров 170000 / 170002 / 170004 после выполнения операций EIS[2]:
A B MUL A,B flags 170000 170002 170004 000000 000000 000000 000000 000004 000000 000000 047764 000001 000001 000000 000001 000000 000001 000000 007760 000010 000020 000000 000200 000000 000200 000000 007760 077777 000001 000000 077777 000001 077777 000000 017761 000001 077777 000000 077777 000001 077777 000000 017761 077777 077777 037777 000001 000001 000001 037777 017761 177777 077777 177777 100001 000010 100001 177777 107770 077777 177777 177777 100001 000010 100001 177777 107770 177777 177777 000000 000001 000000 000001 000000 007760 next? A B DIV A,B flags 170000 170002 170004 000000 000000 000000 000000 000003 000000 000000 047764 000001 000001 000001 000001 000002 000000 000000 047764 000010 000020 000020 000010 000002 000000 000000 047764 077777 000001 000003 000002 000000 000000 000000 047764 000001 077777 077777 000001 000002 000000 000000 047764 077777 077777 077777 077777 000002 000000 000000 047764 177777 077777 077777 177777 000002 000000 000000 047764 077777 177777 177777 177776 000010 000000 000000 047764 177777 177777 000001 000000 000000 000000 000000 047764 next? A B ASH A,B flags 170000 170002 170004 000000 000000 000000 000000 000004 000000 000000 047764 000001 000001 000002 000001 000000 000000 000000 047764 000010 000020 010000 000010 000000 000000 000000 047764 077777 000001 000000 077777 000005 000000 000000 047764 000001 077777 177776 000001 000012 000000 000000 047764 077777 077777 037777 077777 000001 000000 000000 047764 177777 077777 037777 177777 000001 000000 000000 047764 077777 177777 177777 077777 000011 000000 000000 047764 177777 177777 177777 177777 000011 000000 000000 047764 next? A B ASHC A,B flags 170000 170002 170004 000000 000000 000000 000000 000004 000000 000000 047764 000001 000001 000002 000002 000000 000000 000000 047764 000010 000020 010000 004000 000000 000000 000000 047764 077777 000001 000000 137777 000001 000000 000000 047764 000001 077777 177776 000002 000012 000000 000000 047764 077777 077777 037777 137777 000001 000000 000000 047764 177777 077777 037777 177777 000001 000000 000000 047764 077777 177777 177777 137777 000011 000000 000000 047764 177777 177777 177777 177777 000011 000000 000000 047764