Как процессор может рассчитать, если A <B - PullRequest
0 голосов
/ 10 октября 2010

Это, наверное, глупый вопрос, который пришел мне в голову, но я думаю, что у меня нет ответа на этот вопрос -

Как процессор будет находить, если A B или A == B.

Но если мы решим

Я понимаю, что разные процессоры, вероятно, могут иметь разные реализации, но я хотел иметь какую-то идею высокого уровня для этого.

Я полагаю, что какой-то трюк с побитовыми операторами должен это сделать.

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

6 голосов
/ 10 октября 2010

В сборке x86 инструкция CMP часто используется для сравнения двух целых чисел.

Например, если у вас есть целые числа в EAX и EBX соответственно и вы выполняете CMP EAX, EBX, значения флага знака (S) и флага нуля (Z) сообщат вам, какое число было наибольшим:

EAX > EBX:  Z=0, S=0
EAX == EBX: Z=1, S=0
EAX < EBX:  Z=0, S=1

Тот же результат можно получить с помощью инструкции SUB, которая также сохраняет разницу между числами в регистре назначения.

5 голосов
/ 10 октября 2010

Вычтите B из A и посмотрите, установлен ли флаг N (отрицательный) или MSb результата.

1 голос
/ 10 октября 2010

Все процессоры имеют ALU. Я не буду публиковать ссылки на Википедию, поскольку вы достаточно хороши, чтобы найти их самостоятельно;) но я могу немного рассказать вам о внутреннем процессоре.

Что вам в основном нужно знать, так это то, что все процессоры имеют инструкции сравнения, т.е. BEQ "Branch-on-Equal", который используется для реализации инструкций "if", и переходы, если A == B (есть другая инструкция для A < B и т. Д.). Когда CPU читает эту инструкцию и операнды, он загружает их в две входные шины ALU и устанавливает правильный код ALU, который представляет операцию сравнения. АЛУ строится для сравнения чисел с помощью аппаратных средств и вывода правильного результата на его выходной стороне или установки бита состояния на ЦП.

Аппаратное сравнение чисел легко, и почти все учащиеся-академики когда-то разработали сравнение (от 4 до 8 бит, но та же логика применима к 32 и 64), схемы можно найти где угодно

...