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

User Tag List

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 33

Тема: Построение компилятора

  1. #21
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    drbars, примерно так:
    NEG получение дополнительного кода Признаки: O D I T S Z A P C
    * * * * * *

    NEG destination

    Логика: destination = -destination; дополнительный код


    Команда NEG вычитает операнд destinstion из 0 и засылает
    результат обратно в destination. Эта команда является реализаци-
    ей выполнения операции нахождения дополнительного кода операнда.
    Операндом может быть как байт, так и слово.


    ----------------------------------------------------------------
    Операнды Такты Обращения Байты Пример
    байты(слова)
    регистр 3 - 2 NEG DL
    память 16(24)+EA 2 2-4 NEG COEFFICIENT
    ----------------------------------------------------------------

    Примечание : Если операнд равен нулю, то признак переноса CF
    сбрасывается (=0); во всех остальных случаях он устанавливается
    (=1). Попытка применения операции NEG к байту -128 или слову
    -32,768 не приводит к изменению операнда, а только устанавливает
    признак переполнения (OF=1).

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

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    миль пардон, но где Вы их раскопали?оО
    вот тут большие залежи: http://exmortis.narod.ru/src_compilers.html

    Цитата Сообщение от drbars Посмотреть сообщение
    так?
    Вроде как NEG делает a=-a, флаг переноса устанавливает только в случае a=0.

    У меня вот так получается:

    Logical:
    a=0 => a=-1, cy=1
    a<>0 => a=0, cy=0

    Logical_Not:
    a=0 => a=0, cy=1
    a<>0 => a=-1, cy=0

    Правильно?

    ---------- Post added at 14:14 ---------- Previous post was at 14:12 ----------

    Цитата Сообщение от denpopov Посмотреть сообщение
    Если операнд равен нулю, то признак переноса CF
    сбрасывается (=0); во всех остальных случаях он устанавливается
    (=1)
    ха.. А на Спектруме по-моему наоборот. Вот я и запутался.

  3. #23
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Andrew771, я взял из описания NortonGuide

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

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    Andrew771, я взял из описания NortonGuide
    я верю
    а на Спеке флаг CY наоборот устанавливается или нет при команде NEG? И как влияют на CY команды ADC и SBC?

  5. #25
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    И как влияют на CY команды ADC и SBC?
    adc A,n A=A+n+CY
    sbc A,n A=A-n-CY

    кажется так..

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

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    adc A,n A=A+n+CY
    sbc A,n A=A-n-CY

    кажется так..
    это да. А после выполнения операций?

    ---------- Post added at 15:00 ---------- Previous post was at 14:59 ----------

    Проверил сейчас работу NEG на эмуляторе. В общем, я неправильно говорил, она также работает, как и на PC:
    CY=1, если A<>0
    CY=0, если A=0

    ---------- Post added at 15:03 ---------- Previous post was at 15:00 ----------

    и тогда будет:
    Logical:
    a=0 => a=-1, cy=0
    a<>0 => a=0, cy=1

    Logical_Not:
    a=0 => a=0, cy=0
    a<>0 => a=-1, cy=1

  7. #27
    Veteran
    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    1,979
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    99 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я вот не вижу смысла тут EAX обнулять.

    Logical
    NEG EAX
    MOV EAX,0
    SBC EAX,EAX

    Мой пример должен правильно работать, без всяких ADC — это грабли.

    ---------- Post added at 23:27 ---------- Previous post was at 23:22 ----------

    и тогда будет:
    Logical:
    a=0 => a=-1, cy=0
    a<>0 => a=0, cy=1

    Код:
    ADD A,#FF
    CCF
    SBC A,A
    
    или 16 bit версия
    LD HL,число
    LD DE,#FFFF
    ADD HL,DE
    CCF
    SBC HL,HL
    Logical_Not:
    a=0 => a=0, cy=0
    a<>0 => a=-1, cy=1

    Код:
    ADD A,#FF
    SBC A,A
    
    или 16 bit версия
    LD HL,число
    LD DE,#FFFF
    ADD HL,DE
    SBC HL,HL
    Последний раз редактировалось drbars; 30.04.2014 в 20:30.

  8. #28
    Master
    Регистрация
    18.01.2005
    Адрес
    Ростов-на-Дону
    Сообщений
    577
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    С точностью до наоборот

    Logical (eax=eax?-1:0)
    Logical Not (eax=eax?0:-1)

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

    По умолчанию

    Где можно почитать про современные алгоритмы кодогенерации (с оптимизацией)?

  10. #30
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    alone, я тебе говорил где посмотреть про компиляторы.

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Interference:построение таблицы
    от goblinish в разделе Программирование
    Ответов: 6
    Последнее: 17.11.2012, 13:43
  2. Кодогенерация SDCC: пожелания об улучшении компилятора
    от Oleg N. Cher в разделе Программирование
    Ответов: 99
    Последнее: 10.11.2012, 16:05
  3. 3D-View - построение 3D перспективы
    от Andrew771 в разделе Софт
    Ответов: 4
    Последнее: 02.11.2012, 11:46
  4. Конструктор для компилятора с Си
    от Raydac в разделе Программирование
    Ответов: 0
    Последнее: 21.12.2009, 23:14

Ваши права

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