Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.03.09;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.006 c
15-1379530093
Сергей М.
2013-09-18 22:48
2014.03.09
philips://remote?action=blabla


15-1380026573
Кто б сомневался
2013-09-24 16:42
2014.03.09
Как отключить https в гугле?


15-1378477682
картман
2013-09-06 18:28
2014.03.09
ноут


15-1379395335
БарЛог
2013-09-17 09:22
2014.03.09
Вспомнить Советскую фантастику


2-1368718620
IRS
2013-05-16 19:37
2014.03.09
Вывод трафика по каждому пользователю в график.