Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1378477682
картман
2013-09-06 18:28
2014.03.09
ноут


2-1368601696
damtakon
2013-05-15 11:08
2014.03.09
Можно ли заморозить memo?


2-1368514793
damtakon
2013-05-14 10:59
2014.03.09
stringgrid delphi почему не работает backspace как прописать?


15-1379622602
Юрий
2013-09-20 00:30
2014.03.09
С днем рождения ! 20 сентября 2013 пятница


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский