Какова реальная разница между типами команд x86 и с плавающей точкой?
Существует два основных типа инструкций микропроцессора: целочисленные и с плавающей точкой.
Соответственно, они выполняются на целочисленном блоке обработки и на блоке обработки с плавающей запятой. Это имеет смысл, верно?
Но что говорит процессору отправить инструкцию в IPU или FPU? Как он узнает, какая инструкция какого типа?
Может быть, в инструкции есть бит / флаг / LUT или что-то, что отличает одно от другого?
1 ответ
Каждая инструкция ЦП имеет код операции. Процессор просматривает код операции, чтобы определить, к какому исполнительному модулю должна быть отправлена инструкция. Для команд с плавающей точкой на x86 код операции обычно начинается с 1101 1....
т.е. первая шестнадцатеричная цифра D
и затем устанавливается бит MS следующей цифры. Например FADD
(с плавающей запятой) начинается с D8
или же DC
в зависимости от того, какие аргументы следуют. В отличие от кода операции для целочисленной инструкции ADD
обычно начинается с x000 0...
(x
может быть 0
или же 1
), то есть первая цифра 0
или же 8
и вторая цифра имеет свой бит MS ясно. В зависимости от аргументов это может быть 01
, 02
, 03
, 04
, 05
, 80
, 81
или же 83
,