2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11  След.
 
 Re: Тьюринг-полон ли данный язык
Сообщение31.03.2020, 20:04 
Заслуженный участник


27/04/09
28128
В обычных часть памяти отведена под стек вызовов, разделённый на фреймы, каждый из которых соответствует функции, в которую мы вошли, и там кроме адреса возврата ещё хранятся все локальные переменные, которыми манипулирует эта функция, кроме тех, что находятся в регистрах процессора (но их немного). А регистровые машины образца как здесь более просты и напрямую такое реализовать не дадут.

Виртуальная машина языка Lua наверно займёт место посередине — там есть такой стек, но его элементы зовутся регистрами и адресуются по номерам, по идее относительно вершины, чтобы функция всегда обращалась за одной и той же переменной по одному и тому же индексу; в итоге в отличие от текущей машины, низкоуровневый код реально имеет дело не с реальными номерами/именами регистров, а со смещениями. Можно попробовать переделать на такой манер, но мне пока леееньь.

-- Вт мар 31, 2020 22:08:27 --

Ещё более высокоуровневая машина может иметь отдельными сущностями окружения — сопоставления реальным именам переменных значений. Окружение есть для каждой функции, (и вообще для каждой вложенной конструкции, определения имён изнутри которой не видны вне), и окружения вложены друг в друга и делегируют поиск значения переменной из внутренних наружным. Это не очень минималистично и не очень экономно, но таким механизмом действительно нередко пользуются в реальности.

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение31.03.2020, 20:13 


21/05/16
4292
Аделаида
А если попробовать, чтобы функция содержала множества входных значений, при вызове добавляла значения в множества, а при выполнении доставала значения из множеств? (Кажется, этот тот же стек, но только внутрифункциональный)

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение31.03.2020, 20:18 
Заслуженный участник


27/04/09
28128
Всё потребует проверки всё равно, и насколько подъёмно, не возьмусь оценивать. :-) Я вот теперь думаю, или путём Lua пойти, или таки я буду потом делать компиляцию в питон и пусть он сам разбирается с поиском переменных и вызовами, благо перевод на его правила поиска будет почти безболезненным, а «неаппаратный»стек я хоть и предложил, но сам я бы его реализовывать бы не стал.

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение31.03.2020, 20:24 


21/05/16
4292
Аделаида
Как мне кажется, для пути Lua надо изменить совсем немного - call_stack_push/pop (чтобы они убирали/добавляли еще и аргументы), CallOp/ReturnOp (чтобы можно было вызывать/возвращать аргументы), и новую операцию (ArgOp?) для получения последних аргументов данной функции из стека.

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение31.03.2020, 20:27 
Заслуженный участник


27/04/09
28128
Ещё надо будет вместо Register мне в описаниях типов написать уже явное int, потому что это будут теперь не абстрактные имена регистров, а всегда смещения, и скорее всего защитить от доступа к регистрам из предыдущих фреймов, потому что функция в точности не может знать, что там было вызвано до неё в какой последовательности, и наверняка такой доступ некорректен. А так да, менять не должно быть много, хотя может понадобиться ещё что-то, пока не приступлю не соображу в точности.

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение31.03.2020, 20:29 


21/05/16
4292
Аделаида
arseniiv в сообщении #1449990 писал(а):
защитить от доступа к регистрам из предыдущих фреймов, потому что функция в точности не может знать, что там было вызвано до неё в какой последовательности

Так тут же все просто: у последней вызванной функции последние аргументы. При окончании вызова аргументы удаляются, при вызове добавляются.

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение31.03.2020, 20:39 
Заслуженный участник


27/04/09
28128
Это-то ясно, главное чтобы функция не могла ничего сделать с остальной, чужой частью стека. :-)

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение01.04.2020, 08:43 


21/05/16
4292
Аделаида
Так ArgOp вернет ей только ее собственные аргументы. Она никак не сможет добраться до других.

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение01.04.2020, 15:45 
Заслуженный участник


27/04/09
28128
Но регистры-то для неё отдельные от всех остальных не заведутся. Я лучше потом на примере покажу, или может как-то иначе, не знаю как лучше объяснить.

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение01.04.2020, 16:01 


21/05/16
4292
Аделаида
А, в этом смысле. Понял.

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение02.04.2020, 16:59 


21/05/16
4292
Аделаида
arseniiv, ну как у вас успехи с обновлением Madhine?

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение02.04.2020, 18:22 
Заслуженный участник


27/04/09
28128
Я начал с утра, пока было настроение, и потом решил, что нетушки, проще мне будет сделать чуть позже компиляцию в питоновский ast. Я с этим продолжу, но наверно не сегодня. Ещё у меня есть идея добавить туда кое-какую типизацию (не нарушающую условие, что операции всё равно только над множествами), но пусть она будет сюрпризом, а то ещё передумаю.

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение02.04.2020, 21:42 


21/05/16
4292
Аделаида
Но мне ведь компиляцию в Madhine тоже завершить хочется(

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение03.04.2020, 13:01 
Заслуженный участник


27/04/09
28128
Ну я конечно довольно нехорошо сделал, что сразу не понял, насколько с процедурами, если позволять рекурсию, всё потребует переписывать и дописывать, и выдал частично рабочий код, а после этого оказалось, что там так много нужно сделать… Но есть надежда, что кто-нибудь перепишет его за меня. :-) Пока не могу ничего обещать, тут вокруг порядочный бардак творится временами, два дня нормально не высплюсь. Может, дальше будет лучше. Вечером посмотрю что-нибудь, мне уж больно хочется попробовать ту штуку с типами, а она потребует иметь рабочий транслятор, чтобы её как следует вкусить, так что мотивация пока есть.

 Профиль  
                  
 
 Re: Тьюринг-полон ли данный язык
Сообщение11.04.2020, 18:19 


21/05/16
4292
Аделаида
Ну как успехи у вас?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 160 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group