codice:
void _start (float *i, float *o, float *m)
{
i[0] = m[0] + 3.0f;
}
Questo codice compilato in questo modo mi da
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
Come posso evitare che gcc mi generi codice con il "RIP-relative" addressing? (succede soltanto quando nel sorgente c'è un floating-point literal)
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"