私はx86でアセンブラを勉強中ですが、ネットでアセンブラ関係のことを検索していて組み込みアセンブラという記述をを見ました。
C言語から利用する場合インラインアセンブラより良いとかなんとか。
組み込みアセンブラという名前も怪しく合っているかわかりません。
掲示板のようなところで組み込みアセンブラの方が良い、早いと書いてありました。いろいろ検索して見かけたのでどこの掲示板かもわかりません。後から探したのですが見つけることができませんでした。
そこで質問なのですがそのその組み込みアセンブラとは何なんでしょうか?
C言語からアセンブラを利用する場合、今読んでいる本「やさしいアセンブラ入門」にはインラインアセンブラとアセブラ言語モジュール(オブジェクトファイル)をCプログラムでリンクする方法の2種類が書いてありますが。組み込みアセンブラはモジュールで使うということでしょうか?
違うとすればどのような方法でアセンブラを利用することでしょうか?
わかる方教えてください。ヨロシクお願いします。
No.5ベストアンサー
- 回答日時:
>私の勘違いで「組み込みアセンブラ」ではなく「組み込み関数」だったようです。
>組み込み関数とは一体なんなのでしょうか?今まで使った記憶がありません。ネットで検索しても何が組み込み関数なのかわかりませんでした。ご存知であればご教授お願いします。
この場合は、コンパイラ自体の仕様として持っている関数を指していると思います。普通C言語の標準関数はリンク時に結合するライブラリであってC言語自身のコンパイラの仕様としては組み込まれていません。組み込み関数はC言語コンパイラ自体がコードとして関数をOBJに出力します。どう組み込まれているかは言語環境(VC++なのかgccなのか)によって違います。
VC++の組み込み関数。
http://msdn.microsoft.com/fr-fr/library/w5405h95 …
>あと、もう一つ気になってしまったことがアセンブル言語のひとつひとつの命令の速度です。使っているCPUによって速度は違うと思いますが、目安的に各ニーモニックの速度の比較の資料はあるのでしょうか?
CPUの資料として公開はされていると思います。ただし、その命令実行サイクルはCPUの種類毎に違うのは当たり前として、命令パイプラインで多段ステージで実行されますので、同じ命令でも1クロックで終わる場合もあるし、数クロックかかる場合も出てきます。さらに命令キャッシュがあるので、キャッシュされているかどうかでも速度がかなり違います。なので正確に測るのは難しいというか意味が無いかもしれません。
[命令パイプライン]
http://ja.wikipedia.org/wiki/%E5%91%BD%E4%BB%A4% …
ここはかなり複雑なのでCPUアーキテクチャのコラムから拾い読みしてください。
http://journal.mycom.co.jp/column/architecture/i …
最後にプロセッサの資料を添えて起きます。
[Intel? Core?2 Duoプロセッサの資料(英語)]
http://www.intel.com/products/processor/manuals/ …
最適化を紹介してるこのマニュアルあたりだと思うんだけど英語な上に複雑すぎて挫折。
http://www.intel.com/Assets/PDF/manual/248966.pdf
丁寧な回答ありがとうございます。
組み込み関数いろいろ用意されているんですね。余裕が出てきたら勉強しようと思います。
組み込み関数も当然最終的にはアセンブラを生成すると思うので、アセンブラの理解をしっかりしたいと思います。
とても良い資料ありがとうございます。
同じ命令でも違うということ初めて知りました。しっかり読んで最適化されたコードを書けるようになりたいです。
まだまだ先は遠いですが、がんばります。
No.4
- 回答日時:
>インラインを使ったからといって最適化されることはあるのでしょうか?
サイトを発見できませんでしたが、インライン時は最適化されるはずです。
補足としてx64で使う場合はインラインアセンブラ自体が使えなくなっていますので、将来を考えたらアセンブラソースで別オブジェクトとして組むしかないです。
この回答への補足
回答ありがとうございます。
x64でインラインアセンブラが使えないということは耳にしていました。これからのことを考えるとオブジェクトとして実装したほうが良いですね。
それでx64でプログラムする方法をもう一度調べたところ。「組み込み関数」という記述がありました。
私の勘違いで「組み込みアセンブラ」ではなく「組み込み関数」だったようです。
組み込み関数とは一体なんなのでしょうか?今まで使った記憶がありません。ネットで検索しても何が組み込み関数なのかわかりませんでした。
ご存知であればご教授お願いします。
あと、もう一つ気になってしまったことがアセンブル言語のひとつひとつの命令の速度です。使っているCPUによって速度は違うと思いますが、目安的に各ニーモニックの速度の比較の資料はあるのでしょうか?
もし、自分で計測する場合、どの様な方法で正確に調べることができるでしょうか。
ご存知であればご教授お願いします。
No.3
- 回答日時:
お求めの答えはこれかと。
http://infocenter.arm.com/help/index.jsp?topic=/ …
最適化とかオブジェクトの扱いとか色々差が有るようです。
上記の例はARM系CPUのコンパイラですが、x86系でこの機能を持つC言語コンパイラは残念ながら存じません。
この回答への補足
組み込みアセンブラとはオブジェトを作ってそれをCのオブジェクトと結合する方法ということなんですね。
Visual StudioでCのプログラミングする場合、自分はアセンブラは別のモジュールにして作りたいのですが、その場合インラインを使う場合とそれほど変わらないということですかね?
インラインを使ったからといって最適化されることはあるのでしょうか?
No.1
- 回答日時:
モジュールはマシンコードになっていて、これはブラックボックスになっているのが普通です。
ですからいじることはできません。ところがインラインアセンブラだとこれはアセンブラを習得していれば改変することができます。組み込みアセンブラはこれを指すものと思われます。この回答への補足
モジュールはアセンブラで書いて自分で作るので弄れますよ?
インラインアセンブラで作ったとしてもコンパイルして実行ファイルを作れば逆アセンブラしない限り可変できないのではないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# アセンブラ指令 3 2023/06/17 14:47
- その他(プログラミング・Web制作) x86_32のGASの擬似命令 3 2023/06/07 19:55
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- 教育ソフト・学習ソフト 最近小学生、中学生にもプログラミング教育をしているとの事ですが、どの様な教育をしているのかお教え下さ 4 2023/08/11 05:17
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(セキュリティ) セキュリティソフトの切り替え 2 2023/05/04 11:21
- 車検・修理・メンテナンス 自動車車検は、自分で、ユーザー車検で、車検場に持ち込みすると、法定費用だけで、簡単に受かるよ。 7 2023/02/05 22:56
- 統計学 Rを用いた「繰り返しがある直交表実験計画法」の分析方法 8 2023/08/01 17:58
- その他(SNS・コミュニケーションサービス) ネットで誹謗中傷したつもりが無いのに誹謗中傷だと言われました。 私はとある男性アイドルを応援していて 5 2023/06/20 00:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ライン数とステップ数の違いは?
-
SH3のアセンブラの表記について
-
SHの命令の意味について
-
[C言語→アセンブリ言語]はどう...
-
アセンブラからC言語に変換する...
-
アセンブラで割り算
-
アセンブラ言語がわかりません。
-
アセンブラの数値比較
-
【H8マイコン】HEWで埋め込みア...
-
Cとアセンブリ
-
MPLAB IDE v8.92アセンブラにつ...
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
8ビットのデータの、先頭ビット...
-
C言語で128bitの2進数のビット...
-
算術シフト演算が成り立つ理由...
-
ものづくりに向いているプログ...
-
ビットシフトってどんな時使うの?
-
CASLIIでかけ算
-
PICの入出力切り替えの時間がプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ライン数とステップ数の違いは?
-
アセンブラからC言語に変換する...
-
Windowsはオープンソースですか?
-
[C言語→アセンブリ言語]はどう...
-
実行ファイルからソースはみれる?
-
PICはアセンブラとC言語のどち...
-
void __cdeclなど_
-
アセンブラ言語がわかりません。
-
このアセンブラの意味を教えて...
-
エンディアンについて。
-
アセンブラのコマンドについて
-
PICのアセンブラからC言語へ変...
-
アセンブラで割り算
-
最初のアセンブラ
-
CASIOのポケコンZ-1GRのアセン...
-
SHの命令の意味について
-
PC-9801でマシン語を学習するに...
-
PC-9801 MS-DOSでの実行ファイ...
-
アセンブラのLA
-
masm32がうまく動きません。
おすすめ情報