Найти - Пользователи
Полная версия: доступ к памяти
Начало » Центр помощи » доступ к памяти
1 2
zheromo
Питон под дос есть
вот например
http://www.python.org/download/other/
http://www.caddit.net/pythond/
http://www.python.org/ftp/python/pc/
Андрей Светлов
Ой, какие страшные поделки…
Isem
Честно говоря, кроме PDP, Z80, X86 (+64bit) и Z8+ ассемблеров, другими я не владел (Z80 с эмулятором - это то, что я имел в виду (и это даже не курсовая, ибо мои курсовые к этому не имели никакого отношения)). А времена были ээээх, я присоединяюсь. Но, кстати, Андрей, у меня есть отличная и очень простая задачка на x86 (я сам придумал по необходимости).
Имеются данные, которые находятся в регистрах ax, bx, cx и dx. Если эти регистры мысленно соединить вместе, то получится число размером 64 бита. Так вот, нужно это число циклически сдвинуть на 8 бит (как команда ‘ror ax’, только вместо ax стоит это число из 4-х регистров). Но есть одно простое условие: нельзя пользоваться внешней памятью, а только регистрами процессора.

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

У меня были 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 - но это заметно дольше.
Честно, отвык уже от такого…
PooH
Я тоже слабо уже помню, но вроде каждый из регистров можно было адресовать по половинкам ax - делился на ah и аl, так что для сдвига на восемь бит достаточно покидать половинки в друг друга и в al закинуть 0.
ЗЫ: или в ah, там вроде big endian
Андрей Светлов
little endian.
Нужен именно циклический сдвиг - чтобы в был не нолик а предыдущее число. Тоже решается.
Припоминаю, что на антиквариате сдвиг больше чем на один бит за раз не поддерживался…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB