• ベストアンサー

大学の卒業研究で以下のようなプログラムを作成することになったのですが、情報が少なく困っています。

大学の卒業研究で以下のようなプログラムを作成することになったのですが、情報が少なく困っています。 「仮想マシンのアーキテクチャを定義、C言語でアセンブリ言語のプログラム をマシンコードに変換するプログラムを作成」 C言語については勉強済み。 アセンブラについては検索するとたくさん情報は得られるのですが、C言語でアセンブラを作るとなると話は別で。 どんな検索ワードで検索すればいいのか?などさっぱりです。 卒業研究なので、自分で考えるべきなのでしょうが・・・ どなたか、これに関連したサイト、実際にC言語で書かれたプログラム等をご存じでしたら、教えて頂けないでしょうか

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

  • ベストアンサー
  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.6

卒業研究なのですから、自力で,あとは指導教員の助けでやりなさい. 「情報が少ない」とはどういうコトでしょうか. C言語をもうわかっているのなら,こんな課題もうあとはちょいちょいとプログラムを書くだけでしょう. まず,インターネット検索をやめて,図書館に行きなさい. ヘネシー.パターソンのアーキテクチャ本とか,まずはCPUの命令体系を決めるための勉強をする. 次に,命令体系を決め,命令のニーモニックも決める.当然このとき,アセンブラが作りやすい体系を採用した方が得です.が余りにも貧弱なアーキテクチャだと恥ずかしい.指導教員と協議して適切な難易度レベルを選んでください. 次に,アセンブラの仕様を決める.おそらくは,リンケージエディタもなにもない,絶対番地アセンブラでいいと指導要員は思っているでしょう.マクロ機能も無くても許してもらえるでしょうね. で,アセンブラの文法を決め(これは、既存の適当なCPUのアセンブラの文法を借りてきてOK), アセンブラのソフトウェア構造を設計して, プログラミングすると. そこまで行くと,「前方ジャンプのアドレス解決は?」とかいろいろ疑問が出てくると思いますよ. まずは,適当なCPUで短いアセンブリ言語ソースを手動で機械語に直す(ハンドアセンブル)修行をするのがよいでしょう.それで,アセンブラというものはだいたいどういう処理をしているのかが理解できるでしょう. 最後に言っておきたいのは,これは卒論としてはかなり優しい課題だということ.難しすぎるのなんのと愚痴るのは「私はアホです」と言ってるのと等しいですよ. だいたい,30年前の技術レベルなら,立派な卒論といってもらえたテーマです.

miccheru
質問者

お礼

適切なご意見ありがとうございます。やはり、卒業研究なのでこの場で教えて貰おうとする考え方が間違っていました。これからは回答者様のアドバイス通り研究を行って行きたいと思います。

その他の回答 (5)

  • sgcarrot
  • ベストアンサー率68% (17/25)
回答No.5

CASLアセンブラとCOMETエミュレータでよければCで書かれたソースが 日本電子専門学校のページからダウンロードできます。 一応参考にはなるでしょう。 CASLとCOMETに関しては、ご存じなければ検索すればいくらでも出てきます。 でも、この課題は、アセンブラを作ることよりも、独自のアーキテクチャを 定義するというほうが、センスを問われる難しい内容だと思いますよ。 簡単なようで、奥が深い・・・ がんばってください。

参考URL:
http://kserv.jec.ac.jp/news/release_2006-01-22.html
  • snowize
  • ベストアンサー率27% (68/245)
回答No.4

というか、作業内容が「アセンブリを機械語に変換する」だけなら、ほとんど文字列処理なんじゃないですか? 相当前のことなので記憶が曖昧ですが、高専時代の4年に課題で出された記憶があります。言語指定されていないのをいいことにRubyで提出日前日に一夜漬けで作った記憶がありますのでw、C言語の場合は「文字列処理をどうするか」に着目すればいいんじゃないでしょうか。 ラベルの登録とか余計な要素も若干加わりますが、大した規模のプログラムではないはずですよ。18のガキに作れたんですから、落ち着いて考えればよろしいかと。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

仮想マシンそのものは作る必要がないのでしょうか? 作る必要があるなら、アセンブラより先に仮想マシンから作ることをお勧めします。 なお、アセンブラを作る程度であれば、パーサジェネレータを使わなくてもスクラッチで十分かと思います。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

アセンブラにこだわっていらっしゃるようですが、要は、なんらかの想定された言語ソースを入れて、想定ターゲットマシンのマシンコードに変換するソフト開発の研究ですね。 「コンパイラコンパイラ」をキーワードにして検索すると、なにかヒントがあるかも?

  • MASA_H
  • ベストアンサー率42% (64/151)
回答No.1

手っ取り早くいくならflex+bisonか?

