мы начинаем с 32 битным кодом, например: "AA BB CC DD" (Little Endian)Написать это упражнение менее чем за 4 линии сборки AT & T
мы хотим "AA DD CC BB" в качестве конечного результата (большой Endian). Мне удалось написать его в 8 строках, причем% ebx в качестве записи и% ecx в качестве выхода. Учитель упомянул, что это можно было записать менее чем в 4 строках, 3 - запись. Мне было любопытно посмотреть, как это можно сократить.
mov %R1, %ebx
mov %bx, %cx
shl $16, %ecx
mov %cl, %dl
mov %bl, %cl
mov %bh, %dh
shr %16, %edx
and %edx, %ecx
Да, можно сделать это с помощью трех команд. Но я воздерживаюсь от садизма. Я не хочу, чтобы вы ставили своих сокурсников и не хотите, чтобы вы преждевременно отказались от обучения. ** Сборка весело »**. Изучите инструкции сборки 'x86', и вы, вероятно, найдете лучшее решение. Здесь вы найдете хорошую [отправную точку] (http://www.felixcloutier.com/x86). – zx485
Возможно, я неправильно понимаю этот вопрос, но я не вижу, как AA DD CC BB является большой эндитарной формой AA BB CC DD. –
@Michael Petch: Вы этого не видите, потому что его там нет. Это big-endian, преобразованный в little-endian ** «ROR'ed» на один байт **. – zx485