Data
HOME >
RESOURCES >
Data
14
[자료] 2005-09-30 이종영씨 세미나 자료 입니다.
계산과학전공  
2007.07.19  
7609
|
---|
또 물어보신 것중에 부동소수점 계산에 관한 답변입니다. 우선 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 |