소개

Data

HOME > RESOURCES > Data 14

[자료] 2005-09-30 이종영씨 세미나 자료 입니다.
계산과학전공   2007.07.19   7358

또 물어보신 것중에 부동소수점 계산에 관한 답변입니다. 우선 64bit machine에서 float fl_1, fl_2, fl_3; double dou_1, dou_2, dou_3; logn double ldou_1, ldou_2, ldou_3; int main(){ fl_2 = 1.11; fl_3 = 3.33; dou_2 = 1.11; dou_3 = 3.33; ldou_2 = 1.11; ldou_3 = 3.33; fl_1 = fl_2 + fl_3; dou_1 = dou_2 + dou_3; ldou_1 = ldou_2 + ldou_3; return 1; } 이런 C 코드를 작성 후 assembly code로 compile 한 후 연산하는것을 본 결과 float type 및 double type 계산에서는 128-bit xmm register를 사용해서 계산을 하고 있습니다. 즉 2배의 공간을 잡아서 계산을 한후 다시 그 값을 각각의 type에 맞도록 fl_1, dou_1에 저장을 합니다. long double 의 경우에는 floating point 계산에서 쓰이는 80bit FP register 를 사용해서 계산을 합니다. 32bit machine 에서는 역시 같은 코드를 assembly code로 compile 한 후 확인 해 본 결과 floating point 계산에서 쓰이는 명령어를 이용하여 80bit FP register에다가 계산후 저장하게 됩니다. single precision 이든 double precision 이든 double extended precision 형으로 변환후 FP register에 저장하고 계산합니다.

Comment









List


16 2008.05.27
15 2008.01.14
14 2007.07.19
13 2007.07.19
12 2007.07.19