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.