Ух, этот СИ, Душе покой не даёт ...
Цитата:
Сообщение от SMT
кажется, я начинаю понимать людей, цепляющихся за асм (или за си без плюсов) вероятно, причины у них те же, что и у поклонникoв спектрума. поэтому и аргументация про поддержку программы и удобство кодирования их совершенно не трогают. они тихими долгими вечерами корпят над своими программами и им не нужно доделать к сроку. хм... мой спор с Proteus похож на издевательство, как если бы пцшник предложил спектрумисту аналогичное соревнование (так что я извиняюсь). а наши попытки переубедить этих людей сами знаете на что похожи
судя по тому, что Robus отдельно выделяет случаи (уже второй раз, в первый я не придал этому значения), когда команда находится в конце таблицы, как наихудший, можно предположить, что происходит линейный поиск в таблице команд. в таком случае лучше прочитать, что такое конечные автоматы и как они применяются в компиляторах, чем бесконечно оптимизировать цикл поиска. потому что хорошо реализованный автомат на визуал басике будет быстрее (но на больших объемах данных), чем любая реализация линейного поиска на ассемблере
Вообще-то, признаюсь, большего неудобства нежели в СИ с любыми плюсами я не испытывал ... Наверное самое лучшее, что могли придумать это паскаль, не считая ВАСИКА, конечно ! Это с точки удобства программирования. Просто я умудрился на СИ написать несколько программ, и заметил тенденцию, что писать их нужно как можно проще, не стараясь использовать готовые библиотеки. Поскольку при всей своей мулти-платформинности СИ не имеет всех библиотек и в любом случае перенося программу в другую среду приходится её править ! Но да же если стать извращенцем, а это можно сделать и на асме, и писать всё простейшими командами, то и тут есть подводные камни. На микроконтроллерах я не один раз с этим сталкивался. Вот не хочет он 37-мой IF исполнять ... Что мне делать ??? Я не могу полезть и так просто переписать кусок компилятора. Но если у меня есть асм, я просто эту проблему обойду ... Да, - я затрачу в три раза больше времени, но я добьюсь успеха. Получается, для качественной работы с СИ мне нужно быть асом использования команд, не использовать больше двух сравнений в IF, следить за тем что бы во вложенном цикле небыло вложенных циклов больше чем 10-ть штук, зачем ??? Это всё превращает не в программирование а в борьбу за выживание под ПРОЦИКОМ, так и зародилась винда ... Про кодинг под виндой страшно говорить ... То используешь какую-нибудь библиотеку, переносишь на другой комп, а тебе говорят, что тут она уже не работает ... Как проклятый ищешь её на другие винды, а тебе сообщают, что её перестали модернезировать со времён 2001 года, что делать ??? Я месяц сидел кряхтел над работой, пришёл сдавать работу, и выясняется что у крутого нет винды ХР, у него только ИТ, поскольку его внучатый-племянник по дедушкиной линии об этом прочитал в каком-нибудь УМНОМ учебнике по чайникостроению ... И я сижу и переписываю половино программы на СИ неизвеснт для чего и почему ... Хотя извесно почему, потому что был дурком и согласился использовать библиотеку ... Или тот же ком-порт ... Как я когда-то влетел с этим, пока не написал личный маленький модуль на асме для управлением компортом, работает как часы на совершенно любых виндовсах, ну за исключением 3.11, а предыдущий так глючил, проглатывая целые куски данных ... Конечно, никто же не тестировал, а что будет если без остановочно на 115200 отправить ему данные, ах как визуал начинает захлёбываться, особенно если отправить FF00FF00 ... Понятно, что одна винда другой пошлёт нормально, ведь у неё переходные процесс, и времени хватает на один бит, поэтому стоп-бит и старт бит у них не сливается, но стоит на асме отправить пачку, - держи винда любимый глюк. Я не знаю, может я за 15-ть лет так и не научился программировать на ПАСЕ или на СИ, но я признаюсь честно, никогда у меня такого не было на АСМЕ, как на ПиЦи так и на Speccy ... Глюки, конечно, были, но не такого плана ... Уж точно на диск всегда всё записывалось как по часам далеко не по-советским !!!
Кстати, по-поводу команд в таблице, помоему для компилятора, поиск команды такая мелочь, в сравнении с обработкой в строке математических функций или чего-то подобного. А если пытаешься совместить разные синтаксисы ALASM и TASM, то всё превращается ещё в больший ужас ... Но и вправду, я в этом случае выбрал АСМ и очень быстро добавляю новые возможности ... И когда я начинал писать этот АСМ, то подумал, что быстрее будет его сделать на высоком уровне, в итоге универсальность и гибкость самих команд на порядок ниже нежели поиск макросов, который был сразу написан на АСМе. Теперь я часто задумываюсь, что зря решил писать выделение команд на высоком уровне, хоть теперь это и асм стал, но из-за ограниченности или громосткости кода пришлось упростить поиск команд, а сделать новый вариант мне в лом, поскольку это нужно переписывать таблицу команд !
Я не знаю чем отличается методы с такими шарообразными названиями, но я не думаю, что можно ими решить например поиск:
...EQU ...=...+...
Где "..." любое значение с любыми символами, только певое "..." это переменная один, второе "...", соответственно второе ... На асме эта процедура выглядит в 20-40 строчек, не помню уже точно, но короткая и такая шустрая, что IF долше её исполнится ... Кроме всего у каждой команды есть условия, на переменные, и если это условие не совпало, то искать нужно дальше, а в условиях может быть что угодно, например проверка находится ли переменная в диапозоне от -127...+128, если нет, то ищем слежующую команду. Кстати и поиск у меня двухступенчатый, что в своё время ускорело процесс в десятки раз ...
Я извеняюсь перед любителями СИ, может я чего лишнего наговорил, не хотел обидеть, просто страшно становится, ведь мы когда-то начинали с ВАСИКА, и пришли к АСМу, неужто этот путь был напрасно, ведь СИ должен был встретиться по пути этой дороги а не в конце ...
Ещё раз извеняюсь, все мы творим но на разных инструментах, помоему это лучшее объяснение этим спорам, хотя я надеюсь что меня не воспримут как спорщика, а как человека, который высказал своё мнение ...
Ссори, ухожу в подполье на сутки ...
У меня появился заказ, а это на сутки минимум ... Должен работать ... Хотелось бы узнать в отвлечении от темы, я тут скачал последнюю версию UnrealSpeccy 27в, она говорит мне что OS Not Support !!! SMT, это что ??? Может я не так настроил ??? И ещё, может на досуге сделаешь автоматическое добавление в диск А: имейджа из командной строки ... А то я частенько работаю сразу над двумя-тремя проектами, иногда так нужно !?!
Листинг и исправление багов на послезавтра !!! Удачи вам и мне то же не помешает ... Единственное, чего не хочу - ехать в ЛасВегас, там столько умолешённых, и все с шарообразными глазами, а ещё у них сеть на 150 вольт, правда есть и на 220, но их техники отличаются, один завёт другого, что бы тот протянул удленитель, тот который отвечает за 150 вольт, - тянет своё, а тот который за 220, - свою. Хех, дикий народ ...