Код (ASM): addps xmm0,[rdi+rax] movaps [rdi+rax],xmm0 rdi - в стековом фрейме, rax = GdipFillPolygon2(): wtf?
Ahimov, и что из этого? Существенно в данном случае только выравнивание регистра. А он выравнен кратно 16 GdipFillPolygon2 обнуляет RAX, при успешном завершении
"часы "7seg_clock.exe" воркают нормально": погонял под отладчиком в Win10 и Win7 все нормально и с остановом на ОЕР и с приостановкой и запуском (suspend-resume) Clock7.exe - на Win10 под отладчиком без СТОП на ОЕР как 7seg_clock.exe и с приостановкой и запуском (suspend-resume) при запуске с остановом на ОЕР "мирно виснут?" не ПОКАЗЫВАЯ табло что-то с таймерами в ИНИЦИАЛИЗАЦИИ??
vitokop, что виснет, где виснет, почему виснет? Вашего описания недостаточно, для того чтобы это понять. Какой из вариантов виснет? Там их 2. Есть и вариант со стандартным заголовком и исходным кодом. Пользуйте его https://wasm.in/attachments/clock7-zip.9147/ Изъясняйтесь доступней, что ли.. )
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 разное и др
alex_dz, WinXP.x64 SP3 последний вроде. Даже на XP пашет. А некоторые семёрочники тут истерят, умора )) Под 32 бита перепрошить... - -вызовы функции, передачу параметров, вроде и всё. Остальное там flloat - 32 битные, даблов нет PS: есть стрелочные часы, с сообщениями, будильниками, говорящие, с возможностью настроек размера и т.д. под X64 чистый GDI без +. Если нужно, могу выложить без исходников
не парься - сказали-же это комплексная проблема системы чтобы запустить его часы, нужно с нуля ось переустанавливать, и всё будет гуд.
Rbnz Виснет.... Clock7.exe - 1835 бит --- Сообщение объединено, 27 окт 2024 --- Rbnz https://wasm.in/attachments/clock7-zip.9147/ (3 kb - нормальная сборка) НЕ ВИСНЕТ!!!
vitokop, там ещё 3 варианта этого экзешника... Виснет, значит сбоит какая то из функций GDI+ (скорей всего), потому как код построен на успешном их завершении. Где именно сбоит, из ваших объяснений я так и не понял. То что вы показываете - не причина, а следствие. Лечится обычно причина )) Делать обработку ошибок с выводом - файл распухнет. Проще найти и исправить. Пользуйтесь стандартной версией, со стандартным заголовком. Эти пару байт для вас никакой роли не играют. Исходный код доступен, fasm так же. Что вам не хватает ?
Rbnz Clock7.exe - 1835 бит Дико извиняюсь, но сие есть ручная работа без сорцев и fasm здесь бессилен...
vitokop, сорцев не будет. Берите дизассемблер и ручками... Крохотный файл, не по силам? Сочувствую. И почему не работает не знаю. Объяснить вы не в состоянии. У вас и ещё у 1го не работает. У остальных работает
Rbnz, у меня тоже не работает. Проблема в том что ты не обнулил xmm0 в 0, из-за этого GdiPlusStartup фейлится (ты этого не проверяешь), соответственно далее все функции GDI+ фейлятся с ошибкой InvalidParameter (2). Когда система вызывает EP то в xmm0 нули, а вот когда ты его пожал то распаковщик испортил SSE регистры и там не 0. В этом и проблема.
Thetrik, у меня при запуске процесса регистры XMM обнулены, по этому для краткости убрал. Сейчас восстановил, в прилагаемом файле. Если это причина, то эта версия должна работать. Распаковщик НЕ ПОЛЬЗУЕТ xmm регистры. Эта работает?
Да. В распаковщике при ресолве импорта вызываются API (LoadLibrary/GetProcAddress) которые портят волатильные регистры.
Ну и славно, трам, пам, пам )) Мой распаковщик не делает таких вещей... Аж страшно подумать: ресолв импорта. Он ВООБЩЕ не вызывает никаких функции и ничего не ресолвит (чур меня). Только распаковывает. Чисто алгоритмическая функция