169 похожих чатов

В esp (при push ebp; mov ebp, esp) же адресс

находится? А как он уменьшается, допустим, на 5 при команде enter 5,0? Как можно, допустим, 0x018181833 уменьшить на 5?

10 ответов

15 просмотров

Это всего-лишь значение...

Alan 🔝-Бэброу Автор вопроса
Alan 🔝 Бэброу
Я не понял...

Ну это указатель. Значение. 0x018181833 - указатель на ячейку памяти (адрес) 0x018181833 - 0x5 = 0x1818182E - указатель (адрес) на другую ячейку памяти.. Ты чего. Шаг вперёд, два назад

Alan 🔝-Бэброу Автор вопроса
Entusiast
Ну это указатель. Значение. 0x018181833 - указател...

Т.е., в esp какая-то большая цифирка лежит, которую можно уменьшить на x?

Alan 🔝 Бэброу
Т.е., в esp какая-то большая цифирка лежит, котору...

mov eax, 1 mov ebx, 1 sub eax, ebx Ты спрашиваешь - "В EAX лежит 1, а в EBX 1, как можно отнять 1 от 1??" Ну т.е вопрос очень вообще странный. Ты запутался, наверное, из-за ЯВУ, или ещё из-за чего-то. Что тебе вдруг начало казаться, что указатель, или адрес, который лежит в регистре - никак не вычислить

Alan 🔝-Бэброу Автор вопроса
Entusiast
mov eax, 1 mov ebx, 1 sub eax, ebx Ты спрашиваешь...

А, можно вычислить? И как (может, поняв это, пойму и sub esp, x)?

Alan 🔝 Бэброу
А, можно вычислить? И как (может, поняв это, пойму...

Найди какую-нибудь банальную статью по ассемблеру для новичков, почитай. Я думал, ты уже продвинулся.. Банально поотлаживай вот этот код (хотя я вообще не понимаю, какой от этого смысл): mov esp, 1 ESP = 1 sub esp, 1 ESP = 0 mov eax, 1 EAX = 1 sub eax, 1 EAX = 0 mov esp, 0x12121212 ESP = 0x12121212 sub esp, 0x12121212 ESP = 0

Alan 🔝-Бэброу Автор вопроса
Entusiast
Найди какую-нибудь банальную статью по ассемблеру ...

Та это я понял.. Я не мону понять саму суть работы enter, вот, нахрен ему у адресса esp x отнимать, чтобы выделить в стеке память, если нужно в сам стэк идти и туда все ложить? Допустим, esp = 0x12121212, ну и отними у него 5? Что? Получится 0x1212127?

Alan 🔝-Бэброу Автор вопроса
Alan 🔝 Бэброу
Та это я понял.. Я не мону понять саму суть работы...

Или 5 в hex переводится, а затем у 0x12121212 отнимается 5 (hex'овый)?

Alan 🔝 Бэброу
Та это я понял.. Я не мону понять саму суть работы...

Нет, получится 0x1212120D И это мы уже выше обсуждали - нужно создавать кадры стека, чтобы работать с локальными переменными, и не запоминать их индексы слишком далеко: push eax ; 4 push ebx ; 8 push ecx ; 12 push edx ; 16 mov dword[esp-20] ESP-20 = local var 1 ESP+20 = argument 1 Лучше: push ebp ; 4 mov ebp, esp sub esp, 4 ; Одна локальная переменная push eax ; 4 push ebx ; 8 push ecx ; 12 push edx ; 16 EBP-8 = local var 1 EBP+8 = argument 1 И так же есть другие причины, требующие создание стека. Я тебе уже скидывал статью по стеку, где описываются эти моменты EBP (Base Pointer), фактически предназначен для этого ( ESP - stack pointer)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта