アプリ版:「スタンプのみでお礼する」機能のリリースについて

同じような質問をしてしまっているので今回で最後にしたいと思います。
今まで解答して頂いた解答者の方々、どうもありがとうございました。
⓵あるCPU(とGPU)のデータシートのアセンブリ命令のセットからopencvのような画像処理を行うソフト、プログラムなどは作れますか?
⓶ ⓵が出来ないとしたら、データシートはなんのためにあるのですか?
過去の解答ではosを走らせるために CPUのデータシートを読むと知りました。それ以外で使う理由はあるのでしょうか?
⓷データシートはアセンブリプログラムを組むためにあるのでしょうか?
私なりにIntelの CPUのデータシートを読んだ際にアセンブリ命令は記載されていませんでした。すなわち、データシートを読んでもアセンブリプログラムは組めないとわかりましたが、実際のところはどうなのでしょうか?
⓸私はopencvのような画像処理プログラムをデータシートを読んで、画像処理のアルゴリズムを理解した上でデータシートに書いてあるアセンブリ命令を駆使してアセンブリの画像処理プログラムを作りたいと考えています。
その考えが無謀で不可能なことなのかを理由も含めて説明して頂けると大変有り難いです。それがわかれば、無謀な概念に縛られずC言語の勉強に勤しめます。
どうかよろしくお願いします。

A 回答 (4件)

逆説的ですが、そういう質問を発しているという時点で無謀であるとの結論になります。

割と最初の頃からずっと言い続けていることですけど、もっとコンピュータの基礎的な仕組みを理解して、それから順番に攻めていかないとダメです。

その目標は、今の一点突破のようなやり方では絶対に達成できないと言っておきましょう。コンピュータの仕組みを隅々まで熟知している必要はないにしても、ざっくりでいいから理解していなければ画像処理どころか、アセンブラでコードを書くこともままなりません。アセンブラじゃない高級言語ではその必要性はかなり薄れますが、それでもどうやって動いてるのか全くわからないまま動かすものは書けないですよ。それを言語の勉強と並行する感じですね。

さすがにワンボードマイコンまで時間を巻き戻せとは言いませんが、せめて今のWindows機の原型となったPC/ATのアーキテクチャは理解しておくべきです。これなら今の機体でもFreeDOSを入れることで使えるようになるし、DOSならばユーザーのやることにいちいち口出ししてこないから、どんなに行儀の悪いコードを書いても何も言ってきません。その代わりロクに手助けしてくれないし、ふつ~に暴走して戻ってこなくなり、リセット押すしかなくなる…なんてことにすぐになりますけど。
    • good
    • 5

> あるCPU(とGPU)のデータシートのアセンブリ命令のセット


GPUのアセンブリ命令(という言い方もおかしいがそれは置いておいて)は、ふつう公開されていません。
> からopencvのような画像処理を行うソフト、プログラムなどは作れますか?
アセンブリ命令だけでという意味でしたら、できるでしょうが普通はやりません。
普通は高級言語で大部分を書きます。誰かがデータシートを見て作った高級言語のコンパイラを使って。
> 私なりにIntelの CPUのデータシートを読んだ際にアセンブリ命令は記載されていませんでした。
アセンブリ命令は別の資料にまとまっています。探してください。
多分その資料はCPUのチップに電源メモリ入出力装置などを配線してPCを設計したい時に見るものです。
> その考えが無謀で不可能なことなのか
高級言語を全く使わずにそのような複雑なプログラムを組もうというのは、不可能とは言いませんが、少なくともたいへん効率の悪いやり方だとは思います。無謀と言えば無謀ですね。
普通は、アセンブラはプログラムの中のごく一部の重要な部分だけを高速化するのに使います。(それですら最近はイントリンジックで済んだりして必要性が薄れています)

ただ別にアセンブラを使いたいということ自体は止めはしません。やりたいようにやるのが一番楽しいです。
    • good
    • 0

>⓵あるCPU(とGPU)のデータシートのアセンブリ命令のセットからopencvのような画像処理を行うソフト、プログラムなどは作れますか?



できません。
計算機はCPUだけで構成されているわけではないからです。
周辺機器の操作ができなければ、たとえば画像データの取り込みすらできません。

>⓶ ⓵が出来ないとしたら、データシートはなんのためにあるのですか?
>過去の解答ではosを走らせるために CPUのデータシートを読むと知りました。それ以外で使う理由はあるのでしょうか?

CPUの使い方としての役割を果たします。
しかし、⓵への回答の通り、ディスクやカメラなどの周辺機器の操作方法も知る必要があります。

>⓷データシートはアセンブリプログラムを組むためにあるのでしょうか?
>私なりにIntelの CPUのデータシートを読んだ際にアセンブリ命令は記載されていませんでした。すなわち、データシートを読んでもアセンブリプログラムは組めないとわかりましたが、実際のところはどうなのでしょうか?

たとえばIntelでは、この回答時点では下記のURLでインストラクションセットなどを公開していますよ。
https://software.intel.com/en-us/articles/intel- …
ざっと見た感じ、これだけ情報があればアセンブリ言語でプログラムを書くことはできると思います。
命令やレジスタはかなり増えているものの、30年前に見た8086のインストラクションセットの書式とあまり変わっていないという印象です。

>⓸私はopencvのような画像処理プログラムをデータシートを読んで、画像処理のアルゴリズムを理解した上でデータシートに書いてあるアセンブリ命令を駆使してアセンブリの画像処理プログラムを作りたいと考えています。
>その考えが無謀で不可能なことなのかを理由も含めて説明して頂けると大変有り難いです。それがわかれば、無謀な概念に縛られずC言語の勉強に勤しめます。

たとえば、opencvを使ったプログラム(サンプルコードとかでも構いません)をコンパイルし、出来上がった実行ファイルのサイズを見てみてください。また、プログラムがリンクしているライブラリのサイズもすべて足し合わせてください。アセンブリ言語を多少でも触ったことがあればわかると思いますが、アセンブリ言語のソースコードは、実行ファイルのサイズよりも大きいです(ソースコード1行の命令が、32ビット=半角4文字の機械語命令に対応しています)。だいたい、1MBが新聞の朝刊1日分と言われていますが、それと比べてどれだけの量のソースコードを書かなくてはならないか想像がつくと思います。
これを「頑張ればできる」と考えるか「無謀だ」と考えるかは、人それぞれですね。
    • good
    • 0
この回答へのお礼

CPUのデータシートからopencvのような画像処理ソフトが作れない事がわかってよかったです。
本当にどうもありがとうございます。

お礼日時:2018/04/24 19:08

openCVはCPUやGPUの仕様が解っただけじゃ全然作れません。



CPUやGPUはコンピューターの一部品でしかないということに
思い至らないのでしょうか?
ICのデータシートに書かれているのは、コンピュータやグラボの仕様の
ほんの一部でしか有りません。

またopencvはosを含んでないし、計算処理や画像処理の多くを他のライブラリに
依存しています。そうしたもの全ての使ぃ方を把握しないと作れません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ちなみに、仮に全て把握できたとして、たった一人で作るのは無理ですよね?

お礼日時:2018/04/24 20:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!