4分SHAREツイートシェアはてブLINEPocket今井こんにちは!今井(@ima_maru)です。大学でアセンブリ言語を学んでいるので、アウトプットがてら、アセンブリ言語とはどんな言語かアセンブリ言語を学ぶメリット機械語やほかの言語との違いをできるだけわかりやすく書いていこうと思います。解説に移ります!タップできるもくじアセンブリ言語とは?アセンブリ言語を学ぶ利点・メリットとは?C言語/C++などのプログラミング言語を学ぶ方におすすめハードウェアについて深く勉強したい方におすすめゴリゴリに速度を出したい方におすすめ?アセンブリ言語は機械語やほかの言語とどう違うの?アセンブリ言語はプログラミング言語であるアセンブリ言語には高級な処理が用意されていないアセンブリ言語は機械語と一対一だが他は違うアセンブリ言語まとめアセンブリ言語とは?アセンブリ言語とは、コンピュータの理解できる「0」「1」のパターンで書かれた機械語をほぼ1対1で文字にしただけのものです。プログラムを組むために用いられる「プログラミング言語」のひとつです。アセンブリ言語は、機械語にとっても近い存在です。「0」「1」パターンがあったとします。00000000たぶんこれを見てなるほどなあって思う方は少ないでしょう。IIというアセンブリ言語に対応させましょう。2RETENDこのようになりました。すると、全体的にすっきりとして見やすくなったのではないでしょうか?0と1だったものが、なんか文字っぽいものになったニャ。「なんとなく勉強すればわかりそう」と思う方もいるかと思います。思うのは、文字が何らかの意味を持っていそうだからだと思います。これらの「LAD」や「SLL」などはニーモニックと呼ばれ、ちゃんとした意味をもとに命名されています。実際このような頭文字をとっています。RETurnの略(リターン)このようにちゃんと意味があり、案外覚えやすいです。機械語の「0」「1」パターンを覚えなくても済むので、助かりますね。(昔の方はこの01パターンを直接ポチポチしてたのだから本当に尊敬します。)そしてもっと重要なのは、「ほぼ機械語とアセンブリ言語が一対一で対応している」ということです。00000000ENDこのように対応付けされます。STARTやENDなどはアセンブリ言語特有のものなのですが、それ以外は機械語で直接表すことができます。何が言いたいかというと、Point機械語とアセンブリ言語には密接な(ほぼ一対一という)関係がある機械語を人間がわかりやすいように文字に置き換えたのがアセンブリ言語だということです。ちなみにアセンブリというのは、組み立てという意味の「assembly」という英語です。アセンブリ言語を学ぶ利点・メリットとは?アセンブリ言語はプログラミング言語の深い理解や、コンピュータの処理を理解するのに大いに役立ちます。普段プログラミング言語で何気なく書いている「掛け算」「割り算」の仕組み、メモリ領域のこと、計算速度の違いなど、アセンブリ言語を学ぶことで多くの基礎となる知識を学ぶことができます。学ぶのをオススメするのは以下のような方です。C言語/C++などのプログラミング言語を学ぶ方におすすめ一定以上の人気を誇る言語のなかで珍しく、C言語/C++はメモリ管理が必要になるプログラミング言語です。それゆえ、メモリの知識を学ぶことができるアセンブリ言語はとても相性がいいです。ほかにも、学べるところは多くあるように感じました。学べば、確実にプログラミングにおいての理解度が変わるはずです。ハードウェアについて深く勉強したい方におすすめアセンブリ言語はハードウェアに関しての知識がなくては使い物にならないといってもいいでしょう。CPUがどうなっているのか、メモリがどうなっているのか、これらを理解したうえでコーディングしていくことになるため、いやでもハードウェア側の知識がつくはずです。組み込みなどをしたい方に良いと思います。速度を出したい方におすすめ?これは実際に実行速度を出したいときに使われます。深い理解が必要になってきます。ここまでくると私は何も助言できません。極めたものだけにしか得られないものがあるのだろう、とだけは言っておきます。アセンブリ言語は機械語やほかの言語とどう違うの?アセンブリ言語はプログラミング言語であるこれは誤解が多いと思いますが、アセンブリ言語はプログラムを書く立派なプログラミング言語です。(もちろん機械語も)なので、アセンブリ言語とプログラミング言語を比較するのはナンセンスです。アセンブリ言語には高級な処理が用意されていない今の主流となっているプログラミング言語は、for文やif文などのプログラム制御文をはじめとした、いろいろな便利な処理が用意されています。逆にアセンブリ言語にはそれらは用意されていません。「自分で一から作れ」ということです。アセンブリ言語CASLIIでfor文のような繰り返しの処理を行おうとすれば、以下のようになります。リターンENDこれは、100から1を「10回」引くという繰り返しの処理になります。見てわかる(?)とおり、相当めんどくさいです。それに比べ、人気のプログラミング言語はどれもfor文やwhile文などの繰り返しの処理をサポートしています。GR190プログラミング言語Pythonと比較すると、こんなにも違いがあることに気づきます。今人気のプログラミング言語はすべて、高級言語といっても大丈夫でしょう。高水準言語とは?5分でわかりやすく解説!ほかにも変数を自分で作らなくてはいけないという点も面白いところです。アセンブリ言語は機械語と一対一だが他は違うアセンブリ言語は、機械語を一対一で文字や記号に変換したプログラミング言語です。ほかのコンパイラ言語やインタプリタ言語、スクリプト言語などといわれるプログラミング言語はどれも、一対一の変換ではありません。一対一ならば、先ほどのアセンブリ言語CASLIIのような長ーいプログラムを書くことになります。アセンブリ言語まとめ私は最初、アセンブリ言語と聞いて自分とは無縁のものであると感じていました。今の時代プログラミング言語が進化しているんだから、そんな機械語やアセンブリ言語などを使わなくてもいいと。コンピュータが動くのは、機械語の01パターンのおかげなんですよ。アセンブリ言語はエンジニアになるために非常に大切なことを学ばせてくれました。以上、「アセンブリ言語とは?機械語やほかの言語との違いは?」でした!最後まで読んでいただきありがとうございました。週1でブログ書いてます。