This is an old revision of the document!


Analytical Modeling of System Temperature

Results

Nops test

nops test

This is a while loop with a single nop inside it.

08048394 <main>:
 8048394:       8d 4c 24 04             lea    0x4(%esp),%ecx
 8048398:       83 e4 f0                and    $0xfffffff0,%esp
 804839b:       ff 71 fc                pushl  -0x4(%ecx)
 804839e:       55                      push   %ebp
 804839f:       89 e5                   mov    %esp,%ebp
 80483a1:       51                      push   %ecx
 80483a2:       83 ec 10                sub    $0x10,%esp
 80483a5:       c7 45 f8 00 00 00 00    movl   $0x0,-0x8(%ebp)
 80483ac:       90                      nop    
 80483ad:       eb fd                   jmp    80483ac <main+0x18>
 80483af:       90                      nop    

Integer Operations

int add test

This is a while loop with a single x++ in it.

08048394 <main>:
 8048394:       8d 4c 24 04             lea    0x4(%esp),%ecx
 8048398:       83 e4 f0                and    $0xfffffff0,%esp
 804839b:       ff 71 fc                pushl  -0x4(%ecx)
 804839e:       55                      push   %ebp
 804839f:       89 e5                   mov    %esp,%ebp
 80483a1:       51                      push   %ecx
 80483a2:       83 ec 10                sub    $0x10,%esp
 80483a5:       c7 45 f8 00 00 00 00    movl   $0x0,-0x8(%ebp)
 80483ac:       83 45 f8 01             addl   $0x1,-0x8(%ebp)
 80483b0:       eb f3                   jmp    80483a5 <main+0x11>
 80483b2:       90                      nop    
 80483b3:       90                      nop    
 80483b4:       90                      nop    
 80483b5:       90                      nop    
 80483b6:       90                      nop    
 80483b7:       90                      nop    
 80483b8:       90                      nop    
 80483b9:       90                      nop    
 80483ba:       90                      nop    
 80483bb:       90                      nop    
 80483bc:       90                      nop    
 80483bd:       90                      nop    
 80483be:       90                      nop    
 80483bf:       90                      nop    
int sub test

A while loop with a single x– in it.

08048394 <main>:
 8048394:       8d 4c 24 04             lea    0x4(%esp),%ecx
 8048398:       83 e4 f0                and    $0xfffffff0,%esp
 804839b:       ff 71 fc                pushl  -0x4(%ecx)
 804839e:       55                      push   %ebp
 804839f:       89 e5                   mov    %esp,%ebp
 80483a1:       51                      push   %ecx
 80483a2:       83 ec 10                sub    $0x10,%esp
 80483a5:       c7 45 f8 02 00 00 00    movl   $0x2,-0x8(%ebp)
 80483ac:       83 6d f8 01             subl   $0x1,-0x8(%ebp)
 80483b0:       eb f3                   jmp    80483a5 <main+0x11>
 80483b2:       90                      nop    
 80483b3:       90                      nop    
 80483b4:       90                      nop    
 80483b5:       90                      nop    
 80483b6:       90                      nop    
 80483b7:       90                      nop    
 80483b8:       90                      nop    
 80483b9:       90                      nop    
 80483ba:       90                      nop    
 80483bb:       90                      nop    
 80483bc:       90                      nop    
 80483bd:       90                      nop    
 80483be:       90                      nop    
 80483bf:       90                      nop    
int mul test

A while loop which takes two integers (x=54;y=82;) and multiplies them (z=x*y).

08048394 <main>:
 8048394:       8d 4c 24 04             lea    0x4(%esp),%ecx
 8048398:       83 e4 f0                and    $0xfffffff0,%esp
 804839b:       ff 71 fc                pushl  -0x4(%ecx)
 804839e:       55                      push   %ebp
 804839f:       89 e5                   mov    %esp,%ebp
 80483a1:       51                      push   %ecx
 80483a2:       83 ec 10                sub    $0x10,%esp
 80483a5:       c7 45 f8 36 00 00 00    movl   $0x36,-0x8(%ebp)
 80483ac:       c7 45 f4 52 00 00 00    movl   $0x52,-0xc(%ebp)
 80483b3:       8b 45 f8                mov    -0x8(%ebp),%eax
 80483b6:       0f af 45 f4             imul   -0xc(%ebp),%eax
 80483ba:       89 45 f0                mov    %eax,-0x10(%ebp)
 80483bd:       eb e6                   jmp    80483a5 <main+0x11>
 80483bf:       90                      nop    
int div test

A while loop which takes two integers (x=54;y=82;) and divides them (z=y/x).

