User Tag List

Страница 36 из 70 ПерваяПервая ... 323334353637383940 ... ПоследняяПоследняя
Показано с 351 по 360 из 697

Тема: Бейсики для Вектора-06Ц и клонов

  1. #351

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,389
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Книжка по TRS80 прояснила ситуацию с целыми в RFBM3. Оказалось, что для целых есть нативные сложение/вычитание/умножение, а деление выполняется с одинарной точностью, что требует соответствующей конверсии. В RFBM4-7 тоже есть деление, но в RFBM3 делители 1-1000, а в 4-7 всегда 2, что проще для конверсии, в итоге накладные расходы не такие большие и не опускают целые варианты ниже одинарных на фоне остальных операций.

  2. #352

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,389
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я не одинок в попытках оптимизации микрософтовского бейсика. Но я намного маньячнее, у чувака по ссылке ускорение до 12% с использованием команд z80, у меня в 2 раза больше при использовании 8080. А с z80 можно горы свернуть.

    Эти 2 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    Improver(05.06.2023), nzeemin(05.06.2023)

  3. #353

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,389
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Посмотрел как хранится программа в 4.51/5.29 и оказалось, что используются "полукомпиляторные" штучки. Числовые константы и номера строк хранятся не в символьном виде (как в альтаирском 3.2 и его последователях) а во внутреннем формате, вместо номеров строк - адреса строк. С учетом этого понятно, почему 4.51 и 5.29 опережают 2.5 в большинстве тестов RFBM даже без использования целых (с одинарной точностью). По-хорошему они должны были бы рвать и 2.96, но микрософтовцы не стали заморачиваться с оптимизацией математики.

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    svofski(06.06.2023)

  4. #354

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Жаль, что нет исходников 5.29 или 4.51 в готовом для компиляции виде
    Там чёрт ногу сломит при дизассемблировании. Я попытался, но до конца не довёл. Очень часто используются прыжки в середину команды. Изврат, вобщем.
    Приложенный архив хоть и даёт исходный бинарник при компиляции, но при релокации работать не будет, это точно.
    Это так, чтобы посмотреть, насколько там всё запущено.

    MBASIC.ZIP (на след. странице улучшенная версия)

    - - - Добавлено - - -

    Понравился сниппет:
    Код:
        RLC
        ADD L
        MOV L,A
        ADC H
        SUB L
        MOV H,A
    Последний раз редактировалось b2m; 09.06.2023 в 22:04.

    Эти 2 пользователя(ей) поблагодарили b2m за это полезное сообщение:

    ivagor(06.06.2023), Pyk(07.06.2023)

  5. #355

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,389
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Понравился сниппет
    Начальный RLC это частность, а остальной фрагмент (HL+=A) впервые увидел у спектрумистов, думал это они изобрели.

  6. #356

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, RLC тут лишний, просто так скопировал, чтобы мысль не потерять, там был переход по таблице.

  7. #357

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не работает с отрицательными. А как красиво начиналось...

  8. #358

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,389
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Не работает с отрицательными. А как красиво начиналось...
    Это уже перебор, для смещения 0-255 отличный вариант, а для -128 - 127 настолько коротко и быстро на 8080 никак не получится.

    Чего не было в описаниях советских постальтаирских бейсиков.
    1. NEXT позволяет перечислить переменные через запятую. Если что - быстрее и короче совсем не указывать переменные в NEXT.
    2. В имени переменной после первого символа могут быть не только буквы и цифры, но и пробелы (они будут проигнорированы). Т.е. переменная ABC идентична A B C или AB C или A BC (или AB). На мой взгляд это зря.
    3. Более частный факт про описание 2.5 - информация про DELETE не вполне верная, нельзя сделать DELETE без аргументов и DELETE только с начальной строкой.

    - - - Добавлено - - -

    Оффтоп про знаковое HL+=A


    Если разрешить использовать BC или DE то так
    Код:
    mov c,a
    add a
    sbb a
    mov b,a
    dad b
    Если нельзя трогать BC и DE, то придется задействовать команды перехода. Работоспособно, но не очень изящно.
    [свернуть]

  9. #359

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Там чёрт ногу сломит при дизассемблировании. Я попытался, но до конца не довёл. Очень часто используются прыжки в середину команды. Изврат, вобщем.
    Приложенный архив хоть и даёт исходный бинарник при компиляции, но при релокации работать не будет, это точно.
    Это так, чтобы посмотреть, насколько там всё запущено.

    Вложение 78956

    - - - Добавлено - - -

    Понравился сниппет:
    Код:
        RLC
        ADD L
        MOV L,A
        ADC H
        SUB L
        MOV H,A
    Вроде бы работает как для положительных, так и для отрицательных байт.
    класная находка, спасибо! Кстати целиком там такой кусочек кода:

    Код:
        ...
        LXI H,L0495
    L1B41:
        ...
        RLC
        ADD L
        MOV L,A
        ADC H
        SUB L
        MOV H,A
        ...
    Он занимает 44 такта. В том контексте пара HL может иметь произвольное значение так как в программе есть JMP L1B41 из другого места, но если нам нужно прибавить к INT16 константе, то код можно немного ускорить до 40 тактов так:
    Код:
        ...
        RLC
        ADI LOW_BYTE
        MOV L,A
        ACI HI_BYTE
        SUB L
        MOV H,A
        ...
    Где LOW_BYTE это младший байт INT16 константы, а HI_BYTE это старший байт INT16 константы.
    Надеюсь кому-то будет полезно. Извиняюсь что не по теме топика.
    Последний раз редактировалось parallelno; 08.06.2023 в 05:19.

  10. #360

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,389
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ровно 4 года назад выложил первую "номерную" модификацию векторовского бейсика (2.55). Сегодня юбилейные 2.97 и 2.89.
    1. ivagor зоркий глаз наконец-то узнал, почему в классике диапазон номеров строк 0-65529. Вернул и немного ускорил оцифровку.
    2. Вернул "старый" вариант обработки токенов при вводе в INPUT. Расследование показало, что токенизация ввода INPUT - это оригинальная придумка авторов бейсика микрон.
    Плюс - это позволяет вычислять арифметические выражения при вводе числовых переменных (микрософтовские от 3.2 до 5.29 и "наши" домикронные на базе 3.2 так не делают).
    Минус - токенизация при вводе символьных переменных.
    Оказалось, что в INPUT можно вводить символьные переменные с кавычками и при этом текст внутри кавычек не токенизируется даже в потомках микрона (нигде не читал о подобном). Поэтому решил убрать свой костыль, который был с 2.57, если нужно гарантированно обойтись без токенизации - используем кавычки.
    3. Теперь о моей ошибке - в 2.95-2.96 частично поломал сравнение чисел и в некоторых случаях оно работало неправильно. Исправил и ускорил.
    4. В 2.97 решил себя не сдерживать, использовал все свободное место и изыскал резервы, очень много оптимизаций, везде стало заметно быстрее даже на фоне 2.96.
    В наборе тестов RFBM с одинарной точностью 2.97 тотально побеждает. Целые позволили удержаться микрософтовцам только в RFBM2. На мой взгляд очень хороший результат.
    Пустой цикл теперь быстрее 10 секунд.
    Синтетика это хорошо, но посмотрим ANTIGRAV - стартовое рисование уровня теперь меньше 100 секунд!
    В итоге 2.97 - самый быстрый интерпретатор бейсика с одинарной точностью для 8080. Году в 78-79 этим даже можно было бы гордиться.

    Эти 5 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    Improver(08.06.2023), metamorpho(08.06.2023), nzeemin(09.06.2023), svofski(08.06.2023), tnt23(08.06.2023)

Страница 36 из 70 ПерваяПервая ... 323334353637383940 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 719
    Последнее: 04.04.2024, 11:13
  2. Восстановление Вектора-06ц
    от Daniil Chislov 86 в разделе Вектор
    Ответов: 100
    Последнее: 11.03.2021, 00:23
  3. Ответов: 198
    Последнее: 26.04.2020, 13:05
  4. Ответов: 58
    Последнее: 06.07.2019, 23:56
  5. Ответов: 8
    Последнее: 14.11.2008, 02:41

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •