Автор |
Сообщение |
|
|
Заголовок сообщения: |
|
|
|
Ок. Так и сделаю.
Ок. Так и сделаю.
|
|
|
|
Добавлено: Вс янв 24, 2010 22:33 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
вообще лучше всего бы в раздел статей перевод, а после него можно и своими словами обсудить. (имхо).
вообще лучше всего бы в раздел статей перевод, а после него можно и своими словами обсудить. (имхо).
|
|
|
|
Добавлено: Вс янв 24, 2010 22:20 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Остальное переведу/перескажу завтра, когда у самого всё в голове устаканится.
Кстати, если с классическим фортом возникает много всяких частных сложностей (Эртлом описанных), то (как я и предполагал, впервые увидев strongForth) на статически типизированный форт все эти алгоритмы ложатся практически идеально .
Думаю, тут есть что обсудить.
Остальное переведу/перескажу завтра, когда у самого всё в голове устаканится.
Кстати, если с классическим фортом возникает много всяких частных сложностей (Эртлом описанных), то (как я и предполагал, впервые увидев strongForth) на статически типизированный форт все эти алгоритмы ложатся практически идеально .
Думаю, тут есть что обсудить.
|
|
|
|
Добавлено: Вс янв 24, 2010 22:19 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Даю вводную
Итак, задача получить data flow graph из форт-исходника.
Для начала не берём в расчёт различные управляющие конструкции, вроде IF, а только операции (арифметические и прочие) и стековые манипуляторы. При компиляции стековых манипуляторов мы их просто выполняем. Основной трюк начинается при работе со словами обработки данных. Компилятор берёт со стека и кладёт обратно столько же элементов, сколько и компилируемое слово. Но вместо его выполнения, компилятор строит структуру, содержащую слово, и взятые со стека операнды. А вместо результата мы возвращаем на стек указатель на эту структуру. Нетрудно увидеть что в результате получается граф потоков данных, готовый к дальнейшему употреблению. См. картинку 1 в статье A New Approach to Forth Native Code Generation.
Продолжение следует.
Оказывается писанного перевода _этой_ статьи я не делал (есть про компиояцию в gForth). Могу перевести (типа дословно), а могу просто пересказывать здесь дальше в той же манере.
Даю вводную 8)
Итак, задача получить data flow graph из форт-исходника.
Для начала не берём в расчёт различные управляющие конструкции, вроде IF, а только операции (арифметические и прочие) и стековые манипуляторы. При компиляции стековых манипуляторов мы их просто выполняем. Основной трюк начинается при работе со словами обработки данных. Компилятор берёт со стека и кладёт обратно столько же элементов, сколько и компилируемое слово. Но вместо его выполнения, компилятор строит структуру, содержащую слово, и взятые со стека операнды. А вместо результата мы возвращаем на стек указатель на эту структуру. Нетрудно увидеть что в результате получается граф потоков данных, готовый к дальнейшему употреблению. См. картинку 1 в статье A New Approach to Forth Native Code Generation.
Продолжение следует.
Оказывается писанного перевода _этой_ статьи я не делал (есть про компиояцию в gForth). Могу перевести (типа дословно), а могу просто пересказывать здесь дальше в той же манере.
|
|
|
|
Добавлено: Вс янв 24, 2010 22:05 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Ну для таких слов и «классическая» inline-подстановка со щелевой оптимизацией опкодов (как в SPF) противопоказана.
Ну для таких слов и «классическая» inline-подстановка со щелевой оптимизацией опкодов (как в SPF) противопоказана.
|
|
|
|
Добавлено: Вс янв 24, 2010 00:57 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
кстати, большое спасибо, оч интересная тема.
для Форта такая оптимизация, кстати, достаточно неоднозначна в силу возможных игр со стеком возвратов, исполнением данных и т.п.
кстати, большое спасибо, оч интересная тема.
для Форта такая оптимизация, кстати, достаточно неоднозначна в силу возможных игр со стеком возвратов, исполнением данных и т.п.
|
|
|
|
Добавлено: Вс янв 24, 2010 00:52 |
|
|
|
|
|
Заголовок сообщения: |
Про «агрессивную» оптимизацию для Форта |
|
|
Не ново, но здесь не обсуждалось.
M. Anton Ertl. Compilation of Stack-Based Languages, status April 1999
Эксперименты по полноценной «агрессивной» оптимизации генерируемого Фортом кода (как «у больших» языков программирования, по « Книге дракона»).
Не ново, но здесь не обсуждалось.
[url=http://www.complang.tuwien.ac.at/projects/rafts.html]M. Anton Ertl. Compilation of Stack-Based Languages, status April 1999[/url]
Эксперименты по полноценной «агрессивной» оптимизации генерируемого Фортом кода (как «у больших» языков программирования, по «[url=http://www.ozon.ru/context/detail/id/146264/]Книге дракона[/url]»).
|
|
|
|
Добавлено: Вс янв 24, 2010 00:47 |
|
|
|
|