08048394 <main>:
 8048394:       8d 4c 24 04             lea    0x4(%esp),%ecx
 8048398:       83 e4 f0                and    $0xfffffff0,%esp
 804839b:       ff 71 fc                pushl  -0x4(%ecx)
 804839e:       55                      push   %ebp
 804839f:       89 e5                   mov    %esp,%ebp
 80483a1:       51                      push   %ecx
 80483a2:       83 ec 18                sub    $0x18,%esp
 80483a5:       c7 45 f8 36 00 00 00    movl   $0x36,-0x8(%ebp)
 80483ac:       c7 45 f4 52 00 00 00    movl   $0x52,-0xc(%ebp)
 80483b3:       8b 45 f4                mov    -0xc(%ebp),%eax
 80483b6:       89 45 e4                mov    %eax,-0x1c(%ebp)
 80483b9:       8b 55 e4                mov    -0x1c(%ebp),%edx
 80483bc:       89 d0                   mov    %edx,%eax
 80483be:       c1 fa 1f                sar    $0x1f,%edx
 80483c1:       f7 7d f8                idivl  -0x8(%ebp)
 80483c4:       89 45 f0                mov    %eax,-0x10(%ebp)
 80483c7:       eb dc                   jmp    80483a5 <main+0x11>
 80483c9:       90                      nop    
 80483ca:       90                      nop    
 80483cb:       90                      nop    
 80483cc:       90                      nop    
 80483cd:       90                      nop    
 80483ce:       90                      nop    
 80483cf:       90                      nop    

FP Operations

fp add test

This is a while loop which takes two doubles and adds them just like in the int add test.

08048394 <main>:
 8048394:       8d 4c 24 04             lea    0x4(%esp),%ecx
 8048398:       83 e4 f0                and    $0xfffffff0,%esp
 804839b:       ff 71 fc                pushl  -0x4(%ecx)
 804839e:       55                      push   %ebp
 804839f:       89 e5                   mov    %esp,%ebp
 80483a1:       51                      push   %ecx
 80483a2:       83 ec 24                sub    $0x24,%esp
 80483a5:       dd 05 90 84 04 08       fldl   0x8048490
 80483ab:       dd 5d f0                fstpl  -0x10(%ebp)
 80483ae:       dd 05 98 84 04 08       fldl   0x8048498
 80483b4:       dd 5d e8                fstpl  -0x18(%ebp)
 80483b7:       dd 45 f0                fldl   -0x10(%ebp)
 80483ba:       dc 45 e8                faddl  -0x18(%ebp)
 80483bd:       dd 5d e0                fstpl  -0x20(%ebp)
 80483c0:       eb e3                   jmp    80483a5 <main+0x11>
 80483c2:       90                      nop    
 80483c3:       90                      nop    
 80483c4:       90                      nop    
 80483c5:       90                      nop    
 80483c6:       90                      nop    
 80483c7:       90                      nop    
 80483c8:       90                      nop    
 80483c9:       90                      nop    
 80483ca:       90                      nop    
 80483cb:       90                      nop    
 80483cc:       90                      nop    
 80483cd:       90                      nop    
 80483ce:       90                      nop    
 80483cf:       90                      nop    
fp sub test

A while loop which takes two doubles and subtracts them.

08048394 <main>:
 8048394:       8d 4c 24 04             lea    0x4(%esp),%ecx
 8048398:       83 e4 f0                and    $0xfffffff0,%esp
 804839b:       ff 71 fc                pushl  -0x4(%ecx)
 804839e:       55                      push   %ebp
 804839f:       89 e5                   mov    %esp,%ebp
 80483a1:       51                      push   %ecx
 80483a2:       83 ec 24                sub    $0x24,%esp
 80483a5:       dd 05 90 84 04 08       fldl   0x8048490
 80483ab:       dd 5d f0                fstpl  -0x10(%ebp)
 80483ae:       dd 05 98 84 04 08       fldl   0x8048498
 80483b4:       dd 5d e8                fstpl  -0x18(%ebp)
 80483b7:       dd 45 e8                fldl   -0x18(%ebp)
 80483ba:       dc 65 f0                fsubl  -0x10(%ebp)
 80483bd:       dd 5d e0                fstpl  -0x20(%ebp)
 80483c0:       eb e3                   jmp    80483a5 <main+0x11>
 80483c2:       90                      nop    
 80483c3:       90                      nop    
 80483c4:       90                      nop    
 80483c5:       90                      nop    
 80483c6:       90                      nop    
 80483c7:       90                      nop    
 80483c8:       90                      nop    
 80483c9:       90                      nop    
 80483ca:       90                      nop    
 80483cb:       90                      nop    
 80483cc:       90                      nop    
 80483cd:       90                      nop    
 80483ce:       90                      nop    
 80483cf:       90                      nop    
fp mul test

A while loop which takes two doubles and multiplies them. Within the loop, we take two doubles, so we are multiplying the same numbers again and again. This should avoid overflow.

08048394 <main>:
 8048394:       8d 4c 24 04             lea    0x4(%esp),%ecx
 8048398:       83 e4 f0                and    $0xfffffff0,%esp
 804839b:       ff 71 fc                pushl  -0x4(%ecx)
 804839e:       55                      push   %ebp
 804839f:       89 e5                   mov    %esp,%ebp
 80483a1:       51                      push   %ecx
 80483a2:       83 ec 24                sub    $0x24,%esp
 80483a5:       dd 05 90 84 04 08       fldl   0x8048490
 80483ab:       dd 5d f0                fstpl  -0x10(%ebp)
 80483ae:       dd 05 98 84 04 08       fldl   0x8048498
 80483b4:       dd 5d e8                fstpl  -0x18(%ebp)
 80483b7:       dd 45 f0                fldl   -0x10(%ebp)
 80483ba:       dc 4d e8                fmull  -0x18(%ebp)
 80483bd:       dd 5d e0                fstpl  -0x20(%ebp)
 80483c0:       eb e3                   jmp    80483a5 <main+0x11>
 80483c2:       90                      nop    
 80483c3:       90                      nop    
 80483c4:       90                      nop    
 80483c5:       90                      nop    
 80483c6:       90                      nop    
 80483c7:       90                      nop    
 80483c8:       90                      nop    
 80483c9:       90                      nop    
 80483ca:       90                      nop    
 80483cb:       90                      nop    
 80483cc:       90                      nop    
 80483cd:       90                      nop    
 80483ce:       90                      nop    
 80483cf:       90                      nop    
fp div test

A while loop which takes two doubles and divides them. The lower peak temperature w.r.t. fp mul test is due to lack of pipelining in the fp div FU.

08048394 <main>:
 8048394:       8d 4c 24 04             lea    0x4(%esp),%ecx
 8048398:       83 e4 f0                and    $0xfffffff0,%esp
 804839b:       ff 71 fc                pushl  -0x4(%ecx)
 804839e:       55                      push   %ebp
 804839f:       89 e5                   mov    %esp,%ebp
 80483a1:       51                      push   %ecx
 80483a2:       83 ec 24                sub    $0x24,%esp
 80483a5:       dd 05 90 84 04 08       fldl   0x8048490
 80483ab:       dd 5d f0                fstpl  -0x10(%ebp)
 80483ae:       dd 05 98 84 04 08       fldl   0x8048498
 80483b4:       dd 5d e8                fstpl  -0x18(%ebp)
 80483b7:       dd 45 e8                fldl   -0x18(%ebp)
 80483ba:       dc 75 f0                fdivl  -0x10(%ebp)
 80483bd:       dd 5d e0                fstpl  -0x20(%ebp)
 80483c0:       eb e3                   jmp    80483a5 <main+0x11>
 80483c2:       90                      nop    
 80483c3:       90                      nop    
 80483c4:       90                      nop    
 80483c5:       90                      nop    
 80483c6:       90                      nop    
 80483c7:       90                      nop    
 80483c8:       90                      nop    
 80483c9:       90                      nop    
 80483ca:       90                      nop    
 80483cb:       90                      nop    
 80483cc:       90                      nop    
 80483cd:       90                      nop    
 80483ce:       90                      nop    
 80483cf:       90                      nop    

Unrolled Integer Operations

unrolled int add test

This is a while loop with multiple x++s in it.

08048394 <main>:
 8048394:	8d 4c 24 04          	lea    0x4(%esp),%ecx
 8048398:	83 e4 f0             	and    $0xfffffff0,%esp
 804839b:	ff 71 fc             	pushl  -0x4(%ecx)
 804839e:	55                   	push   %ebp
 804839f:	89 e5                	mov    %esp,%ebp
 80483a1:	51                   	push   %ecx
 80483a2:	83 ec 10             	sub    $0x10,%esp
 80483a5:	c7 45 f8 00 00 00 00 	movl   $0x0,-0x8(%ebp)
 80483ac:	83 45 f8 01          	addl   $0x1,-0x8(%ebp)
 80483b0:	83 45 f8 01          	addl   $0x1,-0x8(%ebp)
 80483b4:	83 45 f8 01          	addl   $0x1,-0x8(%ebp)
 80483b8:	83 45 f8 01          	addl   $0x1,-0x8(%ebp)
 80483bc:	83 45 f8 01          	addl   $0x1,-0x8(%ebp)
 80483c0:	83 45 f8 01          	addl   $0x1,-0x8(%ebp)
 80483c4:	83 45 f8 01          	addl   $0x1,-0x8(%ebp)
 80483c8:	83 45 f8 01          	addl   $0x1,-0x8(%ebp)
 80483cc:	83 45 f8 01          	addl   $0x1,-0x8(%ebp)
 80483d0:	83 45 f8 01          	addl   $0x1,-0x8(%ebp)
 80483d4:	eb cf                	jmp    80483a5 <main+0x11>
 80483d6:	90                   	nop    
 80483d7:	90                   	nop    
 80483d8:	90                   	nop    
 80483d9:	90                   	nop    
 80483da:	90                   	nop    
 80483db:	90                   	nop    
 80483dc:	90                   	nop    
 80483dd:	90                   	nop    
 80483de:	90                   	nop    
 80483df:	90                   	nop    
unrolled int sub test

A while loop with multiple x–s in it.

08048394 <main>:
 8048394:	8d 4c 24 04          	lea    0x4(%esp),%ecx
 8048398:	83 e4 f0             	and    $0xfffffff0,%esp
 804839b:	ff 71 fc             	pushl  -0x4(%ecx)
 804839e:	55                   	push   %ebp
 804839f:	89 e5                	mov    %esp,%ebp
 80483a1:	51                   	push   %ecx
 80483a2:	83 ec 10             	sub    $0x10,%esp
 80483a5:	c7 45 f8 14 00 00 00 	movl   $0x14,-0x8(%ebp)
 80483ac:	83 6d f8 01          	subl   $0x1,-0x8(%ebp)
 80483b0:	83 6d f8 01          	subl   $0x1,-0x8(%ebp)
 80483b4:	83 6d f8 01          	subl   $0x1,-0x8(%ebp)
 80483b8:	83 6d f8 01          	subl   $0x1,-0x8(%ebp)
 80483bc:	83 6d f8 01          	subl   $0x1,-0x8(%ebp)
 80483c0:	83 6d f8 01          	subl   $0x1,-0x8(%ebp)
 80483c4:	83 6d f8 01          	subl   $0x1,-0x8(%ebp)
 80483c8:	83 6d f8 01          	subl   $0x1,-0x8(%ebp)
 80483cc:	83 6d f8 01          	subl   $0x1,-0x8(%ebp)
 80483d0:	83 6d f8 01          	subl   $0x1,-0x8(%ebp)
 80483d4:	eb cf                	jmp    80483a5 <main+0x11>
 80483d6:	90                   	nop    
 80483d7:	90                   	nop    
 80483d8:	90                   	nop    
 80483d9:	90                   	nop    
 80483da:	90                   	nop    
 80483db:	90                   	nop    
 80483dc:	90                   	nop    
 80483dd:	90                   	nop    
 80483de:	90                   	nop    
 80483df:	90                   	nop    
unrolled int mul test

A while loop which takes two integers and multiplies them multiple times within the same loop.

08048394 <main>:
 8048394:	8d 4c 24 04          	lea    0x4(%esp),%ecx
 8048398:	83 e4 f0             	and    $0xfffffff0,%esp
 804839b:	ff 71 fc             	pushl  -0x4(%ecx)
 804839e:	55                   	push   %ebp
 804839f:	89 e5                	mov    %esp,%ebp
 80483a1:	51                   	push   %ecx
 80483a2:	83 ec 10             	sub    $0x10,%esp
 80483a5:	c7 45 f8 36 00 00 00 	movl   $0x36,-0x8(%ebp)
 80483ac:	c7 45 f4 52 00 00 00 	movl   $0x52,-0xc(%ebp)
 80483b3:	8b 45 f8             	mov    -0x8(%ebp),%eax
 80483b6:	0f af 45 f4          	imul   -0xc(%ebp),%eax
 80483ba:	89 45 f0             	mov    %eax,-0x10(%ebp)
 80483bd:	8b 45 f8             	mov    -0x8(%ebp),%eax
 80483c0:	0f af 45 f4          	imul   -0xc(%ebp),%eax
 80483c4:	89 45 f0             	mov    %eax,-0x10(%ebp)
 80483c7:	8b 45 f8             	mov    -0x8(%ebp),%eax
 80483ca:	0f af 45 f4          	imul   -0xc(%ebp),%eax
 80483ce:	89 45 f0             	mov    %eax,-0x10(%ebp)
 80483d1:	8b 45 f8             	mov    -0x8(%ebp),%eax
 80483d4:	0f af 45 f4          	imul   -0xc(%ebp),%eax
 80483d8:	89 45 f0             	mov    %eax,-0x10(%ebp)
 80483db:	8b 45 f8             	mov    -0x8(%ebp),%eax
 80483de:	0f af 45 f4          	imul   -0xc(%ebp),%eax
 80483e2:	89 45 f0             	mov    %eax,-0x10(%ebp)
 80483e5:	8b 45 f8             	mov    -0x8(%ebp),%eax
 80483e8:	0f af 45 f4          	imul   -0xc(%ebp),%eax
 80483ec:	89 45 f0             	mov    %eax,-0x10(%ebp)
 80483ef:	8b 45 f8             	mov    -0x8(%ebp),%eax
 80483f2:	0f af 45 f4          	imul   -0xc(%ebp),%eax
 80483f6:	89 45 f0             	mov    %eax,-0x10(%ebp)
 80483f9:	8b 45 f8             	mov    -0x8(%ebp),%eax
 80483fc:	0f af 45 f4          	imul   -0xc(%ebp),%eax
 8048400:	89 45 f0             	mov    %eax,-0x10(%ebp)
 8048403:	8b 45 f8             	mov    -0x8(%ebp),%eax
 8048406:	0f af 45 f4          	imul   -0xc(%ebp),%eax
 804840a:	89 45 f0             	mov    %eax,-0x10(%ebp)
 804840d:	8b 45 f8             	mov    -0x8(%ebp),%eax
 8048410:	0f af 45 f4          	imul   -0xc(%ebp),%eax
 8048414:	89 45 f0             	mov    %eax,-0x10(%ebp)
 8048417:	eb 8c                	jmp    80483a5 <main+0x11>
 8048419:	90                   	nop    
 804841a:	90                   	nop    
 804841b:	90                   	nop    
 804841c:	90                   	nop    
 804841d:	90                   	nop    
 804841e:	90                   	nop    
 804841f:	90                   	nop    
