hobot (28.10.2020)
Я постоянно так делаю ради экономии памяти в интрах и в драйверах.
Ещё часто использую такую оптимизацию размера и количества регистров при работе с циклами:
Если нужно работать не с байтами, а со словами, то так:Код:MOV #Size,R0 1: действие с ARRAY-1(R0) SOB R0,1
Код:MOV #Size*2,R0 1: действие с ARRAY-2(R0) DEC R0 SOB R0,1
manwe.pdp-11.ru
nzeemin (28.10.2020), randomizer (30.10.2020)
S_V_B (04.11.2020)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
В коде прошивок от Электроника МС 0515 часто встречается такой приём.
Допустим, вам нужно сделать что-то с двумя массивами или двумя портами, двумя блоками на экране итп. - однотипные операции, но в двух местах.
Делается цикл который исполняется ровно два раза:
Код:MOV 2,R2 MOV XXXXXX,R1 ; первое место LOOP: . . . ; Делаем что-то полезное по адресу R1 MOV YYYYYY,R1 ; второе место SOB R2,LOOP ; повторяем второй раз
MOV 2,R2 -> MOV #2,R2
Я как непривыкший к ассемблеру постоянно делаю так:
Постоянно подозрения что ветвления надо делать по минимуму, но .. Вообщем все эти моменты продумывать - уедет мозг Респект конечно монстрам ассемблерного программирования.Код:DEC VAR BNE 10$ ; часто происходящая ситуация ... ; а тут редко происходящая RETURN 10$: ... ; продолжаем операцию
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)