大学の卒業研究で以下のようなプログラムを作成することになったのですが、情報が少なく困っています。
「仮想マシンのアーキテクチャを定義、C言語でアセンブリ言語のプログラム
をマシンコードに変換するプログラムを作成」
C言語については勉強済み。
アセンブラについては検索するとたくさん情報は得られるのですが、C言語でアセンブラを作るとなると話は別で。
どんな検索ワードで検索すればいいのか?などさっぱりです。
卒業研究なので、自分で考えるべきなのでしょうが・・・
どなたか、これに関連したサイト、実際にC言語で書かれたプログラム等をご存じでしたら、教えて頂けないでしょうか
No.6ベストアンサー
- 回答日時:
卒業研究なのですから、自力で,あとは指導教員の助けでやりなさい.
「情報が少ない」とはどういうコトでしょうか.
C言語をもうわかっているのなら,こんな課題もうあとはちょいちょいとプログラムを書くだけでしょう.
まず,インターネット検索をやめて,図書館に行きなさい.
ヘネシー.パターソンのアーキテクチャ本とか,まずはCPUの命令体系を決めるための勉強をする.
次に,命令体系を決め,命令のニーモニックも決める.当然このとき,アセンブラが作りやすい体系を採用した方が得です.が余りにも貧弱なアーキテクチャだと恥ずかしい.指導教員と協議して適切な難易度レベルを選んでください.
次に,アセンブラの仕様を決める.おそらくは,リンケージエディタもなにもない,絶対番地アセンブラでいいと指導要員は思っているでしょう.マクロ機能も無くても許してもらえるでしょうね.
で,アセンブラの文法を決め(これは、既存の適当なCPUのアセンブラの文法を借りてきてOK),
アセンブラのソフトウェア構造を設計して,
プログラミングすると.
そこまで行くと,「前方ジャンプのアドレス解決は?」とかいろいろ疑問が出てくると思いますよ.
まずは,適当なCPUで短いアセンブリ言語ソースを手動で機械語に直す(ハンドアセンブル)修行をするのがよいでしょう.それで,アセンブラというものはだいたいどういう処理をしているのかが理解できるでしょう.
最後に言っておきたいのは,これは卒論としてはかなり優しい課題だということ.難しすぎるのなんのと愚痴るのは「私はアホです」と言ってるのと等しいですよ.
だいたい,30年前の技術レベルなら,立派な卒論といってもらえたテーマです.
適切なご意見ありがとうございます。やはり、卒業研究なのでこの場で教えて貰おうとする考え方が間違っていました。これからは回答者様のアドバイス通り研究を行って行きたいと思います。
No.5
- 回答日時:
CASLアセンブラとCOMETエミュレータでよければCで書かれたソースが
日本電子専門学校のページからダウンロードできます。
一応参考にはなるでしょう。
CASLとCOMETに関しては、ご存じなければ検索すればいくらでも出てきます。
でも、この課題は、アセンブラを作ることよりも、独自のアーキテクチャを
定義するというほうが、センスを問われる難しい内容だと思いますよ。
簡単なようで、奥が深い・・・
がんばってください。
参考URL:http://kserv.jec.ac.jp/news/release_2006-01-22.h …
No.4
- 回答日時:
というか、作業内容が「アセンブリを機械語に変換する」だけなら、ほとんど文字列処理なんじゃないですか?
相当前のことなので記憶が曖昧ですが、高専時代の4年に課題で出された記憶があります。言語指定されていないのをいいことにRubyで提出日前日に一夜漬けで作った記憶がありますのでw、C言語の場合は「文字列処理をどうするか」に着目すればいいんじゃないでしょうか。
ラベルの登録とか余計な要素も若干加わりますが、大した規模のプログラムではないはずですよ。18のガキに作れたんですから、落ち着いて考えればよろしいかと。
No.3
- 回答日時:
仮想マシンそのものは作る必要がないのでしょうか?
作る必要があるなら、アセンブラより先に仮想マシンから作ることをお勧めします。
なお、アセンブラを作る程度であれば、パーサジェネレータを使わなくてもスクラッチで十分かと思います。
No.2
- 回答日時:
アセンブラにこだわっていらっしゃるようですが、要は、なんらかの想定された言語ソースを入れて、想定ターゲットマシンのマシンコードに変換するソフト開発の研究ですね。
「コンパイラコンパイラ」をキーワードにして検索すると、なにかヒントがあるかも?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- C言語・C++・C# C言語で移動平均のプログラムを作りたいのですが、数値をファイルから取ってきて計算をするプログラムはど 1 2022/09/29 01:21
- その他(プログラミング・Web制作) ロボットの作り方を教えて下さい! なにも知らない素人です。 全て自作する場合、どうすればよいでしょう 6 2022/12/18 01:25
- C言語・C++・C# C言語について。 3 2022/11/05 20:30
- C言語・C++・C# c言語の質問です。 ランダムに4桁の暗証番号を出力するプログラムを作ったのですが、4947→4973 3 2022/04/16 16:47
- その他(プログラミング・Web制作) 大学一年でVBAのプログラミングを勉強しているものです。来週の情報の授業で以下の問題のプログラムを勉 4 2023/01/19 16:15
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PICに書き込むプログラムや変数...
-
アセンブラのLA
-
データコピー
-
バイナリの実行ファイルをgccを...
-
アセンブラからC言語に変換する...
-
アセンブラで割り算
-
PICはアセンブラとC言語のどち...
-
PICのアセンブラからC言語へ変...
-
ライン数とステップ数の違いは?
-
SHの命令の意味について
-
素数を求めるプログラム(アセン...
-
素朴な疑問 (C言語とアセン...
-
情報処理技術者試験センター・...
-
MASMの機種依存についてお尋ね...
-
アセンブラエディタ
-
アセンブラ(アセンブリ)の何か...
-
PIC16F84AのデバイスでC言語を...
-
Linuxについて。
-
Cとアセンブリ
-
【H8マイコン】HEWで埋め込みア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ライン数とステップ数の違いは?
-
アセンブラからC言語に変換する...
-
Windowsはオープンソースですか?
-
[C言語→アセンブリ言語]はどう...
-
実行ファイルからソースはみれる?
-
PICはアセンブラとC言語のどち...
-
void __cdeclなど_
-
アセンブラ言語がわかりません。
-
このアセンブラの意味を教えて...
-
エンディアンについて。
-
アセンブラのコマンドについて
-
PICのアセンブラからC言語へ変...
-
アセンブラで割り算
-
最初のアセンブラ
-
CASIOのポケコンZ-1GRのアセン...
-
SHの命令の意味について
-
PC-9801でマシン語を学習するに...
-
PC-9801 MS-DOSでの実行ファイ...
-
アセンブラのLA
-
masm32がうまく動きません。
おすすめ情報