unrolled int div test

A while loop which takes two integers and divides them multiple times in the same loop.

08048394 <main>:
 8048394:	8d 4c 24 04          	lea    0x4(%esp),%ecx
 8048398:	83 e4 f0             	and    $0xfffffff0,%esp
 804839b:	ff 71 fc             	pushl  -0x4(%ecx)
 804839e:	55                   	push   %ebp
 804839f:	89 e5                	mov    %esp,%ebp
 80483a1:	51                   	push   %ecx
 80483a2:	83 ec 3c             	sub    $0x3c,%esp
 80483a5:	c7 45 f8 36 00 00 00 	movl   $0x36,-0x8(%ebp)
 80483ac:	c7 45 f4 52 00 00 00 	movl   $0x52,-0xc(%ebp)
 80483b3:	8b 45 f4             	mov    -0xc(%ebp),%eax
 80483b6:	89 45 c0             	mov    %eax,-0x40(%ebp)
 80483b9:	8b 55 c0             	mov    -0x40(%ebp),%edx
 80483bc:	89 d0                	mov    %edx,%eax
 80483be:	c1 fa 1f             	sar    $0x1f,%edx
 80483c1:	f7 7d f8             	idivl  -0x8(%ebp)
 80483c4:	89 45 f0             	mov    %eax,-0x10(%ebp)
 80483c7:	8b 45 f4             	mov    -0xc(%ebp),%eax
 80483ca:	89 45 c0             	mov    %eax,-0x40(%ebp)
 80483cd:	8b 55 c0             	mov    -0x40(%ebp),%edx
 80483d0:	89 d0                	mov    %edx,%eax
 80483d2:	c1 fa 1f             	sar    $0x1f,%edx
 80483d5:	f7 7d f8             	idivl  -0x8(%ebp)
 80483d8:	89 45 f0             	mov    %eax,-0x10(%ebp)
 80483db:	8b 45 f4             	mov    -0xc(%ebp),%eax
 80483de:	89 45 c0             	mov    %eax,-0x40(%ebp)
 80483e1:	8b 55 c0             	mov    -0x40(%ebp),%edx
 80483e4:	89 d0                	mov    %edx,%eax
 80483e6:	c1 fa 1f             	sar    $0x1f,%edx
 80483e9:	f7 7d f8             	idivl  -0x8(%ebp)
 80483ec:	89 45 f0             	mov    %eax,-0x10(%ebp)
 80483ef:	8b 45 f4             	mov    -0xc(%ebp),%eax
 80483f2:	89 45 c0             	mov    %eax,-0x40(%ebp)
 80483f5:	8b 55 c0             	mov    -0x40(%ebp),%edx
 80483f8:	89 d0                	mov    %edx,%eax
 80483fa:	c1 fa 1f             	sar    $0x1f,%edx
 80483fd:	f7 7d f8             	idivl  -0x8(%ebp)
 8048400:	89 45 f0             	mov    %eax,-0x10(%ebp)
 8048403:	8b 45 f4             	mov    -0xc(%ebp),%eax
 8048406:	89 45 c0             	mov    %eax,-0x40(%ebp)
 8048409:	8b 55 c0             	mov    -0x40(%ebp),%edx
 804840c:	89 d0                	mov    %edx,%eax
 804840e:	c1 fa 1f             	sar    $0x1f,%edx
 8048411:	f7 7d f8             	idivl  -0x8(%ebp)
 8048414:	89 45 f0             	mov    %eax,-0x10(%ebp)
 8048417:	8b 45 f4             	mov    -0xc(%ebp),%eax
 804841a:	89 45 c0             	mov    %eax,-0x40(%ebp)
 804841d:	8b 55 c0             	mov    -0x40(%ebp),%edx
 8048420:	89 d0                	mov    %edx,%eax
 8048422:	c1 fa 1f             	sar    $0x1f,%edx
 8048425:	f7 7d f8             	idivl  -0x8(%ebp)
 8048428:	89 45 f0             	mov    %eax,-0x10(%ebp)
 804842b:	8b 45 f4             	mov    -0xc(%ebp),%eax
 804842e:	89 45 c0             	mov    %eax,-0x40(%ebp)
 8048431:	8b 55 c0             	mov    -0x40(%ebp),%edx
 8048434:	89 d0                	mov    %edx,%eax
 8048436:	c1 fa 1f             	sar    $0x1f,%edx
 8048439:	f7 7d f8             	idivl  -0x8(%ebp)
 804843c:	89 45 f0             	mov    %eax,-0x10(%ebp)
 804843f:	8b 45 f4             	mov    -0xc(%ebp),%eax
 8048442:	89 45 c0             	mov    %eax,-0x40(%ebp)
 8048445:	8b 55 c0             	mov    -0x40(%ebp),%edx
 8048448:	89 d0                	mov    %edx,%eax
 804844a:	c1 fa 1f             	sar    $0x1f,%edx
 804844d:	f7 7d f8             	idivl  -0x8(%ebp)
 8048450:	89 45 f0             	mov    %eax,-0x10(%ebp)
 8048453:	8b 45 f4             	mov    -0xc(%ebp),%eax
 8048456:	89 45 c0             	mov    %eax,-0x40(%ebp)
 8048459:	8b 55 c0             	mov    -0x40(%ebp),%edx
 804845c:	89 d0                	mov    %edx,%eax
 804845e:	c1 fa 1f             	sar    $0x1f,%edx
 8048461:	f7 7d f8             	idivl  -0x8(%ebp)
 8048464:	89 45 f0             	mov    %eax,-0x10(%ebp)
 8048467:	8b 45 f4             	mov    -0xc(%ebp),%eax
 804846a:	89 45 c0             	mov    %eax,-0x40(%ebp)
 804846d:	8b 55 c0             	mov    -0x40(%ebp),%edx
 8048470:	89 d0                	mov    %edx,%eax
 8048472:	c1 fa 1f             	sar    $0x1f,%edx
 8048475:	f7 7d f8             	idivl  -0x8(%ebp)
 8048478:	89 45 f0             	mov    %eax,-0x10(%ebp)
 804847b:	e9 25 ff ff ff       	jmp    80483a5 <main+0x11>

