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