О переполнении (overflow) в регистрах.

Тема в разделе "WASM.BEGINNERS", создана пользователем mr.en3mY, 4 янв 2018.

  1. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    см. выше :)
     
    unc1e нравится это.
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    unc1e,

    Не заметил. Это сути не меняет.

    IA v1 basic architecture:

    У гугла можите спросить имплементацию.
     
  3. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    Этого все равно мало ))))
     
  4. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Складываем 2 64-битных числа (хранятся в парах регистров edx:eax и ecx:ebx):
    Код (Text):
    1.  
    2. ; Инициализируем значения
    3. xor edx, edx
    4. xor ecx, ecx
    5. mov eax, 4000000000
    6. mov ebx, 1000000000
    7.  
    8. ; Собственно, складываем
    9. add eax, ebx
    10. adc edx, ecx
    11.  
    Таким образом можно складывать числа и бОльшей разрядности.

    С умножением и делением, конечно, придётся помучаться, но в итоге результат всё равно можно получить определённый.
     
    mr.en3mY нравится это.
  5. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    FPU подразумевает потерю точности при увеличении порядка числа. В определённых задачах это не годится, и следует обходить FPU стороной.
     
  6. HESH

    HESH Active Member

    Публикаций:
    2
    Регистрация:
    20 мар 2008
    Сообщения:
    143
    О каком порядке речь ? :)

    Что за задачи такие ? Даже на ум ничего не приходит..
     
  7. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    В четырехбайтном флоате больше 232 разных значений не сохранишь, хотя диапазон 1,4·10−45..3,4×10+38
     
  8. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Короткий пример для float: 1e+00 + 1e-10 = 1e+00. Читайте статью о представлении вещественных чисел стандарта IEEE, даже здесь в статьях было.

    Криптография, цифровая обработка сигналов, любая задача в которой не нужна потеря точности (как приведено выше).
     
  9. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Более того, там для +-inf и +-nan целые диапазоны задействованы.
     
  10. mr.en3mY

    mr.en3mY New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2017
    Сообщения:
    16
    Нет, не троллинг, я только начинаю постигать эти знания вот и спросил по мере обучения, возможно у многих кто только начинал появлялись такие вопросы о хранении большИх чисел в рамках x86, в рамках 32-х битных регистров.

    Всем огромное спасибо кто принял участие в обсуждении этого пусть и банального но немаловажного вопроса.
    А так же всех с Наступившим 2018:angel: