「アセンブラ」の編集履歴(バックアップ)一覧に戻る
アセンブラ」を以下のとおり復元します。
*アセンブラの基本動作
**アセンブラの動作
-コンパイラが生成したアセンブラソース、または開発者がコーディングしたアセンブラソースを読込み、オブジェクトファイルを生成する。
--アセンブラソース → 機械語とほぼ一対一で対応するソース
**アセンブラの使いこなし
-記述方法や文法はプロセッサ毎に異なる。
-コードを書くシチュエーションは限られので、書く能力は必要な時に学習すればよい。
-コードを読める必要がある。
--デバッガ/逆アセンブラの出力、コンパイルリスト等々の解読のため。
**基本的なフォーマット
-アセンブラは行指向の言語
-
--ラベル部(終端が”:”の場合が多い)
--オペコード部(プロセッサの命令または疑似命令)
--オペランド部(”,”で区切られ複数記述できる場合が多い)
--コメント部(”#”,”;”,”*”,”@”等で開始される場合が多い)
**プロセッサの命令
-転送命令(レジスタ⇔メモリ/レジスタ)
-演算命令(加減乗除、論理演算、シフト等々)
-分岐命令(ジャンプ、条件付きジャンプ、コール等々)
-制御命令(割込み禁止/許可等々)
|mov | レジスタ間のコピー
|stmfd | 複数のレジスタ値のストア|
|sub | レジスタ間の減算|
|str | レジスタ値のストア|
|ldr | レジスタ値のロード|
|bl | サブルーチン呼び出し|
|ldmfd | 複数のレジスタ値のロード|
**疑似命令
-アセンブラには直接プロセッサーが理解しない命令(オペコード)がある。これはアセンブラに対する指示で、オブジェクトコードの生成方法を指示、定数値を指定、シンボルの属性を指定等々の処理を行う。
-セクション制御 
--text,data,bss等のセクション制御命令
-各種の宣言 
--外部シンボルの定義やシンボルの公開
-デバッグ情報、その他
--主にコンパイラが生成する行番号情報など
--アセンブル制御、マクロ機能、データ定義
**セクション
-プログラム中で使われるデータや命令はセクションと呼ばれるグループに配置される。.section, .text等の疑似命令で指示。
--これは命令語とデータでMPUがアクセスする時の属性が異なり、メモリに付加する情報(実行許可等)を制御する必要があるため。(組込み系ではROM/RAMの指定等に用いる)
-代表的なセクション
|テキストセクション(.text) | 命令を配置(読込み、実行)|
|RODATAセクション(.rodata)| 定数値を配置(読込み)|
|データセクション(.data)| 初期化データを持つデータを配置(読込み、書き込み)|
|BSSセクション(.bss)| ゼロで初期化されるデータを配置(読込み、書き込み)|
|スタックセクション(.stack)| スタック空間を配置(読込み、書き込み、実行)|
**オブジェクトフォーマット
-代表的なオブジェクトフォーマット|
|ELF | 主にLinux等で用いられる|
|COFF | 主にSVR4等のUnixで用いられる|
|ECOFF,XCOFF | 上記のCOFFの拡張|
|PE | MS-Windowsで用いられる|
|OMF | インテル社が規定したオブジェクトフォーマット|
**アセンブラのビルド/インストール
***GNU binutils を使ってクロスアセンブラをビルドする。
-GNU binutils の最新版をゲット
--現在ならば[[binutils-2.16.1.tar.bz2>http://ftp.gnu.org/gnu/binutils/]]をダウンロードする。
-作業ディレクトリに展開
--以下のコマンドを入力。
$ tar jxvf binutils-2.16.1.tar.bz2
$ cd binutils-2.16.1/
binutiils-2.16.1.tar.bz2はダウンロードしたファイル。
展開するとカレントディレクトリにbinutils-2.16.1が作られる。
-configureの実行
--以下のコマンドを実行する。
$ ./configure --prefix=/opt/xtool-arm-elf --target=arm-elf
  --prefixオプションは、ビルドされたパッケージのインストール先ディレクトリを指示する。
  --targetはビルドするターゲットアーキテクチャを指示する。今回は、arm用のクロスアセンブラを作ってみるので、arm-elfを指定する。
-ビルド
--$ make all
-インストール
--$ make install
-パスの追加
--$ export PATH=/opt/xtool-arm-elf/bin:$PATH
--ログインしたら自動的にPATHを設定したい場合は、.bashrcに上記のexportコマンドを追加する。
--cygwin環境以外でも利用したい場合は、マイコンピュータのプロパティから環境変数でセットする
-動作確認
--$ arm-elf-as --version
--GNU assembler 2.16.1
Copyright 2005 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License. This program has absolutely no warranty.
This assembler was configured for a target of `arm-elf'.

復元してよろしいですか?

記事メニュー
目安箱バナー