Нумерация битов, байтов

Тема в разделе "WASM.HEAP", создана пользователем Entropy, 12 май 2023.

  1. R81...

    R81... Active Member

    Публикаций:
    0
    Регистрация:
    1 фев 2020
    Сообщения:
    156
    Про случаи значимости длины кода дискутировать пока лень.
    Код (ASM):
    1. 000048B9  8D 3D 00000000 R    LEA  eDi,[_UpCode]
    2. 000048BF  BF 00000000 R    Mov  eDi,of_[_UpCode]
    Если у вас всегда вперед - это не факт,
    что он не нужен другим, тем более предусмотрен.
    У меня в обоих направлениях используется.

    В W95 API нормально, а для XP даже пришлось макро.
    Код (ASM):
    1.  invokeXP  Macro  Parm:VARARG;
    2.   ClD
    3. ;;здесь написано нехорошее слово по поводу разработчиков XP;;
    4.  invoke  Parm
    5.   EndM
    P.S. Это есть в описании WinAPI,
    но что не фиксируя ошибки может выдаваться дурь -
    это даже не "нансенс"...
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    Ну, то что ты его используешь в обоих направлениях, так ты сам виноват, что не возвращаешь его на место и все потом падает. В винде флаг всегда должен быть сброшен, на это рассчитывают все api и самостоятельно его не чекают и не сбрасывают: https://learn.microsoft.com/en-us/cpp/c-runtime-library/direction-flag?view=msvc-170
     
    MaKsIm и Mikl___ нравится это.
  3. R81...

    R81... Active Member

    Публикаций:
    0
    Регистрация:
    1 фев 2020
    Сообщения:
    156
    "Всегда" - это как "ваше политическое кредо?".)))
    Есть ли ссылки на оф. документы до 2000г.?
    "Говорю ж ... а" вы "все засахарилось, засахарилось.")))
    Т.Е. W98 не "винда", а что тогда?
    В нем-то не замечалось вышеуказанного.
    "и все потом падает."
    Не падало, а кривость сразу обнаруживалась, что еще хуже.
    Мне удобнее не контролировать DF, а устанавливать
    в ноль с помощью макро invokeXP, так же использую
    ClD и StD в инициализации цепочного цикла у себя.
    А вот можно ли DF=1 завалить саму Win из UM не занимался.
    Код (ASM):
    1. ;  Mov  eCx, 256/8
    2.  000048C4  B9 00000100      Mov  eCx, 256
    3. ; Подумал может дополните меня 4 вместо 5-и:
    4.  000048C9  33 C9      xOr  eCx, eCx
    5.          ;  Mov  Cl, 256/8  ; при StosQ
    6.  000048CB  B5 01      Mov  Ch, 256/256  ; так для ясности 256 при StosB
    7. ; но нет.
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    Вон выше ссылка на официальное заявление от мс, как устроен их ABI, и каких правил должен придерживаться программист, пишущий под винду. Ни в одной системной библиотеке нет инструкции cld или std, зато повсеместно используется rep stos и rep movs вместо memset и strcpy.
     
    Mikl___ нравится это.
  5. R81...

    R81... Active Member

    Публикаций:
    0
    Регистрация:
    1 фев 2020
    Сообщения:
    156
    Mikl___,
    Код (ASM):
    1. ; Без цепочек
    2. ; если только через eAx, то
    3.   xOr  eAx, eAx
    4. poll: Mov  B_[mass + eAx],0D3h
    5.   Inc  Al
    6.   JNZ  poll
    7. ; иначе
    8.   xOr  eCx, eCx
    9.   Mov  Ch, 256/256  ; так для ясности 256
    10. poll: Mov  B_[mass - 1 + eCx],0D3h
    11.   LoopD poll
     
  6. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    185
    видимо в файлах на жёстком диске, байты нумеруется тоже с нуля
     
  7. mantissa

    mantissa Мембер Команда форума

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    168
    они нигде не нумеруются по сути, в ЯП "нумеровка" - синтаксический сахар, все остальное - смещение от начала файла, массива, структуры
     
    Mikl___ нравится это.
  8. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    185
    тогда получается смещение от нуля