Size: a a a

Ассемблер

2021 August 22

E

Entusiast in Ассемблер
Нужно на архитектуру ориентироваться. Но чаще у push больше задержка, чем у sub+mov
источник

s

s54816 in Ассемблер
Вот эти скачущие цифры ещё раз доказывают, что лучше пусть думает компилятор, когда ты ему -march скормишь.
источник

ВВ

Вячеслав Васютин... in Ассемблер
Вот, читаю статью:

https://it-black.ru/peredacha-parametrov-cherez-stek/

Вот, не могу понять это:

;Код  ....

push [argN]
push ...
push [arg1]

push [arg0]

call myproc


Ну закинул я в стэк параметры для функции, функция же ищет эти параметры в регистрах, а параметры в стэке - функция работать не будет нормально ... Так что, путаница получается какая-то...
источник

s

s54816 in Ассемблер
https://www.agner.org/optimize/microarchitecture.pdf (7.7 Stack engine), вот почему.
источник

s

s54816 in Ассемблер
Именно вызываемая функция определяет, как именно ты передашь параметры. Если она хочет через стек, ты будешь пихать в стек. Захочет в регистрах — будешь пихать в регистры. Это не взаимозаменяемые методы. Есть общепринятые соглашения, где, как и в каком порядке пихать. Большинство функций, с которыми ты столкнёшься, им следуют.
источник

DK

David Kravets in Ассемблер
Comrad'ы, Подскажите после установки операционной системы , какой формат оно имеет ? Что загружает именно boot loader , например grub
источник

ВВ

Вячеслав Васютин... in Ассемблер
источник

ВВ

Вячеслав Васютин... in Ассемблер
Или здесь, если там не будет понятно:
https://losst.ru/protsess-zagruzki-linux
источник

d

disba1ancer in Ассемблер
Но явно не в моём случае...
источник

DK

David Kravets in Ассемблер
А все понял , там все таки образ
источник

E

Entusiast in Ассемблер
Zen3 тоже push медленнее, чем sub+mov
AMD K7 тоже самое
Так что можно даже сказать, что если ориентируешься на новые процессоры - нужно использовать sub+mov

Кстати, на днях видел, как GCC тоже сделал mov [esp] (O3)
источник

d

disba1ancer in Ассемблер
Кто оно? У граба ест мультибут
источник

DK

David Kravets in Ассемблер
Оно загружает образ операционки и монтирует его
источник

DK

David Kravets in Ассемблер
"Ядро при загрузке обычно имеет вид файла-образа, сжатого в формат zImage или bzImage с помощью zlib. В нём содержится головная программа, которая проводит минимальную настройку оборудования"
источник

s

s54816 in Ассемблер
GCC по умолчанию делает mov, и не только на -O3.
источник

d

disba1ancer in Ассемблер
В большинстве случаев, размер стекфрейма функции известен заранее, за счёт чего можно сразу знать на сколько двигать esp ну и фрем поинтер тоже можно выкинуть, но на 16 битах его не особо выкинешь, либо весь код будет из префиксов
источник

E

Entusiast in Ассемблер
Нет, на O0-O1 он делает push. И много. И причём ещё с такими выходками:
add esp, 8
sub esp, 4
источник

d

disba1ancer in Ассемблер
Жуть то какая...
источник

s

s54816 in Ассемблер
Нет не делает.
источник

d

disba1ancer in Ассемблер
-O0 можно даже не рассматривать
источник