Вход

Просмотр полной версии : поясните команду SLL



goblinish
21.09.2012, 15:08
а есть ли внятное описание?

смотрю списки недокументируемых команд, и ничего нового.

jerri
21.09.2012, 16:05
Shift Left Logical

как бы так :)

goblinish
21.09.2012, 16:10
Shift Left Logical

как бы так :)

меня это смутило:
http://quasar.cpcscene.com/doku.php?id=iassem:calculs

CarrY<-Reg<-0

и SRL обратное.

и дальше:
http://www.z80.info/z80_faq.htm#Q-20


Q-32: What does SLL do?

Thomas Scherrer:

There are no SLL opcode in the Zilog official list, but
The block CB 30 - CB 37 (missing from the official list)
These instructions, usually denoted by the mnemonic SLL, Shift Left Logical, shift left the operand
and make bit 0 always one.

Try some of the official mnemonics below:

SLA = SHIFT LEFT ARITHMETIC register
SRA = SHIFT RIGHT ARITHMETIC register
SRL = SHIFT RIGHT LOGICAL register


надо дебаггером гонять и смотреть на результат, короче.

Shadow Maker
21.09.2012, 16:17
Так она вообще зачем нужна, эта инструкция? Когда есть SLA, которая я чет не очень понимаю чем от SLL в данном случае будет отличаться.

goblinish
21.09.2012, 16:22
Так она вообще зачем нужна, эта инструкция? Когда есть SLA, которая я чет не очень понимаю чем от SLL в данном случае будет отличаться.

Да хотя бы мнемоникой.
описание SLA разнится.

Shadow Maker
21.09.2012, 16:24
Ты на логическом уровне представляешь что делает Shift Left Logical? И что делает Shift Left Arithmetic?

Blade
21.09.2012, 16:25
Значением младшего разряда после сдвига они отличаются. У SLA там будет 0, у SLL 1.

Shadow Maker
21.09.2012, 16:29
Да ну?

http://chortle.ccsu.edu/assemblytutorial/Chapter-12/lshiftLeft.gif

goblinish
21.09.2012, 16:30
Ты на логическом уровне представляешь что делает Shift Left Logical? И что делает Shift Left Arithmetic?

если я верно понимаю, то SLA - сдвиг влево с учетом знака, SLL-сдвиг влево, описание разнится, как я привел по ссылкам.

Blade
21.09.2012, 16:33
Да ну?

Это так планировалось. А получилась 1 в младшем разряде.

Shadow Maker
21.09.2012, 16:34
SLL не используй. ТЧК. Он работает неправильно (не так, как я на картинке показал). Он работает как полный аналог SLA, только SLA заносит 0, а SLL 1 в младший бит, Blade правильно написал.

Я даже не знаю, зачем может понадобиться такой сдвиг, честно говоря. Он не логический и не арифметический, ну баг и есть баг.

Blade
21.09.2012, 16:36
В Анриле оно называется SLI (Shift Left and Increment).

goblinish
21.09.2012, 16:43
В Анриле оно называется SLI (Shift Left and Increment).

тоска со сдвигами, короче говоря:v2_dizzy_facepalm:

jerri
21.09.2012, 16:47
Shadow Maker, кстати да в младший бит заносится 1


goblinish, ты как будто впервые программу пишешь :)

Shadow Maker
21.09.2012, 16:48
Shadow Maker, кстати да в младший бит заносится 1
Угу, я забыл про этот баг в Z80 и что по этой причине SLL в SLI переименовали.

goblinish
21.09.2012, 16:52
ссылку не сохранил, но гляньте на скриншот. еще больше схема позабавит.

Shadow Maker
21.09.2012, 16:56
На схеме SLS = SLL = SLI в Z80, вроде правильно всё показано.

goblinish
21.09.2012, 17:05
На схеме SLS = SLL = SLI в Z80, вроде правильно всё показано.
как я уже сказал, мнемоника не устраивает, но суть не в этом. надо собрать доки, которые есть и собрать сдвиги в одно.
SLL,кстати, в одном из журналов еще более невнятно расписан.

