AFAIK, the address 0xb80a0 is aligned to a 16-byte-boundary. Otherwise it wouldn't have "0" at it's end, right?
AFAIK, the only difference between movaps and movups is that movaps needs data aligned on a 16-byte-boundary.
Do you have any ideas why this might crash?
Code:
Code: Select all
...
40001cbf: f7 d8 neg %eax
40001cc1: 3d 00 80 ff ff cmp $0xffff8000,%eax
40001cc6: 0f 8c bf 00 00 00 jl 40001d8b <SYSTEM_ALIGNEDFWDMOVESSE_3$formal$formal$SMALLINT+0xdb>
40001ccc: f7 c6 0f 00 00 00 test $0xf,%esi
40001cd2: 75 5f jne 40001d33 <SYSTEM_ALIGNEDFWDMOVESSE_3$formal$formal$SMALLINT+0x83>
40001cd4: 0f 28 05 a0 80 0b 00 movaps 0xb80a0,%xmm0 ;<--- fault
40001cdb: 0f 28 04 c6 movaps (%esi,%eax,8),%xmm0
...
Code: Select all
Exception 13
Error: 0
CR2: $EFFFE8A7
Thread: 2
Exception address: $0000001B:$40001CD4
eax=$FFFFFE20 ebx=$00000000 ecx=$00000F00 edx=$000B8F00
esi=$000B8FA0 edi=$005660E0 ebp=$FF9FFFDE esp=$FF9FFFBA
eflags=%00000000000000010000001001000110
Thanks,
Simon