Помогите, пожалуйста, со следующими вопросами: 1) Каким образом определить перенос и переполнение при арифметических операциях. 2) Объясните поподробнее, что такое control и data speculation. Спасибо.
AssemblerIA64 1) Перенос -- это когда результат беззнаковой операции не помещается в отведённое число разрядов. Например, если складываем на 4-разрядной машине целые числа 1 и 15, считая их числами без знака: 0001 1111 ---- 0000 и пошёл перенос в старший разряд. Переполнение -- это когда результат знаковой операции не помещается в отведённое число разрядов. Например, если мы складываем на той же самой 4-разрядной машине числа -1 и -8: 1111 (это -1) 1000 (это -8) ---- 0111 (получаем +7) 2) Хм... предполагаю, что это спекулятивная предварительная выборка кода и данных (т.е. основанная на предположении, что именно эта ветвь кода при переходе и эти данные потребуются для дальнейших операций). Хотя, чтобы сказать точно, нужен полный контекст (как минимум предложение, а лучше абзац или весь подраздел).
Проблема как раз в том, что я ничего не нашёл. Смотрел в 1-ом томике про арифметические инструкции - ничего. В 3-ем (справочник по инструкциям) - тоже нема.
Нету. Если нужно отслеживать смену знака то делайте это вручную. Уже не могу припомнить точно, но кажется я видел где-то однотактный вариант одновременного вычисления суммы и знакоизменения. Пример ваш покажите, может удастся уменьшить время, иначе разговор бессмысленный. Объясните поподробнее, что такое control и data speculation вопрос: а чем не устраивает изложение в первом томе мануала, с примерами? У вас же вроде есть эмулятор, можно опробовать. Для контрол спекьюлейшна требуется принципиальное дозволение системы на такие штучки (должны быть установлены биты системных регистров разрешающие отложенное исключение), а дейта спекьюлейшн вполне реализуем на уровне пользователя.
Примера нет. Меня просто заинтересовало, существуют эти флаги или нет. - Со speculation'ами я уже, кажется, разобрался. - Эмулятор есть, а вот ассемблера - нет. У меня с Linux'ом проблемы, но надеюсь, завтра разберусь.
а вот ассемблера - нет да ну! как это нет? gas, ias - оба бесплатные и оба кроссплатформенные. Даже виндовый ias.exe умеет делать как ELF так и PE. Кроме того, ias поставляется в составе бесплатной линуксовой версии icc. Наконец, по всем вопросам есть и специализированная тусовка - сайт сообщества gelato. Раньше еще был форум на сайте HP по разработке на ia64 туда нередко заходили такие авторитеты как Стройян и Мосбергер, но пару лет назад форум пропал куда-то.
Valery, спасибо. Будем осиливать документацию к GCC. Для меня это совершенно незнакомая вещь, и Linux поставил неделю назад. P.S. Не седчайте на меня. Признаю, мануалы не дочитал. Времени мало.
n0name Да, извиняюсь, чет подумал что имелось ввиду x86-64 (собственно ассоциация IA64 - Intel Architecture 64 - вот и подумалось то, что ближе всего по разделу) Написали бы Itanium чтоли...
Скачал Intel C++ Compiler для Linux. Пакет для IA-64 установить не удалось - пишет, что архитектура не та. Поставил пакет для Intel 64. Но там нету IAS. С ассемблером из GCC ничего не понятно - в документации есть только описание опций, про синтаксис ничего не написано... В интернете ничего толкового больше нет. Примеров кода, да каких-нибудь упражнений нема (а без них язык не выучить). Совсем не знаю, что делать... Помогите, пожалуйста! _____________________________________________________ Если я не прав, то пусть меня поправят...
AssemblerIA64 Почему нет? Я же уже кидал ссылку, там как минимум 3 эмулятора IA-64 под виндой. QEMU, например.
Хорошо, давайте разберёмся... Найдём эмуляторы, в которых в качестве гостевого CPU выступает Itanium: 1) Integrity Virtual Machines 2) Simics 3) Virtuozzo Первый работает только на самом Itanium'е. Второй поставил, но на мой взгляд, он какой-то глючный (скрипт, который поставлялся с ним для Itanium'a с ошибками; команды, описанные в документации, не работают) и убогий. Третий тоже установил, но по-моему он будет эмулировать ту машину, на которой он работает. В итоге, из них всех мне приглянулся Ski, но выясняется, что под Linux нет ias. P.S. Guest CPU: x86, AMD64, ARM, SPARC 32 and 64, PowerPC, MIPS.