Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

передача управления


Delphist2 ©   (2010-05-04 04:06:00) 

Как сделать передачу управления из одной произвольной области программы в другую? goto не подходит, т. к. действует в пределах begin ... end.
В одной области я пишу:
push eip

А в другой:
pop edx
jmp edx

Это правильно?


Anatoly Podgoretsky   (2010-05-05 08:51:00) [1]


> Объясни, что тебе нужно. Или что тебе интересно.

Ему нужно учиться тривиальному программированию или кнута.


Anatoly Podgoretsky   (2010-05-05 08:50:00) [2]

Говорили же - не лезь в ассемблер.


Германн   (2010-05-05 04:18:00) [3]

Что ломаем на сей раз?


Германн   (2010-05-05 04:16:00) [4]


> Delphist2   (05.05.10 04:06) [6]
>
>
> > В правильно спроектированной программе не возникает необходимости
> > в таких передачах управления.
>
> Мне этот прием интересен сам по себе

Сам по себе этот приём мало применим.
> Здесь будет возврат. Т. е. ф-я отработает, и управление
> вернется откуда ф-я была вызвана. А мне надо без возврата.
>
>

Объясни, что тебе нужно. Или что тебе интересно.


Delphist2   (2010-05-05 04:06:00) [5]


> В правильно спроектированной программе не возникает необходимости
> в таких передачах управления.

Мне этот прием интересен сам по себе, без применения к какой-то конкретной программе.

>
> procedure Foo;
> begin
> end;
> ..
> Foo; // вот тебе та самая передача управления


Здесь будет возврат. Т. е. ф-я отработает, и управление вернется откуда ф-я была вызвана. А мне надо без возврата.

Как сохранить cs:eip не в стэк, а в глоб. переменные? Например, код
var a:integer;
asm
mov a,eip
end;
вызывает ошибку undeclared identifier: 'eip'


Сергей М.   (2010-05-04 16:42:00) [6]


> Delphist2   (04.05.10 04:06)  


procedure Foo;
begin
end;
..
Foo; // вот тебе та самая передача управления


Anatoly Podgoretsky   (2010-05-04 16:12:00) [7]

Нафига ты хакерскими методами решаешь данную задачу, зачем ты лезешь в Асм, который ты не понимаешь.


RWolf   (2010-05-04 15:44:00) [8]

В правильно спроектированной программе не возникает необходимости в таких передачах управления. Если возникает, нужно пересмотреть архитектуру программы.


Delphist2   (2010-05-04 05:28:00) [9]

Ну тогда так:
//одна область
var a:integer;
asm
mov a,eip
end;
...
//другая область
mov edx,a
jmp a

Или надо еще esp сохранять?


Германн   (2010-05-04 04:16:00) [10]


> Это правильно?

Это бред.
Бред сивой кобылы в тёмную мартовскою (майскою) ночь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо