2010-04-02 22 views
6

Estaba leyendo más de this question y me pregunté si la respuesta aceptada también podría ser una forma de determinar la arquitectura. Por ejemplo, en asm podría insertar un WORD en la pila y luego marcar SP. Comparar la nueva SP a la edad SP:Determinar la arquitectura de 32/64 bits en el ensamblaje

Dif de 4 significa 32 bits
Dif de 8 bits significa 64

Estoy en lo correcto en este pensamiento?

+2

Tenía la impresión de que las instrucciones de ensamblaje de 32 bits y de 64 bits eran diferentes. Al menos en x86 vs. x86-64. – Powerlord

+2

No lo sé, pero si simplemente desea detectar el soporte de 64 bits, puede usar la instrucción CPUID. –

+1

Normalmente, en el momento de la compilación, se sabe si el destino es de 64 bits o de 32 bits. De hecho, sería un caso raro que este truco fuera útil. Además, supongo que hay una manera de examinar la bandera relevante directamente sin tener que hacer algún tipo de truco como este. –

Respuesta

6

No, porque el tamaño de su pila se basa en en qué modo se está ejecutando (real, protegido, largo/64, vm86, smm, etc.), no en la arquitectura. Si su ensamble se ejecuta en modo protegido, por ejemplo, su pila será de 32 bits (o 16 si sus operandos son de 16 bits), incluso si su procesador es x86-64.

Como alguien en los comentarios mencionados, CPUID es la única manera confiable de saber cuál es su arquitectura.

+0

Bien ... eso tiene sentido. – IAbstract

Cuestiones relacionadas