tag:blogger.com,1999:blog-1702873441071265539.post992108062019394069..comments2023-05-29T19:02:20.570+03:00Comments on Блог GunSmoker-а: Задачка №21GunSmokerhttp://www.blogger.com/profile/15611696588191431330noreply@blogger.comBlogger7125tag:blogger.com,1999:blog-1702873441071265539.post-17966286081866604192016-10-16T01:02:36.380+03:002016-10-16T01:02:36.380+03:00не глядя в ответ, меня смущает импользование коман...не глядя в ответ, меня смущает импользование команды mov вместо mvi, если eax регистр общего назначения, то как можно обращаться кнему как к регистру ввода вывода?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-25388120098530495372016-02-16T14:09:19.727+03:002016-02-16T14:09:19.727+03:00Chaa прав.
Более того это даже написано в документ...Chaa прав.<br />Более того это даже написано в документации http://docwiki.embarcadero.com/RADStudio/Seattle/en/PC-Mapped_Exceptions#Unwinding_Assembly_Routines<br />Если в двух словах, работаете с исключениями в asm - значит должны гарантировать stack frames. А в ReadVMWareFlags ими и не пахнет.<br />И после возникшего `Privileged instruction` регистры восстановятся не правильно.Anonymoushttps://www.blogger.com/profile/11005615715851119004noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-55084869821903776642016-02-15T07:45:47.834+03:002016-02-15T07:45:47.834+03:00Чтобы компилятор сгенерировал информацию о раскрут...Чтобы компилятор сгенерировал информацию о раскрутке стэка, в начале функции нужны магические инструкции:<br />push ebp<br />mov ebp, espChaahttps://www.blogger.com/profile/14387721107858333063noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-37333851435975902042016-02-14T16:21:42.340+03:002016-02-14T16:21:42.340+03:00Вообще-то вопрос. Я не знаю, как там с этим делом ...Вообще-то вопрос. Я не знаю, как там с этим делом у Delpi, а в C++ нет определять исключительно ассемблерные функции, можно только либо использовать вставки внутри "нормальных" функций, либо подлинковывать такие функции извне. И в обоих случаях ebx при броске останется не восстановленным. Подозреваю даже, что и при корректном SEH никто его не восстановит, но в Delphi могут быть свои правила.Anonymoushttps://www.blogger.com/profile/00085796548321458688noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-8861477938570521492016-02-14T07:47:48.157+03:002016-02-14T07:47:48.157+03:00Это вопрос или ответ? :))Это вопрос или ответ? :))GunSmokerhttps://www.blogger.com/profile/15611696588191431330noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-12616093277289964162016-02-14T07:32:28.243+03:002016-02-14T07:32:28.243+03:00А для assembler-функций компилятор сделает коррект...А для assembler-функций компилятор сделает корректный SEH-кадр?Anonymoushttps://www.blogger.com/profile/00085796548321458688noreply@blogger.comtag:blogger.com,1999:blog-1702873441071265539.post-75543909898678679832016-02-13T12:56:56.086+03:002016-02-13T12:56:56.086+03:00Может, не баг, но для гарантии я бы добавил
const
...Может, не баг, но для гарантии я бы добавил<br />const<br /> CVMWARE_FLAG: cardinal = $564D5868;husernoreply@blogger.com