Victory? (was Re: Mac Intel)

Joel Reymont joelr1@REDACTED
Tue Aug 15 12:30:26 CEST 2006

It's crashing on this apparently.

0x000a4702 <hipe_bifs_get_hrvtime_0+74>:        movapd %xmm0,-56(%ebp)

According to the movapd description:

66 0F 28 /r MOVAPD xmm1, xmm2/m128
Move packed double-precision floating-point values from xmm2/m128 to  

66 0F 29 /r MOVAPD xmm2/m128, xmm1
Move packed double-precision floating-point values from xmm1 to xmm2/ 

So unless I'm mistaken, movapd shouldn't have been used with -56(% 
ebp), correct?

Is there something wrong with HiPE code generation?


Program received signal EXC_BAD_INSTRUCTION, Illegal instruction/ 
0x000a4702 in hipe_bifs_get_hrvtime_0 (A__p=0x12dbc94) at hipe/ 
893         f.fd = get_hrvtime();
(gdb) disas
Dump of assembler code for function hipe_bifs_get_hrvtime_0:
0x000a46b8 <hipe_bifs_get_hrvtime_0+0>: push   %ebp
0x000a46b9 <hipe_bifs_get_hrvtime_0+1>: mov    %esp,%ebp
0x000a46bb <hipe_bifs_get_hrvtime_0+3>: push   %ebx
0x000a46bc <hipe_bifs_get_hrvtime_0+4>: sub    $0x44,%esp
0x000a46bf <hipe_bifs_get_hrvtime_0+7>: mov    8(%ebp),%ebx
0x000a46c2 <hipe_bifs_get_hrvtime_0+10>:        movl   $0x0,12(%esp)
0x000a46ca <hipe_bifs_get_hrvtime_0+18>:        movl   $0x0,8(%esp)
0x000a46d2 <hipe_bifs_get_hrvtime_0+26>:        movl   $0x0,4(%esp)
0x000a46da <hipe_bifs_get_hrvtime_0+34>:        lea    -12(%ebp),%eax
0x000a46dd <hipe_bifs_get_hrvtime_0+37>:        mov    %eax,(%esp)
0x000a46e0 <hipe_bifs_get_hrvtime_0+40>:        call   0x45669  
0x000a46e5 <hipe_bifs_get_hrvtime_0+45>:        movd   -12(%ebp),%xmm1
0x000a46ea <hipe_bifs_get_hrvtime_0+50>:        pxor   %xmm0,%xmm0
0x000a46ee <hipe_bifs_get_hrvtime_0+54>:        punpckldq %xmm1,%xmm0
0x000a46f2 <hipe_bifs_get_hrvtime_0+58>:        punpckldq 903040,%xmm0
0x000a46fa <hipe_bifs_get_hrvtime_0+66>:        subpd  903056,%xmm0
0x000a4702 <hipe_bifs_get_hrvtime_0+74>:        movapd %xmm0,-56(%ebp)


More information about the erlang-questions mailing list