• ベストアンサー

アセンブラからC言語に変換するにはどうすればいいのでしょうか?

アセンブラのプログラムをどうにか解読して、C言語に置き換えようとこつこつ行っています。 ですが、プログラム量が多いので解読に時間を要してしまいます。 どうにかして変換したいのですが、手早く変換できる方法はありませんでしょうか? また、自分で調べても分からない単語があります。(見落としているかもしれませんが)  .EQU   .BEQU この二つのコマンドが何を示しているのかがわからないのでこれについても教えてもらえたらうれしいです。

  • rador
  • お礼率50% (3/6)

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

  • ベストアンサー
noname#29459
noname#29459
回答No.3

どういう目的でやるのかもあるとおもいますが、単に、今動いているアセンブラプログラムを、その環境がなくなるので、Cで書き換えて、新しい環境に移したい、とかいうのであれば、そうですね。  まず、I/O関係のサブルーチンは、全部、解読する必要があるでしょう。  で、それへの入力パラメータと、リターン値も。変数変更とかもあれば、それも、読む。  で、純粋に、演算部分のみのところは、Cで、レジスタ操作をシミュレートするように、すると。多少、テクニックがあれば、コードジェネレータみたいなアプローチもありえます。  ようは、 元のコードのやっている内容 コメントおよび保守文書がどの程度あるか 全体のボリューム 作業にかかる智がいかほどか ということになりましょうか。旧のアセンブラコードが、新の環境でも動くなら、全部を移植ではなくて、必要不可欠な部分のみ、Cにして、C+asmにするという手もあるかと。

rador
質問者

お礼

ありがとうございます。 関係のなさそうな記述を飛ばしながらやっていきたいと思います。

その他の回答 (2)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1
  • arain
  • ベストアンサー率27% (292/1049)
回答No.2

>どうにかして変換したいのですが、手早く変換できる方法はありませんでしょうか? 正直ありません。 >.EQU   .BEQU アセンブラの種類により若干差異がありますが、 EQUはプログラム開始アドレスを示しているか、定数値の宣言、メモリアドレスへのラベル名定義となります。 BEQUはそのEQUのbit版となります。