Andrew771
21.09.2012, 17:10
В книге "Как написать игру на Ассемблере" в главе 5 всё понятно разрисовано, я туда всегда заглядываю. Но SLL там нету.

goblinish
21.09.2012, 17:16
В книге "Как написать игру на Ассемблере" в главе 5 всё понятно разрисовано, я туда всегда заглядываю. Но SLL там нету.

загляни туда ради фана:
http://www.z80.info/z80undoc3.txt

еще хуже, чем было.

jerri
21.09.2012, 17:32
ну я не знаю как еще внятнее описать действие этой комманды


1.2) CB Prefix [1]

An opcode with a CBh prefix is a rotate, shift or bit test/set/reset
instruction. There are a few instructions missing from the official list,
which are usually denoted with SLL (Shift Logical Left). It works like
SLA, for one exception: it sets bit 0 (SLA resets it).

CB30 SLL B
CB31 SLL C
CB32 SLL D
CB33 SLL E
CB34 SLL H
CB35 SLL L
CB36 SLL (HL)
CB37 SLL A

goblinish
21.09.2012, 17:57
ну я не знаю как еще внятнее описать действие этой комманды
доходчиво относительно)
еще бы найти засекреченный аналог push(hl) ;)

Vitamin
21.09.2012, 18:08
еще бы найти засекреченный аналог push(hl)
А что он должен делать?

goblinish
21.09.2012, 18:10
А что он должен делать?
в идеале - поместить байт на стэк. хотя, это мечта)

predatoralpha
21.09.2012, 18:11
А что он должен делать? Передавать в функцию по значению некую переменную, как я понимаю.

Vitamin
21.09.2012, 18:40
в идеале - поместить байт на стэк. хотя, это мечта)
А что, на стек можно поместить 1 (один) байт?

goblinish
21.09.2012, 18:52
А что, на стек можно поместить 1 (один) байт?
если dec(hl) есть, то почему бы и нет?

predatoralpha
21.09.2012, 18:53
А что, на стек можно поместить 1 (один) байт? Одной командой - нет. Но в принципе - почему бы а нет.

Vitamin
21.09.2012, 20:33
если dec(hl) есть, то почему бы и нет?
А что, dec (hl) работает со стеком?

goblinish
21.09.2012, 20:38
А что, dec (hl) работает со стеком?
а что, (hl) с байтом не работает?

jerri
21.09.2012, 20:44
goblinish, sp работает только с регистровыми парами так что не дождешься :)

goblinish
21.09.2012, 21:22
goblinish, sp работает только с регистровыми парами так что не дождешься :)

знаю( вернее, стэк работает со словами.
недавно помечтал о подобной команде.

jerri
21.09.2012, 21:35
goblinish, для чего она нужна? :) есть весьма элегантные конструцкии

goblinish
21.09.2012, 21:40
goblinish, для чего она нужна? есть весьма элегантные конструцкии

напомни после 5-го октября я код приведу. там, наверное, и было бы элегантно..

jerri
21.09.2012, 22:09
а чтобудет 5 октября?

goblinish
21.09.2012, 22:13
а чтобудет 5 октября?
demoparty,наверное)

Vitamin
21.09.2012, 23:40
а что, (hl) с байтом не работает?
Ты говорил про push. А это работа со стеком.

goblinish
22.09.2012, 00:04
Ты говорил про push. А это работа со стеком.

я предположил как на x86 - push <тип данных>
чем он плох-то?

Vitamin
22.09.2012, 00:11
я предположил как на x86 - push <тип данных>
чем он плох-то?
И с какой гранулярностью на x86 работает команда push?

