Pull to refresh

Comments 14

комментарии бы к строчкам... так бы вспомнились операторы..

Решение для i8086 я не привел, так как там все сводится к scasb, rep, movsb. Слишком просто. Но если хотите - то могу написать


Хотим!
А чего вы хотите добиться? Как часто эта задача будет встречаться? Какой длины будут строки? Чем программа будет заниматься ещё? Вы не поверите, но даже эта задача имеет с десяток решений. Даже для x86-64. Конечно копать в этом направлении стоит есть у вас именно в этой задаче затык. Что бывает редко - разворачивать строку приходится сплошь и рядом, но так чтобы программа в этой процедуре проводила сколько-нибудь измеримое время - так бывает нечасто.
Я хотел бы посмотреть реализацию этой задачи для разных архитектур. Только и всего. Just for fun.

А вообще любая задача имеет множество решений, но из них оптимальных - не так уж и много.
Мне вот подумалось тут, а что если эту строку побайтно сначала запушить в стек, тогда esp будет указывать на уже перевернутую строку. (x86)
И не нужно не scasb, ни movsb.
Не выйдет: push и pop работают только с операндами размером 4 и 2 байта
Идея хорошая.
Ай, точно, забыл, спасибо. Как вариант тада push ax/inc esp для одного байта.
esp должен быть кратный слову адресации для x86, afaik
По этому так его увы, нельзя
UFO just landed and posted this here
Достаточно дать ссылку на описание
UFO just landed and posted this here
В том то и дело, что неначем. Да и ссылку найти не проблема
Хотелось бы именно посмотреть на код реализующий эту задачу для других архитектур
А тут еще можно коментировать?
Если я правильно понял команды (я изучал Z80), то переходу jnz просто не на что реагировать — надо бы перед ним поставить хотя бы OR A. По команде MOV биты не меняются (насколько я помню). А больше добавить нечего.

Перевод на PDP11:

MOV R0,R1
CLRB -(R1)
1$: MOVB (R0)+,-(R1)
BNE 1$
INC R1
RTS PC
Sign up to leave a comment.

Articles