так стоп, определитесь наконец чего сегмент - данных или кода? В i386 есть специальный бит, какой это сегмент - исполняемый или записываемый. Как оно может быть исполняемым если оно записываемое?
1 отвлечь народ от [веществ]-опросов
2 помечтать о программе которая будучи единожды написана человеком будет сама себя усовершенствовать для решения всё более и более сложных задач
мечта:
1 написать прогу имитирующую человеческую интуицию... которая будет решать некорректно поставленные задачи подбирая параметры интуитивно. Ну скажем, дать ей порешать простые дифуры, чтобы она запомнила решения а потом добавить некорректную жёсткую дрянь и посмотреть как она начнёт пытаться получить на выходе что-то "красивое" (для неё это будет похожее на то что она получала раньше). Подозреваю, что это может быть только самомодифицирующайся программа.
имхо, это действительно возможно "на лету" только в интерпретируемом варианте. иначе - отдельно код, отдельно исполняемая(скомпиленная) часть, а потом програмулина "дописывает" код, модифицируя его, компиляет, запускает еще одну прогу/скрипт, завершается, прога/скрипт убивает "старую" исполняемую часть, ложит на ее место "новую" и запускает ее. иначе на 386, как уже сказал lester_dev, вроде как низзя... а там хз, это только мое имхо...
В 386 архитектуре защита на уровне сегментов. При повсеместным использовании flat модели памяти она не используется. NX бит для постраничной защиты появился только в x86-64. Плюс его должна ОС поддерживать.
Я пробовал искать наработки несколько лет назад по этой теме. Нашел
простейшие Code Wars + еще десяток ссылок. После середины 90-х годов
это направление, имхо, заглохло.
> 1 написать прогу имитирующую человеческую интуицию... которая будет решать некорректно поставленные задачи подбирая параметры интуитивно. Ну скажем, дать ей порешать простые дифуры, чтобы она запомнила решения а потом добавить некорректную жёсткую дрянь и посмотреть как она начнёт пытаться получить на выходе что-то "красивое" (для неё это будет похожее на то что она получала раньше). Подозреваю, что это может быть только самомодифицирующайся программа.
эх, даже трудно сказать, чему тут больше умиляться - энергии и энтузиазма молодости или глубине ее невежества...
Зачем тебе для этого самомодифицирующийся выполняемый код, мил чел? Неужто структуры данных, и программу которая будет в соответствии с ней действовать, недостаточно? Алгоритмы, делающие те действия которые ты описываешь, все равно ооочень далеки от кодов процессора x86 или jvm или даже исходника ЯП общего назначения, так что генерация такого кода будет чистым пижонством...
На асме z80, x86. Не для зловредства, а оптимизации ради и и сокращения размера(например, чтобы не дублировать похожий код для вывода битмапа, отличающийся одной инструкцией mov/and/xor/etc)
едва ли программа написанная _логично_ сможет действовать интуитивно(?)
если же она n-раз меняет саму себя результат оказывается уже не столь предсказуемым (нелогичным?)
Заметь я говорил что это фантазии. Я пишу уже 12 лет на Фортране =) В реальности когда стояла задача о решении жёсткой системы я наоборот сделал - добавил в программу свою интуицию =) То есть возможность на лету подправлять кое-что мышкой. Там надо было по виду кривых на плоскости понять где могут скрываться корни и при этом обойти разрывы - ручками "натравить" метод Ньютона чтобы он смог найти корни двух-трёх функций (граничная задача с особенностями на краю, метод стрельбы). Запрограмить поведение программы в зависимости от вида и взаимного расположения кривых я не смог, очень уж непредсказуемо они себя вели. Да ещё выползали численные ошибки из-за округления, которые делали на кривых ступеньки.
> едва ли программа написанная _логично_ сможет действовать интуитивно(?)
> если же она n-раз меняет саму себя результат оказывается уже не столь предсказуемым (нелогичным?)
Боюсь, что все-таки поведение будет предсказуемо. Полиморфные вирусы себя меняли, но антивирусы их успешно ловили.
> Я пишу уже 12 лет на Фортране =)
жестко. я б так не смог. впрочем, вы уже на пределе - телефонами вон кидаетесь ...
> В реальности когда стояла задача о решении жёсткой системы я наоборот сделал - добавил в программу свою интуицию =) То есть возможность на лету подправлять кое-что мышкой.
То есть увы, опять за интуицией пошли к человеку... закодить полноценную интуицию не получилось ни у кого до сих пор.
Есть формализмы и основанные на них решениия, имитирующие интуицию, например генетические алгоритмы и их реализация в оптимизаторе PostgreSQL и ACOVEA, но увы, они ограничены. Оптимизатор PostgreSQL'а до оракла не сэволюционировал до сих пор, и новые фичи туда гомо сапиенсы вкодивают. И, кстати, все эти программы обходятся без перезаписи своего кода.
прочитал все ответы и осознал что мне всё-таки придётся сесть и ручками написать одну хрень потому что ни одна программа сама за меня это не сделает. А как было бы здорово. Ну значит пришло время взять студента =)))
Linux-i386 не скажет. А если может сказать (PaX, другая ОС), то попадаем в kernel-space, правим LDT/GDT, добавляя новый сегмент, меняем данные, возвращаем таблицы в исходное состояние.
> То есть возможность на лету подправлять кое-что мышкой. <..> Запрограмить поведение программы в зависимости от вида и взаимного расположения кривых я не смог, очень уж непредсказуемо они себя вели.
в смысле, чтобы устойчиво метод сработал. Да алгоритмизируется там всё, man автоматизация вычислительного эксперимента, тот же М.М. Горбунов-Посадов "Расширяемые программы" ISBN 5-901118-01-4
У него кстати, подход интересный описан, про метаданные. А вообще он автоматизацией вычислительного эксперимента и занимался
> едва ли программа написанная _логично_ сможет действовать интуитивно(?)
>если же она n-раз меняет саму себя результат оказывается уже не столь предсказуемым (нелогичным?)
там что, динамический хаос с аттракторами возникает?
ещё в компьютерре писали про программу, которая рисует картины, какие-то силуэты, персонажи, lleo Каганов писал диплом про программу, которая стихи пишет
вот это наверно можно назвать "интуитивным программированием", да и то с натяжкой -- всё равно там какие-то эвристики и куча алгоритмов по ним
Выходи из анабиоза :) всё крипто-ПО так работает :) Алгоритм зашифрован, перед употреблением расшифровывается. а DEP придумали совсем недавно, но все его выключают, так как модули обеспечения безопасности перестают работать :)