Unrolled FP Operations

unrolled fp add test

This is a while loop which takes two doubles and adds them multiple times in the same loop just like in the unrolled int add test.

08048394 <main>:
 8048394:	8d 4c 24 04          	lea    0x4(%esp),%ecx
 8048398:	83 e4 f0             	and    $0xfffffff0,%esp
 804839b:	ff 71 fc             	pushl  -0x4(%ecx)
 804839e:	55                   	push   %ebp
 804839f:	89 e5                	mov    %esp,%ebp
 80483a1:	51                   	push   %ecx
 80483a2:	83 ec 24             	sub    $0x24,%esp
 80483a5:	dd 05 e0 84 04 08    	fldl   0x80484e0
 80483ab:	dd 5d f0             	fstpl  -0x10(%ebp)
 80483ae:	dd 05 e8 84 04 08    	fldl   0x80484e8
 80483b4:	dd 5d e8             	fstpl  -0x18(%ebp)
 80483b7:	dd 45 e8             	fldl   -0x18(%ebp)
 80483ba:	dc 45 f0             	faddl  -0x10(%ebp)
 80483bd:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483c0:	dd 45 e8             	fldl   -0x18(%ebp)
 80483c3:	dc 45 f0             	faddl  -0x10(%ebp)
 80483c6:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483c9:	dd 45 e8             	fldl   -0x18(%ebp)
 80483cc:	dc 45 f0             	faddl  -0x10(%ebp)
 80483cf:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483d2:	dd 45 e8             	fldl   -0x18(%ebp)
 80483d5:	dc 45 f0             	faddl  -0x10(%ebp)
 80483d8:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483db:	dd 45 e8             	fldl   -0x18(%ebp)
 80483de:	dc 45 f0             	faddl  -0x10(%ebp)
 80483e1:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483e4:	dd 45 e8             	fldl   -0x18(%ebp)
 80483e7:	dc 45 f0             	faddl  -0x10(%ebp)
 80483ea:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483ed:	dd 45 e8             	fldl   -0x18(%ebp)
 80483f0:	dc 45 f0             	faddl  -0x10(%ebp)
 80483f3:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483f6:	dd 45 e8             	fldl   -0x18(%ebp)
 80483f9:	dc 45 f0             	faddl  -0x10(%ebp)
 80483fc:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483ff:	dd 45 e8             	fldl   -0x18(%ebp)
 8048402:	dc 45 f0             	faddl  -0x10(%ebp)
 8048405:	dd 5d e0             	fstpl  -0x20(%ebp)
 8048408:	dd 45 e8             	fldl   -0x18(%ebp)
 804840b:	dc 45 f0             	faddl  -0x10(%ebp)
 804840e:	dd 5d e0             	fstpl  -0x20(%ebp)
 8048411:	eb 92                	jmp    80483a5 <main+0x11>
 8048413:	90                   	nop    
 8048414:	90                   	nop    
 8048415:	90                   	nop    
 8048416:	90                   	nop    
 8048417:	90                   	nop    
 8048418:	90                   	nop    
 8048419:	90                   	nop    
 804841a:	90                   	nop    
 804841b:	90                   	nop    
 804841c:	90                   	nop    
 804841d:	90                   	nop    
 804841e:	90                   	nop    
 804841f:	90                   	nop    
