Часы

Discussion in 'WASM.BEGINNERS' started by Mikl___, Feb 9, 2022.

  1. Rbnz

    Rbnz Member

    Blog Posts:
    0
    Joined:
    Nov 30, 2020
    Messages:
    30
    vitokop, для чего эта простыня? Удобней было бы, если бы она была под спойлером
     
  2. Ahimov

    Ahimov Active Member

    Blog Posts:
    0
    Joined:
    Oct 14, 2024
    Messages:
    137
    Code (ASM):
    1. addps   xmm0,[rdi+rax]
    2. movaps  [rdi+rax],xmm0
    rdi - в стековом фрейме, rax = GdipFillPolygon2(): wtf?
     
  3. Rbnz

    Rbnz Member

    Blog Posts:
    0
    Joined:
    Nov 30, 2020
    Messages:
    30
    Ahimov, и что из этого?
    Существенно в данном случае только выравнивание регистра. А он выравнен кратно 16

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

    vitokop Member

    Blog Posts:
    0
    Joined:
    May 20, 2006
    Messages:
    48
    "часы "7seg_clock.exe" воркают нормально":
    погонял под отладчиком в Win10 и Win7
    все нормально и с остановом на ОЕР
    и с приостановкой и запуском (suspend-resume)

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

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

    Rbnz Member

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

    alex_dz Active Member

    Blog Posts:
    0
    Joined:
    Jul 26, 2006
    Messages:
    530
    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 likes this.
  7. Rbnz

    Rbnz Member

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

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

    alex_dz Active Member

    Blog Posts:
    0
    Joined:
    Jul 26, 2006
    Messages:
    530
    Кто-то еще зажегся идеей портануть на 32 бита, камрады?
     
  9. Marylin

    Marylin Active Member

    Blog Posts:
    0
    Joined:
    Feb 17, 2023
    Messages:
    268
    не парься - сказали-же это комплексная проблема системы
    чтобы запустить его часы, нужно с нуля ось переустанавливать, и всё будет гуд.
     
  10. vitokop

    vitokop Member

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

    Rbnz Member

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

    vitokop Member

    Blog Posts:
    0
    Joined:
    May 20, 2006
    Messages:
    48
    Rbnz
    Clock7.exe - 1835 бит
    Дико извиняюсь, но сие есть ручная работа без сорцев и fasm здесь бессилен...
     
  13. alex_dz

    alex_dz Active Member

    Blog Posts:
    0
    Joined:
    Jul 26, 2006
    Messages:
    530
    не бит, а байт :)
     
  14. Rbnz

    Rbnz Member

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

    MaKsIm Active Member

    Blog Posts:
    0
    Joined:
    Feb 11, 2008
    Messages:
    151
    У него скачалась только 1 часть из 8 (каждый 8ой бит).:derisive:
     
  16. Thetrik

    Thetrik UA6527P

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

    Rbnz Member

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

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

    Attached Files:

  18. Research

    Research Active Member

    Blog Posts:
    1
    Joined:
    Jan 6, 2024
    Messages:
    191
    [​IMG]
     
    Last edited: Oct 27, 2024
    alex_dz likes this.
  19. Thetrik

    Thetrik UA6527P

    Blog Posts:
    0
    Joined:
    Jul 25, 2011
    Messages:
    887
    Да.

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

    Rbnz Member

    Blog Posts:
    0
    Joined:
    Nov 30, 2020
    Messages:
    30
    Ну и славно, трам, пам, пам ))

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