アセンブラ云々
命令
leal
Load Effective Address (long?)
leal 4(%esp), %eax
espの値に4足したメモリ位置にあるアドレスをeaxにいれる
http://d.hatena.ne.jp/suu-g/20080505/1210012224ll
sall
sall $2,%eax
eaxを2bit左シフト
xorb
xor。
xorb %al, %al
alに0をセット。
p2align
第一引数はロケーションカウンタの境界を指定。
第二引数はパディングの値を指定。標準は0。
第三引数はロケーションカウンタが進める最大値を指定する。
.p2align 4,,7
ロケーションカウンタを2の4乗の倍数まですすめる。
最大7バイトまで。
これ以上進めなくちゃいけない時は諦める。
.p2align 3
ロケーションカウンタを2の3乗の倍数まですすめる。
http://www.xgc.com/manuals/m1750-ada/xgc-alu/r3300.html
movzbl
move zero extended byte to long
第一引数の下位8bitのアドレスを第二引数の下位8bitにコピーする。
それより上位24bitはゼロで埋める。
http://www.cs.auckland.ac.nz/references/macvax/op-codes/Instructions/movz.html
レジスタ
ecx
ループのカウントとか、カウントの上限とかに使うらしい
eax
計算の途中の値を覚えておくのに使ったり。ループのカウントとかにも利用
http://hp.vector.co.jp/authors/VA014520/asmhsp/chap2.html
al
eaxの下位8bitのレジスタ。ehとかclとかもある。ここ見ろ。
http://codezine.jp/article/detail/393?p=2
esi
メモリのアドレスを覚えるのに使ったり