Важная информация

User Tag List

Страница 1 из 13 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 121

Тема: Неиспользуемые и редкоиспользуемые команды

  1. #1
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Неиспользуемые и редкоиспользуемые команды

    В эмуляторе zxzxemul составил статистику выполнения команд при сбросе и PRINT SQR 2.

    Неиспользуемые и редкоиспользуемые команды из основного набора:

    02 ld (bc),a
    0a ld a,(bc)
    (15=1) dec d
    1d dec e
    2c inc l /нужно/
    2d dec l
    31 ld sp,nn
    33 inc sp
    39 add hl,sp /нужно/
    3b dec sp
    40 ld b,b
    43 ld b,e
    45 ld b,l
    (48=2) ld c,b
    49 ld c,c
    4a ld c,d
    (4b=3) ld c,e
    50 ld d,b
    (51=2) ld d,c
    52 ld d,d
    55 ld d,l
    (58=5) ld e,b
    (5a=1) ld e,d
    5b ld e,e
    5c ld e,h
    (60=1) ld h,b
    63 ld h,e
    64 ld h,h
    65 ld h,l
    66 ld h,(hl) /нужно для переходов по таблице/
    (69=1) ld l,c
    6a ld l,d
    6c ld l,h
    6d ld l,l
    6e ld l,(hl)
    74 ld (hl),h
    75 ld (hl),l
    76 halt
    7f ld a,a
    (80=1) add a,b
    82 add a,d
    84 add a,h
    85 add a,l
    (86=1) add a,(hl)
    88 adc a,b
    8a adc a,d
    8b adc a,e
    8c adc a,l
    93 sub e
    94 sub h
    (95=1) sub l
    96 sub (hl)
    97 sub a
    98 sbc a,b
    99 sbc a,c
    9a sbc a,d
    9b sbc a,e
    9c sbc a,h
    9d sbc a,l
    9e sbc a,(hl) /sbc a,a нужно для расширения знаковых/
    a1 and c
    a3 and e
    a4 and h
    a5 and l
    (a6=1) and (hl)
    a8 xor b
    aa xor d /xor e=#023c/
    ac xor h /xor l=#0033/
    b0 or b
    b4 or h
    b5 or l
    b7 or a /and a=#179d/
    ba cp d
    bb cp e
    bc cp h
    bd cp l
    c7 rst #00
    cf rst #08
    d4 call nc,nn
    dc call c,nn
    de sbc a,n
    e0 ret po
    e2 jp po,nn
    e4 call po,nn
    e8 ret pe
    ea jp pe,nn
    ec call pe,nn
    f0 ret p
    f4 call p,nn
    f7 rst #30
    (f9=1) ld sp,hl /нужно/
    fc call m,nn
    ff rst #38

    Совсем не используется 80 из 252 команд основного набора, редко используется 13. Интересно, что из 63 направлений ld reg,reg активно используется только 35. Редко происходят копирования между младшими и старшими частями регистровых пар и копирования из b,c в h,l,d,e (обычно бывает только ld b,h:ld c,l).

    По уму из списка ненужных надо убрать inc l, add hl,sp, ld sp,hl и ld h,(hl) и добавить daa (выполнилось 28 раз), cp a (выполнилось 4 раза) и nop (выполнилось 78 раз).

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    40 ld b,b
    Для чего эта команда, и тому подобные ?

  4. #3
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GM BIT Посмотреть сообщение
    Для чего эта команда, и тому подобные ?
    Аналог nop

    У меня другой вопрос- какова цель исследования и какие практические выводы можно сделать из результатов?

  5. #4
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Одни сначала убирают ненужные команды, а потом фанаты PDP11 ворчат об ортогональности

  6. #5
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На лишние команды повесить "новые" нужные, наверное

  7. #6
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    1. Если последовательно выдерживать какую-то определённую стратегию программирования, то будет использоваться ещё меньше команд, и программы будут лучше паковаться.
    2. Можно задуматься о наборе команд для регистровой виртуальной машины с учётом того, что не все регистры равнозначны.
    3. Таки да, кое-что можно перехватывать железом, если это не касается состояния регистров процессора. Например, ld b,b и т.п. могут быть префиксами сегментной адресации (как на Спринтере).
    4. Наверняка кто-то имеет что-то сказать насчёт того, что он сам не использует. Например, я знаю, что многие не используют условные CALL, а некоторые вообще пишут без JR.

  8. #7
    Master
    Регистрация
    16.09.2005
    Адрес
    Дзержинск (DustCity)
    Сообщений
    919
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    скоро под zx-evo перестанет еще много чего работать или режим будет выключаемым?
    Pentagon1024sl2.2/TSFM/Z-Controller/GS128Kb/HDD/CDROM/Palcoder

  9. #8
    Guru
    Регистрация
    26.02.2010
    Адрес
    Запорожье
    Сообщений
    2,171
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    Если последовательно выдерживать какую-то определённую стратегию программирования,
    вот именно, используемые и не используемые команды впервую очередь идут от личного стиля програмиста, от написания компилятора (если говорить о С, etc.), от конкретно решаемой задачи и "тонкостей": размер кода, размер временных данных, размер стека, скорость, "сжимаемость".
    .

  10. #9
    Guru Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    1. Если последовательно выдерживать какую-то определённую стратегию программирования, то будет использоваться ещё меньше команд, и программы будут лучше паковаться.
    2. Можно задуматься о наборе команд для регистровой виртуальной машины с учётом того, что не все регистры равнозначны.
    3. Таки да, кое-что можно перехватывать железом, если это не касается состояния регистров процессора. Например, ld b,b и т.п. могут быть префиксами сегментной адресации (как на Спринтере).
    1. Паковать код занятие почти "бесполезное" на данном этапе развития, потому что он занимает и так мало по сравнению с данными, потому что паковщик распаковщик требуют скорость и память и потому что внешние накопители очень жирные.

    2. Виртуальная машина должна работать как типический интерпритатор (где есть 1 указатель на область с состоянием), т.е. исключительно с памятью а не с регистрами потому что неизвестно сколько регистров нужно будет для той или иной задачи и потому что при переключении на другую работу ненужно будет сохранять контекст.

    3. Данный подход как я понимаю заменяет ld a, page_num; out (page_port), a ? По-моему это не серьезная помощь, такая доработка в теории может дать немного более скоростной доступ к данным в других страницах но ничего ощутимого. Вот что реально могло бы помочь тут так это MMU такого плана как в PDP-11 с 22bit физической шиной, НО еще круче чтобы после того как в память загруженны все куски данных и кода оно САМО (без участия OS-a) понимало какие куски физической памяти нужно включить под какие адреса при передаче управления тому или иному куску кода.

  11. #10
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Atari Посмотреть сообщение
    используемые и не используемые команды впервую очередь идут от личного стиля програмиста, от написания компилятора (если говорить о С, etc.), от конкретно решаемой задачи и "тонкостей": размер кода, размер временных данных, размер стека, скорость, "сжимаемость".
    тоже согласен.

    Я не использую команды:

    ld x,x (x - один и тот же регистр)
    ld a,r
    ld r,a
    jr всех видов
    jp p,addr
    jp m,addr
    jp po,addr
    jp pe,addr
    call p,addr
    call m,addr
    call po,addr
    call pe,addr
    ret p
    ret m
    ret po
    ret pe
    rrd
    rld
    lddr
    cpdr
    ldd
    cpd
    ini
    inir
    ind
    indr
    outi
    otir
    outd
    outr
    все команды с регистром IY

    Но не факт, что они не понадобятся.


    А вот такие команды хотелось бы, чтобы были:

    ld bc,(hl)
    ld de,(hl)
    ld hl,(hl)
    ld ix,(hl)
    ld (hl),bc
    ld (hl),de
    ld (hl),hl
    ld (hl),ix
    ld hl,pc (pc = счетчик команд)
    rrd с временем выполнения 4-8 тактов
    rld с временем выполнения 4-8 тактов
    add hl,nn
    adc hl,nn
    sub hl,bc
    sub hl,de
    sub hl,nn
    sbc hl,nn
    jp (hl) (переход на адрес, заданный в памяти по адресу в hl, а не как сейчас)
    jp (ix) (переход на адрес, заданный в памяти по адресу в ix, а не как сейчас)
    djnz bc
    sla hl
    sla bc
    sla de
    sla ix
    srl hl
    srl bc
    srl de
    srl ix
    Последний раз редактировалось Andrew771; 11.04.2012 в 10:51.

Страница 1 из 13 12345 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Основные команды Atari 65
    от Andrey_Ak в разделе Atari
    Ответов: 71
    Последнее: 06.03.2017, 18:27
  2. Недокументированные команды
    от MadCat! в разделе Программирование
    Ответов: 46
    Последнее: 02.02.2011, 13:49
  3. Команды Z80
    от e2e4 в разделе Для начинающих
    Ответов: 11
    Последнее: 02.07.2010, 21:13
  4. Команды Z80
    от Almaz в разделе Программирование
    Ответов: 1
    Последнее: 28.10.2007, 12:50

Ваши права

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