goblinish
22.09.2012, 00:18
И с какой гранулярностью на x86 работает команда push?
навскидку не помню, но на байтах давится( забыл нафиг(

с другой стороны, инструкции 6502 pha/pla со стэком вольно обращаются.

drbars
06.12.2012, 21:57
Вот вопрос, команда SLI очень нужная... стоит ли её использовать в игре?
На каких именно процессорах она неправильно работает?
Её использование реально даёт экономию 4 такта на линию при сдвиге на точку, 8 на две точки и 12 на 3. Т.е. в сумме на максимуме у меня выходит экономия 288 тактов!

Vadim
07.12.2012, 06:09
Для того что бы поместить слово на стек не запарывая регистры, для z80 есть конструкция :v2_dizzy_punk:

jerri
07.12.2012, 09:45
drbars, эта команда используется регулярно и много где
она вполне документированная - во всяком случае в datasheet z80 она есть и официальный компилятор ее знает

null_device
07.12.2012, 10:23
На каких именно процессорах она неправильно работает?

Насколько мне не изменяет склероз, была информация по поводу недокументрованной команды, которая Z84C0010PEC выполняется "не совсем так".

jerri
07.12.2012, 11:49
null_device, это была команда out(c),0

drbars
07.12.2012, 18:44
Просто помню, что Alone её категорически не использовал.
На фирменных машинах будет работать?

jerri
07.12.2012, 21:54
drbars,


Z84C0010PEC выполняется "не совсем так".
на z80 делает out (c),0
на z84 делает out (c),#ff

drbars
08.12.2012, 00:34
drbars,
на z80 делает out (c),0
на z84 делает out (c),#ff
Это я понмю, а вот со SLI что происходит?

jerri
08.12.2012, 11:19
drbars,
Shift Left (http://www.users.globalnet.co.uk/~jg27paw4/yr18/yr18_51.htm)
странное что то с этой командой выпало видимо при составлении описания

Vadim
08.12.2012, 22:23
странное что то с этой командой выпало видимо при составлении описания
Наверное что по кодам недокоманды SLI в z180 уже расположена другая команда? Я не помню кодирование 180, но точно помню, что в 180 заюзали часть неиспользованных кодов z80. В Z280 заюзали ещё больше. К чему размышления я не совсем понимаю. Ну есть по опр. кодам недоделанная глючная команда и что? Не надо её юзать и всё.

Titus
08.12.2012, 22:34
Ну есть по опр. кодам недоделанная глючная команда и что? Не надо её юзать и всё.
Доделанная и неглючная.
Нет никакого смысла блюсти совместимость со всякими Z180.
Спектрум - это не Z80 или Z180, это совокупность миллиона нюансов, и в том числе SLI.

Vadim
08.12.2012, 22:39
Нет никакого смысла блюсти совместимость со всякими Z180
Какой смысл её юзать в z80? Вообще все "недок" команды? Я этого никогда не понимал и видимо не пойму уже. Ну делает этот код некое действие и что? Ладно бы, если бы оно было реально полезное. А так.. Ну зачем команда SLI? или SLL? Ускорение по тактам? В чем? Где? Доказательства в студию (примеры)

Alex Rider
08.12.2012, 22:45
Из scf: sla a получаем sli a. Выгоду по байтам и тактам посчитать легко.

Vadim
08.12.2012, 22:53
Да нет, это понятно, там выгода 4 такта, если у нас 100% флаг C не был установлен. Но много ли найдётся случаев, когда это нужно? Ну не надо делать SCF и что? Это ерунда на самом деле. А вот если бы по этим 8-и кодам были бы команды умножения, то вот это было бы большим плюсом. Вот я к чему. Смысл юзать команды, от которых или нет вообще выгоды или она мизерна?

Blade
08.12.2012, 22:57
Из scf: sla a получаем sli a.
Не получаем. Флаг C на результат SLA не влияет.

Titus
08.12.2012, 22:58
Какой смысл её юзать в z80? Вообще все "недок" команды? Я этого никогда не понимал и видимо не пойму уже. Ну делает этот код некое действие и что? Ладно бы, если бы оно было реально полезное. А так.. Ну зачем команда SLI? или SLL? Ускорение по тактам? В чем? Где? Доказательства в студию (примеры)

Многие зачастую путают два понятия.
1. Сохранение совместимости с парком софта и принятые когда-то ТРАДИЦИИ. Это поддержка и сохранность прошлого. Т.е., скажем картинная галерея сохраняет традиции и наследие художников, когда-то существоваших.

2. Выработка правил хорошего тона, оптимального программирования для БУДУЩЕГО. Переводя опять же на художников - берем лучшее из техники прошлого, оптимизируем, добавляем современное и новое и делаем что-то сейчас, а так же учим этим навыкам тех, кто будет творить в будущем.

Так вот - Спектрум и его софт - это на 99.999% пункт 1.

Vadim
08.12.2012, 23:11
Так вот - Спектрум и его софт - это на 99.999% пункт 1.
Я это понимаю, но не понимаю всё же тех, кто использовал некоторые особенности чего-то без веской на то причины. Вот я о чём.

---------- Post added at 01:11 ---------- Previous post was at 01:08 ----------

Как например тех же товарисчей которые писали дисковые процедуры к ZX-Format. Увы, это пример *****кода. С дисковода B: их журнал не работает. В номере 2, сверяют 2x512 байт ПЗУ TR-DOS на абсолютное соответствие с ПЗУ 5.04Т - зачем? Да не зачем. Говнокод сделанный любительским способом не зная как вообще надо. И этого надо придерживаться? Чушь и бред!

Titus
08.12.2012, 23:17
Я это понимаю, но не понимаю всё же тех, кто использовал некоторые особенности чего-то без веской на то причины. Вот я о чём.

Причины:
1. Интересно применить
2. Удобно в каком-то алгоритме
3. Для защиты (что наиболее логично)

---------- Post added at 23:17 ---------- Previous post was at 23:13 ----------


Как например тех же товарисчей которые писали дисковые процедуры к ZX-Format. Увы, это пример *****кода. С дисковода B: их журнал не работает. В номере 2, сверяют 2x512 байт ПЗУ TR-DOS на абсолютное соответствие с ПЗУ 5.04Т - зачем? Да не зачем. Говнокод сделанный любительским способом не зная как вообще надо. И этого надо придерживаться? Чушь и бред!
То, что не работает с диска B - это не айс.
То, что сравнивается с 5.04T - это неправда, т.к. у меня на 5.03 и 7.00 все работает.
И это не чушь и бред - это попытка защитить свой журнал теми досупными средствами и знаниями, которыми они располагали.

Vadim
08.12.2012, 23:23
1. Интересно применить
На самом деле это назывется деццтво. (у меня было аналогично)


2. Удобно в каком-то алгоритме
насчёт этого как раз я и спросил привести пример, т.к. у меня в практике программирования такого не было вообще. А если и надо было сделать сдвиг влево с одновременным задвижением 1 в мл. разряд, то я это делал стандартными командами без ущерба производительности. (ну не было такого случая когда оно лежит в цикле для вывода графики)


3. Для защиты (что наиболее логично)
А вот этот момент наиболее ожидаем и логичен. Я занимаясь, спектрумом имея скудные описания z80 ещё в 1992 г. в отладчиках перепробовал все "недок" команды. Расписал для себя, что же они делают. Не имея вразумительных данных вообще о микропроцессорных системах, только изучая их. И за чем же тогда, такие команды применять? Если начинающий смог в них разобраться? Какая защита? О чём ты? Смешно. Ну отладчик или дизасм (коих на спектруме отродяся не было) не сможет эту команду адекватно отразить, но мы то знаем уже. Или это защита от дебилла?

Titus
08.12.2012, 23:34
А вот этот момент наиболее ожидаем и логичен. Я занимаясь, спектрумом имея скудные описания z80 ещё в 1992 г. в отладчиках перепробовал все "недок" команды. Расписал для себя, что же они делают. Не имея вразумительных данных вообще о микропроцессорных системах, только изучая их. И за чем же тогда, такие команды применять? Если начинающий смог в них разобраться? Какая защита? О чём ты? Смешно. Ну отладчик или дизасм (коих на спектруме отродяся не было) не сможет эту команду адекватно отразить, но мы то знаем уже. Или это защита от дебилла?

Идеальная защита - это квинтэессенция целого комплекса неизвестных, малоизвестных или сложнорешаемых задач. Поэтому совершенно логично, что желая защитить программу, программист будет делать упор в том числе на недокументированные команды, тем самым уменьшая число людей потенциально могущих взломать защиту.

Alex Rider
08.12.2012, 23:38
Не получаем. Флаг C на результат SLA не влияет.

Облажался, сорри. Сначала правильно ведь написал sla a: inc a, потом засомневался и написал чушь.

sli может быть полезна во всяких быстрых скроллерах, например. Если кто-то с этим не сталкивался, это не значит, что никто другой не столкнется. Спектрум и его клоны сделаны на z80 или совместимых по команде sli процессорах, поэтому для оптимизации спековских применять ее вполне себе кошерно.

Vadim
08.12.2012, 23:40
Идеальная защита - это квинтэессенция целого комплекса неизвестных, малоизвестных или сложнорешаемых задач.
Верно. Но так называемые "недок" команды в этот список, увы, не входят. Я уже написал выше почему. Используюя их мы отсекаем уж совсем ничего не знающих ламеров, которых и не только это отбросит. Я это и говорил ранее. Говоря проще - фигня это, реальнее человек их применяя только формирует грабли в будущем. А это вот - уже очень не хорошо.

Alex Rider
08.12.2012, 23:48
Говоря проще - фигня это, реальнее человек их применяя только формирует грабли в будущем.

Грабли в будущем словит производитель и покупатель клона, собранного на не-Z80 (ну или не совместимом с ним по недокументированным командам процессоре). Но не автор программы - он чист потому что использует вполне известные возможности оригинального Спектрума. А хорошо написанная и зарелиженная программа с красивым эффектом лучше не написанной из-за опасений о том, что она не запустится на еще не существующей левой поделке.

Vadim
08.12.2012, 23:56
А хорошо написанная и зарелиженная программа с красивым эффектом лучше не написанной из-за опасений о том, что она не запустится на еще не существующей левой поделке.
Да? Т.е. мы упираемся до последнего? ))) Реально, эта же самая программа будет прекрасно работать, если мы их неё уберём эту команду. Разве не ясно? Эта команда там не нужна. Бесполезна. Нет предпосылок их использования. Вот я о чём. Ни какой выгоды она (они) не даёт.

Titus
08.12.2012, 23:57
Верно. Но так называемые "недок" команды в этот список, увы, не входят. Я уже написал выше почему. Используюя их мы отсекаем уж совсем ничего не знающих ламеров, которых и не только это отбросит. Я это и говорил ранее. Говоря проще - фигня это, реальнее человек их применяя только формирует грабли в будущем. А это вот - уже очень не хорошо.
Ничего подобного. В начеле 90-х было полно людей, не знающих недокументированные команды. И если ты, или кто-то другой их раскопал, не значит, что это было поголовной тенденцией.

Vadim
09.12.2012, 00:20
В начеле 90-х было полно людей, не знающих недокументированные команды. И если ты, или кто-то другой их раскопал, не значит, что это было поголовной тенденцией.
Думаешь? Я бы не был так категоричен. Ведь легко всё проверяется (действие команды) даже используя mons3 или 4. Легко. Почти всё покажет отладчик - остальное нетрудно придумать, как определить. Доп. коды команд видны из структуры кодирования, проверяются легко. Что там осталось то? SLI? опять же загружая значения в регистры и выставляя флаги всё просто проверяется. Вот с out'ами который 0 или FF там сложнее, так реально это и не применялось в то время

---------- Post added at 02:20 ---------- Previous post was at 02:08 ----------

Ну в те, для которых "неизвестные" коды были камнем предкновения - ну были они тупаками )))) И что? "защиты" такие были круты что ли? Смех. 2pac это видимо жизненная позиция у таких людей и на ниве спектрума их потом не стало видно. Или они остались?

drbars
09.12.2012, 00:58
Я выдвигаю маску спрайта.

SCF:RL E отлично заменяется на SLI E
экономит 4 такта на сдвиг, 8 на два и 12 на три.

В сумме на пике загрузки это даёт мне 312 тактов выигрыша!
На экране много анимации и спрайтов, каждый такт на счету!

Поэтому и интересуюсь, везде ли работает команда.

Vadim
09.12.2012, 01:18
Я выдвигаю маску спрайта.
Что это означает? Сорри, за тупой вопрос. Что значит выдвигаю маску?

Titus
09.12.2012, 01:20
Что это означает? Сорри, за тупой вопрос. Что значит выдвигаю маску?
Это означает, что когда сдвигают маску спрайта, сбоку должны появляться единицы, а не нули, как в случае сдвига самого изображения.

Vadim
09.12.2012, 01:32
Это означает, что когда сдвигают маску спрайта,
Зачем её сдвигать? Ведь мы же хотим наибольшей скорости? не так ли?

---------- Post added at 03:32 ---------- Previous post was at 03:29 ----------

