Форум программистов, компьютерный форум, киберфорум
Assembler: MASM64, х64/long mode
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
26 / 1 / 1
Регистрация: 27.06.2021
Сообщений: 72
1

Не могу разобраться с соглашением о вызове

08.05.2022, 22:06. Показов 1405. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Люди, добрый вечер. Проясните ситуацию. Читаю википедию о соглашении о вызове x64 https://translated.turbopages.... i/Thiscall. Написано: <Соглашение о вызовах Microsoft x64 использует четыре регистра RCX, RDX, R8, R9 для передачи первых четырех целочисленных переменных или переменных-указателей (слева направо)> Решил вызвать рандомную фун-ию
C++
1
memmove((void*)0x2222222231, (void*)0x222222222221, 10);
, чтобы лицезреть информацию, которую я прочитал. Захожу в отладчик и вижу такую картину(скрин): почему порядок передачи такой - rdx, rd8, rcx , а не RDX, R8, R9, как заявлено в источнике, что я упустил? Меня это сильно путает
Миниатюры
Не могу разобраться с соглашением о вызове  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.05.2022, 22:06
Ответы с готовыми решениями:

Доступ к переменным при вызове функций из вне(не могу разобраться)
Здравствуйте, большое спасибо всем, кто отвечает на этом форуме, вы реально помогаете новичкам! ...

Не могу разобраться с загрузкой данных из файлов,и чтоб в дальнейшем с ними мжно было работать как с массивом,не могу разобраться(
void __fastcall TPoisk::Button3Click(TObject *Sender) { Memo2-&gt;Lines-&gt;Clear();...

Задали работу, не могу разобраться. Используется делфи 10, не могу разобраться, как это сделать
В одномерном массиве, состоящем из n вещественных элементов, вычислить: минимальный элемент массива...

помогите разобраться с ошибкой в вызове функции
компилятор выдает ошибку `sum1' cannot be used as a function #include &lt;stdio.h&gt; #include...

Макрос для вызова подпрограмм с соглашением cdecl
как подключить в ассемблер Fasm соглашение вызова cdecl?

4
Модератор
Эксперт по электронике
8476 / 4335 / 1642
Регистрация: 01.02.2015
Сообщений: 13,461
Записей в блоге: 8
08.05.2022, 22:16 2
Лучший ответ Сообщение было отмечено Shert как решение

Решение

По-моему, всё правильно:
- первый параметр 0x2222222231 помещается в rcx
- второй параметр 0x222222222221 помещается в rdx
- третий параметр 10 помещается в r8
Единственно, учитывается отсутствие инструкции по загрузке в регистр константы в 64-разряда.
0
26 / 1 / 1
Регистрация: 27.06.2021
Сообщений: 72
08.05.2022, 22:18  [ТС] 3
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
По-моему, всё правильно:
- первый параметр 0x2222222231 помещается в rcx
- второй параметр 0x222222222221 помещается в rdx
- третий параметр 10 помещается в r8
Единственно, учитывается отсутствие инструкции по загрузке в регистр константы в 64-разряда.
Боже, извиняюсь за невнимательность, вы правы. Видимо спать пора мне...
0
Модератор
Эксперт по электронике
8476 / 4335 / 1642
Регистрация: 01.02.2015
Сообщений: 13,461
Записей в блоге: 8
08.05.2022, 22:19 4
Порядок загрузки именно в регистры - rdx, r8, rcx вызван другими соображениями - или так лучше сочетались вызовы для одновременного исполнения инструкций за 1 такт, или так компилятор случайно сделали.
0
26 / 1 / 1
Регистрация: 27.06.2021
Сообщений: 72
08.05.2022, 22:22  [ТС] 5
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Порядок загрузки именно в регистры - rdx, r8, rcx вызван другими соображениями - или так лучше сочетались вызовы для одновременного исполнения инструкций за 1 такт, или так компилятор случайно сделали.
Понял вас, но будем надеятся , что компилятор не случайно, так сделал(меня запутал )
0
08.05.2022, 22:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2022, 22:22
Помогаю со студенческими работами здесь

Не могу разобраться разобраться с кодом меню
Добрый день. Я понимаю, что тут все, наверное, элементарно. Но я только начала изучение js и пока...

Как (через что) создать установщик с лиц. соглашением?
Надо создать инсталятор для программы с лиц. соглашением , приложение написано на C# visual studia...

Не могу понять задачу, никак не могу разобраться как код написать
Помогите!

Приветствую, не могу разобраться с кодом программы и не могу сделать .obj файл
.model tiny; нужно будет получить исполняемый файл формата СОМ .code org 100h start: mov ax,...

Не могу написать комментарии для функции поиска, не могу разобраться...
void __fastcall TForm1::FindDialog1Find(TObject *Sender) { int found, start, end; //...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru