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

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

ErV (проги под винду, соответственно, никкой фигни с сегментами :) и дескрипторами быть не может).Уууу как все запущено. И куда ж по вашему из под винды делись сегменты?
...
Рейтинг: 0 / 0
06.06.2006, 15:18
    #33775094
ErV
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
06.06.2006, 15:47
    #33775227
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Ассемблеру.
вообще мне тоже кажется, что

lea eax, [eax+0]


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

add eax, 0



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

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


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

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

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


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

ErVИ вообще - если я что-то вдруг ляпнул, разве так трудно вкратце объяснить в чем проблема?Дескрипторы в защищеном режиме это практически те же самые сегменты в реальном. С двумя различиями: 1) куски памяти адресованые сегментами реального могут перехлестываться а память адресованая через дескрипторы в защищеном не может. 2) процесс в реальном режиме может обращаться к любому сегменту, а на процесс в защищеном наложены некоторые ограничения.
Но со всех остальных точек зрения сегменты и дескрипторы это одно и тоже. Они даже хранятся в одних и тех же регистрах процессора :) Нельзя говорить что в "проге под винду, соответственно, никкой фигни с сегментами", там этой фигни намного больше на самом деле. Под виндой ты имеешь точно такой же доступ к сегментным регистрам и точно так же можешь в свой проге жонглировать их содержимым. И точно так же как и в реальном режиме надо всегда учитывать что у тебя лежит в DS, а что в ES. И сегмент данных далеко не всегда равняется сегменту кода. А чаще всего это два разных сегмента (или вернее дескриптора если пользоваться терминологией защищеного режима :)
...
Рейтинг: 0 / 0
07.06.2006, 18:56
    #33778798
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Ассемблеру.
там же флат + страничная организация и всё.
почему тогда нет far pointer'ов ?
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
07.06.2006, 19:04
    #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
07.06.2006, 19:50
    #33778953
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Ассемблеру.
maXmoтам же флат + страничная организация и всё.
почему тогда нет far pointer'ов ?Почему нет? Есть конечно. Чтобы их не было нужно физически выдрать из процессора сегментные регистры :)
А Википедия права. Только "do not have to", не означает "not allowed to" :)
...
Рейтинг: 0 / 0
07.06.2006, 22:18
    #33779132
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Ассемблеру.
White OwlТолько "do not have to", не означает "not allowed to" :)а это можно сделать не рискуя вызвать ошибку?
...
Рейтинг: 0 / 0
07.06.2006, 22:57
    #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]