Каг бы считается хорошим тоном изначально сдвинуть спрайты на то кол-во пикселей, с которым мы минимум хотим их сдвинуть. Маска аналогично, это всё делается заранее. Потом печатаем по знакоместам. Это аксима как бы. В противном случае мы получаем скорость 1-2 спрайта в экран. Или 5-6 но тормозно.

Titus
09.12.2012, 01:34
Зачем её сдвигать? Ведь мы же хотим наибольшей скорости? не так ли?

---------- Post added at 03:32 ---------- Previous post was at 03:29 ----------

Каг бы считается хорошим тоном изначально сдвинуть спрайты на то кол-во пикселей, с которым мы минимум хотим их сдвинуть. Маска аналогично, это всё делается заранее. Потом печатаем по знакоместам. Это аксима как бы. В противном случае мы получаем скорость 1-2 спрайта в экран. Или 5-6 но тормозно.

Зависит от задачи. Сдвинутые наборы спрайтов займут много дополнительной памяти. Если, скажем, в игре ее дефицит, никто сдвинутые хранить не будет.

Vadim
09.12.2012, 01:47
Если, скажем, в игре ее дефицит, никто сдвинутые хранить не будет.
Ессно. Это всё понятно. Но свдигать маску можно и справа. Необходимость SLI недоказана.

Titus
09.12.2012, 02:04
Ессно. Это всё понятно. Но свдигать маску можно и справа. Необходимость SLI недоказана.
При возможных вариантах сдвига от 0 до 7, 3 варианта идут слева, и три справа, ибо быстрее сдвинуть справа один раз, чем 7 раз слева.

Vadim
09.12.2012, 02:20
конечно, но потеря (мнимая) 4- тактов так это это кошмар! ага. Не учитывая, что флаг C можно и поднять перед этим. Че пыжиться? Зачем доказывать полезность бесполезность команды? Или это упёртость 90lvl? Я показал, что команда, в общем то, бесполезная и нет от неё суперполезности. Нет и точка. Доказывать смысла не имеет. Давайте докажем что из говна можно добывать мясо и еду. Да, можно, но есть другие способы, менее энергозатратные. С командой SLI аналогично. Можно без катастрофических потерь обойтись без неё, если не выдумывать специальные случаи. Зачем спорить то? Меня всё равно в этом случае не переубедить.

psb
09.12.2012, 04:11
Или это упёртость 90lvl?
именно так! твоя, Vadim, упертость:) в написании чего-то типа операционных систем эта команда 100% бесполезна.

когда сделаешь пару дем с особо вымудренными быстрыми эффектами, тогда можно будет обсудить, что есть +-4 такта на действие. а пока "Доказывать смысла не имеет" :)

какой-то гнилой спор из разряда "регистры IX/IY не нужны, потому что я всегда обходился без них"...

