Hallo liebe community,
ich habe schon desöfteren gesehen, dass GCC beim kompilieren z.B. folgenden Codes
char *buffer = malloc(1, 1000);
In folgendes übersetzt:
char *buffer = malloc(1, 1000);
  108a92:	be e8 03 00 00       	mov    $0x3e8,%esi
  108a97:	bf 01 00 00 00       	mov    $0x1,%edi
  108a9c:	b8 00 00 00 00       	mov    $0x0,%eax
  108aa1:	e8 3f b6 ff ff       	callq  1040e5 <malloc>
  108aa6:	48 63 d8             	movslq %eax,%rbx
Oder manchmal setzt er auch anstatt movslq %eax,%rbx das hier ein cltq
Wieso tut er das? Das ist ja fast fahrlässig, denn er zerstört damit eigentlich die oberen 64-bit der Adresse.
Ich kompiliere mit -m64 und der Host ist auch 64-bit.
Ich hoffe ihr könnt meine Frage beantworten.