• ベストアンサー

本気でマシン語を覚えたい

アセンブラで、LEAの逆は何でしょうか? LEA reg32, mem あと難しい話ですが、今時のパソコン(Althon64X2やCore2DuoやXeon)など複数コアなどの時代で、アセンブラで覚えるべき内容は386や486と比べてどう違うのでしょうか? 機械語のパイプラインやキャッシュなどの概念も知りたいので、詳しい書籍も探しています。 あと命令セット(+その命令のスピード?)など詳しく書かれている本も探しています。 簡単なこともわかっていないのですが、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

アセンブラ入門するならx86は大変な相手ですが大丈夫ですか?PICとかH8と簡単なマイコンから始めたほうが楽ですよ。それと他のプログラミング言語は経験済みでしょうか? >アセンブラで、LEAの逆は何でしょうか? >LEA reg32, mem LEAはアドレス計算してロードする命令ですが、逆ってどういう意味でしょう?アドレスをどうしたいのですか? >あと難しい話ですが、今時のパソコン(Althon64X2やCore2DuoやXeon)など複数コアなどの時代で、アセンブラで覚えるべき内容は386や486と比べてどう違うのでしょうか? 単純に高速なプログラムをアセンブラ書けるって(これだけでも相当優秀ですが)知識では太刀打ちできません。OSの豊富な知識が必要になります。WindowsやLinuxはマルチコアの制御を特権レベル(意味がわかります?)でOSが掌握しています。 CPUがOSと関係しているかイメージできないとマルチコアのプログラミングは出来ません。CPUの持つ仮想記憶、特権レベル、マルチコア用の機能を理解する必要があります。 ただし、それを使う側にとって簡単にするOPENMPなどの技術もあります。でも、あえてアセンブラでやりたいとの事ですので難しいことをしたいと言う前提で書かせてもらいました。 >機械語のパイプラインやキャッシュなどの概念も知りたいので、詳しい書籍も探しています。 どの本が良いかは、本屋で自分で読んでみてください。 とりあえず、まずアセンブラ入門の本。 http://www.cqpub.co.jp/hanbai/books/33/33421.htm 有名なのはこの本「独習アセンブラ」 http://www.amazon.co.jp/%E7%8B%AC%E7%BF%92%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%A9-%E6%97%A5%E5%90%91-%E4%BF%8A%E4%BA%8C/dp/479810955X/ref=pd_sbs_b_1/250-0399562-6461017 名著「はじめて読む8086―16ビット・コンピュータをやさしく語る」 http://www.amazon.co.jp/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E8%AA%AD%E3%82%808086%E2%80%9516%E3%83%93%E3%83%83%E3%83%88%E3%83%BB%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%82%92%E3%82%84%E3%81%95%E3%81%97%E3%81%8F%E8%AA%9E%E3%82%8B-%E3%82%A2%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%96%E3%83%83%E3%82%AF%E3%82%B9-%E8%92%B2%E5%9C%B0-%E8%BC%9D%E5%B0%9A/dp/4871482456/ref=pd_sbs_b_3/250-0399562-6461017?ie=UTF8&qid=1192803772&sr=1-7 名著「はじめて読む486―32ビットコンピュータをやさしく語る」 http://www.amazon.co.jp/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E8%AA%AD%E3%82%80486%E2%80%9532%E3%83%93%E3%83%83%E3%83%88%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%82%92%E3%82%84%E3%81%95%E3%81%97%E3%81%8F%E8%AA%9E%E3%82%8B-%E8%92%B2%E5%9C%B0-%E8%BC%9D%E5%B0%9A/dp/4756102131/ref=pd_sim_b_3/250-0399562-6461017?ie=UTF8&qid=1192803772&sr=1-9 CPUのアーキテクチャならこの本かな「マイクロプロセッサ・アーキテクチャ入門―RISCプロセッサの基礎から最新プロセッサのしくみまで」 http://www.amazon.co.jp/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5%E3%83%BB%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E5%85%A5%E9%96%80%E2%80%95RISC%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5%E3%81%AE%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E6%9C%80%E6%96%B0%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5%E3%81%AE%E3%81%97%E3%81%8F%E3%81%BF%E3%81%BE%E3%81%A7-TECHI-%E4%B8%AD%E6%A3%AE-%E7%AB%A0/dp/4789833313/ref=sr_1_8/250-0399562-6461017?ie=UTF8&s=books&qid=1192803772&sr=1-8 で、パイプラインとかの難しい本も紹介しておきます。 「コンピュータの構成と設計~ハードウエアとソフトウエアのインタフェース 第3版 (上) 」 http://www.amazon.co.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E6%A7%8B%E6%88%90%E3%81%A8%E8%A8%AD%E8%A8%88~%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A8%E3%82%A2%E3%81%A8%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A8%E3%82%A2%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9-%E7%AC%AC3%E7%89%88-%E4%B8%8A-%E3%83%87%E3%82%A4%E3%83%93%E3%83%83%E3%83%89%E3%83%BB-%E3%83%91%E3%82%BF%E3%83%BC%E3%82%BD%E3%83%B3/dp/482228266X/ref=pd_sxp_grid_pt_2_1/250-0399562-6461017 「コンピュータの構成と設計~ハードウエアとソフトウエアのインタフェース 第3版 (下)」 http://www.amazon.co.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E6%A7%8B%E6%88%90%E3%81%A8%E8%A8%AD%E8%A8%88~%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A8%E3%82%A2%E3%81%A8%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A8%E3%82%A2%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9-%E7%AC%AC3%E7%89%88-%E4%B8%8B-%E3%83%87%E3%82%A4%E3%83%93%E3%83%83%E3%83%89%E3%83%BB-%E3%83%91%E3%82%BF%E3%83%BC%E3%82%BD%E3%83%B3/dp/4822282678/ref=pd_sim_b_1/250-0399562-6461017 CPUの最新技術のナナメ読みがしたい場合は、この人の連載がお勧め http://pc.watch.impress.co.jp/docs/article/backno/kaigai.htm >あと命令セット(+その命令のスピード?)など詳しく書かれている本も探しています。 命令のサイクル(ステート)数は、CPUのコア毎に違いますのでCPU開発メーカーの資料を読みましょう! ただし、パイプラインで処理されるので必要サイクル数と実際の動作サイクルは食い違います。その上、パイプラインに入る命令の並び方次第でストール等が発生する場合もあり直感的には処理時間は見積もれません。RISCチップならもう少し簡単ですが。 インテルの日本語の情報が入手出来るサイトです。 http://www.intel.co.jp/jp/download/index.htm 「IA-32 アーキテクチャー」ってところからほしい資料を探しましょう。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.4