drbars
09.12.2012, 09:42
При возможных вариантах сдвига от 0 до 7, 3 варианта идут слева, и три справа, ибо быстрее сдвинуть справа один раз, чем 7 раз слева.
Именно так :) 4-ый делается через RLD уже :)

jerri
09.12.2012, 12:13
Наверное что по кодам недокоманды SLI в z180 уже расположена другая команда? Я не помню кодирование 180, но точно помню, что в 180 заюзали часть неиспользованных кодов z80. В Z280 заюзали ещё больше. К чему размышления я не совсем понимаю. Ну есть по опр. кодам недоделанная глючная команда и что? Не надо её юзать и всё.

http://mdfs.net/Docs/Comp/Z180/OpCodeMap
конечно конечно

но отличия появляются только в z280 а это оооочень сильно отличающийся проц

http://www.classiccmp.org/hp/zilog/z280_manual.pdf

---------- Post added at 12:13 ---------- Previous post was at 12:07 ----------


Зачем её сдвигать? Ведь мы же хотим наибольшей скорости? не так ли?

---------- Post added at 03:32 ---------- Previous post was at 03:29 ----------

Каг бы считается хорошим тоном изначально сдвинуть спрайты на то кол-во пикселей, с которым мы минимум хотим их сдвинуть. Маска аналогично, это всё делается заранее. Потом печатаем по знакоместам. Это аксима как бы. В противном случае мы получаем скорость 1-2 спрайта в экран. Или 5-6 но тормозно.

Вадим ты хоть одну игру написал?
столкнулся хоть раз с проблемой нехватки 1 байта?

одно дело когда ты используешь недокументированный вариант команды im 2 или чтото вроде set n,a,(ix+nn)
и другое дело SLI которая трактуется однозначно

drbars
09.12.2012, 12:46
В общем команду оставляю. Продолжаю писать код :)

Vadim
09.12.2012, 12:53
Вадим ты хоть одну игру написал?
Да

столкнулся хоть раз с проблемой нехватки 1 байта?
нет
И ещё раз говорю, не могу себе представить ситуацию, когда не хватает одного байта и что нам край как нужна эта команда.


Её использование реально даёт экономию 4 такта на линию при сдвиге на точку, 8 на две точки и 12 на 3. Т.е. в сумме на максимуме у меня выходит экономия 288 тактов!
Вот, проглядел выше пример. В этом случае - да. Смысл ее использовать есть.

Alex Rider
09.12.2012, 15:28
И ещё раз говорю, не могу себе представить ситуацию, когда не хватает одного байта и что нам край как нужна эта команда.

Vadim не писал приложений на грани возможностей машины. Единицами байты/такты не экономил. Полезность приемов повышения эффективности кода для него не очевидна. Конкретного видения возможных проблем от использования sli он предложить не может. Вопрос исчерпан.

Vadim
09.12.2012, 15:33
Единицами байты/такты не экономил.
Ну почему же? Было дело. Но спрайты я сдвигал заранее. А вот под них не хватало места, но нашёл выход. Не проблема.

TomCaT
09.12.2012, 15:50
В книге "Как написать игру на Ассемблере" в главе 5 всё понятно разрисовано, я туда всегда заглядываю. Но SLL там нету.

Возвращаясь к напечатанному: есть - в этой книге, в приложении "Некоторые недокументированные команды".

Alex Rider
09.12.2012, 16:25
Было дело. Но спрайты я сдвигал заранее. А вот под них не хватало места, но нашёл выход. Не проблема.

Это одно из решений. Не всегда приемлемое.

drbars
09.12.2012, 18:19
Возвращаясь к напечатанному: есть - в этой книге, в приложении "Некоторые недокументированные команды".
Использую ZX Spectrum & TR-DOS для пользователей и программистов (3-ее издание). Стр 99 про команду SLI.

В моём случае, только один набор несдвинутых копий занимает 10 килобайт.

А волшебное место на 7-ой странице с #DB00 — так вообще на вес золота!))