���̃y�[�W�̓��e |
---|
�f�o�b�K�͖��\�ł͂Ȃ� |
�u���[�N�|�C���g��ݒ肵�Ă݂悤 |
�f�o�b�K���N�����Ă݂悤 |
�v���ʂ�ɃX�e�b�v���s |
�������[�h�ɂ��� |
���肪�����X�|���T�[�l |
---|
All About �\�t�g�E�G�A�G���W�j�A |
�l�b�g��8�������I�����ԕی��̓A�����J���z�[���E�_�C���N�g |
�l���́u�`�����X�v�Ɓu�s���`�v�Ƀ��r�b�g! |
�ی������ꐶ�オ��Ȃ��A�ی����ő�50�������̈ꐶ�U�̈�Õی��I |
�w�f�o�b�K�x �ƕ����ƁA�f�o�b�O�����������Ă����c�[���̂悤�Ɏv���Ă��܂���������܂���B�f�o�b�K�� �w�����ƁA�����ɁA����ȃo�O�������[�x �ȂǂƋ����Ă��ꂻ���ł��B�f�o�b�K���N�����ăJ�b�v���[���������ƁA�H�ׂ�鍠�ɂ͑S�Ẵo�O���C������Ă������ł��B
�Ƃ��낪���ۂ͈Ⴂ�܂��B�f�o�b�O����̂͂����܂Ől�Ԃł��B�f�o�b�K�̓f�o�b�O�������グ�邽�߂̃c�[���ł��B�P�s���A�v���P�[�V���������s���Ȃ���A�e�ϐ��̒l�ׂ��肷�邱�Ƃ͂ł��܂����A�ُ킪���邩�ǂ����ׂ�̂͐l�Ԃł���Ƃ���ɒ��ӂ��ĉ������B
�f�o�b�O���ł́A�v���O�������ꎞ���f���āA���̂Ƃ��̏�Ԃ��������ꍇ������܂��B���̂悤�ȏꍇ�A�u���[�N�|�C���g��ݒ肷��̂������葁�����@�ł��B
�R���\�[���̃f�o�b�O���@�̃y�[�W�Ŏg�p�����\�[�X�Ƀu���[�N�|�C���g��ݒ肵�Ă݂܂��傤�B
#include <stdio.h> int calc_kaijo( int i) { if( i == 1) { return 1; } else { return i * calc_kaijo(i-1) ; } } void main() { // 5�̊K����v�Z���� printf( "result : %d\n", calc_kaijo( 5)) ; }
calc_kaijo���̒���if( i == 1)�̕����Ƀu���[�N�|�C���g��ݒ肵�Ă݂܂��Bif( i == 1)�̍s�ɃJ�[�\���������Ă����A F9 �L�[���������A�r���h�i�~�j�j�o�[�̎�̃{�^���������ĉ������B�r���h�i�~�j�j�o�[�́A���j���[�̏�ʼnE�N���b�N���ăr���h�i�~�j�j�o�[��I�����ĉ������B���̂悤�ɁA���Ƀu���[�N�|�C���g�̈�̐Ԋۂ��\������܂��B
�u���[�N�|�C���g�̐ݒ�
�u���[�N�|�C���g���폜����ɂ́A�u���[�N�|�C���g�̂���s�ŁA������x F9 ����������̃{�^���������ĉ������B
�f�o�b�O����O�ɁA�܂��̓r���h����K�v������܂��B�f�o�b�O����ꍇ�A�ʏ�̓f�o�b�O�łŃr���h���܂��B���j���[�� �w�r���h���A�N�e�B�u�ȍ\���̐ݒ�x �� �wWin32 - Debug�x �ɂȂ��Ă��邩�m�F���ĉ������B�Ȃ��Ă��Ȃ���AWin32 - Debug ��I������ OK �������ĉ������B
�A�N�e�B�u�ȍ\����Debug�ɐݒ肷��
���ɁA���j���[�� �w�r���h->�r���h�x ��I�����邩�AF7�L�[�������ăr���h���ĉ������B�r���h�����܂���������A���������ł��B�f�o�b�K���N�����Ă݂܂��傤�B�r���h�i�~�j�j�o�[�̎�{�^���̍��ɂ�����s�{�^�����������AF5 �L�[�������ĉ������B���j���[�� �w�r���h���f�o�b�O�̊J�n�����s�x �ł�OK�ł��B���̂悤�ȉ�ʂŎ~�܂�Ǝv���܂��B
�f�o�b�K�̉��
���̉�ʂ��A�f�o�b�K�̉�ʂł��B������ �w�ϐ��E�C���h�E�x�A�E���� �w�E�H�b�`�E�C���h�E�x �ł��B�ϐ��E�C���h�E�ɂ́Ai�̒l��5�ƕ\������Ă��܂��B�f�o�b�K��ʂ͒ʏ�̊J����ʂƂ͈قȂ�̂ŋ�����������܂��A�A�E�g�v�b�g�E�C���h�E��[�N�X�y�[�X�E�C���h�E��\������ΊJ����ʂƓ����ɂ��ł��܂��B�f�o�b�K��ʂ͊J����ʂł͕\������Ȃ��������̉�ʂ�\���ł��܂��i�ϐ��E�C���h�E�͂��̈�ł��j
�ł́A�w�R�[���X�^�b�N�E�C���h�E�x ��\�����Ă݂܂��傤�B�R�[���X�^�b�N�E�C���h�E�ɂ́A���Ăяo���̃X�^�b�N���\������܂��B���j���[�̏�ʼnE�N���b�N���� �R�[���X�^�b�N���`�F�b�N���邩�A���j���[�� �w�\�����f�o�b�O�E�C���h�E���R�[���X�^�b�N�x ��I�����ĉ������B�R�[���X�^�b�N�E�C���h�E�ɂ́A���̂悤�ɕ\������܂��B
calc_kaijo(int 5) line 11 + 12 bytes
main() line 18 + 7 bytes
mainCRTStartup() line 206 + 25 bytes
KERNEL32! 77e67d08()
�R�[���X�^�b�N�E�C���h�E�ł́A���ɂ�����̂���ɂ�����̂��Ăяo���Ă��邱�Ƃ�\���܂��B�܂�Amain����calc_kaijo(5)���Ăяo���AmainCRTStartup��main�����Ăяo���Ă��܂��B
����ł́A���s�{�^���i�V���[�g�J�b�g��F5�L�[�j�������Ȃ���A�ϐ��E�C���h�E��R�[���X�^�b�N�E�C���h�E���ω����Ă����l�q���ώ@���Ă݂܂��傤�B���s�{�^���́A���̃u���[�N�|�C���g�܂Ŏ��s���Ă���܂��B���̂悤�ɂȂ�܂��B
�ϐ��E�C���h�E�ƃR�[���X�^�b�N�E�C���h�E�̕ω�
calc_kaijo������A�����̒l���P���炵��calc_kaijo�����Ă�Ă���l�q���ώ@�ł���Ǝv���܂��B�����āAi�̒l��1�̂Ƃ��ɁAF5 �������ƁA���ɂ̓u���[�N�|�C���g���Ȃ��̂Ńf�o�b�O�͏I�����܂��B
�X�e�b�v���s�ɂ��ĉ������O�� �w���s�x �� �w���X�^�[�g�x �̈Ӗ������Ă����܂��傤�B
����ł́A�X�e�b�v���s�ɂ��ĉ�����܂��B�X�e�b�v���s�ɂ́w�X�e�b�v�C���iF11�j�x �w�X�e�b�v�I�[�o�[�iF10�j�x �w�X�e�b�v�A�E�g�iShift + F11�j�x�̂R��ނ�����܂��B���t���������Ă��A���̂��Ƃ���������ƕ�����ɂ����ł���ˁc�B
�X�e�b�v�C���ƃX�e�b�v�I�[�o�[�̓v���O�������̖��߂��P�����s���Ă����܂��B���҂͖��߂̒��Ɋ��Ăяo�����܂܂�Ă���Ƃ��ɓ��삪�قȂ�܂��B�X�e�b�v�C���͊����Ăяo����Ă���Ƃ��A���̊��̓����̖��߂��P�����s���܂��B�X�e�b�v�I�[�o�[�́A���Ăяo�������s�������ƂɁA�Ăяo�������̎��̖��ߒ��O�Œ�~���܂��B
�X�e�b�v�A�E�g�́A���Ăяo����Ă������return���Ă��܂Ŏ��s���āA���̌Ăяo�����ɖ߂��Ē�~���܂��B
������₷�����邽�߂Ɏ��̂悤�ȃR�[�h��z�肵�Ă݂܂��傤�B
#include <stdio.h> void b(){ printf( "b start\n"); printf( "b end\n"); } void a(){ printf( "start a\n"); b(); printf( "end a\n"); } void main() { printf( "start main\n"); a(); printf( "end main\n"); }
���̃v���O�����̗���������Ă݂�Ǝ��}�̂悤�ɂȂ�܂��B���ɍs���قǎ��Ԃ��o�߂��Ă���Amain����a�����Aa����b�����Ă�ł����Ԃ�}�����Ă��܂��B
�T���v���̗���
void a()�̒���b();�̍s�Ƀu���[�N�|�C���g��ݒ肵�āA�f�o�b�O���J�n�����Ƃ��܂��B���̏ꍇ�A���̂悤��b();�̕����Ńv���O�����͎~�܂�܂��B
�u���[�N�|�C���g�Ŏ~�܂������
���F�̖��͎��Ɏ��s�����s��\���܂��B�܂�Ab()�͂܂����s����Ă��Ȃ�����ǂ��A���s���ĊJ��������Ɏ��s�����s�ł��B
��̂悤��b();�Œ�~�����Ƃ��ɁA�X�e�b�v�C���A�X�e�b�v�I�[�o�[�A�X�e�b�v�A�E�g�����s�����Ƃ��̒�~�ʒu��}������ƁA���̂悤�ɂȂ�܂��B�i��~�ʒu���킩��₷�����邽�߂ɁA����F�������Ă��܂��j
���ꂼ��̃X�e�b�v���s�P���̒�~�ꏊ
�X�e�b�v�C���i���F�j�̏ꍇ�́Ab()���̓����ɓ���A�P�s�ڂ����s����O�̏ꏊ�Œ�~���Ă��܂��B�X�e�b�v�I�[�o�[�i�ԐF�j�̏ꍇ�́Ab()�������s����a()���ɖ߂��Ă����Ƃ���Œ�~���Ă��܂��B�ԐF���printf("a end\n");�������Ă���̂ŁA���s�����Ƃ��ɍŏ��ɂ��̍s�����s����܂��B�X�e�b�v�A�E�g�i�F�j�̏ꍇ�́Aa()�����I������܂Ŏ��s���āA�Ăяo������main���ɖ߂��Ē�~���Ă��܂��B
�������A�Ăяo�����̒��Ƀu���[�N�|�C���g���������ꍇ�A�X�e�b�v�C���A�X�e�b�v�I�[�o�[�A�X�e�b�v�A�E�g�Ƃ��ɁA�u���[�N�|�C���g�Œ�~���܂��B
���ꂼ��̃X�e�b�v���s�P���̒�~�ꏊ
�ł́A���ꂼ����ǂ̂悤�Ɏg��������悢�ł��傤�B
��{�I�ɂ̓X�e�b�v�C�������Ŏ������ł��傤�B�������A�Ăяo�����̒��ɖ��炩�Ƀo�O���Ȃ��ꍇ��Aprintf�Ȃǂ̃��C�u���������Ăяo���Ă���ӏ��ł̓X�e�b�v�I�[�o�[���g���Ɨǂ��ł��傤�B�܂��A���݃X�e�b�v���s���̊��̒��ɂ͖��炩�ɖ�肪�Ȃ��ꍇ�́A�X�e�b�v�A�E�g�����s���ČĂяo������ɖ߂�ƁA�X�e�b�v�C����A�ł��Ċ������Ԃ��Ȃ��܂��B
printf���Ȃǂ̃����^�C�����C�u�����Ɋ܂܂����ɃX�e�b�v�C�����悤�Ƃ���ƁAprintf�̃\�[�X�̏ꏊ��q�˂Ă������ƁA���̂悤�ȉ�ʂɂȂ��Ă��܂��܂��B
�t�A�Z���u���ŃX�e�b�v���s
��̉�ʂ� �w�������[�h�x �Ƃ����A�t�A�Z���u�������A�Z���u�������o�C�g�R�[�h���ߒP�ʂŃu���[�N�|�C���g��ݒ肷�邱�Ƃ��ł��A�œK�����ꂽ�R�[�h�̃f�o�b�O�Ȃǂɕ֗��ł��B�����printf���̃o�C�i�����t�A�Z���u���������̂ɂȂ��Ă��܂��܂����B����́Aprintf���̃\�[�X�R�[�h��������Ȃ��������߁A�������[�h�ŊJ����������Ȃ��Ȃ�������ł��B���̂悤�ɂȂ����ꍇ�́A�X�e�b�v�A�E�g������A���̃E�C���h�E����Ă���Ăяo�����̃\�[�X�����Ă��������B���F�̖�����ƕ\������Ă���͂��ł��B
�܂��Amain����WinMain������return�Ŗ߂����ꍇ�ɂ��A���̂悤�ȏ�ԂɂȂ��Ă��܂��܂��B����́Amain����WinMain�����Ă�ł���mainCRTStartup��WinMainCRTStartup���������^�C�����C�u�����ɋL�q����Ă��邽�߂ł��B
���̂悤�ȏ�Ԃ������ɂ́A�����^�C�����C�u�����̊��ɂ̓X�e�b�v�C�������ɃX�e�b�v�I�[�o�[����悤�ɐS������Ƃ悢�ł��傤�B�Ƃ͂����A�X�e�b�v�C�����Ă��܂��č������邱�Ƃ�����ł��傤�B���̂��߂ɁA�����^�C�����C�u�����̃\�[�X�R�[�h���C���X�g�[������̂͂ǂ��ł��傤���B��������A�������[�h�ɂ͂Ȃ炸�Ƀ\�[�X�R�[�h�ɃX�e�b�v�C���ł��܂��B�����^�C�����C�u�����̃\�[�X�́A���̂悤�ȕ��@�ŃC���X�g�[���ł��܂��B