Mar. 13th, 2013

pozitronik: (Sheridan)
14:39 13.03.2013
Пилим восьмибитный процессор. Часть шестая: улучшение архитектуры и снова ассемблер.
После вынужденного перерыва снова возвращаюсь к своей архиувлекательной разработке. Оставил я её в каком-то промежуточном состоянии: например, минимальный набор команд реализован, возможность менять значения в памяти есть - а перехода на нужный адрес нет (хотя всё необходимое для реализации такой команды есть, саму команду я не запилил).
Непорядок.
В общем, я достаточно долго думал и прикидывал, что делать дальше, и как лучше это что делать. Пришёл к следующему выводу: нужно менять структуру команд, пилить уже условные переходы и циклы. После этого - уже всё, настоящий хардкор.
Что плохо в текущих командах? Они были взяты от балды, и шли не в логическом порядке: скажем за логическим XOR шло арифметическое SUM, потом опять логический SHL. Добавь я сейчас команду SUB (вычитание) - её пришлось бы помещать вновь за логической командой, а не рядом с SUM, где ей самое место. Нет, если пользоваться ассемблером - то пофиг, в каком порядке идут опкоды, но при трейсе обработки команд с упорядоченными командами удобнее.
Дальше: команда NOP. Много ли можно придумать программ, где ничего не делающий операнд реально нужен? В крайнем случае для пропуска такта можно использовать MOV A,A.
Итого я пересмотрел набор команд, и выглядит теперь он так:

ОпкодКомандаОписание
0x0 MEM Переходы по памяти
0x1 MOV Пересылка значения
0x2 XOR Логическое ИЛИ-НЕ
0x3 OR Логическое ИЛИ
0x4 AND Логическое И
0x5 SHL Левое смещение
0x6 SHR Правое смещение
0x7 SUM Арифметическое сложение
0x8 SUB Арифметическое вычитание
0x9 MUL Арифметическое умножение
0xA DIV Арифметическое деление
0xB STACK Работа со стеком
Описание команд переходов и работы со стеком чуть ниже.
Как видите - изменился и набор и порядок. При этом пока четыре опкода остаются свободными - я даже не знаю, какие команды можно ими задать. Возможно, при расширении архитектуры появятся какие-то команды (например опкод, выводящий "Hello, world!", таким образом, делающий возможным написание такой программы размером в один байт).
Думаю, с опкодами 0x1 - 0xA вопросов не возникло. Другое дело - 0x0, обозначающий различные переходы по памяти. Как одной командой можно закодировать их все?
Тут стоит вспомнить, как переходы реализованы в x86. Самый простой, безусловный переход вызывается так:
JMP @ADDRESS
где ADDRESS указывает на адрес в памяти, на который нужно совершить переход.
Соответственно, команда в памяти представлена двумя последовательностями бит: одна кодирует команду JMP, другая шифрует адрес. Просто и логично.
Read more... )

read more at Журнал Великого Позитроника

pozitronik: (Sheridan)
Буквально перед самым закатом Луны удалось увидеть комету C/2011 L4. В интернетах пишут, что её может быть видно невооружённым глазом - но это явно не в городе, и не в наших широтах. Во-первых, слишком близко от месяца (т.е. от освещённой Солнцем стороны Луны), во-вторых - не такая уж она и яркая (хотя это может быть взаимосвязано). Тем не менее, допускаю, что за городом и в бинокль будет видно (комета будет лететь мимо ещё пару дней, так что торопитесь).
В скоп же видно очень хорошо, комета будто помигивает с синего на красный, чисто ментовская мигалка. Но долго полюбоваться не удалось, комета ушла за горизонт около 20:20; завтра попробую посмотреть пораньше.
Поразительна сама мысль о том, что я могу наблюдать объект, который в следующий раз будет пролетать мимо Земли через сто тысяч лет.

Также удалось разобраться с системой наведения телескопа. По трём звёздам он так и не юстируется (видимо не те звёзды выбираю), однако вполне успешно наводится по двум звёздам (я использую Альдебаран и Альджебу), а потом корректируется с помощью PAE. После нескольких корректировок скоп вполне успешно следит за звёздами и планетами, не выпуская из из поля зрения, опознаёт объекты, на которые наведён, и ищет объекты сам, давая лишь незначительную ошибку (которая снова корректируется через PAE). Т.о. скоп, наконец, работает, как и положено.
Благодаря этому я вдоволь насмотрелся на Юпитер и даже сделал несколько фотографий на планшет. Увы - слабая оптика не может в астрофото, а нормальной аппаратуры нет.

Тем не менее - очень доволен. Завтра буду ждать Сатурна.

December 2016

S M T W T F S
    123
45678910
1112131415 1617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 23rd, 2025 06:11 pm
Powered by Dreamwidth Studios