Экстраполяция.

Тема в разделе "WASM.A&O", создана пользователем Indy_, 22 фев 2025.

  1. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    431
    В смысле с кодом что-то не так?
    Или вы намекаете на, то какой я молодец, что исправил все ошибки Дипсика? :)
     
  2. Research

    Research Active Member

    Публикаций:
    1
    Регистрация:
    6 янв 2024
    Сообщения:
    475
    Я о том что это нормальная реакция опытного программиста на сложный код.
     
    Последнее редактирование: 26 апр 2026 в 20:36
  3. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    431
    Research, вот шутки шутками, но мне интересна оценка этого кода. Вдруг правда у меня там какие-нибудь недочеты и просчеты, но я вроде все проверил и в том числе под отладчиком. А господину Ахимову я не доверяю - у него на всё ПРЕДВЗЯТОЕ МНЕНИЕ И ВЗГЛЯД на почти любые вещи, ну кроме тех, которые он сам программировал на MASM 32 под Windows XP. :)

    P.S. А вообще, код для NASM x64 делался с учебными целями, поэтому хотелось бы знать про недостатки и недочеты. Вдруг я правда где-то "накосячил". :)
     
  4. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    613
    GRAFik,

    Ты поудалял оберку апи, сделав приложение зависящим от фазы луны. Вызвать анстаб это вся проделанная работа, кури матчасть!
     
  5. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    431
    Я помню в коде для FASM64 Микл делал в своём коде, то же самое - убирал принудительно - последствия макроса. И пояснял это тем, что от этого будет только лучше. В том числе и для производительности кода, т.к. уменьшается кол-во выполняемых инструкций. Вы и его можете покритиковать. Нужно будет поискать тот код на Сайбер (или Кибер) форуме, когда он был там модератором.
     
  6. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    613
    GRAFik,

    Никак на профиль гуя эти инструкции не влияют, обнаружить их наличие по таймингу физически невозможно, в общем конечно, только если кусок вырезать и профильнуть. Это не мсдос :preved:
     
  7. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    431
    Ahimov, вы только поймите меня правильно. Я не хочу тут умничать и возвышать себя из-за кода для NASM x64. Ничего там сверхсложного нет. Ну возьмите исправьте, скомпилируйте и ткните носом - я буду только рад - если это будет правильно и объективно. В противном случае - это пустопорожний трёп.
     
  8. Research

    Research Active Member

    Публикаций:
    1
    Регистрация:
    6 янв 2024
    Сообщения:
    475
    +
     
  9. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    431
    Специально попросил одного специалиста, который хорошо знает NASM x64 проконсультировать по поводу замечаний Ахимова. Вот что он ответил, после проверки моего кода:


    Вы можете смело ответить ему следующее:

    "Спасибо за замечание про Shadow Space, правило действительно строгое! Однако в данном коде стек не портится, потому что Shadow Space выделяется не перед каждым call, а один раз в прологе функции.

    В WinMain инструкция sub rsp, 60h резервирует 96 байт. Нижние 32 байта по адресам от [rsp] до [rsp+1Fh] как раз и выступают в роли постоянного Shadow Space для ВСЕХ вызовов внутри функции, а область выше [rsp+20h] используется для передачи аргументов через стек (например, для CreateWindowExA). Это стандартная оптимизация, которую делает компилятор MSVC, она исключает лишние операции add/sub rsp и сохраняет строгое выравнивание стека по 16 байтам."

    Так что не переживайте, код надежен, как швейцарские часы, дисциплина x64 соблюдена на 100%, и никакого риска порчи стека там нет.