Size: a a a

Ассемблер

2020 June 19

A

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

A

Aleksandr in Ассемблер
если о x86-64 то тут стек при вызовых вообще не используется
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Aleksandr
если о x86-64 то тут стек при вызовых вообще не используется
странно
источник

RS

Rusty Shackleford in Ассемблер
Aleksandr
если о x86-64 то тут стек при вызовых вообще не используется
как же так, а как передаются парамерты 5 и остальные
источник

A

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

A

Aleksandr in Ассемблер
у двух функций в примере айвана всего один параметр
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Aleksandr
у двух функций в примере айвана всего один параметр
если параметров НЕТ, то все равно теневая область выделяется
источник

RS

Rusty Shackleford in Ассемблер
ну можно пронаблюдать на примере принтф, как компилятор справляется с выделением теневых копий и использованием рациональным стека, с 6-7 параметрами принтф
источник

A

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

RS

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

RS

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

RS

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

RS

Rusty Shackleford in Ассемблер
Rusty Shackleford
Пирогов, операционные системы на базе набора команд x86-64 в контексте низкоуровневого программирования
в этой статье хорошо описано, на 15 год правда, возможно уже компиляторы иначе действуют
источник

A

Aleksandr in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
если параметров НЕТ, то все равно теневая область выделяется
источник

RS

Rusty Shackleford in Ассемблер
он вначале выделяет где-то да ? 1 раз
источник

A

Aleksandr in Ассемблер
нет
источник

A

Aleksandr in Ассемблер
неиспользуемые регистры не инициализируются
источник

RS

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

A

Aleksandr in Ассемблер
The registers RAX, RCX, RDX, R8, R9, R10, R11, XMM0-5, and the upper portions of YMM0-15 and ZMM0-15 are considered volatile and must be considered destroyed on function calls (unless otherwise safety-provable by analysis such as whole program optimization). On AVX512VL, the ZMM, YMM, and XMM registers 16-31 are volatile.

The registers RBX, RBP, RDI, RSI, RSP, R12, R13, R14, R15, and XMM6-15 are considered nonvolatile and must be saved and restored by a function that uses them.
источник

A

Aleksandr in Ассемблер
не противоречит
источник