1

わかった。Mac (Early 2009 MBP、Intel Core 2 Duo) でプログラムを組み立てる方法を知りたいです。これまでのところ、アセンブリ言語が CPU 命令の直接的な 1 対 1 ニーモニックで構成されていることだけを理解しています。グーグルで検索した後、多くの用語を見てきましたが、ほとんどが「x86」と「x86_64」です。また、MASM、NASM、GAS なども見てきました。

私が間違っている場合は修正してください:

  1. x86 および x86_64 は命令セットです。これらの命令セットを (生のマシン コードとして) 使用して何かを記述したとしても、プログラムが設計されたプロセッサ上にある限り問題ありません。
  2. NASM、MASM、および GAS はすべて異なるアセンブラーです。
  3. さまざまなアセンブリ言語があります。たとえば、AT&T 構文と Intel 構文があります。これらの構文のサポートは、アセンブラによって異なります。

さて、質問:

  1. Mac ユーザーとして、どの命令セットを気にする必要がありますか?
  2. Xcode は GCC を使用します。これはGASも使っているということですか?
  3. GAS を使用する場合、AT&T の構文を学習する必要がありますか?
  4. これについて理解できる本はありますか。チュートリアルではなく、Web 上のリファレンス マニュアルでもありません。それらのことは私について多くを想定しています。たとえば、私の知る限り、レジスタは CPU 上のほんの少しのメモリです。それは私が本当に知っていることです。

ご協力いただきありがとうございます。

4

3 に答える 3

2

「私のプログラムが設計されたプロセッサ上にある限り、私は元気です。」あまり。多くの場合、アセンブラプログラムは、実行しているオペレーティングシステムについても想定します(たとえば、ライブラリ関数を呼び出すときやシステムコールを行うとき)。そうでなければ、あなたの仮定は正しいです。

質問について:

  1. 現在のMacは、x86とx86-64(別名AMD64、別名EM64T、別名Intel64)の両方をサポートしています。最近のシステムでは、32ビットと64ビットの両方のバイナリを実行できます。Apple自体は、ライブラリを「ファット」(別名「ユニバーサル」)モード、つまり複数のアーキテクチャ用のマシンコードで出荷しています。
  2. 「as-v」を使用して、使用している正確なアセンブラを確認します。私は「AppleIncバージョンcctools-698.1〜1、GNUアセンブラバージョン1.38」と報告しています。そうです、それはガスです。
  3. はい。
  4. https://stackoverflow.com/questions/4845/good-x86-assembly-book
于 2009-08-11T14:32:13.277 に答える
2

アセンブリ言語を学びたい場合は、x86 命令セットから始めてください。それが基本セットです。

このテーマに関する優れた本は、Randall Hyde の the Art of Assembly Language で、彼の Web サイトでも入手できます。彼は高レベルのアセンブラを使用して、物事を把握しやすくし、実行しやすくしていますが、その奥深くでは GAS を使用しています。

XCode にアセンブラーが付属しているとは思いませんが、たとえば、MacPort の binutils パッケージで GAS を見つけることができます。

Mac でプログラムを作成したいだけで、CPU のすべてのビットの寿命にはあまり関心がない場合は、Python や Ruby などのより高度な言語を使用する方がはるかに優れています。

于 2009-08-11T12:41:16.387 に答える
0

最初の質問に答えます。現在、Mac は Intel チップを使用しており、最新のプロセッサは 64 ビットです。

于 2009-08-11T11:30:57.380 に答える