Mercurial > hg > Papers > 2021 > anatofuz-master
comparison paper/chapter/02-cbc.tex @ 93:b1febd693942
add fig
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 05 Feb 2021 20:06:02 +0900 |
parents | a15db66cab3c |
children | 911bf1a2c6fa |
comparison
equal
deleted
inserted
replaced
92:f5766148955f | 93:b1febd693942 |
---|---|
54 \label{fig:cbc_vs_c} | 54 \label{fig:cbc_vs_c} |
55 \end{figure} | 55 \end{figure} |
56 | 56 |
57 | 57 |
58 実際に軽量継続になっているかを、この例題をアセンブラに変換した結果を見比べて確認する。 | 58 実際に軽量継続になっているかを、この例題をアセンブラに変換した結果を見比べて確認する。 |
59 \lstinputlisting[label=src:cbcexample_test_asm, caption=ソースコード\ref{src:cbcexample_test}のアセンブラの一部]{src/cbc_example_test.s} | 59 \lstinputlisting[label=src:cbcexample_test_asm, caption=CbCの例題をコンパイルしたアセンブラの一部]{src/cbc_example_test.s} |
60 \lstinputlisting[label=src:cbcexample_test_asm_void, caption=ソースコード\ref{src:cbcexample_test_c}のアセンブラの一部]{src/cbc_example_test_void.s} | 60 \lstinputlisting[label=src:cbcexample_test_asm_void, caption=C言語の例題をコンパイルしたアセンブラの一部]{src/cbc_example_test_void.s} |
61 codegear1からcodegear2への移動の際に、CbCとCで発行されるアセンブラの命令を比較する。 | 61 codegear1からcodegear2への移動の際に、CbCとCで発行されるアセンブラの命令を比較する。 |
62 CbCの例題の場合のアセンブラのソースコード\ref{src:cbcexample_test_asm}はcodegear2へ25行目でjmp命令を使って遷移している。 | 62 CbCの例題の場合のアセンブラのソースコード\ref{src:cbcexample_test_asm}はcodegear2へ25行目でjmp命令を使って遷移している。 |
63 対してC言語での実装の場合(ソースコード\ref{src:cbcexample_test_asm_void})は21行目でcallqを使っている。 | 63 対してC言語での実装の場合(ソースコード\ref{src:cbcexample_test_asm_void})は21行目でcallqを使っている。 |
64 jmp命令はプログラムカウンタを切り替えるのみの命令であり、 callは関数呼び出しの命令であるためにスタックの操作が行われる。 | 64 jmp命令はプログラムカウンタを切り替えるのみの命令であり、 callは関数呼び出しの命令であるためにスタックの操作が行われる。 |
65 CbCでのgoto文はすべてこのjmp命令に変換されるため、 関数呼び出しより軽量に実行することが可能である。 | 65 CbCでのgoto文はすべてこのjmp命令に変換されるため、 関数呼び出しより軽量に実行することが可能である。 |