Size: a a a

Ассемблер

2020 July 29

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Rusty Shackleford
да, а в win64a.inc свой инвок
в нем случайно нет вызова fastcall?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Rusty Shackleford
да, а в win64a.inc свой инвок
открываем proc64.inc и видим
источник

RS

Rusty Shackleford in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
в нем случайно нет вызова fastcall?
так фасткалл он и называется фасткалл от того что регистры использует - Фаст Колл - быстрый вызов
источник

RS

Rusty Shackleford in Ассемблер
я не пойму о чем мы спорим )
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
invoka нет х64. если использовать сисетмные функции через инвоке то програ не будет работать. но для своих (пользовательских функций) можешь организовать этот способ соглашения вызова процедур.
значит у меня неточная формулировка
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
invoke - макрос. fastcall - соглашение вызова (для фасма также макрос для пользовательских процедур)
источник

RS

Rusty Shackleford in Ассемблер
ну а в 32 инвока нет так же, под ним подразумевается скорее всего пуши в стек и call, смею предположить ) хоть и не смотрел макросы
источник

RS

Rusty Shackleford in Ассемблер
давайте вернемся к сути проблемы, у Аблязова как-то не так получается вроде )
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Rusty Shackleford
ну а в 32 инвока нет так же, под ним подразумевается скорее всего пуши в стек и call, смею предположить ) хоть и не смотрел макросы
есть в х32 инвоке
источник

RS

Rusty Shackleford in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
есть в х32 инвоке
ну это же макрос такой же в 32, как и в 64, только в 32 он пушит и калл, а в 64 он резервирует теневую область и фасткал
источник

RS

Rusty Shackleford in Ассемблер
в итоговом коде в отладчике будет разница лишь в том, что он резервирует еще теневую область, каждый раз дописывает sub rsp, 20
ну и защет того что это fastcall будут через стек параметры передаваться первые 4
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Rusty Shackleford
в итоговом коде в отладчике будет разница лишь в том, что он резервирует еще теневую область, каждый раз дописывает sub rsp, 20
ну и защет того что это fastcall будут через стек параметры передаваться первые 4
в х32 можно гарантировать что первые 4 параметра (если они есть) будут в стеке, в х64 (прогер сам выбирает нужны они ему там или нет, хоть место в любом случае выделяется)
источник

RS

Rusty Shackleford in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
в х32 можно гарантировать что первые 4 параметра (если они есть) будут в стеке, в х64 (прогер сам выбирает нужны они ему там или нет, хоть место в любом случае выделяется)
ну в x32 вообще не стандартизированно как вызывать ф-ии
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Rusty Shackleford
ну в x32 вообще не стандартизированно как вызывать ф-ии
какие? системные или пользовательские?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
ты можешь в х32 фаст использовать для своих процедур
источник

RS

Rusty Shackleford in Ассемблер
пользовательские, системные вроде все stdcall
источник

RS

Rusty Shackleford in Ассемблер
через стек
источник

RS

Rusty Shackleford in Ассемблер
а в x64 как раз разница в том, что все ф-ии должны быть fastcall, но естественно если используешь асм можно как угодно извратиться передать аргументы )
источник

RS

Rusty Shackleford in Ассемблер
я так понимаю
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Rusty Shackleford
а в x64 как раз разница в том, что все ф-ии должны быть fastcall, но естественно если используешь асм можно как угодно извратиться передать аргументы )
не все, а только системные. пользовательские пожешь как хочешь вызывать. ни процессор ни система тебе ничего не скажет
источник