Hallo liebe community,
ich habe schon desöfteren gesehen, dass GCC beim kompilieren z.B. folgenden Codes
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.
ich habe schon desöfteren gesehen, dass GCC beim kompilieren z.B. folgenden Codes
Code: [Auswählen]
char *buffer = malloc(1, 1000);
In folgendes übersetzt:Code: [Auswählen]
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 Code: [Auswählen]
movslq %eax,%rbx das hier ein Code: [Auswählen]
cltqWieso 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.

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken


Gespeichert