уже не помню, но при чём тут вообще смещение? когда нужен просто инкремент указателя
ага, и не забыть устанавливать ds перед вызовом одной или нескольких таких процедур (то есть код еще особо надо группировать)
в любом случае: начались какие-то оговорки - это значит, что один код не является полностью аналогом другого кода функционально
в том, что вероятней сперва расчёт, а потом уж вывод пачкой всех результатов
и тогда загрузка оных из памяти непосредственно относится к процедуре
в 18 раз на одинаковой частоте (если брать всю итерацию, а не только деление)
это для развёрнутой процедуры, а для вызова - по размеру (и даже всё еще по скорости) арм будет лучше
ага, щязна 32-битных проиграет в 3.6+ раза (и на 16-битных не должен обогнать)
вот конкретно в этой задаче не обгонит даже на удвоенной частоте (а первые 386 шли от 12мгц)
шта? опять смешались мухи с котлетами... в данном случае размер кода будет близок к 8086 варианту
для универсального же деления, в армокоде будет просто "BL udiv", который всяко нужен неоднократно
да не так уж сильно, раза в полтора в среднем (и это для полностью программной реализации!)
зато очень быстрое умножение, которое нужно намного чаще, в том числе неявно (адрес в массиве)
а может и не быть, конкретно здесь хватит результата PC+N
здесь нельзя, ADDPL не каждый раз выполняется
а с вызовом универсальной (или частных случаев) процедуры - меньше!
да мне пофиг, какой смысл у слова "могут" - ЕГО ТАМ НЕТ!
трюки есть и менее сложные (например, прочесть пачку аргументов одной командой там, где 386 вынужден уныло копаться в стеке) и результаты следует оценивать комплексно
совершенно к делу не относящиеся
поконкретнее - я там забытое напомнил сразу СЛЕДУЮЩЕЙ СТРОКОЙ
какой PC? какой базовый регистр? для начала - просто ПОЛНОЦЕННЫЙ АДРЕС ЯЧЕЙКИ ПАМЯТИ
лучше, чем с 68k или армом (на ассемблере последний раз писал Форт себе со встроенным отладчиком спектрума)
база нужна, чтоб адресовать НАЧАЛО СТРУКТУРЫ (в широком смысле)
и уж точно без дурацких лишних ограничений на аж 16-байтовое выравнивание
нет, база всегда - НАЧАЛО отсчёта (порции) данных
не "оттенки смыслов", а принципиально разные вещи
для каких-нибудь системных стеков, может, и норм, а для настоящей базы работы с данными - это нонсенс
см. выше - дохренища я написал и специализация надоела
во-1 не в три раза, а от силы в два, иначе прямые спектрумовские порты так заметно на комоде не тормозили бы (в отличие портов на атари с его как раз ровно вдвое меньшей частотой камня); во-2, пример 6502 подтверждает как раз обратное, потому что он вообще не мог работать на таких частотах, чтобы догнать, будучи привязанным к памяти; в-3, если память не ограничивает скорость проца вообще, то она регистрами и является (потому что даже кэш на одном кристалле даёт задержки)
в возне со стеком (но да, на x86 это не "проблема", там это жизнь)))
точно, XCHG нетуесть EXG - обмен между регистрами; и между половинками регистра данных (SWAP называется)
спрашивает человек, не знающий команд обмена 68000
еще раз, для закрепления материала: SWAP
не быстрее
а я писал, что и в арифметике подойдут
для КАКИХ? в вычислениях применять их можно только парой, только для логики
что ни гибче, ни тем более "существенно" гибче
то есть "отличный ММЮ" раньше было в смысле "Хопёр-Инвест отличная компания (от других)"?
чувствуется закономерность результата
ага, бизнес дона Интелоне - сломать ногу и предложить костыль как "удобство"![]()





на 32-битных проиграет в 3.6+ раза (и на 16-битных не должен обогнать)
поконкретнее - я там забытое напомнил сразу СЛЕДУЮЩЕЙ СТРОКОЙ
какой PC? какой базовый регистр? для начала - просто ПОЛНОЦЕННЫЙ АДРЕС ЯЧЕЙКИ ПАМЯТИ
в возне со стеком (но да, на x86 это не "проблема", там это жизнь)))
есть EXG - обмен между регистрами; и между половинками регистра данных (SWAP называется) 

Ответить с цитированием