Size: a a a

Ассемблер

2020 September 30

RS

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

A

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

RS

Rusty Shackleford in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
зачем следить? каждому пушу должно соответствовать свой поп, либо как ты говрришь, следи/меняй руками
пуш поп понятно, а выравнивания различные, если в ф-ю к примеру 3 параметра через стек передаются
источник

RS

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

RS

Rusty Shackleford in Ассемблер
в принципе это логично
источник

A

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

RS

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

RS

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

A

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

RS

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

A

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

RS

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

A

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

RS

Rusty Shackleford in Ассемблер
push rbp
mov rbp,rsp
источник

RS

Rusty Shackleford in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
но ты то его руками пишешь? и вся рпавбота со стеком у тя руками, поэтому и этими вещатми занимается не пролог/эпилог, а ты
да, для этого пролог как раз, стек сохраняется в RBP, потом восстанавливается что бы адрес возврата был на меcте для ret
источник

A

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

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
а почему ты в отладке это не протестишь/посмотришь/поймешь:?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
и тебе в помощь достаточно посмотреть как работает pusha/popa, что как в какой последовательности сохраняется и восстанавливается
источник

RS

Rusty Shackleford in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
а почему ты в отладке это не протестишь/посмотришь/поймешь:?
тестирую, с переменным успехом, понял что внутри winapi затирается адрес возврата если сохраняю регистры таким макаром как выше описал
источник

RS

Rusty Shackleford in Ассемблер
тоесть если просто делать
push rbp
mov rsp, rbp
то все норм, а если свои регистры еще впихиваю для сохранения то затирается рет, отсюда и вывод простой - что я делаю не правильно )
источник