関連するQ&A

  • Windowsのプログラムを作成するのに始め易い言語

    私は今までにWindowsのプログラムを作ったことがなく、 Windowsのプログラムを作成してみようと思うのですが、 どの言語のプログラムが覚えやすい/使いやすいでしょうか? 一応Windows以外の言語では以下の言語を扱えます ※独学なので、完全には覚え切れていません HTML / CSS / Javascript / perl5 / php4 / php5 / XHTML / Ajax? 身近にアセンブリ?アセンブラ?どっちかわかりませんが、 そういう言葉を耳にするのですが、どういう事なのでしょうか? 断片的なことしか聞いてないし検索してみても、明白な説明?の あるサイトも見つからないので、もし知っている方がいらっしゃれば そちらの方も聞いてみたいです

  • マシン語

    CPUのアーキテクチャをデータベースの構造で表現して、それに基づいてマシン語を自動生成するシステムを実現するシステムを作ることは可能でしょうか? ソースコードで作成したプログラムをマシン語に変換してそのマシン語コードを記述したファイルを保存しておき、以後はそのマシン語ファイルを直接実行させるにはどうしたらよいでしょうか? Java+C+アセンブリを使ってシステムを作るにはどうしたらよいでしょうか? CPUのアーキテクチャを解析するソフトはあるでしょうか?

  • アセンブリ言語は原始プログラムですか?

    質問(1) アセンブリ言語というのは、 add $S1, $S2 みたいなやつですよね? wikipediaで「ソースコード(ソースプログラム、原始プログラム)」の注釈1,2を読むと、 注1:【機械語の命令に記述するアセンブリ言語(アセンブラ)が存在するが、このアセンブラ用の文字列で記述されたプログラムはソースコードとは呼ばれないのが普通である。】 注2:【アセンブリ言語で書かれたプログラムはソースコードと呼ばれない】 と書かれてあります。 でも、 他の教材では アセンブリ言語で書かれたプログラム(原始プログラム) と書かれています。 どっちが正しいのでしょうか? 質問(2) 目的プログラム(オブジェクトプログラム)とは、 IT用語辞典によると 【オブジェクトプログラムとは、ソースプログラム(人間が認識できるプログラム言語で高水準言語など?)をコンパイラで機械語に翻訳したプログラムのことである】 とありますが、 ソースプログラムをコンパイラで翻訳するとアセンブリ言語になるんではないのですか? そのアセンブリ言語をアセンブラで翻訳して機械語になるのではないのでしょうか? どなたかご教授ください。 お願いします。

  • 卒業研究について

    私は、大学4年(電気電子工学科、情報処理研究室)ですが、卒業研究のテーマを医療情報に関するものをやりたいと考えています。と言っても、医療の知識があるわけでもありませんが。何か素人でも分かるサイトや本があれば教えてください(o_ _)oちなみに、調べてみたいのは、電子カルテです。C言語など使ってるかも知りたいです。長くなって申し訳ありません。お願いします。

  • ゲーム作成・研究

    始めて質問するをするので至らないところがあれば申し訳ありません;; 自分はプログラム・情報系の大学に通っています。 現在、卒業研究のテーマに悩み、ゲームを作ってみようと思ったのですが、プログラムは授業で習った程度(C++とJavaの基本動作)であり、自分がどこまで出来るのか、どのくらいの期間でできるのかさっぱりなのです。 作る物としてはオセロやトランプぐらいの物を想定しているのですが、卒業研究なので人工知能という名目でコンピューターも作ろうと思っています。 お勧めの言語や製作期間の目安などを教えていただけませんか;; できれば、参考になる書籍等も教えていただけると幸いです。

  • 研究のプログラム作成願い

    本当に困ってます。 研究において、C++を用いてプログラムを作成しているのですが、 原因不明な現象により完成しません。 そこで、プロの方に作成していただきたいのですが、 そのような業務を行っている機関などはあるのでしょうか? また、その場合は、お値段の方はおいくら位かかるのでしょうか? 本当に困ってます。 どうか教えていただけないでしょうか。 よろしくお願い致します。

  • 情報系研究室の選び方

    京都工芸繊維大学の情報コースの学生です。 ・音声対話処理(信号処理を除く) ・コンピュータアーキテクチャ ・符号化、暗号化、無線通信 の3研究室があり、どこに行こうか迷っています。 コンピュータアーキテクチャの教授はコンピュータを3台ほど電子回路レベルから作ったというツワモノです。参考書も2冊書いています。個人的には音声対話処理研究室でバイリンガルを養成するような英語の対話システムを作りたいと思っているのですが、技術的にはアルゴリズムの勉強にしかならないのではないかと思っています。将来は英語教育に携わるようなプログラムを作って生活したいと考えています。ダブルスクールとして通っている専門学校の先生は 「コンピュータアーキテクチャを知らないとCが書けない」 「無線通信や符号化の基礎を知らないと新しい通信技術についていけない」 「音声対話処理の研究室で身に付くのは役に立たないアルゴリズムだけなので、大学でアルゴリズムの勉強をしなくても専門学校で勉強すればいい」 と言っています。 1.コンピュータアーキテクチャ 2.符号化、暗号化、無線通信 3.音声対話処理 という順位になるそうです。 どなたか音声対話処理研究室の将来性について書ける方はいらっしゃいませんか?ちなみに音声対話処理研究室では音声の信号処理はしておらず、推論や形態素解析をして対話をしているというものです。

  • 卒業研究

    未だに卒業研究が決まらず悩んでいます。 何かアドバイス又は,具体的事例を聞かせてもらえませんでしょうか。 私は工業大学の電子科所属しています。 就職先はSE(システムエンジニア)希望です。 プログラミング言語(C++)はほとんど基礎レベルです。 しかしこれから学習はします。 アプリケーションなど考えていますがなにぶん私の実力でどのようなものができるのかも見当がつきません。 ほとんどのようなレベルのものを作れば卒業研究と言えるのでしょうか? ものすごく困っています。おねがいします。

  • アセンブリ言語について。

    アセンブリ言語がアセンブラ&実行出来るサイトを知らないでしょうか?また、アセンブリ言語のプログラムが載っているサイトを知らないでしょうか?教えて頂けると幸いです。

  • 東大・東工大の情報系の研究室

    東大、もしくは東工大の研究室で、 知識発見 Web メディア  …などが研究出来るところはありますか? 色々HPを検索しているのですが、情報系にあまり関係ないような専攻でも研究しているところなどあったので気になりました! まだ、自分の研究が決まっていないので単語になってしまいましたが、やりたいことはユーザがプログラミングすることなく自分の好きなアプリケーションを作れるようなアーキテクチャ?、Webやデータベースなどの情報の可視化などです。

専門家に質問してみよう