![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| flowex |
|
|||
|
Unregistered |
В данной теме мне бы хотелась рассмотреть некоторые задачи компьютерного моделирования основных математических концепций, на которых основаны большинство компьютерных систем.. Эту тему я создал для того, чтобы самому разобраться в некоторых моментах моделирования. Итак, начнём. Вот список задач, предлагаемых на обсуждение в этой теме на этот момент: I. 1. Эмулировать при помощи JScript работу процессора, работающего по Фон-Неймановской системе. В результате мы должны получить следующее: в файле data.txt должны содержаться основные команды процессора (go, ip и др.) и поступающие данные; хочется добиться того, чтобы в этом текстовом файле можно было бы реализовывать разные операции типа сложение, деление, нахождение НОД, вычисление факториала числа.. В роли процессора играет файл CPU.js Его память лучше также реализовать в текстовом документе. 2. a. Видоизменить процессор так, чтобы он соответствовал архитектуре RISC. b. Видоизменить процессор так, чтобы он соответствовал архитектуре CISC. II. Создать свой тип вещественных чисел. При поступлении на вход обычного десятичного числа, скрипт должен преобразовывать его в какой-то код (что-то типа стандарта IEEE) и хранить в памяти, откуда можно вызывать его и производить над ним определённые действия (прибавить к другому, поделить, умножить). Также должен быть возможен обратный перевод. Обязательно учесть,что сущечтвует Underfined, Infinity, NaN.. III. Создать кодер/декодер для кодировки текста по методу Хафмана. С уважением, flowex. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Сразу оговоримся, писать это лучше не на JScript.
Фон-Нейманская архитектура, очень упрощённо, состоит из ALU; общей памяти для программ и данных; механизма выборки и декодирования инструкций. Работа с устройствами ввода/вывода не так важно, они могыт быть просто отражены в память(чипы 8051), или иметь отдельные инструкции(чипы eZ80, ARM7 etc). ALU вещь очень простая, в идеале не имеет состояний(не автомат), получает инструкцию и выполняет. Содержит регистры(чем больше, тем лучше) и может работать со стеком в памяти (ограниченный стек не в RAM можно найти в PIC'овских микроконтроллерах, лажа если честно). Через любой регистр можно обращаться к памяти, регистры можно комбинировать, в любой операции можно задействовать любые регистры - возьмём это условие для простоты, на практике создать такое железо очень сложно и дорого. Далее будем рассматривать примеры, поэтому оговорим некторые вещи и команды:
Если не брать во внимание наши навороченные регистры, то в остальном код такой же как x86 и подобных процах. В настоящем железе регистров обычно очень мало, все результаты постоянно в стек пишуться, что бы освободить регистр. Это не так существенно, если бы я писал "по настоящему" код бы разросся в полтора раза И так врубились как работает ALU, в простейшем случае это огроменный switch, хотя не советую так делать, работать будет очень медленно. В хорошем интерпретаторе имееться быстрая хешь-таблица с адресами обработчиков инструкций. Следующей проблемой будет декодер комманд. Ясно ведь что опкодов во много раз больше чем мнемоник их преставляющих в ассемблерном листинге. Например LD A, B и LD B, A это два разных опкода. Как ты будешь их кодировать - твоя свобода. В Гарвардской архитектуре часто все опкоды имеют один размер(напрример в PIC'ах так), естественно за счёт простоты декодера имеем кучу лишних потерь памяти. В х86 архитектуре(современный Intel/AMD/VIA комп) имеет, если не ошибаюсь, опкоды от 1 байта до 16 и больше. Открой даташит по любому микроконтроллеру, в конце всегда есть листинг опкодов, почитай, подумай, пиши. Различия между RISC и CISC архитектурами в общих словах сходяться на количестве инструкций. Например в PIC'e всего 32 инструкции(RISC процессор), а в eZ80L92 их более 150 (CISC процессор). CISC проц. удобней программировать на ассемблере, но сложней под него писать компиляторы, вернее не задействуешь всю его мощь коммманд. RISC процы чсто имеют огроменное количество регистров и оптимизированны под компиляторы (например ARM7 в AVR, Phillips etc процах), писать человеку под такой проц. довольно сложно. CISC в железном плане сложней и дороже RISC. Сейчас мало кто пишет на асме если есть C компилятор. Из всего сказанного выше можно сделать заключение: все новые адря процев RISC, все CISC это спроектированные ранее процы, выпускаемые с новой архитектурой Вещественные числа можно представить по IEEE(чего то там ещё Другой способ хранения числа - fixed point, где храниться только мантисса и знаковый бит. Такое число может хранить что угодно от 0 до 1. ИXМО не плохой способ повышения точности, но ядро проца должно сие число поддерживать На счёт Xафмана ты наверное пошутил -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| flowex |
|
|||
|
Unregistered |
Насчёт Хафмана я как раз не шутил, на этой неделе я должен представить готовый кодер, использующий хеш массив.. Но мне просто офигенно трудно во всём этом разобраться, поэтому и спршиваю!
|
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
А где ты раньше был? Неделя у тебя как раз уйдёт на написание архиватора на ассемблере, компилера под твой "процессор" ещё нет
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| flowex |
|
|||
|
Unregistered |
Да нет же, первоочередной задачей сейчас для меня является написание кодера по Хафману! Как мне сказали, в программе должен использоваться массив объектов.. ?
|
|||
|
||||
| flowex |
|
|||
|
Unregistered |
Я тут нашёл Хафмана на паскале, но мне от этого не луше: с трудом могу интерпретировать на JScript. Help!
|
|||
|
||||
| flowex |
|
|||
|
Unregistered |
Большое спасибо тебе, Sardar, за "процессор". У меня всё получилось, да вот и с Хафманом тут немного разобрался - почти написал (через объекты), а вот с типом float всё вожусь, - идей тьма, а толку никакого.. Так что вопрос: где бы достать IEEE на русском?
|
|||
|
||||
| Sardar |
|
||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Классно, у меня бы на такой симулятор не менее двух месяцев ушло бы и не на JScript
Очень плохая тактика, доку нужно читать на инлише и никак иначе, вот это обязательно, там же и стандарты: http://www.validlab.com/goldberg/paper.pdf Полезно: http://babbage.cs.qc.edu/courses/cs341/IEE...references.html Иначе идём в яндекс и забиваем IEEE 754 -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||
|
|||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |