169 похожих чатов

Я, кстати, считаю что это плохая идея, перегружать нулевой регистр

всякой фигнёй. Это просто запомнить, но это плохо для кода. ЛУчше бы было другие регистры использовать

ну хотя бы просто потому, что при вызове любых методов EAX == Self

то есть после вызова любой функции у тебя Self разрушен и его надо снова восстанавливать, перед каждым вызовом следующей функции. Не глупость ли получилась? 😃

11 ответов

9 просмотров

разве в дельфи селф передается в ЕАХ? Мне казалось что он передается как первый параметр в фастколл - не помню точно регистр, вроде ЕДХ. И да, я про довольно старые ыверсии аби, они могли с тех времен измениться

думаю, создатели конвенции знали, что делают

Arioch-The Автор вопроса
Vga
разве в дельфи селф передается в ЕАХ? Мне казалось...

если правильно помню номера регистров 8086, то это AX, CX,DX, BX так что первым как раз он родной ну или просто открой дебаггер 😊

Arioch The
если правильно помню номера регистров 8086, то это...

я помню что оно совместимо с обычной фастколл функцией, принимающей первым параметром self, и насколько я помню первый аргумент в фастколле кладется не в ЕАХ - но могу ошибаться

Arioch-The Автор вопроса
Vga
я помню что оно совместимо с обычной фастколл функ...

читай главу "register convention" https://docwiki.embarcadero.com/RADStudio/Athens/en/Program_Control_(Delphi)#Register_Convention

Arioch The
читай главу "register convention" https://docwiki....

Так первый аргумент передается через ЕАХ. ОК, в таком случае я мог спутать использование регистра, предназначенного для первого аргумента и регистра, предназначенного для результата - так как это один и тот же регистр

Arioch-The Автор вопроса
Igor
думаю, создатели конвенции знали, что делают

ой да, все кругом умные, только мы тут дураки и критиковать никого нельзя но вот позднее Майкрософт эту глупость исправило: https://learn.microsoft.com/en-us/cpp/build/x64-calling-convention?view=msvc-170

Arioch-The Автор вопроса
Vga
так и не понял где R8 и R9 у х86

тут дело принципа, не надо срать в один и тот же регистр, чтобы тут же тратить код и врем на его восстановление

Arioch The
тут дело принципа, не надо срать в один и тот же р...

в таком случае видимо продолбался как раз борланд, который передает селф там же, куда пихать результат?:

Arioch-The Автор вопроса

Похожие вопросы

Обсуждают сегодня

лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
#include <stdio.h> #include <stdlib.h> #include <time.h> int** generate_table(int size_matrix) { int** matrix = (int**)malloc(size_matrix * sizeof(int*)); for (int i ...
Чувак
1
@PerlBanjoBot use v5.38; sub split_on_cond($arr, $cond) { ($a, $b) = ([], []); push @{ $cond->($_) ? $a : $b }, $_ for @$arr; ($a, $b) } use Data::Dumper; warn Dumpe...
Sergei Zhmylove
10
У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
Дебил? Я ищу друга
Bitard 228
27
Вот объясните, как это работает: Вот есть допустим unix-подобная система, и программа запускает допустим printf или fork, как это передается ядру, и как оно обрабатывать начин...
Егор
14
Всем привет! как узнать, что текст в TSkLabel был выведен сокращенным ? Есть функция для TLabel которая позволяет определить , что текст выведен сокращенным function TFrmMai...
DELPHI SOLUTIONS
6
Карта сайта