c
2010ǯ05��28��
�Ƕ�Ǥ� gcc��clang �˲����쵤̣ (?) �Ǥ�����Ϸ�ޤ� C ����ѥ���Ȥ��� PCC (Portable C Compiler) ������ޤ���
http://ja.wikipedia.org/wiki/Portable_C_Compiler
�Ȥꤢ�����ӥ�ɤ��Ƥߤޤ��礦��
2009ǯ08��21��
���Ĥ⤤�Ĥ�ޥ��ʡ��ʥͥ��Ǥ����ޤ���
�ץ�����ߥ󥰸��� C ��2���Ρ���̯�ʵ��Ҥ����ˤʤ�ޤ�����
���ޤ�ˤ⤵��äȽ񤫤�Ƥ��ޤ�������̣�����Ǥ������������Ǥ� ?
�¤����������ǤϤʤ��ơ�UNIX �Υ�����֥�Ǥϡ�8 �� 9 �ϡ�8 �ʿ��� 10 �� 11 �Ȥ��ư����Ƥ�����Ǥ��͡� ����Ϥ䡣
��UNIX Assembler Reference Manual, Dennis M. Ritchie��
http://www.tom-yam.or.jp/2238/ref/as.pdf
UNIX v6 �����Υ�����֥�δ�̯�ʽ�������K&R ����1�Ǥޤ�̮����³���Ƥ����櫓�Ǥ���UNIX �� C ����ˤϡ����������Τ����ä���¿���Ǥ���
�ץ�����ߥ󥰸��� C ��2���Ρ���̯�ʵ��Ҥ����ˤʤ�ޤ�����
����Ͽ C �ѹ���������פ����ѡ�
��ï�⤬�����ʤĤޤ���ѹ���8 �� 9 �� 8 �ʿ��ǤϤʤ���(p.328)
���ޤ�ˤ⤵��äȽ񤫤�Ƥ��ޤ�������̣�����Ǥ������������Ǥ� ?
�¤����������ǤϤʤ��ơ�UNIX �Υ�����֥�Ǥϡ�8 �� 9 �ϡ�8 �ʿ��� 10 �� 11 �Ȥ��ư����Ƥ�����Ǥ��͡� ����Ϥ䡣
��UNIX Assembler Reference Manual, Dennis M. Ritchie��
http://www.tom-yam.or.jp/2238/ref/as.pdf
An octal constant consists of a sequence of digits; �ơ�8�ǡ� and �ơ�9�ǡ� are taken to have octal value 10 and 11.
UNIX v6 �����Υ�����֥�δ�̯�ʽ�������K&R ����1�Ǥޤ�̮����³���Ƥ����櫓�Ǥ���UNIX �� C ����ˤϡ����������Τ����ä���¿���Ǥ���
2009ǯ08��07��
���������äˤʤ�ޤ����������������������ò¤¤Ã¤ï¿½ï¿½ï¿½ï¿½Ë¡ï¿½puts �ˤʤ����Ԥ��դ��Τ��Ȥ����ͥ��ˤĤ���Ĵ�٤Ƥ�������������ʸ�ò¶µ¤ï¿½ï¿½Æ¤ï¿½é¤¤ï¿½Þ¤ï¿½ï¿½ï¿½ï¿½Î¤Ç¾Ò²ð¤·¤Þ¤ï¿½ï¿½ï¿½
"C and the AT&T Unix Port -- A Personal History", Stephen C. Johnson (����)
http://roguelife.org/~fujita/COOKIES/HISTORY/USENIX/johnson.html
³�����ɤ�
"C and the AT&T Unix Port -- A Personal History", Stephen C. Johnson (����)
http://roguelife.org/~fujita/COOKIES/HISTORY/USENIX/johnson.html
³�����ɤ�
2009ǯ07��28��
�������Ȼ���������ä˴�Ϣ���ơ��ºݤˤ��Υ����ɤ򥳥�ѥ��뤷�ơ��ѿ����ɤ�������Ƥ��뤫��ߤƤߤޤ��礦��
v.c
int x; /* (1) */ int y = 0; /* (2) */ int z = 1; /* (3) */ extern int x; /* (4) */
���Υե�����򥳥�ѥ��뤷�ƥ�����֥���Ϥη�̤򸫤Ƥߤޤ��礦��
gcc -S v.c
2009ǯ07��27��
C �ε��ʤ˴ؤ������äȤ����äǤ���
���ޤǡ�extern ���դ��Ƥ��ʤ��Ǿ������Ǥ��ѿ�����ʥ������Х��ѿ��ˤϡ������������ˤʤ�Τ��ȻפäƤ����ΤǤ�������̩�ˤϰۤʤ뤽���Ǥ���
(1) �� (2) �ϡ�ñ�˽���ͤ�Ϳ�����Ƥ��뤫���ʤ��������ΰ㤤�ǡ��ɤ��������˸����ޤ���
�Ȥ���������̩�ˤ� (2) �������������ǡ�(1) �ϲ�����Ȥ��������ˤʤ�Τ������Ǥ���³�����ɤ�
���ޤǡ�extern ���դ��Ƥ��ʤ��Ǿ������Ǥ��ѿ�����ʥ������Х��ѿ��ˤϡ������������ˤʤ�Τ��ȻפäƤ����ΤǤ�������̩�ˤϰۤʤ뤽���Ǥ���
int x; /* (1) */
int y = 0; /* (2) */
extern int x; /* (3) */
(1) �� (2) �ϡ�ñ�˽���ͤ�Ϳ�����Ƥ��뤫���ʤ��������ΰ㤤�ǡ��ɤ��������˸����ޤ���
�Ȥ���������̩�ˤ� (2) �������������ǡ�(1) �ϲ�����Ȥ��������ˤʤ�Τ������Ǥ���³�����ɤ�
2009ǯ07��03��
1969 ǯ�� Bell Lab �� Kenneth L. Thompson �� Dennis M. Ritchie ���ץ��ȥ����פ������������������ơ���ǯ�� UNIX 40 ��ǯ�����ܤ������Ǥ���UNIX �� 1/4 �����Ȥ����ܤ�����ޤ���������10 ǯ������ UNIX ��Ⱦ�����Ǥ��͡�
����ä��Τ��ä򤷤����Ȼפ��ޤ���35 ǯ�᤯���� C ���äǤ����ʤ�������� 20 ��ʤΤǡ��ޤ����ޤ�Ƥޤ��󡣡�1975 ǯ��UNIX v6 ����꡼������ޤ��� (��� BSD UNIX �ˤĤʤ����ǤǤ�)�������Ǥ� pre K&R C �Ȥ���������� C (C99) ���鸫����������Ѥ� C �Ǽ�������Ƥ��ޤ���
Dennis M. Ritchie, "C Reference Manual" (1975)
http://www.cs.bell-labs.com/who/dmr/cman.pdf
����������ޤ��Τ褦�˻Ȥ��Ƥ��롢void/unsigned/const/enum/union/volatile �� ������ؤ�Υ�����ɤ����¤�¸�ߤ��ޤ��󡣡������ entry �Ȥ�����Υ�����ɤ����ä��ꤷ�ޤ�����
�ʤ�ȡ����Υ��㥹�ȤȤ�����ǰ��¸�ߤ��ޤ��󡣤���ʤ�ǤޤȤ�ʥץ�����फ����Τ��� ? �Ȼפ����⤷��ޤ��󤬡�Lions' Commentary on UNIX ���ɤ�Ǥ���ȡ��������������򤤵��������ָ���ޤ���
���ͥ����� : 2238�����
���㥹�Ȥ� unsigned ��¸�ߤ��ʤ��Τǡ�����դ������� unsigned �ǰ����������ϡ��ݥ����ѿ����������Ƥ���׻����Ƥ����褦�Ǥ����ݥ��󥿤� unsigned �Ǥ����顢������֥�Ū�ʴ��Ф��餹��С�unsigned �Ȥ���������ɤ�̵���Ƥ⺤��ޤ���� :-)
rdwri.c
����Υ��ꥢ�ɥ쥹������Ȥ��� define ����Ƥ����硢�ɤΤ褦�ˤ��ƻ��Ȥ�����ɤ��ΤǤ��礦�� ? ������ C �ʤ�С�*(int *)SW �Τ褦�ˡ��ݥ��󥿤ؤη����㥹�Ȥ�Ȥ����ɤ��櫓�Ǥ��������㥹�Ȥ�¸�ߤ��ޤ���
param.h �򸫤Ƥߤޤ��ȡ�
�������Ǥ��礦�� ? ���ݤǼ��������㤤������Ȼפ�줿���⤤�뤫�⤷��ޤ��󤷡��ѥ���Ū�����򤤤Ȼפ�줿���⤤�뤫�⤷��ޤ���
��ˤϡ�pre K&R �ϡ������Υߥ˥ޥꥺ��Ū�������ȼ����������פΥХ�󥹤�����äƤ������Τ褦�˻פ��ޤ���ñ�˳ؽ�Ū�ʰ�̣�ǤΥ��ޡ��Ȥʸ����¾�ˤ⤿�����󤢤�ޤ������ʤ� UNIX v6 ��񤤤�����ʤ櫓�Ǥ����顢��Ϥ������Ϥ��㤤�ޤ���
����ä��Τ��ä򤷤����Ȼפ��ޤ���35 ǯ�᤯���� C ���äǤ����ʤ�������� 20 ��ʤΤǡ��ޤ����ޤ�Ƥޤ��󡣡�1975 ǯ��UNIX v6 ����꡼������ޤ��� (��� BSD UNIX �ˤĤʤ����ǤǤ�)�������Ǥ� pre K&R C �Ȥ���������� C (C99) ���鸫����������Ѥ� C �Ǽ�������Ƥ��ޤ���
Dennis M. Ritchie, "C Reference Manual" (1975)
http://www.cs.bell-labs.com/who/dmr/cman.pdf
����������ޤ��Τ褦�˻Ȥ��Ƥ��롢void/unsigned/const/enum/union/volatile �� ������ؤ�Υ�����ɤ����¤�¸�ߤ��ޤ��󡣡������ entry �Ȥ�����Υ�����ɤ����ä��ꤷ�ޤ�����
�ʤ�ȡ����Υ��㥹�ȤȤ�����ǰ��¸�ߤ��ޤ��󡣤���ʤ�ǤޤȤ�ʥץ�����फ����Τ��� ? �Ȼפ����⤷��ޤ��󤬡�Lions' Commentary on UNIX ���ɤ�Ǥ���ȡ��������������򤤵��������ָ���ޤ���
���ͥ����� : 2238�����
���㥹�Ȥ� unsigned ��¸�ߤ��ʤ��Τǡ�����դ������� unsigned �ǰ����������ϡ��ݥ����ѿ����������Ƥ���׻����Ƥ����褦�Ǥ����ݥ��󥿤� unsigned �Ǥ����顢������֥�Ū�ʴ��Ф��餹��С�unsigned �Ȥ���������ɤ�̵���Ƥ⺤��ޤ���� :-)
rdwri.c
6323: /* Return the logical maximum 6324: * of the 2 arguments. 6325: */ 6326: max(a, b) 6327: char *a, *b; 6328: { 6329: 6330: if(a > b) 6331: return(a); 6332: return(b); 6333: }volatile �Ϥޤ������λ���� C �� PDP-11 �ޥ���������֥�ߤ����ʤ�ΤʤΤǡ���Ȥ�ȤۤȤ�ɺ�Ŭ���ϹԤ��Ƥ��ʤ��ä��Τ������̵���ä��ΤǤϤʤ��Ǥ��礦������� register �Τ褦�ʥ�����ɤ�Ȥ�����Ŭ����ؼ����Ƥ�������Ǥ��������̣��C �����Ϥ��ħ����褦�ʥ�����ɤ��Ȼפ��ޤ���
����Υ��ꥢ�ɥ쥹������Ȥ��� define ����Ƥ����硢�ɤΤ褦�ˤ��ƻ��Ȥ�����ɤ��ΤǤ��礦�� ? ������ C �ʤ�С�*(int *)SW �Τ褦�ˡ��ݥ��󥿤ؤη����㥹�Ȥ�Ȥ����ɤ��櫓�Ǥ��������㥹�Ȥ�¸�ߤ��ޤ���
param.h �򸫤Ƥߤޤ��ȡ�
0166: #define SW 0177570 0167: 0168: /* --------------------------- */ 0169: 0170: /* structure to access : */ 0171: 0172: 0173: /* an integer */ 0174: 0175: struct { int integ; };���ΰ�̣�����򤹤�ˤϡ�pre K&R C �� struct �����Υ��С���̾�����֤�ñ��Ǥ���Ȥ������ͤ��ΤäƤ���ɬ�פ�����ޤ���ñ����Ƭ���ɥ쥹����Υ��ե��åȤȡ����С��η���������̣������ޤ��������ơ�����Ū�ʥ��㥹�ȹ�ʸ�Ϥ���ޤ��󤬡�������֥�Ū�ʰ�̣�Ǥΰ��ۤη����㥹�Ȥ��Ԥ��ޤ����������黻�� -> �κ�¦�ˤ��륹�����ͤϡ�����̵�Ѥǹ�¤�ΤؤΥݥ��󥿰�������ޤ�����������ʸ��������ڷ������å��ϹԤ��ޤ��󡣤Ȥ����櫓�ǡ�����Υ��ꥢ�ɥ쥹���顢�������Ȥ����ͤ򻲾Ȥ��������ϡ�SW->integ �Τ褦�ˤ��ƻ��ȤǤ���櫓�Ǥ���
�������Ǥ��礦�� ? ���ݤǼ��������㤤������Ȼפ�줿���⤤�뤫�⤷��ޤ��󤷡��ѥ���Ū�����򤤤Ȼפ�줿���⤤�뤫�⤷��ޤ���
��ˤϡ�pre K&R �ϡ������Υߥ˥ޥꥺ��Ū�������ȼ����������פΥХ�󥹤�����äƤ������Τ褦�˻פ��ޤ���ñ�˳ؽ�Ū�ʰ�̣�ǤΥ��ޡ��Ȥʸ����¾�ˤ⤿�����󤢤�ޤ������ʤ� UNIX v6 ��񤤤�����ʤ櫓�Ǥ����顢��Ϥ������Ϥ��㤤�ޤ���