Страница: 1 |
Страница: 1 |
Вопрос: Вычислительные системы
Добавлено: 08.05.09 19:54
Автор вопроса: D o c a l | Web-сайт:
Давно я не был уже на форуме.Началась учёба..первый год в университе,сложно учиться.Ну я канеш не особо и учучь;).Учусь на математическом факультете спецыальность Прикладная математика.Тоесть учим математику и как её испоьзывать на деле...тоесть программирования...Есть у нас Такой предмет как "Вычислительные системы" где мы создаем свою вычислительную машину с не боьшим наором команд...тоесть печатаеш команды например:
RDRA
INCA 5
WRRA
STOP
программа анализирует и каждую строку и выпоняет определенные действия.Например RDRA -считывает значения целового типа в регистр RA,INCA -к регистру RA плюсует значения которое передаетса ей в параметре,WRRA-печает значения RA на экран,STOP-останавивает программу.Всё это реализируетса на ПАСКАЛЕ.Каждая команда имеет свой номер.Напимер RDRA-15, WRRA-13, STOP-0 и так дальше...
Ну и вот сам то вопрос.Я например все команды записал в файл и возле каждой поставил её номер.
Вот так:
STOP 0
.
.
.
WRRA 13
.
.
.
RDRA 15
потом читаю всё это дело в массив ЗАПИСЕЙ(RECORD)(TYPE по бейсиковськи)
а потом когда идет анализ просто перебираю эти записи в цыкле и ищу назву команды получаю ее код а потом кейсом по номеру команды выполняю действия которые отвечают данной команде.Но мой учитель по предмету мне рекомендует получать номер команды инным путем,говорит мой способ трудоемкий,я канеш с ним согласен, но вот что он мне предлагает(сначала кратко о командах:каждая комнда складенная из 4 символов,всего команд ~80):
Розбить все команды по группам смотря с какой буквы они начинаютса тоесть:
LDRA
LDRI
LOOP
это одна група (первая буква одинакова)
и писать такой код
CASE CodeNAME[1] of (тоесть идет касе по первой букве)
'L':CASE CodeNAME[2] of
'D':CASE CodeNAME[3] of
'R':CASE CodeNAME[4] of
'A':{выполения LDRA}
'I':{выполения LDRІ}
'O':CASE CodeNAME[3] of
'O':CASE CodeNAME[4] of
'P':{выполнения LOOP}
.
.
.
ну и так дальше
Тоесть оно действительно бережет силы процессора ...но силы программиста оно нещадит..это очень нудно и долго делать формировать эти кейсы...причем нет возможности после компилировки добавлять команды... с исходниками придеться таскаться и с компилятором,а еше их потом добавлять эт мучения.
Кто что думет об этом?Как правильнее делать?Мне интересно ваше мнения!
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 08.05.09 21:57
lex, yacc
Номер ответа: 2
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #2
Добавлено: 09.05.09 01:10
Препод видимо паскалист-геморойщик ему класс покажешь и не поймет небось.
Моe мнение херней вы там занимаетесь вместо того чтоб для начала синтаксис сишных команд учить.
Не пропадай, заглядывай почаще!
Номер ответа: 3
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #3
Добавлено: 09.05.09 06:48
Не знаю, на большом кол-ве команд я, наверное, делал бы через Dictionary с делегатами.
То что препод советует, разумеется, будет работать (теоритически) быстрее, но я лично так бы не делал.
Номер ответа: 4
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #4
Добавлено: 09.05.09 14:32
но я лично так бы не делал.
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 13.05.09 01:42
Ну его тот предмет, где паскаль учат... Займись делом, заработай денег и закрой себе сессию
Номер ответа: 6
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #6
Добавлено: 13.05.09 01:50
+1