LINUX.ORG.RU

История изменений

Исправление 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-битных регистров.