関連するQ&A

  • アセンブラ→C言語

    アセンブラを学んでから C言語を学ぶとわかりやすい(理解しやすい) と聴きました。 どうやって勉強すれば良いですか? やっぱり本屋さんでアセンブラについての本を買って 勉強した方が良いですか? 今まで全くコンピュ-タ-についての言語を 習ったことがありません。

  • アセンブラ言語がわかりません。

    初心者です。まとを得ていない質問でしたらすみません。 C言語は理解できる程度なのですが、アセンブラのコードを書く事ができません。 今アセンブラ言語を学び始めた所ですが、「jr」「jarl」「jmp」などの分岐命令の指定の方法がわかりません。 C言語でいうとどういうコードを書いた時に、このような命令を出力できますでしょうか。 本を読んでも、この上記の命令の意味は書いてあるのですが、実際出力が出来なかったもので。 またアセンブラ言語を学ぶためにいい方法などありましたらお教えく頂けないでしょうか。 よろしくお願いします。

  • PICプログラム C言語とアセンブラ言語

    PIC18シリーズを使用して、プログラミングをしています。コンパイラはCCS-Cです。今まではすべてC言語で書いてきたのですが、アセンブラでしか設定ができない部分があり、今までのC言語のソースに加えてアセンブラを組み合わせようと思っているのですが、C言語とアセンブラを組み合わせることは可能なのでしょうか?

  • C言語とアセンブラ言語による計算プログラミング

    "AB間の距離を求めなさい。" 下の画像において、AC=r1、BC=r2、∠ACB=α°とするとき、AB間の距離dを求めなさい。 上記の問題について困っております。 この問題の解答については、C言語とアセンブラ言語によるプログラミングで考えるようになっており、FPU(MATH COPROCESSOR)を使用し、C言語側で変数や関数宣言、printfなどでの計算結果出力を記述し、アセンブラ言語側で計算するプログラム問題です。 原則として、C言語側で計算してはいけない仕様になっています。 そして、2つのオブジェクトファイルをリンクさせ、実行可能ファイル(.exe)を作成し、コマンドプロンプト に計算結果を表示する。とういう問題です。 ・アセンブラ言語側での使用する命令のプロセッサアーキテクチャのタイプは「.386」 ・作成するオブジェクトのメモリモデルは、Windowsなので「FLAT」 図の画像は添付してあるので、どうかご回答のほどよろしくお願い致します。

  • アセンブラ言語についてです。

    こんにちは。 現在大学3回生で就職活動をしております。 ESに得意科目の欄があり、大学の講義で習ったアセンブラ言語と書こうと思います。 アセンブラ言語は、将来どのような役に立つのでしょうか?? アセンブラ言語を学んでCやJAVAのプログラミングに生かせるのでしょうか?? 知識としては、基本情報技術者のCASLIIの問題が解ける程度です。 よろしく願いします。

  • C to 68000アセンブラ

    こんにちは。 早速ですが、Cプログラムを68000アセンブラに変換できるツール・コンパイラがありましたら知っている方、教えてください。 よろしくおねがいします。

  • 割り込みベクターをC言語で書きたい

     皆さん、有難う御座います。時々質問させて頂いています。  今回は、ベクターアドレスをC言語で書く方法について質問します。  ルネサスのH8マイコンを使っています。モニターを使うとRAM上に割り込みの仮想ベクターを作れます。  仮想ベクターには、割り込みのジャンプ先アドレスが書かれます。  現在アセンブラで書いているのですが、C言語で書く方法は無いでしょうか。  二つの方法で書きたいと思っています。  アセンブラで次の二つの方法に相当するC言語命令を知りたい。 (1)ORGとEQU命令を使った方法 (2)ムーブ(Z80ならロード)命令で関数のアドレスをメモリに書く方法  ルネサスにはHEWと言うソフトが有りますが、HEW特有の命令によらず、一般的なコンパイラが持っている機能で実現したい。  以上宜しくお願いします。

  • 組み込みアセンブラとは何ですか?

    私はx86でアセンブラを勉強中ですが、ネットでアセンブラ関係のことを検索していて組み込みアセンブラという記述をを見ました。 C言語から利用する場合インラインアセンブラより良いとかなんとか。 組み込みアセンブラという名前も怪しく合っているかわかりません。 掲示板のようなところで組み込みアセンブラの方が良い、早いと書いてありました。いろいろ検索して見かけたのでどこの掲示板かもわかりません。後から探したのですが見つけることができませんでした。 そこで質問なのですがそのその組み込みアセンブラとは何なんでしょうか? C言語からアセンブラを利用する場合、今読んでいる本「やさしいアセンブラ入門」にはインラインアセンブラとアセブラ言語モジュール(オブジェクトファイル)をCプログラムでリンクする方法の2種類が書いてありますが。組み込みアセンブラはモジュールで使うということでしょうか? 違うとすればどのような方法でアセンブラを利用することでしょうか? わかる方教えてください。ヨロシクお願いします。

  • PICライタ (C言語→HEXファイル)

    今PICライタについて独学で勉強しています。 今ソフト的には秋月のPICライタおよび、MPLAB使ってます。 しかし、MPLABがC言語読み込めないため迷っています。 そこで質問なんですが (1) C言語をアセンブラ言語に変換する無料ソフトありますか? (2) (1)をあきらめたとしてアセンブラ言語で書くとして、アセンブラ言語でPICのプログラム書くための、わかりやすい本などご存知ですか? やっぱりCコンパイラを買うしかないのでしょうか??

  • C言語によるウェイト

    C言語による正確な時間を定めたウェイト(例えば100msのウェイト)の挿入方法を探しています。 C言語でのウェイトの挿入方法を調べたところ、for文等で挿入できるのはわかったのですが、時間の求め方までわかりませんでした。 時間の求め方で調べたところ、アセンブラなら命令のステート数とクロック周波数より求める方法を知りました。 ですがアセンブラでの方法ではなく、C言語での時間の計算方法を覚えたいと思います。 些細な事でもかまいませんので、ご回答頂ければと思います。 どうぞ宜しくお願いします。