質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

5回答

411閲覧

アセンブリと高級言語

Nippun

総合スコア1147

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

1クリップ

投稿2017/08/02 02:50

編集2017/08/02 03:59

C言語はアセンブリ言語を基にして開発されていますが、逆にC言語などのような高級言語(Java, php, Ruby etc)などからアセンブリ言語でソースを作ることは可能でしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2017/08/02 03:10

「アセンブリを作る」というのは、どういう意味ですか? C言語等のプログラムを、CPUが実行可能な形式にする作業を指すのであれば、それはコンパイラと呼ばれるツールを使えば出来ます。
Nippun

2017/08/02 03:13

英語がソースなのですが、Can an assembler be written in a high-level language?と言うことです。
yohhoy

2017/08/02 06:49

Yes, you can write assembler program with any programming language as you like.
Nippun

2017/08/02 20:05

Thanks for telling me
guest

回答5

0

GNU Assemblerは主にC言語で開発されているようです。

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=tree;f=gas;hb=HEAD

あまりメリットはないと思いますが、JavaやRubyなどの他の高級言語でアセンブラを作ることも可能です。

C言語はアセンブリを基にして開発されていますが

通常は既存のC/C++等の高級言語のコンパイラで新しいCコンパイラを開発します。

投稿2017/08/02 04:10

編集2017/08/02 04:12
SVC34

総合スコア1149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

「Can an assembler be written in a high-level language?と言うことで」、高級言語でアセンブラ(アセンブリ言語で書かれたコードを、機械語(CPUが実行できるコード)に変換するツール)のプログラムを書くことができるのか、というのが質問の内容だと理解しました。

アセンブリ言語は、機械語を人間が読みやすいようにした言語ですから、そのプログラムを機械語に変換するのは比較的容易です。
多くのアセンブリ言語の1行のコードは、1つの機械語に対応しているからです。

第1回 PHPでアセンブラを作ってみたの連載(第4回まである)では、PIC16Fという1チップマイコン用のアセンブラをPHPで作って、プログラムをPIC16Fに書き込むまでが解説されているので参考になると思います。

投稿2017/08/02 04:26

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

アセンブリ を、どの意味で使っていますか?
wiki例
アセンブリ言語
https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA%E8%A8%80%E8%AA%9E
アセンブリ (共通言語基盤)
https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA_(%E5%85%B1%E9%80%9A%E8%A8%80%E8%AA%9E%E5%9F%BA%E7%9B%A4)
'
アセンブリ言語のソースは、文字列ですので、文字列生成可能で、
それを、標準出力なり、ファイルに書き出し可能な処理系であれば、
何れでも、可能性はあります。(プログラム次第)
アセンブリ言語のソースを、生成したいのであれば、
ターゲットとするCPUや、ターゲットとするアセンブラー、OS等について考慮する必要があります。

自分で作ってみるのであれば、
まずは、
各言語系のソースコード印刷プログラム
シーケンス処理プログラム
スクリプト処理プログラム
簡易言語処理プログラムを、コンパイラコンパイラで実装してみる。


な、順番になるかも。

検索ワード例
B言語 : 使った事は無い。
BDS-C : 単純構造なので、C処理系の基礎の基礎としては未だ有用かもしれない。
コンパイラコンパイラ
UCSD p-System
東芝12 BIT CPU PDP

追記
C と C以前の処理系について、調べてみると、Cによって何が変わったかが解るはずです。
COBOL / FORTRAN / ALGOL / BASIC などの処理系と、C 以後の言語系の大きな違いは何でしょう?

投稿2017/08/02 03:57

編集2017/08/02 04:05
daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

C言語はアセンブリを基にして開発されていますが

いえ、ほとんどのC言語用コンパイラはC言語やC++などで書かれています。

投稿2017/08/02 03:07

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

逆アセンブラ 検索どうぞ

投稿2017/08/02 02:56

tomopunyu

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問