>LEAはレジスタに変数の値を入れるですが、レジスタの値をグローバル変数に入れたいです。 mov命令でメモリに値を書き込みます。 下記のサイトを見てみてください。 http://ray.sakura.ne.jp/asm/index.html >特権レベルも絡むのですか? アセンブラで直接マルチコアを制御しようとすれば絡みます。 OS任せにすれば絡みませんよ。 >最初はマシン語あきらめていましたが、私の下手糞なマシン語でもVCコンパイラより2倍早くなったので、これはいけると思ったからです。 夢でも見ているのでしょうか? >セレロン(メモリ1G)では効果が見れなかったのですが、アスロン64(メモリ2G)で効果ありました。 言語が使わないマシン語を駆使した場合は、そのぐらい速度差が出る可能性が無いことは無いですが、現在のコンパイラの最適化レベルはかなり優秀です。 VCのリリースコンパイルしたプログラムとの速度比較はされましたか?デバックのプログラムはむちゃくちゃ遅いですよ。 遅いマシンで差が無く、アスロンで高速化したのも不思議です。キャッシュに助けられた気がしますが。

全文を見る
すると、全ての回答が全文表示されます。
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

追加質問。 >マシン語を覚えたい の目的を聞かせてもらえますか? (1)コンピュータ(CPU)の本質を理解したい。 (2)C言語などの処理速度に不満で、マシン語なら高速なプログラムを書けると聞いたので挑戦したい。 (3)OSを自作したいので、まず基礎知識を勉強している。 (4)なんとなくカッコ良いから。 (5)その他。

saki4
質問者

補足

LEAはレジスタに変数の値を入れるですが、レジスタの値をグローバル変数に入れたいです。 特権レベルも絡むのですか? どれも当てはまりますが、特には(2)です。 最初はマシン語あきらめていましたが、私の下手糞なマシン語でもVCコンパイラより2倍早くなったので、これはいけると思ったからです。 夢でも見ているのでしょうか? セレロン(メモリ1G)では効果が見れなかったのですが、アスロン64(メモリ2G)で効果ありました。

全文を見る
すると、全ての回答が全文表示されます。
noname#65902
noname#65902
回答No.1

> マシン語を覚えたい マシン語というと別名「マシンコード」または単に「コード」と呼ばれる 16進数のことを指しますが、本気でこれを覚えたいということでしょうか? もしくは > LEA reg32, mem という「アセンブリ言語」(通称「アセンブラ」...厳密には「アセンブラ」は 「アセンブリ言語」から「マシンコード」を生成するツールのこと) を覚えたいのでしょうか? 少し前の32bit CPU のマシンコードには少し触れたことはあるものの 現在の64bit CPU のそれは知りませんが、 前者でしたら、8bit CPU の時代ならまだしも、64bit 可変長命令のCPUのそれを 覚えるのはかなり大変だと思います、覚えたい理由、努力対メリットに よってはあまり意味ないかも。 書籍を探されてるならそのうち見つかるでしょうけれど、 ずばり本屋さんで片っ端から覗いてみるといいです。 文章がヘタクソな本もありますからね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Mac Proを買い替えたい

    Mac Proを買い替えたいと思います. 数値計算に使うのでできる限り速くなればうれしいのですが, 2.4GHz Quad-Core Intel Xeon"Westmere"2基(8コア) 2.66GHz 6Core Intel Xeon"Westmere"2基(12コア) 2.93GHz 6Core Intel Xeon"Westmere"2基(12コア) でなやんでいます.もちろん予算が許せば最上位モデルにするのですが... また,それぞれの場合メモリはどれくらいにするのがよいのでしょうか? よろしくお願いいたします. いままで使っていたものは以下のような構成です. ------------------------------------------------------------------ 機種名: Mac Pro 機種 ID: MacPro3,1 プロセッサ名: Quad-Core Intel Xeon プロセッサ速度: 2.8 GHz プロセッサ数: 2 合計コア数: 8 二次キャッシュ(プロセッサ単位): 12 MB メモリ: 6 GB バス速度: 1.6 GHz

    • 締切済み
    • Mac
  • サーバ向けCPUとデスクトップ向けCPUの違い

    サーバ向けCPU"Xeon(4コア)"と デスクトップ向けCPU"Core2Quad"の違いって何でしょうか? キャッシュ、動作周波数、フロントサイド・バス等が 同じである場合についてです。

  • CPUの複数搭載の違い

    こんばんは ドスパラにパソコンを見ていると Intel® Core™ 2 Duo E8500 (デュアルコア/3.16GHz/L2キャッシュ6MB)Intel® Core™ 2 Quad Q9450 (クアッドコア /2.66GHz /L2キャッシュ6MB×2) このようにコア二枚、四枚などが複数搭載のデスクトップパソコンが多く販売されておりますが、結局これらは何が違うのでしょうか? 買い替えるときに判断がつかないのでご教授ください。

  • CPUについて

    CPUで、CORE 2 DUOを買おうかなと思っていたのですが、私には少し高すぎます。そこで、他のCPUにしようと思っていたのですが、どれを選んだらいいのか迷ってしまいました。そこで質問なんですが、2次キャッシュの容量とクロック数とコアの数、どれを優先して買えば良いですか。

  • CPUの違いについて

    Intel Core 2 duo T8100(デュアルコア/2.1Ghz/L2キャッシュ3MB)とIntel® Celeron® 530(1.73GHz / L2キャッシュ1MB)の違いについて PCのど素人です。現在、PCが壊れて新しいPCを購入しようと思っているのですがCPUの違う2つのPCで迷っているのでサルでも分かるような例えで違いを教えていただきたいのですが・・・。 宜しくお願いします。

  • CPUについて最適なものは?

    宜しくおねがします。 私はアフィリやオークションをしていて、同時に複数のツールを動かしたり、複数ツールを動かしながらYOUTUBEを見たりとか、CDやDVDを作成しながらツールを動かしたりメールチェックしたりADOBEのソフトを使ったりすると必ず動作が遅くなりタスクマネージャーを見ると結構な割合で100%近くをうろうろしている状態です。 XPでCPUはセレロン、HDDは40G、メモリ1Gです。 そこでパソコンを買いなおしたいのですが、このような使い方をする場合どのようなスペックを選べばいいのでしょうか? マウスコンピューターでXPには決めているのですが、一番分からないのはCPUです。 ゲームなどはしないので境界線が分からないのです。 上記のような作業を作業をストレスなくしようとすれば インテル® Pentium® Dual-Coreプロセッサー インテル® Core™ 2 Duoプロセッサー  インテル® Core™ 2 Quad プロセッサー これのどれを選べばいいのでしょうか? インテル(R) Core(TM) 2 Duo プロセッサー E7300 (3MB L2キャッシュ/2.66GHz/1066MHz FSB) インテル(R) Core(TM) 2 Duo プロセッサー E8400 (6MB L2キャッシュ/3GHz/1333MHz FSB) インテル(R) Core(TM) 2 Duo プロセッサー E8500 (6MB L2キャッシュ/3.16GHz/1333MHz FSB) とかなのですが、こういうのって使っていると分かるものなのでしょうか? 宜しくおねがします。 とにかくストレスなく出来て、なるべく安く抑えたいのです。 おねがします

  • CPUについて

    Photoshopなどのソフトを入れたくて 家にあるパソコンを 買い換えようと検討中です。 ソフトの必要システム構成に 「インテル&reg; Pentium&reg; 4、インテル Centrino&reg;、インテル Xeon&reg;、またはインテル Core™ Duo クラスのプロセッサを搭載したパーソナルコンピュータ 」 とあります。 できれば(スペースの関係で)、ノートPCを購入したいなと思い 調べているのですが、手ごろなノートパソコンは大体 Celeron 540 (1.86GHz) CeleronM 530 (1.73GHz) となってます。これは上記の必要システム構成には当てはまりませんか?? もう少し ランクが上がると Core2Duo T7250(2GHz) Core2Duo T7500(2.20GHz) となってます。 上記の 必要システム構成と同じ名前ではないけども、同じくらいの 能力があるもんでしょうか? それとも足りないのでしょうか?? はたまた photoshopなどのソフトをノートPCで使うこと自体に 無理があるのでしょうか? あまりPCに詳しくないので アドバイス よろしくお願いします<(_ _)>

  • CPUの性能比較

    インテルのCPU Core2DuoとCore2Quadとの比較ですが、コアが2つと4つの違いは明解ですが、品番により周波数・システムバス・キャッシュ の数値が違い、単純にCore2Quadのほうが良いとは言えないと思ってはいるのですが、何を基準に判断するのが1番良いのでしょうか? 詳しい方、事例等も合わせてお教え下さい。

  • AMDとINTELはどっちがいい?

    AMDとIntelのCPUは同じような環境、性能であればどちらもあまりかわりはありませんか?ちなみに下に挙げたAMDのCPUはインテルの2つと比較した場合、どれが一番性能がいいですか? AMD Athlon™64 X2 デュアルコアプロセッサ 6000+ (2x1MB L2キャッシュ/3GHz/Socket AM2) インテル&reg; Core™ 2 Duo プロセッサ E6850 (4MB L2キャッシュ/3GHz/1333MHz FSB) インテル&reg; Core™ 2 Duo プロセッサ E6550 (4MB L2キャッシュ/2.33GHz/1333MHz FSB)

  • Core2Duo・E8500の詳細情報ついて

    初心者です、詳しく教えて下さい。 先日Core2Duo・E8500搭載のPCを購入しシステム情報でCPUを確認したら以下のように表示されました。 【Intel Pentium III Xeon】となっていますがどういう事なのでしょうか。 どうぞ宜しくお願い致します。 Intel Pentium III Xeon プロセッサ クロック速度 3.2GHz L2キャッシュサイズ 6144 製造元 Intel Pentium III Xeon プロセッサ クロック速度 3.2GHz L2キャッシュサイズ 6144