unrolled fp sub test

A while loop which takes two doubles and subtracts them multiple times in the same loop.

08048394 <main>:
 8048394:	8d 4c 24 04          	lea    0x4(%esp),%ecx
 8048398:	83 e4 f0             	and    $0xfffffff0,%esp
 804839b:	ff 71 fc             	pushl  -0x4(%ecx)
 804839e:	55                   	push   %ebp
 804839f:	89 e5                	mov    %esp,%ebp
 80483a1:	51                   	push   %ecx
 80483a2:	83 ec 24             	sub    $0x24,%esp
 80483a5:	dd 05 e0 84 04 08    	fldl   0x80484e0
 80483ab:	dd 5d f0             	fstpl  -0x10(%ebp)
 80483ae:	dd 05 e8 84 04 08    	fldl   0x80484e8
 80483b4:	dd 5d e8             	fstpl  -0x18(%ebp)
 80483b7:	dd 45 e8             	fldl   -0x18(%ebp)
 80483ba:	dc 65 f0             	fsubl  -0x10(%ebp)
 80483bd:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483c0:	dd 45 e8             	fldl   -0x18(%ebp)
 80483c3:	dc 65 f0             	fsubl  -0x10(%ebp)
 80483c6:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483c9:	dd 45 e8             	fldl   -0x18(%ebp)
 80483cc:	dc 65 f0             	fsubl  -0x10(%ebp)
 80483cf:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483d2:	dd 45 e8             	fldl   -0x18(%ebp)
 80483d5:	dc 65 f0             	fsubl  -0x10(%ebp)
 80483d8:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483db:	dd 45 e8             	fldl   -0x18(%ebp)
 80483de:	dc 65 f0             	fsubl  -0x10(%ebp)
 80483e1:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483e4:	dd 45 e8             	fldl   -0x18(%ebp)
 80483e7:	dc 65 f0             	fsubl  -0x10(%ebp)
 80483ea:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483ed:	dd 45 e8             	fldl   -0x18(%ebp)
 80483f0:	dc 65 f0             	fsubl  -0x10(%ebp)
 80483f3:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483f6:	dd 45 e8             	fldl   -0x18(%ebp)
 80483f9:	dc 65 f0             	fsubl  -0x10(%ebp)
 80483fc:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483ff:	dd 45 e8             	fldl   -0x18(%ebp)
 8048402:	dc 65 f0             	fsubl  -0x10(%ebp)
 8048405:	dd 5d e0             	fstpl  -0x20(%ebp)
 8048408:	dd 45 e8             	fldl   -0x18(%ebp)
 804840b:	dc 65 f0             	fsubl  -0x10(%ebp)
 804840e:	dd 5d e0             	fstpl  -0x20(%ebp)
 8048411:	eb 92                	jmp    80483a5 <main+0x11>
 8048413:	90                   	nop    
 8048414:	90                   	nop    
 8048415:	90                   	nop    
 8048416:	90                   	nop    
 8048417:	90                   	nop    
 8048418:	90                   	nop    
 8048419:	90                   	nop    
 804841a:	90                   	nop    
 804841b:	90                   	nop    
 804841c:	90                   	nop    
 804841d:	90                   	nop    
 804841e:	90                   	nop    
 804841f:	90                   	nop    
unrolled fp mul test

A while loop which takes two doubles and multiplies them multiple times in the same loop. As in the case of fp mul test, we avoid overflow.

08048394 <main>:
 8048394:	8d 4c 24 04          	lea    0x4(%esp),%ecx
 8048398:	83 e4 f0             	and    $0xfffffff0,%esp
 804839b:	ff 71 fc             	pushl  -0x4(%ecx)
 804839e:	55                   	push   %ebp
 804839f:	89 e5                	mov    %esp,%ebp
 80483a1:	51                   	push   %ecx
 80483a2:	83 ec 24             	sub    $0x24,%esp
 80483a5:	dd 05 e0 84 04 08    	fldl   0x80484e0
 80483ab:	dd 5d f0             	fstpl  -0x10(%ebp)
 80483ae:	dd 05 e8 84 04 08    	fldl   0x80484e8
 80483b4:	dd 5d e8             	fstpl  -0x18(%ebp)
 80483b7:	dd 45 f0             	fldl   -0x10(%ebp)
 80483ba:	dc 4d e8             	fmull  -0x18(%ebp)
 80483bd:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483c0:	dd 45 f0             	fldl   -0x10(%ebp)
 80483c3:	dc 4d e8             	fmull  -0x18(%ebp)
 80483c6:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483c9:	dd 45 f0             	fldl   -0x10(%ebp)
 80483cc:	dc 4d e8             	fmull  -0x18(%ebp)
 80483cf:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483d2:	dd 45 f0             	fldl   -0x10(%ebp)
 80483d5:	dc 4d e8             	fmull  -0x18(%ebp)
 80483d8:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483db:	dd 45 f0             	fldl   -0x10(%ebp)
 80483de:	dc 4d e8             	fmull  -0x18(%ebp)
 80483e1:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483e4:	dd 45 f0             	fldl   -0x10(%ebp)
 80483e7:	dc 4d e8             	fmull  -0x18(%ebp)
 80483ea:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483ed:	dd 45 f0             	fldl   -0x10(%ebp)
 80483f0:	dc 4d e8             	fmull  -0x18(%ebp)
 80483f3:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483f6:	dd 45 f0             	fldl   -0x10(%ebp)
 80483f9:	dc 4d e8             	fmull  -0x18(%ebp)
 80483fc:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483ff:	dd 45 f0             	fldl   -0x10(%ebp)
 8048402:	dc 4d e8             	fmull  -0x18(%ebp)
 8048405:	dd 5d e0             	fstpl  -0x20(%ebp)
 8048408:	dd 45 f0             	fldl   -0x10(%ebp)
 804840b:	dc 4d e8             	fmull  -0x18(%ebp)
 804840e:	dd 5d e0             	fstpl  -0x20(%ebp)
 8048411:	eb 92                	jmp    80483a5 <main+0x11>
 8048413:	90                   	nop    
 8048414:	90                   	nop    
 8048415:	90                   	nop    
 8048416:	90                   	nop    
 8048417:	90                   	nop    
 8048418:	90                   	nop    
 8048419:	90                   	nop    
 804841a:	90                   	nop    
 804841b:	90                   	nop    
 804841c:	90                   	nop    
 804841d:	90                   	nop    
 804841e:	90                   	nop    
 804841f:	90                   	nop    
unrolled fp div test

A while loop which takes two doubles and divides them multiple times in the same loop.

08048394 <main>:
 8048394:	8d 4c 24 04          	lea    0x4(%esp),%ecx
 8048398:	83 e4 f0             	and    $0xfffffff0,%esp
 804839b:	ff 71 fc             	pushl  -0x4(%ecx)
 804839e:	55                   	push   %ebp
 804839f:	89 e5                	mov    %esp,%ebp
 80483a1:	51                   	push   %ecx
 80483a2:	83 ec 24             	sub    $0x24,%esp
 80483a5:	dd 05 e0 84 04 08    	fldl   0x80484e0
 80483ab:	dd 5d f0             	fstpl  -0x10(%ebp)
 80483ae:	dd 05 e8 84 04 08    	fldl   0x80484e8
 80483b4:	dd 5d e8             	fstpl  -0x18(%ebp)
 80483b7:	dd 45 e8             	fldl   -0x18(%ebp)
 80483ba:	dc 75 f0             	fdivl  -0x10(%ebp)
 80483bd:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483c0:	dd 45 e8             	fldl   -0x18(%ebp)
 80483c3:	dc 75 f0             	fdivl  -0x10(%ebp)
 80483c6:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483c9:	dd 45 e8             	fldl   -0x18(%ebp)
 80483cc:	dc 75 f0             	fdivl  -0x10(%ebp)
 80483cf:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483d2:	dd 45 e8             	fldl   -0x18(%ebp)
 80483d5:	dc 75 f0             	fdivl  -0x10(%ebp)
 80483d8:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483db:	dd 45 e8             	fldl   -0x18(%ebp)
 80483de:	dc 75 f0             	fdivl  -0x10(%ebp)
 80483e1:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483e4:	dd 45 e8             	fldl   -0x18(%ebp)
 80483e7:	dc 75 f0             	fdivl  -0x10(%ebp)
 80483ea:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483ed:	dd 45 e8             	fldl   -0x18(%ebp)
 80483f0:	dc 75 f0             	fdivl  -0x10(%ebp)
 80483f3:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483f6:	dd 45 e8             	fldl   -0x18(%ebp)
 80483f9:	dc 75 f0             	fdivl  -0x10(%ebp)
 80483fc:	dd 5d e0             	fstpl  -0x20(%ebp)
 80483ff:	dd 45 e8             	fldl   -0x18(%ebp)
 8048402:	dc 75 f0             	fdivl  -0x10(%ebp)
 8048405:	dd 5d e0             	fstpl  -0x20(%ebp)
 8048408:	dd 45 e8             	fldl   -0x18(%ebp)
 804840b:	dc 75 f0             	fdivl  -0x10(%ebp)
 804840e:	dd 5d e0             	fstpl  -0x20(%ebp)
 8048411:	eb 92                	jmp    80483a5 <main+0x11>
 8048413:	90                   	nop    
 8048414:	90                   	nop    
 8048415:	90                   	nop    
 8048416:	90                   	nop    
 8048417:	90                   	nop    
 8048418:	90                   	nop    
 8048419:	90                   	nop    
 804841a:	90                   	nop    
 804841b:	90                   	nop    
 804841c:	90                   	nop    
 804841d:	90                   	nop    
 804841e:	90                   	nop    
 804841f:	90                   	nop    

Personal Tools