OS Xでアセンブラーを学習するためのツールはどこにありますか? [閉まっている]
質問
アセンブラーを学びたいのですが。ただし、OS Xでアセンブラーを実行するためのリソースはほとんどありません。
Macでアセンブリをプログラミングした人はいますか?どこで学びましたか?
そして、アセンブリを行うべきではない理由はありますか?コンピューターを取り返しのつかないほどクラッシュさせる危険がありますか?
解決
PowerPC Macを使用している場合は、gccインラインアセンブラを調べてください。それ以外の場合は、nasmを調べます。私はPPC ASMについてまともな言及をすることはできません(それらはほとんどありません)が、x86 asmを学ぶために以下のことをお勧めします:
- 本 Eldad Eilamによる逆転
- gcc -Sを使用して単純なCソースをコンパイルし、生成されたアセンブリを読み取ります
- サンドパイル を使用する
- irc.freenode.netで#openrceに参加し、 OpenRCE を使用します
また、カーネルモードでない場合は、実際に何かを台無しにする可能性はありません。カーネルモードであっても、実際に何かを破壊することは困難です。
編集:また、Macportsなどではなく、XCodeからgccなどを取得します。そうしないと、不正な形式のMach-Oファイルの世界が訪れます。 asmハッキングを始めたばかりのときにファイル形式の問題を診断するのは面白くない。
他のヒント
アセンブラー言語は、オペレーティングシステムではなく、ハードウェアプラットフォームによって決定されます。 OS XがIntelプラットフォームで実行され、64ビットである場合、x64(AMD64とも呼ばれる)アセンブラーに関する情報を探す必要があります。ウィキペディアの記事を確認してください( http://en.wikipedia.org/wiki/X86-64)x64に関するドキュメントへの多くのリンク。
また、OS Xツールのドキュメントには、x64アセンブラに関する多くの情報が含まれている場合があります。特に、Netwide Assembler(NASM- http://developer.apple.com /documentation/DeveloperTools/nasm/nasmdoc0.html )には、アセンブラーを使用してOS Xアプリケーションを構築する方法に関するドキュメントがあります。
アセンブリの学習を開始するには、単純なCプログラムから開始し、GCCに-Sオプションを使用してアセンブラコードを生成するように依頼することもできます。
gcc -S hello.c -o hello.asm
これで、関数の呼び出し方法、引数の受け渡し方法などを理解できるようになります。
Nasm / yasmが最善の策です。 gccインライン構文は非常に不自由で、時々使用するのは非常に苦痛です。また、文字通りできないこともあります。また、Nasmのマクロ構文ははるかに便利です。組み込みのテンプレート機能を持たないアセンブリのような言語の天才です。
XCode(GCCなど)は、アセンブラーの作成を強力にサポートしています。学習するのは楽しいことです(それほど必要ではないかもしれませんが)、そしてあなたができる最悪のことは、Cの場合と同じように、書いているプログラムをクラッシュさせることです。多くの出発点を見つける必要があります。一部はLinux固有のように見えることを心配しないでください。通常はXCodeでも同様に機能します。
(編集)...もちろんIntel Macを持っていると仮定します;そうでない場合は、「x86」を「ppc」に置き換えます。
Macでアセンブリをプログラムしました。 MPWを使用したMotorola 680x0アセンブラでした。 CodeWarriorとProjectBuilderでPowerPCアセンブラーを数回触れました。現在、ProjectBuilderはXCodeと呼ばれ、Intelがあります。アセンブラーは、XCodeの多くのツールの1つです。
私はもともとApple IIでアセンブラーを学びました。ROMに組み込まれた6502機械語モニター、Sweet16ミニアセンブラーなどです。その後、Intel 80186アセンブラーを使用してCコードの低速ビットを高速化し、大学でIntel 80186アセンブラーの1日コースの仕事をしました。後で、Mac用に680x0アセンブリを維持する必要がありました。それはかなり前のことでした。
アセンブリを行わない理由はないと思います。学習は素晴らしいです。できることをすべて学びましょう。低レベルのデバッガーにドロップして、逆アセンブルされたコードを見てください。
私のアドバイス:
怖がらないでください。
すべきではない理由はありません。アセンブリ言語でできることは何もありません。Cのような高レベル言語ではできません。
ツールに関する限り、 MacPorts をインストールし、GNUアセンブラを取得することをお勧めします。これは最も簡単な方法かもしれませんが、無料であり、GNUアセンブラーでUnixプログラムを書くためのチュートリアルドキュメントをネット上のどこかに見つけることができます。
オペレーティングシステムを備えたシステムでアセンブリ言語を記述する必要があることを知っておく必要がある3つのことが2つあります(独自の世界である「ベアメタル」アセンブリとは対照的です):
-
命令セットの仕組み-Intel Macを使用している場合はIntel X86のリソースの負荷、たとえば Mac OS X内部。
-
プログラムをアセンブルする方法-開発者ツールをインストールしている場合は、GCCと関連ツールがあります
-
OSとの対話方法-ここでは、MacアセンブリがWindowsやLinuxよりも文書化されていないロットです。同等のCプログラムを作成し、「gcc -S」を使用して、どの呼び出し/スタック復元規則が適切かを確認する必要がある場合があります。何をしたいかにもよりますが、最低でもIOとメモリ割り当てのためのOSシステムコールが必要です。
良い出発点は、こちら。
デベロッパーツールがインストールされている場合、ターミナルを開いて as ( GNUアセンブラー - Binutils の一部)。
PPCの場合はLightsoftを試してください