[[勉強会]]

-[[熱血!アセンブラ入門 読書会 - connpass>http://hotasm.connpass.com/]]に参加した記録
-[[熱血!アセンブラ入門 サポートページ>http://kozos.jp/books/asm/]]
-[[熱血! アセンブラ入門|書籍情報|秀和システム>http://www.shuwasystem.co.jp/products/7980html/4180.html]]

#contents

*[[第17回熱血!VAXとかPDP-11とかV850とかi960とか入門>http://hotasm.connpass.com/event/16035/]] [#t556f1cd]
-発表者として参加してしてきた
**PDP-11とVAX [#q706d0af]
-まさかのPDP-11
-学部3年次に受けた授業と、12年ぶりに再会するとは思わなかった。
***gcc-3.4.6のバグ? [#d4d77b7e]
-gcc-3.4.6では、16bitの即値が'99aa'が'00aa'として出力される
-どうも、gcc内部で0xffffでマスキングするべきところを、0xffでマスキングしている
***PDP-11はアドレッシングモードが多彩 [#r54f149e]
-ポインタのポインタが指す番地の値を読み込む
-具体的にはスタックポインタからディスプレースメント付きでアクセスするのが、1命令で可能
**V850 [#jac7ec1c]
-424p.には「''8[r6]''」は「''r6+4''」と言う解説があるが、恐らく''r6+8''の誤植
**i960 [#x30805c1]
-Intel製のRISC系CPU
-レジスタウィンドウがある、と解説されているが、どうも、SPARCほどHW的なレジスタウィンドウでは無いっぽい。
*[[第16回熱血アセンブラ入門 SPARC、PA-RISC、Alpha>http://hotasm.connpass.com/event/15526/]] [#m151bc1f]
-[[@7shi>https://twitter.com/7shi]]さんが主催されてる読書会
-初参加で発表してきた
**SPARC [#i087b4b1]
-SPARCはRISC系CPU
-元はサンマイクロシステムズによって開発
-ヘネシーパターソン本←王道の教科書を書いた人によって設計された
-最近はSPARC-5まで来ている。
-SPARC-5は学術向けの色が強そう
-4バイト固定長命令
-retlが帰還命令
-遅延スロット持ち
-o0の値が戻り値となる
-retlはnop付きのreturn。つまり遅延スロットがある
-アセンブリで書いた場合、代入方向は左から右へ
 mov r0, r1
-はr0の値をr1にコピーする、という意味
 add r0, r1, r1
-はr0とr1の値を加算して、r1に格納する、という意味
***レジスタ・ウィンドウ [#l51751c6]
-SPARC最大の特徴
-レジスタ退避にスタックを使うのでなく、HW的に参照するレジスタを切り替えることでレジスタ退避を実現している
-そのため、総レジスタ数は多い(教科書では64個)が、そのうち使えるのは一部だけ(教科書では32個)
-なので、アセンブリで同じ名前のレジスタを使っていても、物理的に別のレジスタだったりもする。
-return命令も、ret命令とretl命令があり、レジスタ・ウィンドウを切り替えた/切り替えない時それぞれのためにある
***32bit即値 [#n156addd]
-SPARCでは、2回の命令に分けて32bit即値を表現しているが、
-22bit+10bit という分け方で即値を表現している
**PA-RISC [#t31b50a1]
-別名HP/PAとも言う
-遅延スロットを実行する、しないを切り替えられる
-rpレジスタがリンクレジスタ
--おそらくr0レジスタがゼロレジスタだろう
***32bit即値 [#af8d2753]
-何故か、即値の一番下位ビットが符号ビットなのだ!!
-PA-RISCでは18+14bitの組み合わせで32bit即値を表す
-Wikipediaによれば、プログラム内の定数値の内98%が13ビットに収まる、らしい
-このような統計情報をもとに設計されたアーキテクチャ
***スタックは上方伸長 [#l4db5035]
-スタックは上方伸長(変態だー!)
-なにゆえ、0x40をまるまるSPとして確保するのか。
-0x40を確保しておきながら、何故SP-0x38 を使うのか。2バイトどこ行った?
-そこに関しては今回情報不足
**Alpha [#t813c0c9]
-Alphaは純正64bitアーキテクチャ
-遅延スロットもなく、分かりやすい
-製造会社がDEC→Compaq→HPと買収され、とうとう新規製造はされなくなった
-ちなみに、2015-06-03時点で、[[CentOS、DebianとGentooディストリビューションがAlphaに対応している>http://ja.wikipedia.org/wiki/Linux%E3%83%87%E3%82%A3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E6%AF%94%E8%BC%83]]&note{comparison-of-linux-distribution:[[Linuxディストリビューションの比較 - Wikipedia>http://ja.wikipedia.org/wiki/Linux%E3%83%87%E3%82%A3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E6%AF%94%E8%BC%83]], 2015-04-29 17:47版, 2015-06-03閲覧};
-Alphaではポインタは8バイトだが、intは4バイト。(longは8バイト)
--64bitとしてはデファクトスタンダードな、
--int* 8byte
--int 4byte
--short 2byte
--long 8byte
-64bitアーキテクチャだが、命令は32bit固定長
***32bit即値 [#d49a7487]
-即値は2回に分けて行うがor命令でなく、add命令で行う。なにゆえ?
-Alphaは16bitずつ分けて即値を表すが、16bitの足し算で表すため、値によっては符号拡張が行われ1ずれた値な場合がある

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS