Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 13, 2011 09:10:30

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

доступ к памяти

Офлайн

#2 Фев. 13, 2011 10:10:59

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

доступ к памяти

Ой, какие страшные поделки…



Офлайн

#3 Фев. 18, 2011 18:43:27

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

доступ к памяти

Честно говоря, кроме PDP, Z80, X86 (+64bit) и Z8+ ассемблеров, другими я не владел (Z80 с эмулятором - это то, что я имел в виду (и это даже не курсовая, ибо мои курсовые к этому не имели никакого отношения)). А времена были ээээх, я присоединяюсь. Но, кстати, Андрей, у меня есть отличная и очень простая задачка на x86 (я сам придумал по необходимости).
Имеются данные, которые находятся в регистрах ax, bx, cx и dx. Если эти регистры мысленно соединить вместе, то получится число размером 64 бита. Так вот, нужно это число циклически сдвинуть на 8 бит (как команда ‘ror ax’, только вместо ax стоит это число из 4-х регистров). Но есть одно простое условие: нельзя пользоваться внешней памятью, а только регистрами процессора.

p.s. Забыл сказать еще, что кроме команды mov больше ничего использовать нельзя. Это была задача на усвоение команды move и одновременное выявление талантов.



Отредактировано (Фев. 18, 2011 18:55:04)

Офлайн

#4 Фев. 18, 2011 19:29:21

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

доступ к памяти

Курсовая - это в смысле было курсе на третьем задание сделать кросс-компилятор и линковщик для АСМа на машине с воображаемой архитектурой.
Привычно забил. Помог нескольким людям к этим курсачом, а когда пришла пора сделал свой за сутки с нуля.

У меня были Z80, x86 и AVR (это такая распространенная типа-RISC поделка от Atmel.com) - на них писал довольно много.
Еще чуть-чуть какой-то Futjitsu и ARM7 - они в разработку не пошли, ограничился эмулятором.

Какая замечательная вещь была Atmel Tiny - крошечней некуда. 10 лапок, из них две вынужденно идут на питание и землю.
Памяти нет совсем. Т.е. есть небольшая flash (кажется, мы использовали богатую Tiny - 512 байт). И целых 32 байтовых регистра - раздолье!
Совершенствование прошивки закончилось, когда я при всех ухищрениях не смог впихнуть в нее новые команды - flash весь вышел.
А Atmel Mega - вполне серьезная штука, 4 Кб на борту. Для нее даже gcc был. Кстати, оказался более удобным компилятором чем платные аналоги.
Эээх. В результате микрооптимизации критический код стал выполнятся в 60 раз быстрее. Осцилограф не хотел регистрировать контрольный всплеск,
пока не догадался переключить ему развертку. Я был так горд собой!

Z80 - школьные годы, ZX Spectrum. Злой дядька продавал некопирующиеся диски с игрушками. Или давал напрокат за большие деньги.
Пришлось разбираться, как работает дисковый контроллер и писать копировщик, умеющий прочитать буквально всё.
На одном дисководе процесс шел чуть ли не два часа с постоянной сменой дискет - но оно того стоило!
К слову, у спектрума очень неудобный доступ к дисковой подсистеме - но это отдельная песня. Нелегко объяснить быстро.

x86 пошел скорее по инерции - но и сейчас иногда приходится смотреть на дизассембер, навыки помогают.

Памятью пользоваться нельзя, а другими регистрами можно? Ну зачем нам этот SI (или BP/SP, если хочется)?
Или через carry flag - но это заметно дольше.
Честно, отвык уже от такого…



Офлайн

#5 Фев. 18, 2011 20:28:58

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

доступ к памяти

Я тоже слабо уже помню, но вроде каждый из регистров можно было адресовать по половинкам ax - делился на ah и аl, так что для сдвига на восемь бит достаточно покидать половинки в друг друга и в al закинуть 0.
ЗЫ: или в ah, там вроде big endian



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано (Фев. 18, 2011 20:34:27)

Офлайн

#6 Фев. 18, 2011 20:49:39

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

доступ к памяти

little endian.
Нужен именно циклический сдвиг - чтобы в был не нолик а предыдущее число. Тоже решается.
Припоминаю, что на антиквариате сдвиг больше чем на один бит за раз не поддерживался…



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version