Questo codice compilato in questo modo mi dacodice:void _start (float *i, float *o, float *m) { i[0] = m[0] + 3.0f; }
Come posso evitare che gcc mi generi codice con il "RIP-relative" addressing? (succede soltanto quando nel sorgente c'è un floating-point literal)codice:gcc -O3 -c code.c objdump -d code.o code.o: formato del file elf64-x86-64 Disassemblamento della sezione .text: 0000000000000000 <_start>: 0: f3 0f 10 05 00 00 00 movss 0x0(%rip),%xmm0 # 8 <_start+0x8> 7: 00 8: f3 0f 58 02 addss (%rdx),%xmm0 c: f3 0f 11 07 movss %xmm0,(%rdi) 10: c3 retq
Non dovrebbe essere necessario.. si può fare come qui http://stackoverflow.com/questions/6...nline-assembly ?
Mi servirebbe soltanto per rendere il codice "position-independent"

Rispondi quotando