История изменений
Исправление KivApple, (текущая версия) :
Да нет, не бред. И в данном случае старший байт будет утерян. Таким образом делить можно только так, чтобы результат влез. Однако очень часто программист делает uint32 = uint64 / uint32 и уверен, что результат будет корректен. Поэтому инструкция весьма полезна.
В x86 есть команды прямой работы с 32-битным числами начиная с i386 и с 64-битными начиная с поддержки 64-битной адресации. При этом 64-битные инструкции доступны только в специальном режиме, а 32-битные инструкции доступны и в 16-битном режиме.
Однако все эти правила применяются и к ним же. ADC существует и в 32/64 битных версиях. 32-битное умножение выдаёт 64-битный результат в паре 32-битных регистров. 64-битное умножение выдаёт 128-битный результат в паре 64-битных регистров.
В AVR есть только 8-битные инструкции, однако правила те же (есть ADC, а умножение выдаёт 16 бит).
Ах да, ответ про возведение бита не верен. А что если этот бит уже стоял? Тогда получится чушь. Сложение используют только быдлокодеры. Нормальные люди используют OR (а для снятия бита AND). Однако что если у тебя известен лишь номер бита, а не сам бит (типа установить i-ый бит числа)?
Исправление KivApple, :
Да нет, не бред. И в данном случае старший байт будет утерян. Таким образом делить можно только так, чтобы результат влез. Однако очень часто программист делает uint32 = uint64 / uint32 и уверен, что результат будет корректен. Поэтому инструкция весьма полезна.
В x86 есть команды прямой работы с 32-битным числами начиная с i386 и с 64-битными начиная с поддержки 64-битной адресации. При этом 64-битные инструкции доступны только в специальном режиме, а 32-битные инструкции доступны и в 16-битном режиме.
Однако все эти правила применяются и к ним же. ADC существует и в 32/64 битных версиях. 32-битное умножение выдаёт 64-битный результат в паре 32-битных регистров. 64-битное умножение выдаёт 128-битный результат в паре 64-битных регистров.
В AVR есть только 8-битные инструкции, однако правила те же (есть ADC, а умножение выдаёт 16 бит).
Исходная версия KivApple, :
Да нет, не бред. И в данном случае старший байт будет утерян. Таким образом делить можно только так, чтобы результат влез. Однако очень часто программист делает uint32 = uint64 / uint32 и уверен, что результат будет корректен. Поэтому инструкция весьма полезна.
В x86 есть команды прямой работы с 32-битным числами начиная с i386 и с 64-битными начиная с поддержки 64-битной адресации. При этом 64-битные инструкции доступны только в специальном режиме, а 32-битные инструкции доступны и в 16-битном режиме.
Однако все эти правила применяются и к ним же. ADC существует и в 32/64 битных версиях. 32-битное умножение выдаёт 64-битный результат в паре 32-битных регистров. 64-битное умножение выдаёт 128-битный результат в паре 64-битных регистров.