Size: a a a

Ассемблер

2021 August 22

DF

Dollar Føølish in Ассемблер
@disba1ancer у сообщения нет отметки "редактировано"
источник

DF

Dollar Føølish in Ассемблер
похоже ты забыл нажать кнопку )
источник

d

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

DF

Dollar Føølish in Ассемблер
да, так вроде понятно
источник

DF

Dollar Føølish in Ассемблер
но я не факт что хуже не сделал тебе ) я асм только читаю - не пишу
источник

d

disba1ancer in Ассемблер
jc там вообще не в тему
источник

DF

Dollar Føølish in Ассемблер
оке)
источник

ВВ

Вячеслав Васютин... in Ассемблер
Так у меня же 64 бит машина, там 8 байт, не 4.
источник

d

disba1ancer in Ассемблер
во-первых, к тому месту оба указателя выровнены на 4, а во вторых с jc цикл никогда не исполнится
источник

E

Entusiast in Ассемблер
Ну так сделай тогда add rsp, 8
Что мешает-то?

Я же показал пример для -m32
источник

DF

Dollar Føølish in Ассемблер
значит я молодец)
источник

d

disba1ancer in Ассемблер
я ещё не обтестировал эту функцию, впендюрил только на зачистку .bss секции
источник

ВВ

Вячеслав Васютин... in Ассемблер
Ничего, просто не пойму зачем rsp увеличивать? Почему это нужно делать? Почему не обойтись без add rsp, 8?
источник

d

disba1ancer in Ассемблер
ты можешь не делать этого пока используешь редзону, но если ты вызываешь функцию через call то она переписывает часть твоей редзоны адресом возврата
источник

ВВ

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

E

Entusiast in Ассемблер
Стэк не резиновый, и проблему у тебя когда-то из-за этого будет.
push делает:

mov dword[esp], operand
sub esp, 4

Соответственно. чтобы не растягивать, ты можешь сделать:
add rsp, 4
И снова записать значение на тот же самый указатель:
push operand
источник

d

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

ВВ

Вячеслав Васютин... in Ассемблер
Может rsp,8 ато какая-то путарица получается у меня в голове: говорил в esp 4 кидают, я читал что 8 кидают в rsp, теперь ты в rsp 4 кидаешь, когда адресса для 64 бит 8-байтовые...🤦‍♂🤷
источник

S

Shell in Ассемблер
посоветуйте торрент трекер для поиска материала, заранее спасибо
источник

d

disba1ancer in Ассемблер
rsp надо сдвигать на размер всех твоих локальных переменных
источник