アセンブラ云々

命令

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

メモリのアドレスを覚えるのに使ったり