LINUX.ORG.RU

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

Исправление Stanson, (текущая версия) :

На самом деле арифметика не целочисленная, следовательно xmm0/xmm1*xmm1==xmm0 В чем тогда подвох?

Если рассматривать совсем не целочисленный single precision float, например, то если xmm0 = 1e-23 а xmm1 = 1e23, то (xmm0/xmm1)*xmm1==0 а не xmm0. В других случаях может быть внезапно inf а не xmm0. Можешь проверить.

Но на самом деле я всё понял.

Типичный детект fdiv_bug:

4195835.0 - 3145727.0*(4195835.0/3145727.0) = 0    (Correct value)
4195835.0 - 3145727.0*(4195835.0/3145727.0) = 256  (Flawed Pentium)

В общем, это проверка на наличие FDIV_BUG скомпилённая с SSE :) в [ebx-303BE0h] должно лежать 3145727.0, а в xmm0 где-то ранее загружаться 4195835.0

Исправление Stanson, :

На самом деле арифметика не целочисленная, следовательно xmm0/xmm1*xmm1==xmm0 В чем тогда подвох?

Если рассматривать single precision float, то если xmm0 = 1e-23 а xmm1 = 1e23, то (xmm0/xmm1)*xmm1==0 а не xmm0. В других случаях может быть внезапно inf а не xmm0. Можешь проверить.

Но на самом деле я всё понял.

Типичный детект fdiv_bug:

4195835.0 - 3145727.0*(4195835.0/3145727.0) = 0    (Correct value)
4195835.0 - 3145727.0*(4195835.0/3145727.0) = 256  (Flawed Pentium)

В общем, это проверка на наличие FDIV_BUG скомпилённая с SSE :) в [ebx-303BE0h] должно лежать 3145727.0, а в xmm0 где-то ранее загружаться 4195835.0

Исправление Stanson, :

На самом деле арифметика не целочисленная, следовательно xmm0/xmm1*xmm1==xmm0 В чем тогда подвох?

Если рассматривать single precision float, то если xmm0 = 1e-23 а xmm1 = 1e23, то (xmm0/xmm1)*xmm1==0 Можешь проверить.

Но на самом деле я всё понял.

Типичный детект fdiv_bug:

4195835.0 - 3145727.0*(4195835.0/3145727.0) = 0    (Correct value)
4195835.0 - 3145727.0*(4195835.0/3145727.0) = 256  (Flawed Pentium)

В общем, это проверка на наличие FDIV_BUG скомпилённая с SSE :) в [ebx-303BE0h] должно лежать 3145727.0, а в xmm0 где-то ранее загружаться 4195835.0

Исходная версия Stanson, :

На самом деле арифметика не целочисленная, следовательно xmm0/xmm1*xmm1==xmm0 В чем тогда подвох?

Если рассматривать single precision float, то если xmm0 = 1e-23 а xmm1 = 1e23, то (xmm0/xmm1)*xmm1==0 Можешь проверить.

Но на самом деле я всё понял.

Типичный детект fdiv_bug:


4195835.0 - 3145727.0*(4195835.0/3145727.0) = 0    (Correct value)
4195835.0 - 3145727.0*(4195835.0/3145727.0) = 256  (Flawed Pentium)
/code]

В общем, это проверка на наличие FDIV_BUG скомпилённая с SSE :)
в [ebx-303BE0h] должно лежать 3145727.0, а в xmm0 где-то ранее загружаться 4195835.0