С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ну а куда людям податься?
Я вот ни одного русскоязычного форума по Архимедам не знаю
Те ARM - которые сейчас - это сильно другие ARM(хоть и развитие), и память к ним подключается совсем другая, другие скорости, другая периферия...
И с другой стороны организация памяти и скорость доступа представляют определённый интерес любителям PDP-11(для меня, например), так как тут можно идеи почерпнуть и для PDP-11![]()
Последний раз редактировалось Alex; 24.05.2023 в 10:56.
ra3qdp(24.05.2023)
декримент регистра и условный переход на метку, например по не нулю (в системной макробиблиотеке RT-11 есть даже такая макрокоманда, кою используют, если процессор не поддерживает SOB), как ноль - так завершение цикла.
Так же возможны варианты инкримента отрицательного значения в регистре... Можно условие в условном переходе поменять условие как хочется, когда значение положительно, когда станет отрицательно...
И вообще команда условного перехода может быть выставлена по любой комбинации флагов слова состояния процессора. И ещё, используя эту особенность народ делал самомодифицирующийся код, так процессоры без диспетчера памяти вполне позволяли такие проделкиА уж поддержка I/D пространств - экзотика большая. Только "Электроника-79" и компьютеры на базе 1831(J-11)
- - - Добавлено - - -
Код:MOV #1000,R1 ; ОТКУДА MOV #2000,R2 ; КУДА MOV #100,R0 ; СКОЛЬКО (100 ВОСМЕРИЧНОЕ СЛОВ) LABEL: MOV (R1)+,(R2)+ ; КОПИРУЕМ SOB R0,LABEL ; ПОКА НЕ ОБНУЛЁН RO УХОДИМ НА LABEL: Без SOB на одно слово более кода: MOV (PC)+,R1 ; ТО ЖЕ САМОЕ, ЧТО В ПРОШЛЫЙ РАЗ, ПРОСТО ДРУГАЯ ФОРМА ЗАПИСИ, L: .WORD 1000 ;НАПРИМЕР, СЮДА МОЖНО МЕТКУ ПОСТАВИТЬ MOV (PC)+,R2 .WORD 2000 MOV (PC)+,R0 .WORD 100 LABEL: MOV (R1)+,(R2)+ DEC R0 ; КАК ТОЛЬКО ОБНУЛИТСЯ R0, УСТАНОВИТСЯ ФЛАГ Z BNE LABEL ; ПОКА НЕ ВЗВЕДЁН ФЛАГ Z ВОЗВРАТ НА LABEL:
Последний раз редактировалось Alex; 24.05.2023 в 20:29.
ra3qdp(24.05.2023)
Alex(24.05.2023)
Ну это ты загнул. Одной командой для некоторых сценариев не обойтись. Ну-ка, для примера, под вариант C=1 и N=1 - какая у нас команду условного перехода?![]()
Вот все варианты:
- - - Добавлено - - -Код:or (isOpBNE and (not basePSW.Even.OpStatus.Z)) or (isOpBEQ and basePSW.Even.OpStatus.Z) or (isOpBGE and (basePSW.Even.OpStatus.N = basePSW.Even.OpStatus.V)) or (isOpBLT and (basePSW.Even.OpStatus.N /= basePSW.Even.OpStatus.V)) or (isOpBGT and ((not basePSW.Even.OpStatus.Z) and (basePSW.Even.OpStatus.N = basePSW.Even.OpStatus.V))) or (isOpBLE and ( basePSW.Even.OpStatus.Z or (basePSW.Even.OpStatus.N /= basePSW.Even.OpStatus.V))) or (isOpBPL and (not basePSW.Even.OpStatus.N)) or (isOpBMI and basePSW.Even.OpStatus.N) or (isOpBHI and (not basePSW.Even.OpStatus.Z) and (not basePSW.Even.OpStatus.C)) or (isOpBLOS and ( basePSW.Even.OpStatus.Z or basePSW.Even.OpStatus.C)) or (isOpBVC and (not basePSW.Even.OpStatus.V)) or (isOpBVS and basePSW.Even.OpStatus.V) or (isOpBHIS and (not basePSW.Even.OpStatus.C)) or (isOpBLO and basePSW.Even.OpStatus.C) then
Среди наших процов - да, среди DEC - ещё 44 и 45-50-55 (это, по сути, один и тот же проц)
Там в команде условного перехода просто битовая маска, коя сравнивается с флагами процессора ...
Совпало поехали в одну сторону, не совпало - в другуюТолько совпадение хитрое...
Это я в какой-то книжке вычитал по PDP-11![]()
Там написано было, что команд на условный переход более по факту, чем мнемоник в асемблере ... Но используют сильно менее, так как не надо ...
Учитывая, что у PDP-11 флаги взводятся почти после каждой команды, появляются как свои плюсы, так и минусы .
Последний раз редактировалось Alex; 24.05.2023 в 20:54.
Не ведаю точно , надо смотреть коды операций и разбираться. Если очень надо - можно вычислить и написать директивой .WORD
Потом сделать макрос...
Но по факту, редко кто на такое идёт ...
- - - Добавлено - - -
Там биты и логика операции...
И ещё, надо учесть , что некоторые процессоры могут отрабатывать такие команды по 10 вектору...
Так как команды не задокументированы(Это уже моё личное мнение)
Последний раз редактировалось Alex; 24.05.2023 в 21:06.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)