64-битные системы

Discussion in 'Машинное отделение' started by krey, 30 Oct 2007.

  1. TopicStarter Overlay

    krey Михаил Кройтор

    • Команда форума
    Member Since:
    10.04.2006
    Message Count:
    3.709
    Likes Received:
    50
    Репутация:
    1
    Location:
    Кишинев
    Оффлайн
    читаю сейчас реалкодинг (ищу вдохновение). в связи с тем что у меня дома 64-бит машина, решил почитать статьи на данную тему. заинтересовала следующая статья: о проблемах перехода на 64 бит. еще не дочитал, но уже есть всякие глупые идеи. например следующая: насколько рационально представлять доску a виде 12 целых чисел? первое число битами показывает нахождение белых пешек, второе - белых коней и т.д. конечно, это представление можно уменьшить до 8 целых чисел... в современном шахматном программировании делается так?
  2. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    30.09.2006
    Message Count:
    3.546
    Likes Received:
    1.265
    Репутация:
    36
    Location:
    Киев
    Оффлайн
    Да, это называется bitboards. Только еще вводят специальные повернутые битовые маски для того, чтобы по таблицам сразу получать все хода по вертикали и диагоналям.
  3. TopicStarter Overlay

    krey Михаил Кройтор

    • Команда форума
    Member Since:
    10.04.2006
    Message Count:
    3.709
    Likes Received:
    50
    Репутация:
    1
    Location:
    Кишинев
    Оффлайн
    а насколько просто перенести эти битборды из 32 бит в 64
  4. WinPooh В.М.

    • Команда форума
    Member Since:
    13.02.2006
    Message Count:
    9.492
    Likes Received:
    3.122
    Репутация:
    95
    Location:
    Москва
    Оффлайн
    Автоматически, компилятор всё сам сделает.
    В 32-битном режиме 64-битные целые только эмулируются, насколько я знаю. Реальные арифметические операции с ними медленнее, чем с 32-битными - но это единственная разница с точки зрения языков уровнем выше асма.
  5. WinPooh В.М.

    • Команда форума
    Member Since:
    13.02.2006
    Message Count:
    9.492
    Likes Received:
    3.122
    Репутация:
    95
    Location:
    Москва
    Оффлайн
  6. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    30.09.2006
    Message Count:
    3.546
    Likes Received:
    1.265
    Репутация:
    36
    Location:
    Киев
    Оффлайн
    Под 32 бита есть несколько 64-битных операций, но они обычно связаны с регистровой парой (т. е. пара 32-битных регистров EAX:EDX рассматривается как 64-битный).

    А вообще при программировании указываешь 64-битный тип (UINT64 или Int64), а дальше это забота компилятора.
  7. TopicStarter Overlay

    krey Михаил Кройтор

    • Команда форума
    Member Since:
    10.04.2006
    Message Count:
    3.709
    Likes Received:
    50
    Репутация:
    1
    Location:
    Кишинев
    Оффлайн
    другой вопрос - а не может ли быть каких-либо специфичных проблем или решений, не связанных с представлениями доски?
  8. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    24.05.2006
    Message Count:
    1.084
    Likes Received:
    38
    Репутация:
    6
    Оффлайн
    64-битным числом еще обозначается хэш-ключ позиции. ну и битборды (если они есть в проге).
    для всего остального 32-бит хватает (константы, переменные итд)
  9. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    30.09.2006
    Message Count:
    3.546
    Likes Received:
    1.265
    Репутация:
    36
    Location:
    Киев
    Оффлайн
    Не совсем понятна суть вопроса.
  10. WinPooh В.М.

    • Команда форума
    Member Since:
    13.02.2006
    Message Count:
    9.492
    Likes Received:
    3.122
    Репутация:
    95
    Location:
    Москва
    Оффлайн
    http://rsdn.ru/article/cpp/XXtraps64bit.xml

    20 ловушек переноса Си++ - кода на 64-битную платформу
    Автор: Андрей Карпов
    Источник: RSDN Magazine #1-2007
    Опубликовано: 25.04.2007
    Исправлено: 28.07.2007
    Версия текста: 1.0
    1. Отключенные предупреждения
    2. Использование функций с переменным количеством аргументов
    3. Магические константы
    4. Хранение целочисленных значений в double
    5. Операции сдвига
    6. Упаковка указателей
    7. Memsize-типы в объединениях
    8. Изменение типа массива
    9. Виртуальные функции с аргументами типа memsize
    10. Сериализация и обмен данными
    11. Битовые поля
    12. Адресная арифметика с указателями
    13. Индексация массивов
    14. Смешанное использование простых целочисленных типов и memsize-типов
    16. Неявные приведения типов при использовании функций
    17. Перегруженные функции
    19. Выравнивание данных
    20. Явные приведения типов
    Диагностика ошибок
    Юнит-тестирование
    Просмотр кода
    Встроенные средства компиляторов
    Статические анализаторы
    Заключение
    Ресурсы
  11. TopicStarter Overlay

    krey Михаил Кройтор

    • Команда форума
    Member Since:
    10.04.2006
    Message Count:
    3.709
    Likes Received:
    50
    Репутация:
    1
    Location:
    Кишинев
    Оффлайн
    именно про побитовые операции (сдвиг), константы и проблемы с типами.
    например, разрядность платформы растёт, с ней размер int, а другие типы данных?
    одна из распространённых проблем 32 разрядов:
    [c]long int a = 5000*5000;[/c]
    в 64 бит снимается (точнее, планка растёт). но уверен, что должны быть и другие кочки.
  12. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Member Since:
    30.09.2006
    Message Count:
    3.546
    Likes Received:
    1.265
    Репутация:
    36
    Location:
    Киев
    Оффлайн
    Ну... WinPooh кое-что перечислил, возможно найдется и что-то еще. Проблемы с портированием присутствуют. Но, в большей части случаев, не смертельные.

Share This Page