2012年3月18日日曜日

ARMの場合、アセンブラが解れば機械語も解る - 僻地のプログラマkmt-t - わりとどうでもいい日記 1.0

[組み込み]ARMの場合、アセンブラが解れば機械語も解る

ARMの場合、アセンブラが解れば機械語もわかるようになる...というか機械語が解るとアセンブラがわかる...なのかもしれない。例えばx86やっている人からすれば32bit即値が一命令でレジスタにロードできるのは当たり前かもしれませんが、基本的に32bit/RISCではできないものが多いです。正直、アセンブラの本を買って説明を読んだだけでは、この制限にピンとこなかったりするかもしれません。これはARMでは命令長(機械語一命令のビット長)が32bitであることに起因します。命令調が32bitなのに32bitの即値が表現できるわけがありません(即値以外にオペコードや他のオペランドを示すbitが必要なため)。


どのボクサーターンプロしない

即値をレジスタにロードするためのMOV命令のエンコード規則は以下のようになります。

実行条件(4bit)001110100000(12bit)転送先レジスタ番号(4bit)即値を2bit右ローテートする回数(4bit)即値8bit

これから一度に転送できる即値のbit数が8bitまでというのがわかります。最下位8bit以外に即値をロードするには、右ローテートさせます。

このようにARMの機械語がわからないとアセンブラが解りにくくなっている半面、逆にアセンブラをきちんと解ると機械語が解るようになっています。ARMの場合はx86に比べると機械語の種類が少なく、エンコード規則も単純なので理解しやすいのではないでしょうか?


バレーボールの山猿は何ですか

ということでARMのアセンブラの勉強をしている人は機械語の勉強もセットですることをお勧めします。機械語が解ると実行時にヒープに機械語を展開して実行するいわゆるJustInTimeコンパイラの開発ができるようになったりします。

このあたりの学習は以下の書籍がお勧めです。

定番なので読んでいる人も多いでしょうが...。561ページ目からがARMの機械語のエンコード規則になっています。これ以外にもプロセッサごとに命令の処理ステージの消費サイクル数が記述されてたり、アセンブラの勉強には最適な内容になっていて大変お勧めです。


ここで、iは、ピンポン玉を購入することができます

MIPSですがこれも超々定番のパターソンアンドヘネシーの上巻でもいいかもしれません。MIPSのエンコード規則が解ればARMもある意味似たりよったりなので理解できるはずです。

これら以外の書籍以外にも本家ARMのサイトからARMプロセッサのリファレンスマニュアルも落とせてそっちにも書いてあるんですが、めちゃくちゃ量が多く大変読みにいのでお勧めしません。NEONのエンコード規則は今のところこの資料にか載ってないので読まざるえないんですが...。

追記

こんなのもある。古いけど。



These are our most popular posts:

MB-LCD1 アセンブラ・ライブラリによる制御

本アプリケーションノートは、液晶表示ユニット MB-LCD1 を制御するアセンブラ ルーチンを、. C 言語プログラムでライブラリとして使用する方法を説明するものです。 動作環境は以下の ... 本アプリケーションノートで紹介するサンプルプログラムは HEW のプロジェクトフォルダで. 提供しています。 ..... 文字コードと文字パター. ンの対応 については ... read more

syntax - vimdoc-ja

動作を速く保つため、ファイル全体を構文解析するわけではないから、このハイライト 方法には限界が存在する。 .... NOTE: 長い行があって表示が遅く、構文ハイライトをオフ にしたくなるような場合は、 をもっと小さい値にすることも考えてみること。 ..... が判っている場合には、起動設定ファイルvimrcに次のコマンドを書くことができる: : let filetype i = には使用するアセンブリ言語の種類を指定する。 ...... つまりskipパターンは省略できるが、少なくとも1つのstartとendパター ンを書かなければ ならない。 read more

第1章 プログラミング言語の種類と概要

この二つを比べれば、C プログラムを読む/書く労力が上のアセンブリ・プログラム片を 読む/書く. 15 .... 寿命の長い理由のひとつは、当初から実行性. 30 ..... プログラミング 言語のプログラムを実際に実行する方法は、コンパイラを用いる方法とインタプ. 4 ...... 1. parent(X,sazae) と parent(namihei,Y) は [X := namihei, Y := sazae] によってパター. 1 ... read more

Code Composer Studio 開発ツール v3.3

ソースのステップ実行はコード行を一行ずつ実行しますが、アセンブリのステップ実行は アセン. ブリ命令 ... アップする方法、およびいくつかの汎用 IDE オプションをカスタマイズ する方法について説明します。 項目 ...... 特性に関する説明が長いと、その特性の説明 全体を読むことができない場合があります。 ..... また、メモリ配置およびアクセス・パター ... read more

Related Posts



0 コメント:

コメントを投稿