Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
20 / 20 / 2
Регистрация: 27.08.2009
Сообщений: 71

Перекомпиляция самого себя

17.01.2011, 23:20. Показов 2750. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть программа, скажем самая простая - консольная, которая выводит одно число, жеско прописано в коде...
Цель: программа должна перекомпилировать сама себя бесконечное кол-во раз и изменила это число(на случайное новое)...
Проблема:
Чтобы скомпилировать новую программу - нужен код.... внутри этого кода должен быть код содержания этой программы, а в нутри него он же и так бесконечный цикл...
Вот как бы решить эту делему...:black_eye.:
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.01.2011, 23:20
Ответы с готовыми решениями:

Как скрипт может сохранить массив, в случае если ему нужнон вызвать самого себя?
Итак проблема: Скрипт (поисковый движок) вызывает сам себя для того, чтобы отобразить последующие страницы с найдеными линками (не более...

Удаление файлом самого себя
Может .exe удалить самого себя и как это сделать в VS15?

Возможно ли выполнить метод из самого себя?
К примеру, такой код: private string method() { string s += "+1"; if(s.Contains("1+")==false) method(); return s; ...

10
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
18.01.2011, 00:42
Ну дык добавь в этот кусок кода запуск самого себя и по идее будет бесконечный цикл
0
20 / 20 / 2
Регистрация: 27.08.2009
Сообщений: 71
18.01.2011, 01:04  [ТС]
Запустить то не проблема...
проблема в
Чтобы скомпилировать новую программу - нужен код.... внутри этого кода должен быть код содержания этой программы, а в нутри него он же и так бесконечный цикл...
Или я Вас не правильно понял...?!
0
 Аватар для sigmov
585 / 372 / 63
Регистрация: 22.07.2009
Сообщений: 875
Записей в блоге: 4
18.01.2011, 01:09
Цитата Сообщение от dampir Посмотреть сообщение
Есть программа, скажем самая простая - консольная, которая выводит одно число, жеско прописано в коде...
Цель: программа должна перекомпилировать сама себя бесконечное кол-во раз и изменила это число(на случайное новое)...
Проблема:
Чтобы скомпилировать новую программу - нужен код.... внутри этого кода должен быть код содержания этой программы, а в нутри него он же и так бесконечный цикл...
Вот как бы решить эту делему...:black_eye.:
Каким образом прописано число?
Константа?

Если вам нужна перекомпиляция - то ваша программа сводиться к
1) Вызов процесса ildasm+сборка -> il
2) Парсинг IL
3) Вызов процесса ilasm+il -> сборка
0
 Аватар для exe-dealer
308 / 161 / 11
Регистрация: 07.06.2009
Сообщений: 538
18.01.2011, 01:11
погугли задачу про вывод в консоль програмы самой себя, думаю где то в этом направлении искать надо. щяс лень думать
0
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
18.01.2011, 01:21
dampir,
программа
C#
1
2
3
4
5
... main()
{
скомпилировать ЭТОТ код
запустить полученный экзешник
}
т.е новый файл будет
C#
1
2
3
4
5
... main()
{
скомпилировать ЭТОТ код
запустить полученный экзешник
}
0
20 / 20 / 2
Регистрация: 27.08.2009
Сообщений: 71
18.01.2011, 01:45  [ТС]
m0nax
Это примерно выглядит так:
C#
1
2
3
4
main()
{
string s = @"main(){string s =@""main(){string s =@""main(){..и так циклиться..}""}"" }" \\както так...
}
Иначе количество перекомпиляций определено(можешь сам попробывать)
У меня была идейка скидывать код во временый файл самого себя... но пока... както мой мозг еще циклиться...))
exe-dealer
вывод в консоль програмы самой себя
- пока не дельного не нашел...
sigmov
Каким образом прописано число?
- не особо принципиально...пусть будет так..
C#
1
2
int a = 4;
Console.Writeline(a.ToString());
Мм... диасамблировать это жеско...
0
 Аватар для exe-dealer
308 / 161 / 11
Регистрация: 07.06.2009
Сообщений: 538
18.01.2011, 02:21
Цитата Сообщение от dampir Посмотреть сообщение
Мм... диасамблировать это жеско...
компиляция намного жестче чем трансляция/дизасемблирование
0
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
18.01.2011, 02:29
можешь сам попробывать
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* 
@echo off && cls
set WinDirNet=%WinDir%\Microsoft.NET\Framework
IF EXIST "%WinDirNet%\v2.0.50727\csc.exe" set csc="%WinDirNet%\v2.0.50727\csc.exe"
IF EXIST "%WinDirNet%\v3.5\csc.exe" set csc="%WinDirNet%\v3.5\csc.exe"
IF EXIST "%WinDirNet%\v4.0.30319\csc.exe" set csc="%WinDirNet%\v4.0.30319\csc.exe"
%csc% /nologo /out:"%~0.exe" %0 
"%~0.exe"
del "%~0.exe"
exit
*/
 
class HelloWorld
{
    static void Main()
    {
        System.Console.WriteLine("Hello, World!");
        System.Diagnostics.Process.Start("1.bat");
       System.Console.ReadLine();
    }
}
1) создать текстовый документ, скопировать туда код и сохранить как 1.bat
2) запустить

p/s/ на всякий случай приготовься к перезагрузке, ибо остановка процесса не реализована
1
20 / 20 / 2
Регистрация: 27.08.2009
Сообщений: 71
18.01.2011, 03:53  [ТС]
хм.. забавная идейка...
А можно поеснения к ней (к батнику)

как я понимаю:
ставиться задача
ищеться компилятор
компилируется временный файл
временый файл запускаеться
временый файл удаляеться
выходим

Те она пытаеться скомпилировать весь батник?для этого и поствил? /**/

Интересно... осталось переворить)

Добавлено через 27 минут
m0nax
Только ведь оно само себя не перекомпилирует, а просто у тебя есть батник в котором лежит код и который создает определенный экзешник, к которому ты обращаешся...а этот ехе дергает батник... это немного не то...
Если скажем программа будет содержать код подобного батника, чтобы перекомпилировать сама себя...
то появляется цикличность ибо внутри этого кода нужно учесть создание батника, а внутри создания батника создания кода, а в создании кода создание батника и тд))
Хотя чтото в этом есть..
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
18.01.2011, 05:36
Всего то надо поменять у инициируемой переменной дефолтное значение (это запись числа в самом коде) и полученный файл перезаписать поверх старого. Только зачем? Если новое значение случайно, то почему бы не использовать обычный генератор случайных чисел?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.01.2011, 05:36
Помогаю со студенческими работами здесь

Из Delphi в C#: скопировать самого себя в папку автозагрузка
FileName:= ExtractFileName(Application.ExeName); SHGetSpecialFolderLocation(0,CSIDL_STARTUP,List); new(folder); ...

Класс который можно вложить в самого себя
Как можно создать класс, который может вкладываться в самогосебя? Класс может быть дюбого типа, но вкладываться должны все. Через...

создать класс способный возвращать копию самого себя
Надо создать класс способный возвращать копию самого себя, за счет применения метода GetCopy, который должен использовать метод...

Как экземпляру класса изменить тип самого себя?
Есть класс1, наследованный от класса класс-предок. Он лежит в list<класс-предок>. Нужно, не меняя его позиции в list'е, изменить его тип...

Найти минимальный элемент матрицы и разделить его на самого себя
есть данный массив, который выводит количество строк и столбцов if (textBox1.Text != "" && textBox2.Text !=...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru