03042009 as
インテルCPUのGNUユーザへ
- フラグの種類と役割
- 符号付き制すのフラグ
- array(%edi)はアドレス値$arrayに%ediを加算したアドレス値の内容にアクセス
- retはcall分の次の命令にリターン
- 引数の渡し方
- レジスタ渡し
- メモリ渡し
- スタック渡し
- 変数宣言
- メモリ領域の確保
- データに適した命令生成
- メモリ内の構造体
- 関数呼び出し
- 引数をスタックにプッシュ
- call命令を実行
- 呼び出された関数はスタックの中を見ることで引数を使う
03042009 as
インテルCPUのGNUユーザへ
common lispのdisassembleを使うとアセンブラっぽく出力できる。
* (defun add1 (a) (+ a 1))
ADD1
* (disassemble 'add1)
; disassembly for ADD1
; 119CBD7A: 8B55F4 MOV EDX, [EBP-12] ; no-arg-parsing entry point
; 7D: BF04000000 MOV EDI, 4
; 82: E8B94363F2 CALL #x4000140 ; GENERIC-+
; 87: 7302 JNB L0
; 89: 8BE3 MOV ESP, EBX
; 8B: L0: 8D65F8 LEA ESP, [EBP-8]
; 8E: F8 CLC
; 8F: 8B6DFC MOV EBP, [EBP-4]
; 92: C20400 RET 4
; 95: 0F0B0A BREAK 10 ; error trap
; 98: 02 BYTE #X02
; 99: 18 BYTE #X18 ; INVALID-ARG-COUNT-ERROR
; 9A: 4D BYTE #X4D ; ECX
NIL
プログラミングの力を生み出す本を読んだので、アセンブラもちょっとは楽しくなってきた。
で、この本の後ろのほうの章(マルチスレッドとか)が気になっているんだけど、ちと高い。
17032007 as
順調にprog_actionscript30.pdfを読み進めてきて、ただいま第三部のFlash Playerの仕組みのとこ。
で、イベントフローがいまいち掴めん。
と思って調べてみたら、イベントフローをわかりやすく説明してあるエントリみつけた。
要するにイベントを木構造で表現すんのか。なるほど。
概念上、イベントフローは 3 つの部分に分けられます。 第 1 の部分はキャプチャ段階と呼ばれ、ステージからターゲットノードの親までのノードすべてがこれに含まれます。 第 2 の部分はターゲット段階と呼ばれ、ターゲットノードだけがこれに含まれます。 第 3 の部分はバブリング段階と呼ばれ、ターゲットノードの親からステージまでの帰り道を構成するすべてのノードがこれに含まれます。
バブリング段階とかは、継承関係のコンストラクタみたいなイメージでいろいろやれそうなことがわかるんだけど、キャプチャ段階って実際のところどういう処理が入る可能性があるんだろうか。