Немига/EIS

Материал из Emuverse
Этот документ создан для 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