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, Супермодераторы



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

Сейчас этот форум просматривают: artur_k


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

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