Onde posso encontrar ferramentas para aprendizagem assembler no OS X? [fechadas]

StackOverflow https://stackoverflow.com/questions/137523

  •  02-07-2019
  •  | 
  •  

Pergunta

Eu gostaria de aprender assembler. No entanto, existem muito poucos recursos para fazê-assembler com OS X.

Há alguém lá fora que tem programado em assembly em um Mac? Onde você aprendeu?

E, há alguma razão que eu não deveria estar fazendo a montagem? Do I risco (significativamente) bater meu computador irreparavelmente?

Foi útil?

Solução

Se você estiver usando um PowerPC Mac, olhar para assembler gcc em linha. Caso contrário, olhar para nasm. Eu não posso dar quaisquer referências decentes para PPC ASM (eles são poucos e distantes entre si), mas eu sugiro as seguintes coisas para aprender x86 asm:

Além disso, se você não está no modo kernel, em seguida, não há nenhuma chance de estragar qualquer coisa, realmente, e mesmo se você estiver no modo kernel é difícil realmente destruir nada.

Edit: Além disso, obter gcc e tal de XCode não Macports ou algo assim. Você está em um mundo de arquivos Mach-O malformados se não o fizer. Não é divertido para diagnosticar problemas de formato de arquivo quando você está apenas começando asm hacking.

Outras dicas

A linguagem assembler é determinado pela plataforma de hardware, e não o sistema operacional. Dado que o OS X é executado na plataforma Intel e é de 64 bits, você deve olhar para obter informações sobre x64 (também chamado AMD64) assembler. Confira o artigo Wikipedia ( http://en.wikipedia.org/wiki/X86-64) para um monte de links para documentação sobre x64.

Além disso, o OS X documentação ferramentas de poder contém uma grande quantidade de informações sobre assembler x64. Em particular, o Netwide Assembler (NASM - http://developer.apple.com /documentation/DeveloperTools/nasm/nasmdoc0.html ) pode ter a documentação sobre como construir aplicações OS X usando assembler.

Para começar a aprender montagem, você pode querer começar com programas em C simples e pedir GCC para gerar o código assembler para ele usando a opção -s:

gcc -S hello.c -o hello.asm

Você vai então ser capaz de entender como chamar funções, passar argumentos, etc.

Nasm / yasm são sua melhor aposta; sintaxe gcc inline é muito incapacitante e pode ser muito doloroso para usar, por vezes, mais existem, literalmente, algumas coisas que não pode fazer. sintaxe macro do nasm também é muito muito mais útil, uma dádiva de Deus em uma linguagem como conjunto que não tem built-in templates recursos.

XCode (ie. GCC) tem grande apoio para escrever assembler. É uma coisa divertida de aprender (embora você provavelmente não precisa muito), eo pior que pode fazer é travar o programa que você está escrevendo, mesmo que em C. Apenas no Google por 'gcc linha asm x86 tutorial' e você deve encontrar abundância de pontos de partida. Não se preocupe que alguns parecem ser Linux específica, eles geralmente funcionam tão bem no XCode.

(edit) ... supondo que você tenha um Mac Intel é claro; se não, então substituir 'x86' com 'ppc'.

aqui

I programado montagem em um Mac. Foi Motorola 680x0 assembler usando MPW. Toquei no PowerPC assembler algumas vezes em CodeWarrior e ProjectBuilder. Agora ProjectBuilder é chamado XCode, e há Intel. A montadora é uma das muitas ferramentas dentro XCode.

Inicialmente eu aprendi assembler no Apple II: o monitor de linguagem 6502 máquina construída em ROM, o Sweet16 mini-assembler, e outros. Mais tarde, eu usei Intel 80186 assembler para acelerar os bits lentos de código C e trabalho pago para um curso de um dia na Intel 80186 montador em uma universidade. Mais tarde, eu tive que manter algum conjunto 680x0 para o Mac. Isso foi há muito tempo atrás.

Eu não acho que haja qualquer razão para não fazer a montagem. Aprendizagem é grande. Saiba tudo o que puder. Cair em um depurador de nível suficientemente baixo e olhada no código desmontado.

O meu conselho é:

Não tenha medo.

Não há nenhuma razão porque você não deve; não há nada que você pode fazer em linguagem assembly que você não pode fazer em uma linguagem de alto nível como C.

Tanto como ferramentas de ir, você pode querer instalar MacPorts e obter o montador GNU. Isso pode ou não pode ser o caminho mais fácil, mas é gratuito e você pode provavelmente encontrar documentação tutorial para escrever programas Unix no GNU algum lugar assembler na rede.

Existem dois três coisas que você para saber necessidade de escrever linguagem assembly em um sistema com um sistema operacional (ao contrário de 'nu metal' assembly que é um mundo de sua própria):

  1. Como o conjunto de instruções funciona - grande quantidade de recursos para a Intel X86 se você tem um Mac Intel, ainda conjunto razoável para PPC por exemplo, Mac OS X Internals .

  2. Como montar link para seus programas - se você tem as ferramentas para desenvolvedores instalado você tem GCC e ferramentas associadas

  3. Como para conversar com o OS - aqui é onde Mac montagem é uma muito menos bem documentado que o Windows ou Linux. Pode ser que você tem que escrever programas em C equivalentes e uso 'gcc -S' para ver o que as convenções de restauração chamando / pilha são adequados. Depende do que você quer fazer, mas em um miniumum você precisa chamadas de sistema mínimos para a alocação IO e memória.

Um bom ponto de partida é aqui .

Se você tem Ferramentas de Desenvolvimento instalado, você pode simplesmente abrir Terminal e tipo como ( GNU Assembler -. parte do Binutils )

Para PPC tentar Lightsoft

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top