-1

アセンブラーを学びたいのですが、マルチプラットフォームコードを本当に大切にしています。これまでに見たアセンブラー言語とチュートリアルのほとんどは、1つの特定のアセンブラーサブ言語(MASMまたはTASMまたはYASM)と1つの特定のOS(MacまたはWindowsまたはLinux)。

Mac OS X、Windows、およびLinuxで動作するアセンブラ言語とチュートリアルはありますか?GCCが認識するX86アセンブラ形式がいくつかあると思いますが、GCCはマルチプラットフォームコンパイラです。この言語は何と呼ばれ、チュートリアルはありますか?

r/programmingにも投稿されています。

4

2 に答える 2

2

拡張された退屈な長い答え

各アセンブラには独自の落とし穴があると思います。

カスタム ペット プロジェクト プログラミング言語 (「C」に変換され、バイナリ コードを生成しない) を開始し、完全なコンパイラを作成したいので、質問と同じトピックについて簡単な調査を行いました。

たとえば、MASM と NASM はどちらも x86 プロセッサをターゲットにしていますが、アセンブラの構文は異なります。

また、(どのプロセッサではなく) どのオペレーティング システムが動作しているかを検討することもできます。

一部のアセンブラーの本は非常に電子的な観点から書かれており、アセンブラーの習得が不必要に難しくなっています。

前提条件

アセンブラに戻る前に、いくつかのトピックを調べたいと思うかもしれません。このトピックのほとんどは既にご存知かもしれませんが、もう一度お読みになることをお勧めします。

(1) (Re) 電卓を使用せずに、10 進数を 16 進数、8 進数、および 2 進数に手動で変更する方法、さまざまな数値表記について学びます。

(2) (再) 文字がどのように格納されているか、ASCI & EBDIC & MAC について学んでください。印刷された ASCII 文字チャートが必要になる場合があります。

(3)(再)論理演算とビット演算、論理演算、ビット演算、「AND」「OR」「XOR」について学ぶ

(4) (再) 記憶域のサイズについて学びます。ギガ、メガ、バイト、ワード、QWord、またはロングワード。

(5) (再) 符号付き整数と符号なし整数の違いを学びなさい。また、さまざまな整数をメモリ ストレージに格納する方法。

クイック ショート アンサー

さらに 3 つの使用されているアーキテクチャと OS の基本を学ぶ

(1) x86 と Windows の NASM の例など、単一の CPU のすべてではなく基本を学びます。

(2) 他のアーキテクチャー (x86 と Linux の NASM の例) を続行します。

(3) マッキントッシュなどの他のアーキテクチャを続行します。

(4) 最初の 2 つのターゲットで、単純だが同等のタスクを実行する方法を学びます。

(5) 3 番目のターゲットで同じことを行うことを学びます。

(6) OS 呼び出しを確認します。任意の CPU で、2 つの数値を加算して結果をレジスタに格納することは難しくありません。ただし、コンソール ウィンドウまたは GUI ウィンドウにメッセージを表示するシステム コールの呼び出しは変更される場合があります。

(7) ほとんどのアセンブラは「マクロ アセンブラ」と呼ばれ、1 行のコードを使用して複数行の opf コードに変換できます。複数のアセンブラで同じものを読み取り、各 CPU で異なる変換を行う単一のマクロに使用します。

(8) アセンブラのクラスにキテ (ツナ缶) を渡します。

乾杯。

于 2012-09-19T18:41:30.873 に答える
2

あなたのニーズについては、次のように参照してください

ナズム (http://www.nasm.us)

そして、nasm の良い「出発点」

  1. http://leto.net/writing/nasm.php
  2. http://docs.cs.up.ac.za/programming/asm/derick_tut
于 2012-09-19T18:05:40.247 に答える