ToDo:
http://partake.in/events/313b563f-acf7-47b9-908c-ee0461b77fc0
�˹Ԥä���
@ytomino ���� boost_fcontext_align �� -16 ���Ƥ���Ȥ��襤�Ǥ����Τ��ɤ�Ǥ��������ˤ礴�ˤ���ɤ�Ǥ�����̤Ȥ��ơ�������ɤ�Ǥ륳���ɤ� ss_base �Υ��饤��ˤ����Ȥ��Ƥ��餺������ϳ��ݤ���ľ��Υ����ΰ�饤�����Ӥˤ����Ȥ��Ƥʤ����� 16B �ۤ�̵�̤��ΰ褬�������٤�̵���ʤ㡢�Ȼפä���
�ʤ������������ɤ�����Ȥ��Υ����ɤ��ɤ�櫓�ǡ��������������ɤ�Ĥ��Ƥ�����¾�οͤΥ����ɥ�ǥ��ʤ�����Τ������餷�����Ȥ����������������줿�����Ǥ��롣 github �Ȥ��˥����ɾ夲��ͤϤ��������ݥ���Ȥ�Ĥ��Ƥ����Ȥ�����! �ȥ��ɥХ�����������
x86-64 ���ɤ�ʤ����Ȥ������Ȥ��ä����ɡ� @ytomino ����ۤɤ������餹��Ф���ʤ櫓���ʤ��ơ�ñ�˰����ν礬���ܶ������Ȥ��������Ф��Ƥ������ɤ��ȻפäƤ��롣�ɤ���������֥���ɤ�Ǥ�����ն�� printf ������櫓�ǡ����� printf ���ϤäƤ��ѿ�������ɤ��Ȼפ����Ĥޤꡢ printf ��ľ����ʸ�������������Ƥ���쥸������ %rdi = �������Ǥ��ꡢ�ե����ޥåȤˤ��ä���Τ�Ĥä���Ǥ�Ȥ������������ = %rsi �Ǥ��롣
���Τؤ�Υ����ɤ��٤����������äơ��ĿͤȤ��Ƥϡ� RDI RSI RDX RCX R8 R9 �Ȥ�����Ϥʤ�Ȥʤ��Ф��Ƥ� (@ytomino �����Ŭ���˸��ä��礬���äƤ��뤳�Ȥ��ͼ��ȶä���) ��ΤΡ��ޤ�����ʤ�������Τ��Ȥʤ���Ĺ��Ū�˳Ф����櫓�ʤ��ơ��ޤ��ն�� printf ��õ���Τ��ɤ��ȻפäƤ��ޤ��� printf ��̵�����ñ�ˡ֤����ն�� GCC ���������������ɤ������������Ϥ��Ƥ���פȲ��ꤹ����ɤ���
���⤽�� x86-64 ���������ʤΤϤ���礤��䤳�����������ΰ����Ϥ� ABI �ȡ��Х��ʥ����Ȥ��Ƥ��ƥ�����֥�ˤ����Ȥ���������֥꤬������ʤ����� rex prefix �����äƤ�쥸�����ξ�̥ӥåȤǤ��äơ������Ǥʤ������Ū�ˤϤ櫓�狼��� 0x4(%esp) �Ȥ��Υ��ե��åȤ��İ����ʤ��Ȥ����� x86 ����ɤߤ䤹���� GCC �� x86 �� push/pop �ǰ������Ϥ��褦�ˤʤ륪�ץ������Ѱդ��Ƥ����Фʤ��ĤȤ��פ����餤�ˡ��������� stack �Υ��饤��Ϥ����Ȥ�äƤ��������͡��ä����١���������̣�� boost_fcontext_align �ϤѤäȸ��ɤ����Ƥ⥢�饤��Ĥ��Ƥʤ��Ƶ��ˤʤä����ɺ���ϴط��ʤ���
�ѿ�̵���� 1 ���� n �ޤǤ��ѿ����פ���Ȥ��������ͤ����ꡣ�Ŀ�Ū�ˤ� libc �˰�¸���������Ǥʤ�ʣ������䤬�פ��Ĥ����Τǡ� libc ���������Ʋ�������ȹͤ��Ƥ���ΤΡ��ʤ��ʤ��פ��Ĥ��ʤ��ä����Ȥ����ΤϿ�����ˡ�Ϥ����ΤΡ� libc ������ getenv/setnev ������Ǽ����ʳ��β��ԤǤ�ʤ�����櫓����͡�̤���˹ͤ��Ƥ��롣
�����Ƥ��ä���ȯ������ä� iOS ���ץ꤬���̤����ä�����̾�����ƾ������Ƥ�ߤ����ʤΡ���̾�äƤ����Ƕ������Ф���������ɡ������֤��˺��Ƥ��ޤä�(�ͤε����Ȥ����Τϼ����������餷��������� 196/196 ���ä� http://www.sporcle.com/games/g/world �����ǤϤ��֤� 100/196 ���٤������Ȥ��⤦) �Ȥ����Τ⤢�뤱�ɡ���������˥��Ȥ������ƾ�����Τ˼����Τ��Ƴ��ऺ�������ä���
�����ȸ����� putty �� coroutine ���ä��Фơ�����äƤ��ʤ���줿���������äƤ��ơ�
�Ȥ����������ä���������������˺��äݤ��Τ������˹����ʤ��Ȥ��Ȼפ���
context Ū���ͤ����������ΤϤȤˤ���������������ǥХå��ˤĤ��ƿ����ܤ˹ͤ��䤬�쥯�� boost �ä��äǡ� C/C++ �äƥ�ĤϤ���������ǥХå��Ȥ��Ȥꤹ�� API ����ɸ����Ѱդ��Ƥۤ������Ĥޤ� context ���륳���ɤʤ��ï�Ǥ�(���ʤ��Ȥ����ä��ٶ������)��櫓�����ɡ������������Х��ץ�Ȥ��� context ������ߤ��äƤ��줬�ǥХå��Ǥ����Ǥ������äƤ�����
�ץ�����ޤϥǥХå��λ��֤�ޥ���˹ͤ���Х��äƤΤ������˥ޥȥ�Ǥ��Ļ�ǰ�ʤ��餤�ռ�����Ƥʤ����ɥХ����ǡ����ʤ��Ȥⷯ��8����ϫƯ�ʤ�8���֥����ɤ�ΤϷ��ηˤȤäƴְ㤤�ʤ��������֥��ޥ����³��Υѥե����ޥǥ����ɤ����硢����2�ܤλ��֤��ǥХå���ɬ�פǤ���פäƤ��� (������ ken thompson ��) ǧ�����ᤷ�����餤�������ơ�¿���Ȥ⥪�ޥ��������ɤ����֤äƤΤ�3�������٤������ݤǤ��ʤ�����Ȥ����и礬ɬ�פ��Ȼפ�������ʾ�Ư��ɬ�פ�����ʤ�������������꤬����ΤǤ��äơ��Ǥ���Ư���٤��Ǥʤ���
�Ȥ���;�̤ϤȤ⤫�������ʤ��Ȥ⥳���ɽƤ�ʾ�λ��֤�ǥХå����Ƥ������顢�����ɰʾ�˥ǥХå��˸���ɸ��ˤ�����ޤ��Ƥϥޥ���˹ͤ����ߤ������äƤΤϺǶ���줿�������Τ褦�˷����֤����äƤ��롣�Ƕ������ˤ��줷����ĥ���Ƥʤ������餹�롣 POSIX �ƥ�ĤϤ��Τؤ�Υ��ݡ��Ȥ� windows ����٤�ޤ��äƤ�äƤ���ǧ���ǡ��������Ƕ�� pthread_setname �Ȥ������Τ����ĤΤޤˤ��Ǥ��Ƥơ� gdb �Ϥ����ͤ�����ɽ�����Ƥơ��ޤ��������ĥޥ��ˤʤäƤƴ����ǤϤ��롣 pthread_create �� stacktrace ���ݻ�����Τ�ᤤ�Ȼפ����ޤ����Τؤ�̵�뤷�� context �Ȥ����äƤ⥭������(˫����դǤϤ��뤬)�ʳ�ï��Ȥ�ʤ����������ʤ������ʤ���
ͽ�۰ʾ����줬ί�ޤäƤ��餷�������߲�Ǥ��ä��꿲�Ƥ������Ĥ�Τ��Ȥʤ����繾�����������ˤ��ꤨ�餤�ƥ५�Ĥ���ˡ����Ķ�������Ⱦ�괹���ޤ�ɬ�פ���˾Ū���������Ԥ����Ͼ��ᤷ���Τ˵�����Ϥ�����Ⱦ�괹���Ǥ����ꤷ�ơ����ʧ���ε�ư�Ȥ����Τ���Ǥ��͡�
(00:46)
https://www.e-run.jp/v-marathon/index.html
��3��Ⱦ�к��˻��ä������ꥢ��ޥ饽��Ǥ��롣
�ͤΥޥ饽����Ȥ����Τ�
�Ȥ��������ǡ��ޤ��פ�����������äƤʤ����ޤ������ʤ� 10km ���ä���ˤϰƳ�®���ä��ʡĤȤ������ݡ���ع��ޤǤǤ���ʤ�˻Ȥä����������ϳ�ȶ����褦�Ǥ����
�ʤ�����������äƤơ�¾�ˤ���ʿͤ����ʤ��ä��ΤǤ������Լ������ä��������롣����������äƤ����� 2,3km ���餤���ä�������ǵ��ꤿ���ʤäƤ��Τޤ��������ĤäƤ�����ư�������ä���
(01:08)
���� Z �� RO16 �����Ǥ����
ʷ�ϵ�Ū�� P ���������νդȤ������������ɡ��ޤ� PT �οͿ���Ʊ���ʤ����ʡ�
�ͤδ��ФǤ� Pimba �äƤ�����꤫�� T �ζ��ߤ��Ф��� P ��Ŭ�ڤ��н��褦�ˤʤäơ� T �������褦�ʤ��ȤФä���äƤ뤫�麣�ξ����ˤʤä��Ȥ����������Ƥ��롣���ޤ� P �Ȥ������ܤ��⤷���
(01:43)
�Ȥ�������ä��褦����
����������ʡ�
http://code.google.com/p/chromium/issues/detail?id=123876
http://code.google.com/p/naclports/source/detail?r=574
�褯�狼��� nmf �� inject �Ѥ� IRT ����Ƥ�餦�褦�˺��ʤ����Ф����Τ��ʡ�
������褯�狼��� newlib ����ư���ʤ��Ȥ��ʵ������ʤ��Ǥ�ʤ��ʤ����
�褯�狼���ΤǸŤ���Ĥ�Ȥ����Ȥ�
(06:13)
xor ���оݤ������餵�ޤˤ��������褦�˸�����
e20: 8b 05 08 00 04 10 mov 0x10040008,%eax e26: 01 d0 add %edx,%eax e28: ba 00 00 00 00 mov $0x0,%edx e2d: 11 ca adc %ecx,%edx e2f: 8b 08 mov (%eax),%ecx e31: 83 c0 04 add $0x4,%eax e34: 89 8d 00 ff ff ff mov %ecx,-0x100(%ebp) e3a: 90 nop e3b: 90 nop e3c: 90 nop e3d: 90 nop e3e: 90 nop e3f: 90 nop e40: 89 95 04 ff ff ff mov %edx,-0xfc(%ebp) e46: 8b 08 mov (%eax),%ecx e48: b8 ff ff ff ff mov $0xffffffff,%eax e4d: ba ff ff ff ff mov $0xffffffff,%edx e52: 31 c1 xor %eax,%ecx e54: 31 d1 xor %edx,%ecx e56: 8b 05 d8 c6 05 10 mov 0x1005c6d8,%eax e5c: 90 nop e5d: 90 nop
(06:13)
long long �����������
3LL<<-1 �Ȥ��Ρ�����ͤ� long long shift �������������Ȥ����� GCC �Ȱ��פ��Ƥʤ���
long long __ashldi3(long long a, int b) { b &= 63; #ifdef __TINYC__
�Ȥ����н�Ǥ��롣
long long �� ~ �Ȥ����� xor �Ǥ������ʤ��Ȥ������Ƥ����� �ɤ��� xor ��������ʤ��ƥ쥸��������ʤ��ʤäơ� long long �⤦����ܤΥ쥸��������ݤ�����˰���ܤΥ쥸��������������֡� ��������äƤ��Ĥ� vstack ���Ѥޤ�Ƥ�ȵ�����Τ��ʡ��档
/* allocate second register */ r2 = get_reg(rc2); printf("%s r=%d r2=%d\n", r==r2?"oops":"OK",vtop[-1].r,r2);
�Ȥ��� oops �ϽФ��㤤�������롣
���㡼�ʤ��Τǡ� __xordi3 �Ȥ���
long long __xordi3(long long u, long long v) { DWunion uu, vv, ww; uu.ll = u; vv.ll = v; ww.s.high = uu.s.high ^ vv.s.high; ww.s.low = uu.s.low ^ vv.s.low; return ww.ll; }
�Ȥ���������������Ƥ�äƤ����Ƥ֤��Ȥˤ����� �ġ��� TCC �� long long �� x64 �ʳ���ư���Ƥ�Τ��ԻĤ����뤷�� git blame ���Ƥ�ï�����������äƤʤ������꤫�顢���֤� fabrice �ʳ�ï�����Ƥʤ��������롣 ���ä��Ĥ��������ؿ����������Ф����Τˡ�
���Ȥ��ͥ����ɤ���������ɡ� libtcc1.a ���ɤ�����Υ���ܥ��褬�����������Ȥ���������ܥ뤬������褵��Ƥʤ��� �����Ƥ褯�狼��ʤ��� ���㡼�ʤ��Τ� tcc ���� libtcc1.a �����Ƥ�äơ� __divdi3 �Ȥ����Τؤ������ i686-nacl-tccsyms.tab �ˤĤä���Ǥ��Ȥ����ӵ��Dz�衣
(08:06)
http://d.hatena.ne.jp/nakamurabashi/20100110/1263135584
����Ϥ��ꤽ�����ä��ʤ��Ȼפä���
SC2 ���˥ߥ˥ޥå���Ƥ�ͤ������櫓�ǡ��ץ������ޡ���30�Ͳ��������ǿꤨ�Ƥ��äƤΤ�Ƴ����������ä���ʤ��Ȥ�
(00:21)
���錄�褦��
�ͥ��Х�
�������������ʤ��ȻפäƤ����ɡ� ̡����Ǥ����ǽ����Τ��٥��ȤǤ�����餻�Ƥ�������! �Ȥ����äƤ��θ�Х��ޥ��Τ⽪���äƤ����Τ� �ޤ����ʸ���Ū���ɤ��ʤ��Ȥ����äʤʡ� ��������Х��ޥ�����⽩���饢�˥�3���Ȥ��ʤΤ���?
(00:42)
�Ƕ�� syscall �Ȥ� libc �Ȥ����������ʴؿ������ä���� �Ȥ������Τ�Ŭ���˽Ϥ���Ƥߤ�
http://shinh.skr.jp/h/?RecentFunctions
(00:22)
���Ȥ�������������������ä���
���ä��Τǡ�8�䤯�餤��2�����ʤ����������������ȸ��Ƥ������������
�������ä��Τ����ɡ��ʤ����ɤ����ä����Ȥ����ȡ���̣���狼������ä����Ȥ��������ʤ����Ǥ�Dz��Ǥ���̯���Ȼפä�����ͳ��Ʊ��������̣���狼��顢�ʤΤǤ��ΰ㤤�Ϥʤ�ʤΤ��Ȥ�����
�Dz�ϵͤ���ߤ����ǡ��ޥ���ˤ�äƤ�Τ˥��㥰�ݤ����Ȥ��뤫�饷�塼�����������ʤ��ơ�ñ�˥��㥰�ݤ��������㤦�Τ��ʡ�
�����Ĥ��η����֤���륷���������褯�Ǥ��Ƥ�Ȥ����Τ��������ä��Τǡ��Dz�ǤϷ����֤���륷���ʤ��Τ������Ȥ����ä⤢�롣��Ʈ���γ����Ф�Ȥ����ȼ֤������餷��������
(02:28)
https://bugs.webkit.org/show_bug.cgi?id=85153
���ԥͥ����äƤ��Ȥ���?
Qt �Ȥ����� non Mac port �� WebKit �Ǥ�����̱�ʤΤǡ� EWS (early warning system ���ä�) �ΥܥåȤ��֤��ʤäƤƤⵤ�ˤ����˥��ߥåȤ����㤦�ͤ�¿���ơ�������ᤷ����Ū�ʡ�
(18:18)
�̤˲ˤȤ����櫓�Ǥ�ʤ��Τ�����(�ˤǤ��礦���ʤ��Ȥ�����̣����Ƭ��)��
http://georgebest1969.typepad.jp/
��ܤ����ɤ�Ǥ����顢�����������ʡ��ȡ����ޤ���𤬤狼��ʤ�����Ԥ��ɤ������Ȥ����Τⶽ̣����������ɡ����̤˶����ᤤ���ä����ʤ��ȡ�
�Ρ֤ߤ������uselessness�ؤμ��Ф����ڤ��פȤ��������ʤ���
(22:58)
�� | 2012ǯ 4�� |
�� | ||||
�� | �� | �� | �� | �� | �� | �� |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
���ƥ�ե�Ǥ��� �������Ҥϼ�ͳ�˻��Ѥ��Ƥ��������ƹ����ޤ��� ����¾�Τ�Τ�GPL�����Ǥ���Ф�������Ѥ˴ؤ���ʸ��ϸ����ޤ��� �ʤˤ�����в�����륢�ɥ쥹�ء�
_ yt [�����Ϥ��꤬�Ȥ��������ޤ����� ��ʬ�㤤���ǡ���Υ�����֥���μ���cmov���о줷�������꤫����˻���ˤĤ���..]
_ shinh [ABI �Ϥʤ� VC �ǰ㤦�äƤΤȡ� SysV ABI �ϲ��Τ� RAX �� SSE �쥸�����������äƤΤ⤢..]
_ Rui [RAX�˰�������ư���������θĿ����Ϥ��Τ�va_args��Ƥ֤Ȥ��Υ쥸��������¸���륪���С��إåɤ餹����ä�..]
_ shinh [���������ʤ�Ǥ��͡��褯�狼�餺�����äƤ��Τ��褯�狼��ޤ��͡� TCC ��ɬ�� RAX ����Ƥ�ݤ��Ǥ����ĤȤ���..]
_ Rui [XMM��16�Ĥ����ʤ��ä��ä����Ȼפä���Ǥ��������Ϥ��ˤĤ����Τ�XMM0~7�����Ǥ����͡�����RAX�Ϥ��..]