Часы

Тема в разделе "WASM.BEGINNERS", создана пользователем Mikl___, 9 фев 2022.

  1. Rbnz

    Rbnz New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2020
    Сообщения:
    27
    vitokop, для чего эта простыня? Удобней было бы, если бы она была под спойлером
     
  2. Ahimov

    Ahimov New Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    13
    Код (ASM):
    1. addps   xmm0,[rdi+rax]
    2. movaps  [rdi+rax],xmm0
    rdi - в стековом фрейме, rax = GdipFillPolygon2(): wtf?
     
  3. Rbnz

    Rbnz New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2020
    Сообщения:
    27
    Ahimov, и что из этого?
    Существенно в данном случае только выравнивание регистра. А он выравнен кратно 16

    GdipFillPolygon2 обнуляет RAX, при успешном завершении
     
  4. vitokop

    vitokop Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    48
    "часы "7seg_clock.exe" воркают нормально":
    погонял под отладчиком в Win10 и Win7
    все нормально и с остановом на ОЕР
    и с приостановкой и запуском (suspend-resume)

    Clock7.exe - на Win10
    под отладчиком без СТОП на ОЕР как 7seg_clock.exe
    и с приостановкой и запуском (suspend-resume)

    при запуске с остановом на ОЕР "мирно виснут?" не ПОКАЗЫВАЯ табло
    что-то с таймерами в ИНИЦИАЛИЗАЦИИ??
     
  5. Rbnz

    Rbnz New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2020
    Сообщения:
    27
    vitokop, что виснет, где виснет, почему виснет? Вашего описания недостаточно, для того чтобы это понять. Какой из вариантов виснет? Там их 2.
    Есть и вариант со стандартным заголовком и исходным кодом. Пользуйте его
    https://wasm.in/attachments/clock7-zip.9147/
    Изъясняйтесь доступней, что ли.. )
     
  6. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    450
    Rbnz поднял еще таки WinXP SP2 X64 (офигеть, были ж времена)
    попроовал собрать на Fasm-e

    по непонятной причине он не знает такого дефайна -
    undefined SWP_NOSENDCHANGING

    вобщем собралось, заменил чутка в шапке -

    format PE64 GUI 5.0 at 140000000h
    include "win64a.inc"

    SWP_NOSENDCHANGING equ 0x0400

    ...


    https://prnt.sc/etEjZh6bc8ON

    осталось портировать на 32 бита, чет-та захотелось
    но по ходу не так-то и просто :)
    ABI разное и др
     
    Rbnz нравится это.
  7. Rbnz

    Rbnz New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2020
    Сообщения:
    27
    alex_dz, WinXP.x64 SP3 последний вроде.
    Даже на XP пашет. А некоторые семёрочники тут истерят, умора ))
    Под 32 бита перепрошить... - -вызовы функции, передачу параметров, вроде и всё. Остальное там flloat - 32 битные, даблов нет

    PS: есть стрелочные часы, с сообщениями, будильниками, говорящие, с возможностью настроек размера и т.д. под X64 чистый GDI без +.
    Если нужно, могу выложить без исходников
     
    Последнее редактирование: 27 окт 2024
    alex_dz нравится это.
  8. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    450
    Кто-то еще зажегся идеей портануть на 32 бита, камрады?
     
  9. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    189
    не парься - сказали-же это комплексная проблема системы
    чтобы запустить его часы, нужно с нуля ось переустанавливать, и всё будет гуд.
     
  10. vitokop

    vitokop Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    48
    Rbnz
    Виснет....
    Clock7.exe - 1835 бит
    --- Сообщение объединено, 27 окт 2024 ---
    Rbnz
    https://wasm.in/attachments/clock7-zip.9147/ (3 kb - нормальная сборка)
    НЕ ВИСНЕТ!!!
     
  11. Rbnz

    Rbnz New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2020
    Сообщения:
    27
    vitokop, там ещё 3 варианта этого экзешника...
    Виснет, значит сбоит какая то из функций GDI+ (скорей всего), потому как код построен на успешном их завершении. Где именно сбоит, из ваших объяснений я так и не понял.
    То что вы показываете - не причина, а следствие. Лечится обычно причина ))
    Делать обработку ошибок с выводом - файл распухнет. Проще найти и исправить. Пользуйтесь стандартной версией, со стандартным заголовком. Эти пару байт для вас никакой роли не играют. Исходный код доступен, fasm так же. Что вам не хватает ?
     
    Последнее редактирование: 27 окт 2024
  12. vitokop

    vitokop Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    48
    Rbnz
    Clock7.exe - 1835 бит
    Дико извиняюсь, но сие есть ручная работа без сорцев и fasm здесь бессилен...
     
  13. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    450
    не бит, а байт :)
     
  14. Rbnz

    Rbnz New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2020
    Сообщения:
    27
    vitokop, сорцев не будет. Берите дизассемблер и ручками...
    Крохотный файл, не по силам? Сочувствую.
    И почему не работает не знаю. Объяснить вы не в состоянии.
    У вас и ещё у 1го не работает. У остальных работает
     
  15. MaKsIm

    MaKsIm Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    96
    У него скачалась только 1 часть из 8 (каждый 8ой бит).:derisive:
     
  16. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Rbnz, у меня тоже не работает. Проблема в том что ты не обнулил xmm0 в 0, из-за этого GdiPlusStartup фейлится (ты этого не проверяешь), соответственно далее все функции GDI+ фейлятся с ошибкой InvalidParameter (2). Когда система вызывает EP то в xmm0 нули, а вот когда ты его пожал то распаковщик испортил SSE регистры и там не 0. В этом и проблема.
     
  17. Rbnz

    Rbnz New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2020
    Сообщения:
    27
    Thetrik, у меня при запуске процесса регистры XMM обнулены, по этому для краткости убрал. Сейчас восстановил, в прилагаемом файле.
    Если это причина, то эта версия должна работать.
    Распаковщик НЕ ПОЛЬЗУЕТ xmm регистры.

    Эта работает?
     

    Вложения:

  18. Research

    Research Active Member

    Публикаций:
    1
    Регистрация:
    6 янв 2024
    Сообщения:
    134
    [​IMG]
     
    Последнее редактирование: 27 окт 2024
    alex_dz нравится это.
  19. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Да.

    В распаковщике при ресолве импорта вызываются API (LoadLibrary/GetProcAddress) которые портят волатильные регистры.
     
    Rbnz нравится это.
  20. Rbnz

    Rbnz New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2020
    Сообщения:
    27
    Ну и славно, трам, пам, пам ))

    Мой распаковщик не делает таких вещей... Аж страшно подумать: ресолв импорта.
    Он ВООБЩЕ не вызывает никаких функции и ничего не ресолвит (чур меня).
    Только распаковывает. Чисто алгоритмическая функция