2010-04-16 17 views
6

Estoy en una Mac con Snow Leopard (10.6.3). Escuché que el lenguaje ensamblador con el que trabajo debe ser válido con el conjunto de chips que usa. Soy completamente nuevo en esto. Tengo una formación básica en C y Objective-C y una formación casi sólida en PHP. Siempre quise ver de qué se trata el montaje.Programación de ensamblaje en Mac

El tutorial que voy a consultar es por VTC [link].

Lo que quiero saber es: ¿son los tutoriales que estoy a punto de hacer compatible con la versión de ensamblaje en la Mac que tengo?

Lo siento, soy completamente nuevo en este idioma, aunque recuerdo haberlo estudiado durante mucho tiempo. Tengo xcode y lo que me pregunto es qué tipo de documento abriría en xcode para trabajar con ensamblaje y la Mac tiene un editor hexadecimal integrado (¿cuándo llega el momento de necesitarlo?)

gracias

Respuesta

5

El lenguaje ensamblador que utiliza no depende de su sistema operativo sino del conjunto de instrucciones de su CPU. A juzgar por su versión para Mac, diría que está usando un procesador Intel, por lo que le gustaría aprender a ensamblar x86 o amd64.

+1

Personalmente, encuentro que x86 es más fácil. Además, hay mucha más información acerca de x86 en este momento que amd64 – Earlz

+4

Esto es un poco engañoso: el lenguaje es por CPU, pero las llamadas al sistema son diferentes en todas las plataformas, por lo que los tutoriales para Linux no funcionarán para Mac, por ejemplo (y las llamadas al sistema Mac no están muy bien documentadas). – shosti

+0

Verdadero, pero considere esto: Mac OSX está basado en Unix. –

0

un lenguaje ensamblador es la arquitectura instrucción específica. Los chips son una instanciación de una arquitectura de instrucción.

En mi opinión, lo mejor es obtener TextWrangler y compilar directamente con gcc.

La extensión de archivo que busca es .s.

+0

'.s' por lo general se utiliza para el menos usado AT & T (GNU como) el ensamblaje de la sintaxis, mientras que' .asm' se utiliza generalmente para Intel conjunto de sintaxis (nasm/yasm/TASM/masm). – Earlz

+0

GCC usa la sintaxis de AT & T: compilando en una Mac, estás usando gcc la mayor parte del tiempo debajo del capó. –

+2

@Paul por "menos utilizado" Me refiero a "menos escrito a mano" la sintaxis 'GNU as' se optimizó y se diseñó para ser generada por el compilador. Esta es también la razón por la cual 'GNU as' tiene un manejo y detección de errores notoriamente horrible. Se usa para perfeccionar el código de GCC. Esto solo es una razón por la que no lo recomiendo para un principiante. – Earlz

0

El ensamblaje, para cualquier procesador, será más o menos el mismo en concepto. Sin embargo, la complejidad varía entre los procesadores. Por lo que veo en tu sitio, estarías haciendo el ensamblador x86, (x86 es el conjunto de instrucciones que usan todos los procesadores Intel de línea de consumidor, que usan los Mac recientes y todas las PC) que puede ser bastante complejo, pero no abrumador si aprendes por pasos.

XCode funciona con archivos de texto plano, creo. Hex Fiend para sus necesidades de edición hexadecimal, si las encuentra.

Tenga en cuenta, el montaje es extremadamente bajo nivel. No ifs, whiles o, de hecho, ningún control loop save para "do operation and GOTO if results in (not) zero/equal" (a menos que su ensamblador los proporcione como azúcar sintáctico, que en cierto modo supera el propósito, en mi opinión). El conocimiento de PHP será, como máximo, tangencialmente útil. Sin embargo, tu conocimiento debería servirte bien.

+0

Puede obtener 'ifs' y' whiles' utilizando macros. –

+1

De hecho. "[...] como azúcar sintáctico, que en cierto modo supera el objetivo, en mi opinión". – Kyte

1

Una buena manera de recoger el conjunto es conseguir un dispositivo integrado para jugar.

TI tiene algunos nice, inexpensive devkits para jugar. He hurgado con el kit Chronos ($ 50) que tiene reloj digital con un microcontrolador MSP430 programable con un enlace inalámbrico a su computadora. Es muy dulce

Actualización: Olvidé mencionar el Arduino. Es una plataforma abierta bastante ingeniosa con toneladas de periféricos interesantes y proyectos en línea.

0

Los tutoriales vinculados parecen que usan NASM, que se incluye con Macs.Sin embargo, las llamadas al sistema generalmente son diferentes en diferentes plataformas (son muy diferentes entre Mac y Linux), y sin ver los tutoriales, es difícil saber si se enfocarán en diferentes plataformas (aunque supongo que no). Una mejor opción podría ser instalar SPIM y aprender a ensamblar MIPS, que es más sencillo que x86.

0

Running assembly Code en Mac está a solo 3 pasos de usted. Se podría hacer usando XCODE, pero es mejor usar NASM Command Line Tool.

sólo tienes que seguir:

  1. instala por primera vez el uso de NASM Homebrew brew install nasm
  2. archivo asm convertir en Obj archivo usando este comando Archivo nasm -f macho64 myFile.asm
  3. Run Obj para ver salida usando comandos ld -macosx_version_min 10.7.0 -lSystem -o OutPutFile myFile.o && ./64

El archivo de texto simple denominado myFile.asm se escribe a continuación para su conveniencia.

global start 
section .text 

start: 
    mov  rax, 0x2000004 ; write 
    mov  rdi, 1 ; stdout 
    mov  rsi, msg 
    mov  rdx, msg.len 
    syscall 

    mov  rax, 0x2000001 ; exit 
    mov  rdi, 0 
    syscall 

section .data 

msg: db  "Assalam O Alaikum Dear", 10 
.len: equ  $ - msg 
+0

O simplemente descargue el código de GIT para ejecutar el código de ensamblaje en XCODE. https://github.com/akhzarna/AssemblyLanguage –

Cuestiones relacionadas