質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
アセンブリ言語

アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

3回答

1364閲覧

アセンブリ言語のニーモニックの公式リファンレスはどこを参照すればいいのか。

Kchan_01

総合スコア110

アセンブリ言語

アセンブリ言語とは、機械語を人間にわかりやすい形で記述した低水準言語です。

参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

コンパイラ

コンパイラは、プログラミング言語で記述したソースコードを、コンピュータの実行形式であるオブジェクトコードに変換するプログラムです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

1グッド

0クリップ

投稿2021/04/02 09:20

編集2021/04/02 10:23

アセンブリ言語を学び始めた初心者です。

確かな参照先が知りたい

アセンブリ言語のリファンレスや、公式ドキュメントはどこを参照するのが正しいのでしょうか。

特にニーモニックを調べるときに、まとまっている公式リファンレスのようなものはないのでしょうか。
調べても断片的な情報が出てくるばかりで、どこを参照すればいいのか、わかりません。

manのように使っているシステム内にあるのでしょうか。

アセンブルするときは以下のコマンドを使っています。

$ nasm -f macho64 test.s

環境

$ uname -a Darwin user-pc.local 20.3.0 Darwin Kernel Version 20.3.0: Thu Jan 21 00:07:06 PST 2021; root:xnu-7195.81.3~1/RELEASE_X86_64 x86_64 $ sw_vers ProductName: macOS ProductVersion: 11.2.3 BuildVersion: 20D91 $ nasm -v NASM version 2.15.05 compiled on Aug 29 2020

追記 2021/04/02 19:17

NASM - The Netwide Assembler

教えていただいた、nasmのリファンレスを見ても、

例えば、ニーモニックのmovの意味を調べたい。と思ったときに、記載しているところにたどり着けません。

nginxnのディレクテブの一覧のように
Alphabetical index of directives
movの意味を調べたいと思ったときに、載っている部分は無いのでしょうか。

もしくは、nasmのリファンレスから、うまく調べる方法があれば教えていただきたいです。

yohhoy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/04/03 02:15

あ、回答を投稿してからこちらに気が付きました。インテルのマニュアルに関しては、pepperleafさんが先にご案内されていましたね。失礼しました。
guest

回答3

0

アセンブラ/アセンブリ言語ってなにするの、と考えると
(1) CPUに機械語(バイナリ)レベルの命令を与えると、レジスタがどうとかフラグがどうとかいう動作をします。
(2) その機械語命令に対応したニーモニックを決めます
(3) 疑似命令とかディレクティブとかを使います
というレイヤーがあるでしょう。

(1) は「アセンブラ」の動作の範囲外ですね。CPUの動作そのものなので、CPUのメーカーが決めます。x86であればインテルですね。AMDは互換を謳う以上、インテルと同様のものになります。この部分の「公式」はあきらかにCPUの仕様書でしょう。

(2) ニーモニックは、(1)の説明上CPUメーカーがなにかニーモニック表記を決めていて、多くはそれを採用するでしょう。でも、歴史的に言えば8bitCPUの8080とその拡張版Z80において、それぞれのCPUメーカーが同じ機械語に異なったニーモニックを割り当てた、なんてことはあります(MOVとLD、JMPとJPとか)。また、Z80用に全く異なったニーモニックを作った例もあります(MOV A,BをB=Aと表記するとか...某SonyのSMC-777についてきたアセンブラを思いながら)。
ニーモニックの「公式」はそのアセンブラの開発元が決める話になります。

(3) これはもうアセンブラ開発元の好き勝手ですね。「公式」はアセンブラの開発元が決めます。

そのNASMのドキュメントで言えば、(2)と(3)の部分について説明されていて、"MOVってなに?"の部分についてはAppendix B: Instruction Listに、インテルの表記に則って列挙するに留めています。その中身、"MOVってなに?"はインテルのCPUのマニュアル(AMDでもいいですけれど)を御覧ください、ということでしょう。MOVがどう動くかはアセンブラの責任範囲ではないので。その部分もpepperleafさんから示されていますね。

nginxの例で言うなら、GETとかPOSTとかのHTTPプロトコルの動作に関する部分はRFCを見よ、というような感じでしょうか。

投稿2021/04/02 23:14

編集2021/04/02 23:18
thkana

総合スコア7703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

アセンブラのニーモニックや記法は方言の様な面があります。また開発元(販売元)によって様々な形態で配布されているため、一概には公式リファンレスはどことかは言えません。

NASMがそのいい事例で、開発コミュニティがボランティア的な活動で開発?メンテナンス?されているためか、ご指摘の通り IntelARM の様な特定企業による体系化した公式?マニュアルが用意出来ていない様子です。

この様な場合は、自力で探すしかありません。しかし最近のGoogle検索エンジンは極度なローカライズにより、有用な英語の情報がフィルタリングされるため、インターネットに存在する必要な情報には容易にアクセスし難いのが現状です。

例えば

nasm mnemonic mov

とデフォルトのGoogle窓に入力すると日本語の情報だけが拾われるため、目的のページに到達できません。

これをGoogleの検索オプションで 英語のページだけ指定 して検索すると全く違う検索結果が得られます。例えば次の様なページを拾う事ができます。あるいは Bing で検索しても、日本語Googleより、はるかにまともな結果が得られます。

https://www.cs.uaf.edu/2005/fall/cs301/support/x86/nasm.html

http://www.posix.nl/linuxassembly/nasmdochtml/nasmdoca.html

https://cs.fit.edu/~mmahoney/cse3101/nasmdocb.html

投稿2021/04/02 12:20

ahidaka

総合スコア391

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

Intel x86/x64命令セットに関して言えば、例えば試しに次のキーワード「Intel x86 instruction specification sheet」でググってみるとIntel社提供のリファレンスマニュアルに辿り着きます。

Intel® 64 and IA-32 Architectures Software Developer’s Manual - Intel

これらに関しては日本語版もあるようです。軽く、「Intel x86 命令セット」でググったものです。
IA-32 インテル® アーキテクチャ ソフトウェア・デベロッパーズ・マニュアル

若干古いものですし、分冊になっているのでご注意ください。どうも、一覧になってリンクを辿れるような元ページは見当たりませんでした。いずれも膨大な情報ですが、githubにてそれら含む情報を提供してくださっている方のページがありました。大変貴重ですね。感謝をしつつ、ご案内させていただきます。

インテル関連ドキュメント・リンク集 - tenpoku1000氏 on github

つたない英文ながら「Where can I get Intel x86 instruction set specsheet」などとググってみると、やはりそれらしいページが多数ヒットします。「x86、x64、IA-32、mnemonics、Intel」など、さまざまに組み合わせてググってみると良いかと思います。

投稿2021/04/03 02:07

dodox86

総合スコア9256

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問