Форум: "Прочее";
Текущий архив: 2014.03.09;
Скачать: [xml.tar.bz2];
Внизx64: Соглашение о вызове Найти похожие ветки
← →
Король Артур (2013-09-20 10:21) [0]Не могу понять суть
По крайней мере понятое не укладывается в голове. Подтвердите или опровергните
Не смотря на огромное количество регистров в x64, при вызове функции, только 4 параметра идут в регистры: rcx, rdx, r8, r9. Все остальные параметры идут в стек. Странно ведут себя параметры с плавающей точкой. Если они указаны первыми - то идут в регистры XMM, если в конце - в стек. Всё очень странно
← →
Король Артур (2013-09-20 10:24) [1]Не понятно, кто чистит стек
В Delphi получается странно: и ни вызывающая функция не чистит стек, и сама функция тоже не чистит
← →
MBo © (2013-09-20 10:29) [2]Да, так и есть - первые четыре параметра идут в целочисленные регистры, либо в xmm, в зависимости от типа, остальные в стек.
RCX/XMM0, RDX/XMM1, R8/XMM2, R9/XMM3
← →
MBo © (2013-09-20 10:32) [3]Чистит стек вызывающая сторона (так же, как в cdecl, и не так, как в register или stdcall)
http://en.wikipedia.org/wiki/X86_calling_conventions#x86-64_calling_conventions
← →
Король Артур (2013-09-20 10:46) [4]> MBo ©
одному мне кажется, что это бред?
в x86 используется 8 регистров общего назначения, 2 из которых преимущественно для стека - остаётся 6. Половина (3) используется для регистрового вызова.
В х64 добавляется ещё 8 регистров. И для вызова используются только 2 из них...
В х86 любая функция свободно могла использовать eax/edx/ecx. Логично использовать эти регистры для регистрового вызова. В x64 прибавляются r8-r11. Почему бы не использовать их ?
Ну и апогеем бреда x64 является (не знаю как назвать) RCX/XMM0, RDX/XMM1, R8/XMM2, R9/XMM3
Короче я в шоке
← →
Плохиш © (2013-09-20 11:16) [5]Удалено модератором
← →
Король Артур (2013-09-20 11:21) [6]Удалено модератором
← →
MBo © (2013-09-20 11:41) [7]>Король Артур (20.09.13 10:46) [4
Ну в cdecl вообще через регистры не передаётся, так что по принципу Поллианны надо радоваться тому, что хоть четыре доступно :)
← →
Король Артур (2013-09-20 11:58) [8]> MBo © (20.09.13 11:41) [7]
не знаю как называется принцип, меня в данном случае постигло разочарование
только я начал радоваться продуманности архитектуры x64 и большому количеству регистров... как бац - всего 4 параметра в регистры
ладно, спасибо, что всё прояснил
тема закрыта
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2014.03.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.002 c