о кодах команд и данных

Тема в разделе "WASM.BEGINNERS", создана пользователем Guintter, 12 дек 2006.

  1. Guintter

    Guintter New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2006
    Сообщения:
    10
    Привет вем. Хоту вот узнать: "А каким образом процессор, когда начинет обратывать код программы в памяти распознает, что очередные 'данные' являются командой процесса ли данными (т.е. значениями которыми оперирует программа? Ведь в принципе память преставляет из себя набор 16-х чисел, если смотреть в каком нибудь отладчике. И вообще можно ли сделать так что бы процессор посчитал команду за данные, а данные за команду?"
     
  2. ViCooper

    ViCooper Victor

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    26
    Своими словами и "на пальцах":

    А он ниче распознать и неможет. Начинает исполнять код куда регистры пошлют.
    посылают обычно на корректную команду (...хотя:) ) а за ней если нада всегда порция данных к ней. Ты же не ходиш два раза правой патом один раз левой, а надеюсь поочереди?..
    Так и он команда... если треба данные... итд...
    Поменять местами мона и иногда нуна, самомодифицирующийся код хотябы, или Shell - строки, да малоли чего ышо? Конкретных ссылок непомну про все это в сети многа всего...
     
  3. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Guintter
    Процессор может выполнять только команды, но некоторые "данные" при этом тоже могут "выполниться".
     
  4. murtix

    murtix New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    110
    Адрес:
    Russia
    crypto
    Особенно если руки кривые :).
    Ну или наоборот слишком прямые.
    Видел как-то на сайте о дельфи компилятор математических выражений
    текстовую строку типа "sin(x)*2 +cos(2*x)" он компилировал ввиде виртуальной функции и передавал ей управление и она вычислялась со скоростью натив программ
    Я хочу попробовать на асме сделать нечто подобное
     
  5. murtix

    murtix New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    110
    Адрес:
    Russia
  6. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    murtix
    Ну да, я бы тоже сделал рекурсивный анализатор, пихал-бы пи-коды в стек, а потом полученную конструкцию проинтерпретировал. Очень хороший и шустрый анализатор выражений есть в Компиляторе Паскаля, который написан практически на ассемблере. Если нужно, могу порыться в своих архивах, где-то у меня была разIDAванная версия.
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    murtix
    Когда я писал свой компилятор паскаля, мне как раз и требовалось такое =)
    Транслировал в обратную польскую нотацию, благо транслировать её в асм-код очень удобно.

    upd:
    Посмотрел модуль по ссылке выше, грамотно всё реализовано =) Хотя ИМХО разделение проверки и трансляции зря сделал.
     
  8. murtix

    murtix New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    110
    Адрес:
    Russia
    crypto
    Это было б хорошо
     
  9. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    murtix
    Вот тебе файл TPC.IDB (под IDA 4.8), там много разобрано, но не все. Смотри процедуры Evaluate*, там как-раз разбор выражений. Код очень хороший - в то время Борланд писал отличные программы.
    Не прикрепился, хотя кто-то мне сказал про 500К...
    Попробую на slil.ru:
    http://slil.ru/23564023
     
  10. murtix

    murtix New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    110
    Адрес:
    Russia
    Отлично, будем посмотреть :)