Ubuntu 10.10 64 bits. GNU comme.Erreur de segmentation avec cvtps2dq et cvttps2dq
.section .data
value1:
.float 1.25 , 124.79 , 200.0 , -312.5
.section .text
.globl _start
_start:
nop
cvtps2dq value1 , %xmm0
cvttps2dq value1 , %xmm1
movl $1 , %eax
movl $0 , %ebx
int $0x80
Exécution des résultats du programme dans une erreur de segmentation:
~/scratch $ as --64 test.s -o test.o && ld test.o -o test -dynamic-linker /lib64/ld-linux-x86-64.so.2 -lc
~/scratch $ ./test
Segmentation fault
~/scratch $
drôle est, si je compilez le programme avec une seule de ces deux lignes (soit un):
cvtps2dq value1 , %xmm0
cvttps2dq value1 , %xmm1
ça fonctionne bien.
Des suggestions? A propos, cet exemple est basé sur celui du livre "Professional Assembly Language" de Richard Blum. Les exemples sont écrits pour Linux 32 bits et j'ai dû faire une conversion en conséquence. Alors peut-être que c'est une chose 32/64. :-)
Merci!
Ed
Cela ne plante pas pour moi. Bien sûr, cela ne fait pas grand chose de visible. Vous pouvez simplifier votre lien à juste 'ld test.o -o test'. Attention à nommer les exécutables "test": il y a un/bin/test (sur Linux/usr/bin/test) qui finira par vous surprendre si votre propre programme porte le même nom. –
Salut Ben. Si je construis via 'comme -64 test.s -o test.o && ld test.o -o test' alors ça marche. – dharmatech
Cela fonctionne aussi: '--64 test.s -o test.o && ld test.o -o test -dynamic-lieur/lib64/ld-linux-x86-64.so.2'. – dharmatech