А ну стоп! Хватит уходит от ответа!Вопрос был не про "типичные команды", а про КОНКРЕТНЫЙ код - где гарантия, что в ds будет нужное значение перед вызовом?
Таким способом адресуются типичные структуры с известными заранее смещениями, и на них вполне хватает даже менее 16 бит.
Если мне нужны такие большие данные, то и базы для интересующего куска, и смещения для них будут вычисляться в регистрах, и вот здесь у 16-битных x86 абсолютно НЕаналогично начинаются проблемы и тормоза.
Повторю: где гарантия, что перед вызовом процедуры распечатки значения ds не испорчен типичной процедурой доступа к большому массиву (из которого, скорей всего, и берутся эти числовые данные для печати)?
cферовакуумное самозарождение входных параметров сразу же в удобных регистрах
я оценивал для арма с динамической памятью
144...162 относительно небольшой разброс, если даже только минимум брать, то картина практически не изменится
неспортивно убирать из процедуры часть процедуры
40 БАЙТ, но только 10 ТАКТОВ! и ведь только что сам же говорил про 16 тактов на ИТЕРАЦИЮ...
я для полной итерации подсчитал - 72 такта 286 против ~20 армовских
да что ж такое то! снова растечение мысью
для вот этого конкретного примера - НЕТ, НЕ обгонит!
да и пофиг, сколько там займёт ПРОЦЕДУРА, многократно вызываемая в коде ОДНОЙ командой
причём сам вызов процедур таких на арме довольно "дешёв", по сравнению даже с 386
На x86 длинное делимое в 99.9% случаев нахрен никому не сдалось, ибо требует дополнительных проверок на возможную ошибку переполнения или перехвата прерывания по ошибке. Для 286 еще проверки имеют смысл (сам писал быстрое 32-битное деление для Форта), но для 386 в edx тупо пишут ноль или расширение знака.
мне встречались цифры 32...116 с утверждением, что средневзвешенно меньше среднего
и процедуры с ограничением делителя тоже побыстрее будут наверняка
См. выше - длинный результат разве что немногим чаще длинного делимого нужен (при расчёте 32-битных адресов никогда не нужен). Как-то с толком применять его потом затруднительно, разве что для */ операций (но опять же, требуются проверки, да и для арма комбинацию */ можно реализовать быстрее суммы двух процедур)
НЕТ, "таким образом" наиболее востребованное умножение у арма в лучшем случае быстрее в 4.5 раз, в худшем - быстрее в 2.2+ раз, а в среднем - быстрее в 2.47+ раз. Ничего себе "незначительно"! Причём худшего случая на арме легко избежать ценой одной проверки и всего двух лишних тактов, тогда в среднем выйдет почти в 3 раза.
Ахахах! Очень редкий?Да это именно что типичный в армах способ доступа к любой структуре небольшого размера. Например, прочитали разом 6 координат треугольника, рассчитали поворот, записали разом обратно. Сортировка - прочитали несколько значений, отсортировали в регистрах, записали разом обратно, переходим к следующему куску. Все куски прошли - дальше будет проще с ними работать, начиная с крайних значений. Распаковка, включая кодеки - из потока тянем биты в несколько регистров, насколько хватит. И так далее.
нет, мы говорили там не о плотности, а о том, ЗАЧЕМ НА САМОМ ДЕЛЕ придуман палец
причём, кстати, даже с разрешённым пальцем код для армов генерится всё-таки смешанный
ага, имена профессий, чтобы отличить сапожника от пирожника, и не ошибиться с заказом
только это признак недостатка, а не достоинства
нет, не сходится - тогда атари был бы не быстрей комода (для которого основное торможение от видео в этот мегагерц не входит) в портах со спектрума, а он всё-таки заметно быстрее (а комод - медленнее спека явно не всего на 40%)
Нееет, как раз всё ровно наоборот - 6502 работает ПОСТОЯННО ТОРМОЗЯ до уровня памяти
тот еще уродец, дорогой быстрой памяти в котором кот наплакал только для замены регистров
это интелострадальцы должны страдать, потому что просто деваться некуда, а рискобоярам необязательно - в том и состоит преимущество
оптимизация формата исходных данных - часть оптимизации в целом
не помню про флаги, но если в старших разрядах адресного нули, то какая разница
ага! тут мы сразу вспоминаем, что данные из памяти грузить надо! а как код для x86 - так сразу "типично передавать в регистрах"
для каких-то очень уж "специальных" (как "особенный ребёнок" политкорректно)))
а многозадачность есть искаропки - видать, был приспособлен лучше "очень хороших"
пхе, явно не у арма с 68000





Вопрос был не про "типичные команды", а про КОНКРЕТНЫЙ код - где гарантия, что в ds будет нужное значение перед вызовом?
40 БАЙТ, но только 10 ТАКТОВ! и ведь только что сам же говорил про 16 тактов на ИТЕРАЦИЮ...
Да это именно что типичный в армах способ доступа к любой структуре небольшого размера. Например, прочитали разом 6 координат треугольника, рассчитали поворот, записали разом обратно. Сортировка - прочитали несколько значений, отсортировали в регистрах, записали разом обратно, переходим к следующему куску. Все куски прошли - дальше будет проще с ними работать, начиная с крайних значений. Распаковка, включая кодеки - из потока тянем биты в несколько регистров, насколько хватит. И так далее.



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