Обратный ход

Проектирование и разработка идеального средства программирования.

Модератор: Модераторы

Обратный ход

Сообщение bw » 18.09.2008 15:48:18

В качестве эксперимента.
Что вы думаете о существовании такой инстукции (оператора/директивы/функции) или группы инструкций, котороые бы позволяли изменить стандартную (с младших адресов в сторону старших) трассировку (выполнение) инструкций на обратную, т.е. процессор, получив такой пинок, пошол бы разбирать инструкции в обратном направлении?
Пока не представляю как это можно использовать, но идея забавная :-).

p.s. Поясню. В реальных условиях под инструкциями можно (нужно?) понимать операторы языка и прочее, чем последний оперирует.

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: Обратный ход

Сообщение alexs » 18.09.2008 15:53:03

а разве можно интерпретировать команды процессора в обратном направлении? там будет не однозначность сплошная
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Обратный ход

Сообщение bw » 19.09.2008 10:52:23

Я думаю что можно, а почему нет.
Мы все же тут создаем самый лучший язык программирования и компилятор в мире. Поэтому с такой позиции стоит рассмотреть все возможности и новые идеи, иначе получится тот же Pascal, может скрещенный с Python, C и/или другими языками.

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: Обратный ход

Сообщение alexs » 19.09.2008 11:04:04

насколько я знаю - интеловская архитектура команд процессора не позволяет однозначной боратной интерпретации - всё дело в различной длинне команд, а также из-за того что данные для команд идут также в основном коде программы.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Обратный ход

Сообщение ev » 19.09.2008 11:29:57

но в интерпритаторе то по идее возможно
хотя по сути это будет не обратный ход разбора инструкций, а выполнение новых (но противоположных уже выполненным)
если это средство использовать исключительно для отладки - то теоретически такое возможно
хотя думаю не просто ;)
ev
долгожитель
 
Сообщения: 1763
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Re: Обратный ход

Сообщение alexs » 19.09.2008 12:09:19

да - для отладки нужно будет учитывать обратный ход времени :-)
т.е вместо "+" ставить "-" и т.д.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Обратный ход

Сообщение Vadim » 19.09.2008 12:15:55

Итак, что у нас, в результате, получится? Можно по клаве бить кулаками, всеё ладонью, головой. Неважно какие символы вводятся. Процессор сам составит из этого винигрета программу. :D
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Обратный ход

Сообщение Bupyc » 19.09.2008 13:18:07

Вопрос: а зачем это нужно?
Bupyc
постоялец
 
Сообщения: 137
Зарегистрирован: 29.08.2007 18:22:42

Re: Обратный ход

Сообщение alexs » 19.09.2008 13:51:35

практический смысл - посмотреть - а что было в программе 5 шагов назад - идея в принципе инетересная - но трудная
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Обратный ход

Сообщение shade » 19.09.2008 16:28:38

alexs писал(а):практический смысл - посмотреть - а что было в программе 5 шагов назад - идея в принципе инетересная - но трудная

Может просто тогда записывать "трассу", и предоставить возможность откатиться назад.. Типа как отмена в редакторах. Можно на каждый шаг либо запоминать состояние процессора либо (набор регистров), либо запоминать только изменные регистры..
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: Обратный ход

Сообщение alexs » 19.09.2008 17:18:59

а если ты поставил бряк-поинт?
всю трассу исполнения программы писать несколько накладно - ты не находиш?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Обратный ход

Сообщение Sergei I. Gorelkin » 19.09.2008 17:34:49

Если есть команда вида 'mov ebx, 1', то откуда брать предыдущее значение этого регистра?

А полная трасса, в общем-то, вполне реальна. Вон, valgrind по сути интерпретирует машинный код, для каждой инструкции вызывая свой обработчик. Емкости современных винтов тоже вполне адекватны задаче.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1395
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Обратный ход

Сообщение wavebvg » 19.09.2008 17:37:39

Это нереально всё забекапить ))), но только так это мона реализовать
Реальнее провести анализ всего кода (что-то вроде компиляции наоборот) и выявить все возможные переходы, после этого пожно будет добиться какого-либо "сжатия бекапов"
Грубо говоря так:
Создаём поток для каждой команды (адреса перехода в нашем исходном коде, который при трассировке осуществляет переход), причём индексируем его (то бишь называем) в соответствии с тем куда перешёл а записываем адрес откуда. Если уже есть поток с таким именем, то просто дописываем в него ещё одно значение, как попал на данный адрес.
Параллельно, в файле отладки (или как его там не назови), записываем индекс потока, перехода в этом потоке и прочее, в результате получаем, что при желании можно будет откатиться назад (т.е. перейти на кусок кода, который был раньше, просто подменив адрес в переходе)
Но при этом надо ещё как-то реализовать откат введённых данных и изменение сотояний переменных, что будет довольно трудоёмко, т.к. циклы вообще никак на обработаешь...
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

Re: Обратный ход

Сообщение Brainenjii » 19.09.2008 20:28:04

Отладчики и так глючные ^_^
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Обратный ход

Сообщение unC0Rr » 19.09.2008 20:59:03

Лучше запустить программу в виртуальной машине и сохранить её состояние... затем вернуться будет просто - запустить заново и контролировать количество исполненных инструкций... кажется, кто-то это уже реализовал, во всяком случае я о такой идее слышал
unC0Rr
новенький
 
Сообщения: 59
Зарегистрирован: 02.02.2006 03:44:44

След.

Вернуться в Компилятор / язык программирования

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru