comparison paper/chapter/02-cbc.tex @ 63:eaa7a127027b

add asm
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Wed, 03 Feb 2021 13:30:03 +0900
parents 45395005373f
children f431abfba3b2
comparison
equal deleted inserted replaced
62:45395005373f 63:eaa7a127027b
36 \lstinputlisting[label=src:cbcexample_test, caption=CbCの例題]{src/cbc_example_test.cbc} 36 \lstinputlisting[label=src:cbcexample_test, caption=CbCの例題]{src/cbc_example_test.cbc}
37 37
38 38
39 この例では構造体\texttt{struct Test}をcodegear1に渡し、その次にcodegear2に継続している。 39 この例では構造体\texttt{struct Test}をcodegear1に渡し、その次にcodegear2に継続している。
40 codegear2からはcodegear3にgotoし、 最後にexitする。 40 codegear2からはcodegear3にgotoし、 最後にexitする。
41 この例題をアセンブラに変換した結果を示す。 41 この例題をアセンブラに変換した結果をソースコード\ref{src:cbcexample_test_asm}に示す。
42 \lstinputlisting[label=src:cbcexample_test_asm, caption=ソースコード\ref{src:cbcexample_test}のアセンブラの一部]{src/cbc_example_test.s}
42 初回のmainからcodeGear1への継続は、 CbCコンパイラの仕様上関数呼び出しが行われる。 43 初回のmainからcodeGear1への継続は、 CbCコンパイラの仕様上関数呼び出しが行われる。
43 それ以外のcodegear2からcodegear3などのgotoは、jmp命令が実行される。 44 それ以外のcodegear2からcodegear3などのgotoは、jmp命令が実行される。
44 jmp命令はプログラムカウンタを切り替えるのみの命令であるため、 callと違いスタックの操作をしていないことが分かる。 45 jmp命令はプログラムカウンタを切り替えるのみの命令であるため、 callと違いスタックの操作をしていないことが分かる。
45 46
46 47