g++ erstellt 64-Bit-Code?
-
Wie kann ich herausfinden, ob mein g++ 64-Bit-Code erzeugt? Fedora 17
-
Ist dort http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html was dabei?
-
__LP64__
_LP64
-
sizeof(int) ... Assemblerausgabe anschauen ... entsprechende Kompileroption setzen ...
-
Meinst du sizeof(long)? Da würde ich eindeutig sizeof(void*) vorziehen, das funktioniert wenigstens auch auf Windoof-Kisten.
-
AFAIK ist das mit g++ unter Linux so, dass generell 64 Bit erzeugt wird,
wenn man ein 64 Bit Betriebssystem verwendet, und 32 Bit muss man explizit durch -m32 angeben.
-
DrakoXP schrieb:
AFAIK ist das mit g++ unter Linux so, dass generell 64 Bit erzeugt wird,
wenn man ein 64 Bit Betriebssystem verwendet, und 32 Bit muss man explizit durch -m32 angeben.Analog zu 32bit und -m64 für 64bit.

-
Wie knivil schon schreibt, u.a. Maschinencode ausgeben lassen, oder einfach disassembli anschauen mit standard-disassemblern wie objdump oder gdb.
Zur Not ginge auch Hexcodeansicht, aber hier sieht man als ungeübter Mensch nicht unbedingt sofort, was abgeht, da ja nun viele Befehle sich nur über Prefixe unterscheiden wenn gleichzeitig 32Bit und 64bit, aber sonst codemäßig gleich bleiben.
Aber die Registerbefehlgrößenverhältnisse sind anders, bei 64bit viel mehr Nullen bei Registerladebefehlen möglich und natürlich mehr Registerladebefehlsnamen, da ja mehr Register zur Verfügung stehen.Und wie groß so ein Int werden kann, sollte man auch herausfinden.