powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вопрос по Ассемблеру.
25 сообщений из 52, страница 1 из 3
Вопрос по Ассемблеру.
    #33772637
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неоднократно в листингах дизассемблированных программ(via IdaPRO) натыкался на следующее:
Код: plaintext
1.
lea eax, [eax+0]

Какой в этом смысл? Как я понимаю, содержимое eax не измениться (проги под винду, соответственно, никкой фигни с сегментами :) и дескрипторами быть не может).
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33772789
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно, компиляция была без оптимизации. Например, ассемблерный код от gcc обретает осмысленность только начиная с -O2.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33772801
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoвозможно, компиляция была без оптимизации. Например, ассемблерный код от gcc обретает осмысленность только начиная с -O2.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
У меня тоже такая мысль была, но я думал, может, это типа продвинутый вариант NOP или выравнивания. :) Или флаги сбрасываются, но это вряд ли, там потом ничего такого не было, чтобы флаги юзало.
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33773289
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
Код: plaintext
1.
lea eax, [eax+0]
Какой в этом смысл? Как я понимаю, содержимое eax не измениться
Почему это вдруг не изменится? Квадратные скобочки видишь? Что они означают, а?

ErV (проги под винду, соответственно, никкой фигни с сегментами :) и дескрипторами быть не может).Уууу как все запущено. И куда ж по вашему из под винды делись сегменты?
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33775094
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl ErV
Код: plaintext
1.
lea eax, [eax+0]
Какой в этом смысл? Как я понимаю, содержимое eax не измениться
Почему это вдруг не изменится? Квадратные скобочки видишь? Что они означают, а?

ErV (проги под винду, соответственно, никкой фигни с сегментами :) и дескрипторами быть не может).Уууу как все запущено. И куда ж по вашему из под винды делись сегменты?
Блин! Ну почему каждое мое сообщение вызывает встречный наезд!

к вашему сведению, "вагоноуважаемый глубокоуважатый",
команда lea производит загрузку в указанные регистр адреса переменной, которой в данном случае, как я понил, является адрес, записанный в eax, квадратные скобочки означают обращение к памяти. базой переменной является содержимое eax, +0 - чтос нулевым смещением. может, я где то и ошибся, но получается что в eax загружается содержимое eax + 0. Если я ошибаюсь, исправть. - асм не мой "родной язык".

Сегменты из винды никуда не девались, просто в защищенном режиме используются дескрипторы, это раз, а два - каждая виндовская прога построена во FLAT модели памяти, т.е. - у неё только один сегмент данных, он же сегмент кода. Как я помню, более низкоуровневые функциилибо недоступны (или доступны под нулевым кольцом защиты), либо просто не требуются.

Я не спец в асме, потому и спросил по поводу lea eax, [eax+0]
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33775227
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще мне тоже кажется, что

lea eax, [eax+0]


по сути то же самое что и

add eax, 0



хотя с удовольствием узнаю, в чем мое заблуждение
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33775247
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlКвадратные скобочки видишь? Что они означают, а?выделение целой части?
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33775264
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--по сути то же самое что и
add eax, 0у lea байтов, вроде, больше будет. Плюс на флаги не влияет (сложение, кажись, влияет).
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33775288
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, конечно, lea длиннее, я говорил исключительно о конечном результате в eax
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33775305
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo White OwlКвадратные скобочки видишь? Что они означают, а?выделение целой части?
??С чего бы вдруг??
Асм ведь(8086) изначально с целыми числами (8086) работет, для "нецелых" есть сопроцессор и спец команды...
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33775321
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шучу я. Ждём Овула.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33775332
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шутки у вас :-)

скобки по-моему означает что в регистре находится адрес и именно с ним производится действие
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33775847
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно что работа с адресом.
Чтение 32-х битного значения в EAX из ячейки памяти адресуемой DS:EAX.
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33775867
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErVСегменты из винды никуда не девались, просто в защищенном режиме используются дескрипторы, это раз, а два - каждая виндовская прога построена во FLAT модели памяти, т.е. - у неё только один сегмент данных, он же сегмент кода. Как я помню, более низкоуровневые функциилибо недоступны (или доступны под нулевым кольцом защиты), либо просто не требуются.
ой как все запущено.... читать учебники по защищеному режиму и срочно!
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33776304
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чего такого страшного сказал ErV? Если не вдаваться в ботанику защищенного режима (где действительно существуют все эти селекторы и дескрипторы), на прикладном уровне - виндовая модель FLAT как я понимаю - похожа на модель DOS-овского com модуля.
А там SS,DS и CS настраивались действительно на один и тот же сегмент, это точно.
То есть и в винде создается один 32bit сегмент для кода и памяти. Что собственно и видит прикладной программист.


Ну а то, что в результате lea eax, [eax+0] произойдет просто помещение содержимого eax+0 в eax же - это однозначно. И мало того - ни от каких сегментов это не зависит imho конечно :-)

Зависит от модели памяти. Я так понимаю, что квадратные скобки в данном случае гласят, что заключенное в них надо рассматривать как near указатели. А они базируются от нуля, поскольку модель у нас FLAT. Cоответственно, это эквивалентно арифметической операции с обычными числами (абсолютными значениями указателей).

Я только под DOS юзал асм и если в винде какие-то нововведения (???), то с удовольствием послушаю :-)
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33776367
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--а чего такого страшного сказал ErV? Если не вдаваться в ботанику защищенного режимаУгу. "Если не вдаваться в ботанику".


--null--Ну а то, что в результате lea eax, [eax+0] произойдет просто помещение содержимого eax+0 в eax же - это однозначно. И мало того - ни от каких сегментов это не зависит imho конечно :-)ну так содержимого же, а не самого eax.
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33777947
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlИменно что работа с адресом.
Чтение 32-х битного значения в EAX из ячейки памяти адресуемой DS:EAX.неа, низачот :) возможно, ты путаешь с lds и les
lea, как всем известно, к памяти вообще не обращается, это, кстати, используется для быстрых неадресных вычислений, т.к. эта операция позволяет за один такт умножить один регистр на константу, прибавить другой регистр и ещё одну константу и результат занести в третий. Очень компактно и быстро.
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33778646
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl ErVСегменты из винды никуда не девались, просто в защищенном режиме используются дескрипторы, это раз, а два - каждая виндовская прога построена во FLAT модели памяти, т.е. - у неё только один сегмент данных, он же сегмент кода. Как я помню, более низкоуровневые функциилибо недоступны (или доступны под нулевым кольцом защиты), либо просто не требуются.
ой как все запущено.... читать учебники по защищеному режиму и срочно!
Мне тебе лекцию прочитать?
Сказал же - АСМ часто не юзаю!
Можно конечно, всякой хрени про GDTR LDTR понаписать, а смысл?
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33778674
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще - если я что-то вдруг ляпнул, разве так трудно вкратце объяснить в чем проблема?
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33778739
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoнеа, низачот :) возможно, ты путаешь с lds и les(бум лбом об стол) И ведь действительно путаю... Прошу прощения, наврал я. Иех, пора в отпуск... Или снова плотно заняться ассемблером? :)

ErVИ вообще - если я что-то вдруг ляпнул, разве так трудно вкратце объяснить в чем проблема?Дескрипторы в защищеном режиме это практически те же самые сегменты в реальном. С двумя различиями: 1) куски памяти адресованые сегментами реального могут перехлестываться а память адресованая через дескрипторы в защищеном не может. 2) процесс в реальном режиме может обращаться к любому сегменту, а на процесс в защищеном наложены некоторые ограничения.
Но со всех остальных точек зрения сегменты и дескрипторы это одно и тоже. Они даже хранятся в одних и тех же регистрах процессора :) Нельзя говорить что в "проге под винду, соответственно, никкой фигни с сегментами", там этой фигни намного больше на самом деле. Под виндой ты имеешь точно такой же доступ к сегментным регистрам и точно так же можешь в свой проге жонглировать их содержимым. И точно так же как и в реальном режиме надо всегда учитывать что у тебя лежит в DS, а что в ES. И сегмент данных далеко не всегда равняется сегменту кода. А чаще всего это два разных сегмента (или вернее дескриптора если пользоваться терминологией защищеного режима :)
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33778798
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там же флат + страничная организация и всё.
почему тогда нет far pointer'ов ?
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33778826
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://en.wikipedia.org/wiki/Flat_memory_modelThe advantage of the flat memory model is that applications running in such a model, unlike applications running in a segmented memory model, do not have to switch segments to access additional code or data.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33778953
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoтам же флат + страничная организация и всё.
почему тогда нет far pointer'ов ?Почему нет? Есть конечно. Чтобы их не было нужно физически выдрать из процессора сегментные регистры :)
А Википедия права. Только "do not have to", не означает "not allowed to" :)
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33779132
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlТолько "do not have to", не означает "not allowed to" :)а это можно сделать не рискуя вызвать ошибку?
...
Рейтинг: 0 / 0
Вопрос по Ассемблеру.
    #33779172
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo White OwlТолько "do not have to", не означает "not allowed to" :)а это можно сделать не рискуя вызвать ошибку?Да, конечно. Программа может обращаться к памяти по любому из дескрипторов до тех пор пока она на нулевом кольце или является владельцем этих дескрипторов.
...
Рейтинг: 0 / 0
25 сообщений из 52, страница 1 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Вопрос по Ассемблеру.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]