機械語単語

キカイゴ
  • 4
  • 0pt
掲示板へ

機械語とはマシン語とも呼ばれ、計算機が処理を行う時に読み取る、実行内容が記述されたデータ列の事である。命セットアーキテクチャ(ISA: instruction set architecture)と呼ばれることもある。

概要

機械語は、その名の通り機械である計算機のために書かれた0と1のビットからなるデータ列である。このため、機械語を見てどのような動作をするのかを人間が理解する事は非常に難しい。また、同じ処理であってもどの機械CPU)で実行するかによって機械語の内容は変わってしまう。

文字を使って命レジスタを表現する事で、機械語をもう少し分かりやすく表記したものがアセンブリ言語である。アセンブリ言語で書かれたコードアセンブラによって機械語に変換する事ができる。機械語とアセンブリ言語は低級言、CやJava等のそれ以外のプログラミング言語は高級言と呼ばれる。

機械語はバイナリエディタなどによって読み書きする事ができる。その際には1と0の二進数ではなく、記述を短くできる十六進数が使われることも多い。

プログラムや入出パンチカードで行われていた時代には機械語を読み書きできる事が計算機を扱うエンジニアにとって普通であった。しかし、アセンブラコンパイラの普及によりそういったスキルは必須ではなくなり、むしろマニアックであるとみなされる領域となっている。

機械語の種類

代表的な設計

CISC(Complex Instruction Set Computer)

便利そうな機はどんどん載せようぜ、という方向性のCPUの総称。元々CISCという思想があったのではなく、RISCができた頃に「昔のCPUってゴチゴチャでだっせーよな」「これからはRISCだよな」と旧来設計と差別化したものなので、「Complex(複雑な)」という当て付けみたいな名前が付いている。RISCが流行らなくなってからはやや回帰傾向。というか、すでに中身はどっちも大差ない。

x86CISCの代表だが、同時にCISCの中でも特に酷い代物なのでアレが全てと思ってはいけない。

RISC(Reduced Instruction Set Computer)

は絞り込んでシンプルな方がいいんだよ!というエンジン義みたいな設計。割りと皆好き勝手に定義している感もあるが、レジスタ多数、load/storeアーキテクチャ、原則固定長命という辺りは大体共通か。

RISCの権化のようなMIPSに至っては掛け算すら定義していないような体系(シフト足し算実装できるから)であり、コードの密度が低くなりがちなのが難点。

90年代まではパイライン特性の良さもあって一世をしたが、色々必要な機を足していったらCISCと大差なくなったので今では割とどうでも良くなっている。

VLIW(Very Long Instruction Word)

実行時にOut-of-Order解析とかないわ〜、そんなんコンパイラ仕事だわ〜ということでややこしい機を取っ払い、代わりに並列実行の口だけ用意したアーキテクチャ。一度に色々するので「命がすっごい長いよ!」という名前がついた。ポテンシャルは悪くないが機が大変なのが難点。あとプログラムの並列性が低いと性がまるで出ない。

古めのPCヲタならTransmetaの名前を聞いたことがあるかもしれない。Intelの(流行らなかった方の)64bitアーキテクチャもVLIW系。実はGPUが内部的にVLIWだったりする事も多く、PS4なんかそれ。マイナーなようで意外とメジャーな存在。

主な機械語

な機械語の種類には以下のようなものがある。実際に使用したCPUについてはCPUの記事を参照のこと。

CISC

RISC

関連動画

 

関連商品

   

関連項目

【スポンサーリンク】

  • 4
  • 0pt
スマホ版URL:
https://dic.nicovideo.jp/t/a/%E6%A9%9F%E6%A2%B0%E8%AA%9E

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

機械語

6 ななしのよっしん
2015/04/16(木) 21:11:46 ID: k00VUhBxfp
>>3
文字自体数値化できる以上、頭がおかしい人(ほめ言葉)ならできるね
それを会話で解読できる人はまず居ないだろうけど

解読なら・・・ね
16進数を通常言として教育すれば不可能じゃないとは思う
7 ななしのよっしん
2015/12/10(木) 22:46:59 ID: GZk7oauh7t
表がないと喋れない人
8 ななしのよっしん
2016/02/28(日) 00:16:57 ID: kHdT6w3c6X
「f0 0f c7 c8」
最近のx86「なんでやねん! #UD」
Pentium「…」
「冗談だって、な?ほら、EDX:EAX と EAX較しろって意味わかんないだろ?しかも LOCK プレフィクスまでつけて、なんつって」
Pentium「…」
(なんか言えよ…)

プログラミング言語との対機械語って呼ばれるんだろうけど、言じゃないから違和感があるよな
ちなみに自分の持ってるPC-9821CPUは割り算の計算間違いはしないけどこの冗談は理解できないようだ
9 ななしのよっしん
2017/01/06(金) 04:00:04 ID: QVmkNNLMJr
>>5
クロック単位タイミングを正確に取りたい場合はアセンブリ使うほうが素直だと思う。
組み込みってだけならラズベリーパイZeroみたいなのでフルLinuxすら気で載せられるけど、プログラマブルなコントローラとしてはそういう方向での高速化・高機化はあんま役に立たん気がするわ。
>>8
単一命に何の構造も含まないBrainfuckみたいなのすら言と呼ばれるんだぞ?
マクロとか含まないアセンブリ言語が言なら機械語も言で良いと思うが…
CISCのだとプレフィックスだのオペランド定の書式だので「構造」も持ってるし。
10 ななしのよっしん
2017/03/05(日) 02:00:40 ID: tMSsKynqim
というか、機械から見れば一つ一つの数字が意味に対応してるんで明らかに言です。
11 ななしのよっしん
2017/12/06(水) 11:10:03 ID: ySCbzQC05d
二進数だったら二通りの発音パターンがあればいいわけだから音の高低やら発音法やらで表現可だぞ

たとえば「うー」と「あー」しか喋らない男がいたとして
男「ああうう会ううあうあうああああうあううううあうあうあうあ……」

……ごめん、なんか自分で書いててさすがにキチガイじみてるわこれ
12 ななしのよっしん
2018/01/06(土) 20:00:34 ID: U9CAVS24f6
セキュリティの分野だと低レイヤのを突いて攻撃仕掛けるので、教養としての機械語の重要性が一時期より高まってきた感
……それにしたって今回のmeltdown and spectreとか、情報で飯食ってる人間でもちゃんと理解できる一握りしかいないんじゃなかろうか
13 ななしのよっしん
2018/01/20(土) 01:28:41 ID: tMSsKynqim
meltdownとかは投機実行アーキテクチャの問題だから機械語はあんま関係ない気がするなぁ。
あと理解してるやつがいるかどうかというより、OSが対処すべき話だから大半の人間には関係がない。気にしなきゃいけないのはパッチ当てた後にパフォーマンスに影がでるかどうかって話なので。
14 ななしのよっしん
2018/04/01(日) 11:35:29 ID: mRjGNDIuie
気にしなきゃいけないのは自分の使ってるサービス
きちんとパッチ当てて情報を盗まれないようにしてくれてるかどうかさ orz
15 ななしのよっしん
2018/07/29(日) 20:50:03 ID: YYSEVQWxn9
いくらユーザーリテラシーがどうこう言ったってベンダーが対策取らにゃ

PowerPCPowerPCARMv8
PowerPCAMDAPU
PowerPCAMDAPU