всякой фигнёй. Это просто запомнить, но это плохо для кода. ЛУчше бы было другие регистры использовать
ну хотя бы просто потому, что при вызове любых методов EAX == Self
то есть после вызова любой функции у тебя Self разрушен и его надо снова восстанавливать, перед каждым вызовом следующей функции. Не глупость ли получилась? 😃
разве в дельфи селф передается в ЕАХ? Мне казалось что он передается как первый параметр в фастколл - не помню точно регистр, вроде ЕДХ. И да, я про довольно старые ыверсии аби, они могли с тех времен измениться
думаю, создатели конвенции знали, что делают
если правильно помню номера регистров 8086, то это AX, CX,DX, BX так что первым как раз он родной ну или просто открой дебаггер 😊
я помню что оно совместимо с обычной фастколл функцией, принимающей первым параметром self, и насколько я помню первый аргумент в фастколле кладется не в ЕАХ - но могу ошибаться
читай главу "register convention" https://docwiki.embarcadero.com/RADStudio/Athens/en/Program_Control_(Delphi)#Register_Convention
Так первый аргумент передается через ЕАХ. ОК, в таком случае я мог спутать использование регистра, предназначенного для первого аргумента и регистра, предназначенного для результата - так как это один и тот же регистр
ой да, все кругом умные, только мы тут дураки и критиковать никого нельзя но вот позднее Майкрософт эту глупость исправило: https://learn.microsoft.com/en-us/cpp/build/x64-calling-convention?view=msvc-170
так и не понял где R8 и R9 у х86
тут дело принципа, не надо срать в один и тот же регистр, чтобы тут же тратить код и врем на его восстановление
в таком случае видимо продолбался как раз борланд, который передает селф там же, куда пихать результат?:
и это тоже, я так считаю
Обсуждают сегодня