Что случается с аргументами деления, если делят не на 0, но получается переполнение? В PDP11 handbook написано, что результат неопределенный, а это означает, что исходное делимое из двух регистров (куда кладётся результат) теряется. С другой строны, BQT считает, что делимое в таком случае не меняется и подтверждает это результатами на своих 11/70 и 11/93. Интересно, как с этим на BM2, BM3, ...? Заранее благодарю за любую информацию
Интересно, как с этим на BM2
DIV 071RSS (071000–071777)
DIVIDE / ДЕЛЕНИЕ
0
1 1 1
0 0 1
R R R
s s s
s s s
Алгоритм: tmp32[31:16] := R; tmp32[15:0] := R or 1; tmp32[частное, остаток] := tmp32 / (src); R or 1 := tmp32[15:0](остаток) ; R := tmp32[31:16](частное)
Описание: 32-разрядное слово в двоично-дополнительном коде, находящееся в регистрах R и R or 1, делится на операнд источника. Частное заносится в R, а остаток в R or 1. После выполнения операции деления знак остатка будет таким же, как и у делимого. Если в качестве R используется нечётный регистр, то старшая часть 32-разрядного делимого будет повторять его младшую часть, т.е. фактически выполняется операция ((R << 16) or R) и после завершения операции деления сохранится только частное. При арифметическом переполнении во время операции (частное не помещается в 16 разрядов) или делении на ноль выполнение операции прекращается, регистры не изменяются, очищаются признаки N и Z в PSW, устанавливается признак V.
Признаки: N – устанавливается, если частное меньше нуля, в противном случае (и в случае арифметического переполнения) очищается, Z – устанавливается, если частное равно нулю, в противном случае (и в случае арифметического переполнения) очищается, V – устанавливается при арифметическом переполнении и делении на ноль ((src)==0), в противном случае очищается, C – устанавливается, если осуществляется деление на ноль ((src)==0), в противном случае очищается.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot