2009-02-22 27 views
7

Actualmente estoy en proceso de aprender el lenguaje ensamblador. Estoy usando Gas en Linux Mint (32-bit). Usando este libro: Programming from the Ground Up.Linux de 64 bits, Lenguaje ensamblador, ¿Problemas?

La máquina que estoy usando tiene un procesador AMD Turion 64 bit, pero estoy limitado a 2 GB de RAM. Estoy pensando en actualizar mi instalación de Linux a la versión de 64 bits de Linux Mint, pero me preocupa que, dado que el libro está dirigido a una arquitectura x86 de 32 bits, los ejemplos del código no funcionarán.

Así que dos preguntas:

  1. ¿Es probable que haber ningún problema con los ejemplos de código?
  2. ¿Alguien aquí ha notado algún beneficio en general en el uso de 64 bits de Linux en 32 bits (he visto algunos hilos en Stack Overflow sobre esto pero están relacionados principalmente con Windows Vista vs. Windows XP)

Respuesta

4

Todos los ejemplos de código deberían funcionar. Los procesadores de 64 bits y los sistemas operativos aún pueden ejecutar código de 32 bits en una especie de "modo de compatibilidad". Sus ejemplos de ensamblaje no son diferentes. Puede que tenga que proporcionar una línea adicional de ensamblaje o dos (como .BITS 32) pero eso es todo.

En general, usar un sistema operativo de 64 bits será más rápido que usar un sistema operativo de 32 bits. x86_64 tiene más registros que i386. Ya que estás trabajando en ensamblaje, ya sabes para qué se utilizan los registros ... Tener más de ellos significa que se deben mover menos cosas dentro y fuera de la pila (y otra memoria temporal), por lo tanto tu programa gasta menos tiempo administrando datos y más tiempo trabajando en esos datos.

Editar: Para compilar el código de 32 bits en Linux de 64 bits utilizando el gas, sólo tiene que utilizar el argumento de línea de comandos "--32", como se señala en the GAS manual

+0

muchas gracias, más útil! – bplus

1

Incluso si se ejecuta Linux de 64 bits, se es posible compilar y ejecutar binarios de 32 bits en él. No sé cuán bueno es el apoyo de Mint para eso, supongo que debes verificarlo.

Sin embargo, el ensamblador de 64 bits no es totalmente compatible con 32 bits, por ejemplo, tiene diferentes (más) registros. Hay algunas instrucciones específicas no disponibles en ninguna de las plataformas.

Diría que el cambio a 64 bits no es un gran problema. Aún puede escribir el ensamblado de 32 bits y luego quizás intente que también se ejecute como 64 bits (no debería ser demasiado difícil), como fuente de aún más diversión de programación/aprendizaje.

+0

gracias, muy útil! – bplus

+0

Veo que te gusta más la otra respuesta, pero si crees que la mía es útil, podrías darle un voto de +1 también;) pero estoy contento con tu comentario, también :) – ypnos

1

Por lo general, 32 bits es suficiente así que solo use 64 bits o más si realmente lo NECESITA. Lo mejor es decidir antes de la programación si quieres hacerlo como una aplicación de 32 bits o una aplicación de 64 bits y luego atenerse a ella como la depuración en modo mixto puede ser complicada rápidamente.

Cuestiones relacionadas