Size: a a a

2020 November 19

s

s54816 in pro.asm
Eugene Krasnikov (ᴊɪɴ x)
Это выдаст конкретный компилятор. А я для общего случая.
Так конкретный компилятор уже показывает, как он не доверяет rax в целом. У Microsoft в середине 2000х студия точно в al возвращала. Так что уже доверять нельзя.
источник

K

Kitsu in pro.asm
В примере как бы caller проверяет, а не callee, про что изначально спрашивалось
источник

EK

Eugene Krasnikov (ᴊɪ... in pro.asm
Короче, я понял, что может быть как угодно :)
источник

s

s54816 in pro.asm
Eugene Krasnikov (ᴊɪɴ x)
Короче, я понял, что может быть как угодно :)
Это потому что у той же Microsoft, например, нормальной спеки, что куда пихать, никогда не было и до сих пор нет.
источник

C

ChoiPinMing in pro.asm
Eugene Krasnikov (ᴊɪɴ x)
Это выдаст конкретный компилятор. А я для общего случая.
Конкретный компилятор следует спекам более менее.
Плюс ты можешь дебаггером подцепиться и посмотреть зануляется ли регист весь если ему только в %al записать
источник

EK

Eugene Krasnikov (ᴊɪ... in pro.asm
ChoiPinMing
Конкретный компилятор следует спекам более менее.
Плюс ты можешь дебаггером подцепиться и посмотреть зануляется ли регист весь если ему только в %al записать
Вот если я увижу, что какой-то компилятор обнуляет весь EAX, о чём мне это скажет?
Что по спецификации он должен обнулить? По спецификации ко всем C++ или к этому компилятору?
Или, может, он сам так решил, и это implementation defined?
Или он так решил именно в этом режиме оптимизации, а в другом будет иначе?
Опираться на отладку ненадёжно в данном случае.
источник

C

ChoiPinMing in pro.asm
Почти в твою тему недавно я ковырял
Но я ковырял про зануление верхней части rax если делается mov eax, edi к примеру и выяснилось что при таком раскладе верняя половина зануляется во время исполнения mov eax, edi.
Но в 16битных вариантах может быть по другому

Я смотрел тут
https://www.intel.ru/content/www/ru/ru/architecture-and-technology/64-ia-32-architectures-software-developer-vol-1-manual.html
Basic architecture
3.4.1.1 General-Purpose Registers in 64-Bit Mode
источник

DF

Dollar Føølish in pro.asm
Можно ли исходить из того что байтовые сторы дороже?
источник

DF

Dollar Føølish in pro.asm
Для абстрактного  компилятора в вакууме
источник

EK

Eugene Krasnikov (ᴊɪ... in pro.asm
ChoiPinMing
Почти в твою тему недавно я ковырял
Но я ковырял про зануление верхней части rax если делается mov eax, edi к примеру и выяснилось что при таком раскладе верняя половина зануляется во время исполнения mov eax, edi.
Но в 16битных вариантах может быть по другому

Я смотрел тут
https://www.intel.ru/content/www/ru/ru/architecture-and-technology/64-ia-32-architectures-software-developer-vol-1-manual.html
Basic architecture
3.4.1.1 General-Purpose Registers in 64-Bit Mode
Это вообще, по спецификации процессоров так и должно быть :)
Это только в 64-битном режиме работает и только при изменении 32-битного регистра (mov, add, etc...)
источник

C

ChoiPinMing in pro.asm
Eugene Krasnikov (ᴊɪɴ x)
Это вообще, по спецификации процессоров так и должно быть :)
Это только в 64-битном режиме работает и только при изменении 32-битного регистра (mov, add, etc...)
Само собой , я к тому что там возможно есть глава без надписи 64bits и там могут быть хинты в эту тему
источник

EK

Eugene Krasnikov (ᴊɪ... in pro.asm
ChoiPinMing
Само собой , я к тому что там возможно есть глава без надписи 64bits и там могут быть хинты в эту тему
Я не понял про 16-битные варианты. Какой RAX может быть в 16 битах вообще?
источник

DF

Dollar Føølish in pro.asm
Он имел в виду 16 битные регистры мне кажется
источник

EK

Eugene Krasnikov (ᴊɪ... in pro.asm
Так, при записи в 16-битные регистры (как и в 8-битные) ничего не обнуляется.
источник

DF

Dollar Føølish in pro.asm
Да
источник

DF

Dollar Føølish in pro.asm
Просто вот смотрите вернул он в ал, а потом ему надо сделать спилл

А восьмибитного пуша нету в принципе
источник

DF

Dollar Føølish in pro.asm
На х86 от 16 бит пуши
источник

EK

Eugene Krasnikov (ᴊɪ... in pro.asm
Что за спилл?
источник

DF

Dollar Føølish in pro.asm
Register spill обычный пуш
источник

s

s54816 in pro.asm
Dollar Føølish
На х86 от 16 бит пуши
Зато есть мов, который gcc очень любит делать вместо пушей.
источник