Al compilar el código con VC++, MSDN le da la opción entre el uso de la x86_amd64 conjunto de herramientas o el amd64 conjunto de herramientas (al llamar vcvarsall.bat).

¿Cómo puedo elegir entre los dos cuando compilar x64 código? Será el amd64 opción de producir más eficiente x64 máquina de código que el compilador cruzado?

InformationsquelleAutor Meta | 2010-08-18

2 Comentarios

  1. 25

    No tiene nada que ver con la eficiencia. El nativo y el compilador cruzado va a generar el mismo código de máquina. No obstante, obtener algunos de los beneficios mediante la ejecución de un nativo de 64-bits compilador en un proceso de 64 bits de la estación de trabajo (mayores registros, mayor espacio de memoria, etc…).

    El compilador nativo sólo se ejecutará en una de 64 bits copia de Windows, así que si su estación de trabajo es de 32 bits este compilador no se ejecute.

    El compilador cruzado está diseñado para funcionar en máquinas x86 aunque se ejecute en un sistema de 64 bits copia de Windows a través de WoW; sin embargo, no hay ninguna razón para ello.

    La página que enlace lo dice muy bien:

    x64 x86 (x64 cross-compiler)

    Permite
    a crear los archivos de salida para x64.
    Esta versión de cl.exe se ejecuta como un
    Proceso de 32 bits, nativo en un x86
    de la máquina y en WOW64 en una de 64 bits
    Las viudas del sistema operativo.

    x64 x64

    Le permite crear una salida
    archivos para x64. Esta versión de cl.exe
    se ejecuta como un proceso nativo en una versión de 64 bits
    máquina.

    Gracias a Brian R. Bondy para la cita de formato

  2. 10

    De lo que enlaza:

    x64 x86 (x64 cross-compiler)

    Permite
    a crear los archivos de salida para x64.
    Esta versión de cl.exe se ejecuta como un
    Proceso de 32 bits, nativo en un x86
    de la máquina y en WOW64 en una de 64 bits
    Las viudas del sistema operativo.

    x64 x64

    Le permite crear una salida
    archivos para x64. Esta versión de cl.exe
    se ejecuta como un proceso nativo en una versión de 64 bits
    máquina.

    Parafraseado:

    Si utiliza x86_amd64, entonces usted se suelen desarrollar en un equipo x86 y desea crear x64 archivos que se ejecutan de forma nativa en x64. También se puede utilizar esta opción en una versión de 64 bits de la máquina, pero el compilador se ejecuta bajo WOW64 de emulación.

    Si utiliza AMD64, entonces usted está en el desarrollo de una versión de 64 bits de la máquina y desea crear x64 archivos que se ejecutan de forma nativa en x64. El compilador ejecuta de forma nativa en x64. Esta opción es más eficiente para construir x64 programas.

    Usted puede preguntarse por qué usted nunca iba a desarrollar una versión de 64 bits del programa en un equipo x86, ya que no se puede ejecutar no se puede depurar. Bueno, es todavía útil, por ejemplo, si usted tiene un servidor de compilación que es x86 y que el servidor de generación de necesidades para generar tanto en x86 y x64 salidas.

    ¿Cómo es posible que un compilador para que se ejecute en x64 si se trata de un programa basado en x86 (x86_amd64)? Esa es la misma razón que usted puede ejecutar cualquier programa x86 en su x64 máquina… Gracias a WOW64 de emulación.

    Lo que es WOW64 emulación:

    WOW64 de emulación que sucede cuando se ejecuta un programa x86 a x64 equipo (o IA64). WOW64 stands para Windows de 32 en Windows de 64. Es una capa de emulación en la parte superior de x64 máquinas que permiten ejecutar programas x86.

    Sus operaciones del sistema de archivos va a ser redirigido a WOW64 carpetas y su registro será redirigido a un subnodo así. Por ejemplo, cuando se intenta obtener la carpeta de archivos de programa volverá c:\program files (x86)\ si usted está usando WOW64 pero va a volver c:\program files\ si usted está usando x64.

    Otro ejemplo, para el registro, si intenta escribir en HKLM\Software\Something lo que realmente le redirigirá a HKLM\SOFTWARE\Wow6432Node\Something sin su programa x86 del conocimiento.

    Ejecución de un nativo x64 construir será más eficiente que se ejecuta a través de WOW64 emulación por Qué? Porque usted no tiene que extra capa de emulación de la transformación de su 32bit llamadas en 64bit queridos.

    Por cierto, si está ejecutando la versión de 64 bits de Windows, puede ver que procesos se están ejecutando a través de WOW64, porque tendrán un *32 anexa el nombre del proceso en la lista de procesos.

    • Tanto el x86_amd64 y amd64 crear versiones x64 ejecutables nativos que se ejecute como un nativo de 64-bit de proceso en un sistema operativo de 64 bits. WOW64 para la ejecución de 32 bits ejecutables nativos en una versión de 64 bits del sistema operativo. El x86 compilador generará nativo de 32 bits ejecutables que se ejecutar bajo WOW64.
    • joshperry: de acuerdo en ver mi edición.
    • Un poco tarde en el día, pero todavía estoy confundido por la amd64_x86 opción. Entiendo que esto permite que el conjunto de herramientas (cl/link) para que se ejecute como los procesos de 64 bits. OK. Pero la que genera los archivos binarios de la orientación de la arquitectura x86, ¿correcto? ¿Qué hace exactamente el último decir? Archivos binarios de 64 bits producida por amd64_x86 son inútiles?
    • Nunca la mente. amd64_x86 NO puede producir archivos binarios de 64 bits.

Dejar respuesta

Please enter your comment!
Please enter your name here