Проверить состояние 3 бит одновременно. Как? И как использовать bound?

Тема в разделе "WASM.BEGINNERS", создана пользователем xRom2, 13 июн 2011.

  1. xRom2

    xRom2 New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2011
    Сообщения:
    63
    При работе с сопроцессором мне важно знать результаты операций, которые можно проверить только тремя флагами одновременно, то есть fstsw ax дает мне значение с0,с2,с3 которые можно загрузить в регистр флагов как cf zf и pf. Как проверить их сразу? А как и можно ли использовать команду bound в юзермоде под виной нт/виста/7?
     
  2. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    bound использовать не удастся, разве что в драйвере, но это изврат. Инструкция генерирует прерывание, что бесполезно в User Mode. Насчет флагов -- как смысл загружать их в eflags для проверки, когда можно проверить их в ax и сделать требуемый прыжок? Например, сделать так:

    cmp ax, 0xC0
    jz .label0
    cmp ax, 0xC2
    jz .label1
    cmp ax, 0xC3
    jz .label2
    jmp .not_equal
     
  3. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 1, 8.1.4: Branching and Conditional Moves on Condition Codes.
    (Там даже скрин есть Figure 8-5. Moving the Condition Codes to the EFLAGS Register) :)

    Bound можно использовать - она герерит #BR(#STATUS_ARRAY_BOUNDS_EXCEEDED), это хэндлится в сех.
     
  4. xRom2

    xRom2 New Member

    Публикаций:
    0
    Регистрация:
    25 апр 2011
    Сообщения:
    63
    Понятно. Жаль. Удобная вещь, но алгоритм работы странный: почему не сделать было результат установкой флагов?

    Так не получится, потому что слово состояния включает и другие биты, они могут быть и нулевые и единичные, соответственно простое cmp не проверит корректно, самое умное что мне пока пришло в голову:
    bt ax,c0
    adc bl,0
    shl bl,1
    bt ax,c1
    adc bl,0
    shl bl,1
    bt ax,c2
    adc bl,0
    После чего в bl ,будет то самое нужное мне число однозначно связанное с состоянием всех трех бит, то есть например 101, 110 или там 001. После чего уже при помощи cmp делать переходы. Но блин я представляю сколько это будет в тактах!
     
  5. FLASH300

    FLASH300 New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2008
    Сообщения:
    72
    так чтоль ? :)
    test ax,с0 or с2 or с3
    jnz ...

    че так нельзя ?
    jz ...
    jc ...
    jp ...
     
  6. edemko

    edemko New Member

    Публикаций:
    0
    Регистрация:
    25 ноя 2009
    Сообщения:
    454
    Код (Text):
    1. ;1
    2. fstsw   ax
    3. shaf
    4.  
    5. ;1a
    6. fstsw   ax
    7. and     ah,01000101b
    8.             |   | |c0
    9.             |   |c2
    10.             |c3
    11.  
    12. ;2
    13. jz...
    14. cmp...
     
  7. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    xRom2
    Потому что это Интел: за всю историю сия фирма не создала ни одной вменяемой процессорной архитектуры, абсолютно все -- кривые и извращённые. Что, впрочем, не помешало ей стать лидером с коммерческой точки зрения (что лишний раз доказывает ту истину, что рынок переварит любое дерьмо, если имеется грамотная бизнес-стратегия, маркетинг и прочая).
     
  8. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    ))))) но это больше из за совместимости. intel единственные кто полностью поддерживают совместимость а не урезают ее.
     
  9. gas

    gas New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2010
    Сообщения:
    52
    bound - абсолютно ненужная команда. Я как-то тестировал что быстрее работает bound или пара сравнений и условных переходов - даже при значении операнда заведомо попадающим в указанные границы (чтоб не вызывалось исключение), bound выполняется не быстрее. А уж при непопадании - это тыщи тактов в ядре и ещё скоко-то моего кода обработки исключения.
    А удобства проще достичь макросами - одной строчкой не только проверка на попадание, но и например обрезка или зацикливание (вышло вверх - загрузка нижней границы).
     
  10. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    abcd008
    Ошибаетесь, причём дважды :) Во-первых, у интеловских процессоров нет _полной_ совместимости "снизу вверх", из-за чего некоторые программы, корректно работающие на младших процессорах, не заработают на старших. Другое дело, что для этого надо поизвращаться, но факт остаётся фактом: полной совместимости нет.

    Во-вторых, совместимостью озабочены и другие разработчики процессорных архитектур. Пожалуй, рекордсменом является IBM: прикладные программы, написанные для System/360 (анонсированы в 1964-м, продажи начались, кажется, в 1965-м), с технической точки зрения будут работать и на её современных мэйнфреймах. Системное ПО -- уже нет, поскольку много чего изменилось на уровне системной архитектуры, но, тем не менее... Поддерживают ли современные ИБМовские оси столь древние прикладные программы, я не знаю, но системы для машин, выпускавшихся примерно 10 лет назад, на это ещё были способны.

    Можно вспомнить про спарки, мипсы, АРМы и прочие процессоры, не имеющие отношения к Интелу: там совместимость тоже поддерживается (хотя, наверное, нигде не поддерживается на 100%).

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

    gas
    Она была бы полезной, если б по-человечески была реализована. То же самое касается loop: он жрёт меньше памяти и теоретически должен выполняться быстрей, чем декремент с условным переходом, а вот на практике...
     
  11. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    SII
    Почему то я всегда считал что Intel авторы x86 архитектуры. AMD возникла из интела, когда некоторые архитекторы поняли что можно поиметь.. соответственно была перенесена архитектура(авторы же) и изменена.

    Эта контора всё есчо существует ?

    Я уверен еслибы архитекторам не было требования совместимости(с младшими версиями), то они создали бы совершенно иной камень. Но в данный момент он будет не востребован, ни мне ни вам. Новая архитектура - новые принципы.
     
  12. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Да и неплохо себя чувствует ... Друг в Москве в ней работал одно время.
    http://www.ibm.com/ru/ru/

    Именно совместимость. На i7 я могу поставить MsDOS 1.0 и она будет работать. Так же на нем будут работать 99% прога написанных ранее.

    Пример Itanium это доказывает.
     
  13. gas

    gas New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2010
    Сообщения:
    52
    Недавно мне один товарищ, работает в сбербанке, рассказаывал какой дорогущий софт они покупают у этой IBM, на мой аналогичный вопрос - сказал: да ты што! это нечто вроде теневого мирового правительства в области IT! Неофициальный хозяин вех и вся - всех этих мелкософтов и интелов вместе взятых.
     
  14. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    Не видел интела клеймо на чипах, с которыми работаю каждый день. Это года 90-е были, когда она рулила, а мб и не рулила хз.
     
  15. SilentSnowfall

    SilentSnowfall New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2011
    Сообщения:
    27
    SII,
    Да, но здесь совместимость скорее всего на уровне исходного кода, а у Intel все же бинарная совместимость.
     
  16. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    asmlamo
    это касается за сейчас. но даже и сейчас больше основано на хорошо внушенном предвзятом мнении. посмотрите на архитектуру и асм/маш код того же арма и сравните с субжем. (старые проги можно эмулировать. ведь мирится же както народ с тормозами жабы и нета?)

    тут удивительно другое, вначале когда речь о совместимости не шла, почему так пошли вгору рс-хт с их тормозными процами и конченными цга видеосистемами? ведь были достойные и превосходящие конкуренты. тот же арм существовал с 85 как десктопный проц

    видимо, причина в больших производственных мощностях (это очень важны фактор) и изобилии пиратских копий.
     
  17. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    SilentSnowfall
    У мэйнфреймов ИБМ совместимость именно на уровне машинного кода, а не исходного. Полная совместимость -- и для прикладного, и для системного ПО -- сохранялась до середины 1990-х, т.е. 30 лет; совместимость на уровне прикладного кода -- и позже.

    qqwe
    Можно вспомнить мотороловский 68000 и зилоговский Z8000 -- созданы одновременно с 8086, тоже 16-разрядные, но безоговорочно лучше по архитектуре. Однако в ИБМ для чего-то взяли 8088, а не более подходящий процессор. Понятно, что в ИБМ к ПК относились как к игрушке и не собирались делать существенные вложения (в ту же Систему 360 они вбухали больше денег, чем НАСА в Аполлон, создававшийся в те же годы), но всё же... Возможно, не обошлось без взятки со стороны Интела тем, кто отвечал за создание ПК.
     
  18. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    SilentSnowfall
    разговор про совместимость на уровне сорцов без процессорозависимых и компилерозависимых включений, думаю, вести вообще не стоит. алгос с х86 легко компилится на арм или на авр (если ресурсов хватит).
    бинарной совместимости большей частью хватает на всех поп сериях. но к х86 еще добавляется вынь и мощная реклама и того и другого. а между тем
     
  19. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Ну конкуренты тоже были не фонтан. И графика и процы не многим превосходили рс-хт.Напомню это был 1981 год.

    Основное это относительно низкая цена. Открытая архитектура (потом стали ляпать много клонов)

    Много денег у IBM. Ее маштабы и каналы сбыта. Тогда IBM знал каждый клерк. Это был бренд.
     
  20. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    Меньше.

    Затраты на разработку System/360 составили около 5 млрд долларов США (что соответствует 30 млрд в ценах 2005 г., если сравнивать с 1964). Таким образом, это был второй по стоимости проект НИОКР 1960-х годов после программы «Аполлон».

    Спорное утверждение ...