Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
_________________ iLavr
|
13 Dec 2015 15:49 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
Угу - но все примерно так и делают - выражение с переменными и скобками вычислять можно только одним единственным способом, который можно запрограммировать тем или иным образом
|
13 Dec 2015 15:57 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну вот и я - "угу"... только до твоих 90-х и моих чуть раньше это написали в десятках книжек. А вот это галимая неправда или твоё личное заблуждение. Способ-то как раз не один единственный. Кстати, в тех же книжках и написано...
_________________ iLavr
|
13 Dec 2015 16:03 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
способ по сути один - через стек (рекурсия это тоже стек)
|
13 Dec 2015 16:18 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну сам себе противоречишь... Даже если свято поверить тебе, никуда не глядя, то уже не один. И с чего ты решил, что он "по сути один - через стек"? P.S. Что-то мне это напомнило одного деятеля с ZX.PK, который заявил, что все компьютеры на i8080 - одинаковы... Поскольку в них во всех i8080. Так и у тебя - что не делай, это - тоже будет стек...
_________________ iLavr
|
13 Dec 2015 16:49 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
просто далеко не во всех ассемблерах есть функционал по вычислению выражений - это штука второстепенная, как и максимально разрешённая длина строки
|
13 Dec 2015 17:17 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну, как говорится, " я вам не скажу за всю Одессу, вся Одесса очень велика"... Но замечал я, что JMP $+2 умеют делать очень многие ассемблеры! И как же они это делают без " функционала по вычислению выражений"? И, раз уж на то пошло, то примитивы типа JMP $+2 и SHLD METKA+1 запросто реализуются без всяких стеков линейным разбором строки. Другое дело, что это не универсальная вещь, да и неудобная, что, собственно, и позвало меня поискать более оптимальные алгоритмы - об чем и весь сыр-бор тут... Суть-то в чем? Суть в том - для какой системы мы пишем ассемблер. Если это ассемблер для кросс-системы, работает на системе с большими ресурсами, там хоть два стека организуй и неограниченную длину строки. А если ассемблер для системы, у которой ОЗУ - 48К, и в этом ОЗУ - сам транслятор, исходный текст и буфер под код, стеки-то особо не размахнешь... Можешь увидеть сообщение "Мало ОЗУ", если буфер меток переполнится. Поэтому в доступных мне исходниках я и видел - размер возможного арифметического выражения ограничивают, если что выдают: "Expression Too Complex".
_________________ iLavr
|
13 Dec 2015 17:32 |
|
|
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1388 Location: Abakan
|
Lavr, у меня где-то были ссылки на теорию, но мне так показалось, что оно тебе не нужно, а практического кода у меня увы нет. В 90-х был, но сплыл, и тот не мой, а хорошего знакомого. А алгоритмов не один, только общеупотребимых, на сколько я помню, аж три штуки, и один из них как раз рекурсивный.
|
13 Dec 2015 20:46 |
|
|
petrenko
Doomed
Joined: 10 Mar 2012 16:21 Posts: 598 Location: РФ
|
Значит надо "апгрейдить" систему, добавить 64к озу "чиста" для стека.
|
14 Dec 2015 06:28 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Спасибо! Я вчера уж всё нашел, и теорию и экземпляр кода - тут ты меня своим намёком сориентировал верно! Просто мы с Shaos-ом ведем никчему не обязывающую беседу... Он меня убеждает, мол " каждый ...рочит, как он хочет". А я с ним соглашаюсь, говорю " да-да... но в данный момент я хочу в этом процессе придержаться хоть каких-то общепринятых правил". Ну а какие правила? Ну вот взяли мы за образец "Микрон", на смену ему, устаревшему и с глюками, пришел АССЕМБЛЕР «М&S», что он постулирует по интересующему меня вопросу? Значит длина строки всё те же 64 символа... Разбор строки - видно что линейный, т.к. нет приоритетов, а значит и никаких стеков нет. Но " функционал по вычислению выражений" реализован весьма нехилый!
_________________ iLavr
|
14 Dec 2015 08:18 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А что-то я не увидел, где у тебя используется " вычисление на стеке с учётом приоритета операций и раскрытием скобок". Хотя даже инструкцию вроде прочитал внимательно: http://robots.chat.ru/rw1_r.htmlИ ссылка на компилятор RW1 теряется вот здесь: https://sourceforge.net/projects/nedopc
_________________ iLavr
|
10 Oct 2018 08:59 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
|
11 Oct 2018 18:37 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Если я всё правильно помню, размер анализируемой строки напрямую связан с размером стеков. Это еще jdigreze тут отметил: Я посмотрел свои исходники, и увидел, что на момент этой беседы я алгоритм со стеками тоже реализовал, но не вставил в окончательный вариант ассемблера - не состыковался он у меня удобно с существующим уже разбором строки. В этой связи мне и стало интересно - ты размер стека (aka буфера) у себя сколько задал?
_________________ iLavr
|
12 Oct 2018 02:05 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
Судя по коду стек у меня на 1000 элементов создаётся - пока хватало Строка тоже где-то ограничена была по длине (в другом более головном файле) На самом деле хардкод подобного рода считается очень плохим тоном среди современных программистов Ну что есть, то есть - как уж написал в конце 90-х, а переписывать времени нету...
|
12 Oct 2018 18:02 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Вооооо! А у меня всего на 200, но самое смешное, я его не смог превысить своими примерами. То есть, я не смог подсунуть в алгоритм такой выдуманный, но осмысленный пример, чтобы выйти за 200. А вот этот момент не понял, что за " хардкод подобного рода считается очень плохим тоном среди современных программистов"? Я тут, ты сам видел, гуглил примеры обработки строки на стеке - у всех очень похожие алгоритмы.
_________________ iLavr
|
13 Oct 2018 05:58 |
|
|