+===========+ |P/ECE¸¦µæ¼¼| +===========+ P/ECE¸¦µæµ­Ï¿ 2016ǯ ==================== * Tue Oct 25 21:18:48 JST 2016 Naoyuki Sawa - sin()¤Î¥Ð¥° ¢£ÌäÂêÅÀ P/ECE³«È¯´Ä¶­¤ËÉÕ°¤·¤Æ¤¤¤ë¡¢EPSONÀ½C¥é¥¤¥Ö¥é¥ê¤Î¡¢¡Ösin()´Ø¿ô¡×¤Ë¤Ï¡¢¥Ð¥°¤¬¤¢¤ê¤Þ¤¹¡£ ¡Ø¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤¹¤ë±é»»¤¬Ä¾Á°¤Ëºß¤ë¤È¡¢sin()´Ø¿ô¤Î·ë²Ì¤¬ÉÔÀµ¤Ë¤Ê¤ë¡£¡Ù¤È¤¤¤¦¥Ð¥°¤Ç¤¹¡£ ¡Ú¥Ð¥°¤òºÆ¸½¤¹¤ë¥×¥í¥°¥é¥à¡Û ¨¢ #include ¨¢ #include ¨¢ #include ¨¢ #define NOPCESPRINTF ¨¢ #include ¨¢ unsigned char vbuff[128*88]; ¨¢ int errno, write; /* dummy */ ¨¢ void test(); ¨¢ void pceAppInit() { ¨¢ pceAppSetProcPeriod(255); ¨¢ pceLCDSetBuffer(vbuff); ¨¢ pceLCDDispStart(); ¨¢ pceFontSetPos(0, 0); ¨¢ test(); /* ¥Æ¥¹¥È¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤¹ */ ¨¢ pceLCDTrans(); ¨¢ } ¨¢ void pceAppProc(int cnt) { /** no job **/ } ¨¢ void pceAppExit() { /** no job **/ } ¨¢ //¢¬¢¬¢¬¢¬¢¬¤³¤³¤Þ¤Ç¤ÏËÜÂê¤È´Ø·¸¤Î̵¤¤Äê·¿½èÍý¤Ç¤¹¡£¢¬¢¬¢¬¢¬¢¬ ¨¢ //¢­¢­¢­¢­¢­¢­¤³¤³¤«¤é¤¬ËÜÂê¤Î¥Æ¥¹¥È¥ë¡¼¥Á¥ó¤Ç¤¹¡£¢­¢­¢­¢­¢­¢­ ¨¢ volatile int x = (1<<30); ¨¢ void test() { ¨¢ char buf[100]; ¨¢ double s; ¨¢ x += x; /* ¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤¹¤ë±é»»¤¬Ä¾Á°¤Ëºß¤ë¤È¡Ä */ ¨¢ s = sin(1.57); /* sin()´Ø¿ô¤Î·ë²Ì¤¬ÉÔÀµ¢­¤Ë¤Ê¤ë¾ì¹ç¤¬Í­¤ë¡£ */ ¨¢ sprintf(buf, "%f", s); /* sin(¦Ð/2)=1¤Î¤Ï¤º¤Ê¤Î¤Ë¡Ö-1¡×¤Èɽ¼¨¤µ¤ì¤ë¡£ */ ¨¢ pceFontPutStr(buf); ¨¢ } ¾åµ­¤Î¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤È¡¢sin(¦Ð/2)=1¤Î¤Ï¤º¤Ê¤Î¤Ë¡¢¡Ö-1¡×¤Èɽ¼¨¤µ¤ì¤Þ¤¹¡£ ¢£¸¶°ø ¸¶°ø¤Ï¡¢EPSONÀ½C¥é¥¤¥Ö¥é¥ê¤Î¡Ösin()´Ø¿ô¡×¤Î¡¢¥Ð¥°¤Ç¤·¤¿¡£ ¥Ð¥°¤Î²Õ½ê¤Ï¡¢°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£±¦Â¦¤Î¥³¥á¥ó¥È¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£ ¡ÚEPSON¥é¥¤¥Ö¥é¥ê¤Î¡Ösin.s¡×¤ÎÀèƬÉôʬ¤òÈ´¿è¡Û ¨¢ ;============================================================================== ¨¢ ; Function: double sin(double x) ¨¢ ; ¨¢ ; Input: %r12: Argument x in radian double (low). ¨¢ ; %r13: Argument x in radian double (high). ¨¢ ; ¨¢ ; Output: %r10: Return value, sine of x in double (low). ¨¢ ; %r11: Return value, sine of x in double (high). ¨¢ ; ¨¢ .code ¨¢ .align 1 ¨¢ .global sin ¨¢ ¨¢ sin: ¨¨¤³¤³¤«¤é³«»Ï¤·¤Æ¡Ä ¨¢ pushn %r3 ; Save registers %r3...%r0. ¨¢ ¨¢ xsub %sp,%sp,20 ; Presearve working area in five words. ¨¢ ¨¢ ¨¢ ¨¢ ;[%sp+16] = Taylor series's sign parameter (high). ¨¢ ¨¢ ;[%sp+12] = Taylor series's sign parameter (low). ¨¢ ¨¢ ;[%sp+08] = Quadrant of trigonometric function (word). ¨¢ ¨¢ ;[%sp+07] = 2nd argument of modf, pointer to its fraction part (high). ¨¢ ¨¢ ;[%sp+00] = 2nd argument of modf, pointer to its fraction part (low). ¨¢ ¨¢ ¨¢ ¨¢ ld.w %r2,%r12 ; Low word of argument x. ¨¢ ¨¢ ld.w %r3,%r13 ; High word of argument x. ¨¢ ¨¢ ¨¢ ¨¢ ;##### REMOVED 12/08/1999 ############# ¨¢ ¨¢ ;# ; ¨¢ ¨¢ ;# ; Clear the sign bit of argument x in %r3:%r2 by shifting ¨¢ ¨¢ ;# ; to make it a plus value. ¨¢ ¨¢ ;# ; ¨¢ ¨¢ ;# sll %r3,1 ; Shift the argument x to the left one bit. ¨¢ ¨¢ ;# srl %r3,1 ; Shift the argument x to the right one bit. ¨¢ ¨¢ ;##### REMOVE END ##################### ¨¢ ¨¢ ¨¢ ¨¢ xld.w %r4,0x0 ; Initialize the quadrant to 0. ¨¢ ¨¢ xld.w [%sp+8],%r4 ; Initialize the quadrant to 0. ¨¢¡Ä¤³¤³¤Þ¤Ç¤Î´Ö¤Ë¡¢V¥Õ¥é¥°¤òÊѲ½¤µ¤»¤ëÌ¿Î᤬¸ºß¤·¤Þ¤»¤ó¡£ ¨¢ ¢­½¾¤Ã¤Æ¤³¤Î»þÅÀ¤Ç¡¢V¥Õ¥é¥°¤Ï´Ø¿ô¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿»þ¤Î¤Þ¤Þ¤Ç¡¢Íפ¹¤ë¤Ë¡ÖÉÔÄê¡×¤Ç¤¹¡£ ¨¢ sra %r13,1 ; Check if x is minus? ¢«sraÌ¿Îá¤Ï¡¢Z¤ÈN¥Õ¥é¥°¤òÊѲ½¤µ¤»¤Þ¤¹¤¬¡¢V¥Õ¥é¥°¤ÏÊѲ½¤µ¤»¤Þ¤»¤ó¡£½¾¤Ã¤Æ¤³¤Î»þÅÀ¤Ç¤â¡¢V¥Õ¥é¥°¤Ï¡ÖÉÔÄê¡×¤Î¤Þ¤Þ¤Ç¤¹¡£ ¨¢ xjrge _ArgIsNotMinus ; Branch if plus or zero. ¢«xjrgeÌ¿Îá¤Îʬ´ô¾ò·ï¤Ï¡Ö!(N^V)¡×¤Ç¤¹¡£¡ØÉÔÄê¤ÊV¥Õ¥é¥°¤ò»²¾È¤·¤Æ¾ò·ïʬ´ô¤ò¹Ô¤Ã¤Æ¤¤¤ë¡Ù¤È¤¤¤¦¥Ð¥°¤Ç¤¹¡£ ¨¢ ; ¨¢ ; --- if the argument x is minus --- ¨¢ ; Clear the sign bit of argument x in %r3:%r2 by shifting ¨¢ ; to make it a plus value. ¨¢ ; ¨¢ sll %r3,1 ; Shift the argument x to the left one bit. ¨¢ srl %r3,1 ; Shift the argument x to the right one bit. ¨¢ ¨¢ xld.w %r4,0x2 ; Set the quadrant 2. ¨¢ xld.w [%sp+8],%r4 ; Set the quadrant 2. ¨¢ ; ¨¢ ; Mutiply the argument x by the constant 2*Pai ¨¢ ; ¨¢ _ArgIsNotMinus: ¨¢ ld.w %r12,%r2 ; Argument x (low). ¨¢ ld.w %r13,%r3 ; Argument x (high). ¨¢ xld.w %r14,TWO_PAI_L ; Multiplier, constant 2*Pai (low). ¨¢ xld.w %r15,TWO_PAI_H ; Multiplier, constant 2*Pai (high). ¨¢ ; ¨¢ xcall __muldf3 ; Calculate multiplication; argument x = x * (2 * Pai). ¨¢ ; The result product is %r11:%r10. ¨¢ ld.w %r2,%r10 ; Put result x in %r2 (low). ¨¢ ld.w %r3,%r11 ; Put result x in %r3 (high). ¨¢ ¨¢ (°Ê²¼Î¬) %r13¥ì¥¸¥¹¥¿¤ÎÀµÉé¤òȽÄꤹ¤ë¤Î¤Ë¡¢ ¡ß¸í ¨¢ sra %r13,1 ; %r13 >>= 1, %psr(Z) = !%r13, %psr(V) = %r13[31] ¨¢ xjrge _ArgIsNotMinus ; if(!(%psr(N)^%psr(V))) { goto _ArgIsNotMinus } ¤È¤·¤Æ¤¤¤ë¤Î¤¬´Ö°ã¤¤¤Ç¤¹¡£Àµ¤·¤¯¤Ï¡¢ ¡»Àµ ¨¢ cmp %r13,0 ; %psr(C) = 0, %psr(V) = 0, %psr(Z) = !%r13, %psr(N) = %r13[31] ¨¢ xjrge _ArgIsNotMinus ; if(!(%psr(N)^%psr(V))) { goto _ArgIsNotMinus } ¤È¤¹¤ë¤«¡¢Ëô¤Ï¡¢ ¡»Àµ ¨¢ add %r13,%r13 ; %psr(C) = %r13[31], %psr(V) = ?, %psr(Z) = ?, %psr(N) = ?, %r13 <<= 1 ¨¢ xjruge _ArgIsNotMinus ; if(!%psr(C)) { goto _ArgIsNotMinus } ¤È¤¹¤ë¤«¡¢Ëô¤Ï¡¢ ¡»Àµ ¨¢ scan1 %r13,%r13 ; %psr(C) = ?, %psr(V) = 0, %psr(Z) = %r13[31], %psr(N) = 0 ¨¢ xjrne _ArgIsNotMinus ; if(!%psr(Z)) { goto _ArgIsNotMinus } ¤È¤¹¤Ù¤­¤Ç¤¹¡£ ¤É¤ì¤ò»È¤Ã¤Æ¤â¸úΨ¤ÏƱ¤Ê¤Î¤Ç¡¢ÁÇľ¤Ë¡Öcmp %r13,0¡×¤ò»È¤¦¤Î¤¬¼«Á³¤À¤È»×¤¤¤Þ¤¹¡£ ¸µ¥½¡¼¥¹¤¬¡¢²¿¸Î¡¢¡Ösra¡×¤ò»È¤Ã¤ÆÉä¹æÈæ³Ó¤ò¤·¤è¤¦¤È¤·¤Æ¤¤¤¿¤Î¤«¤¬¡¢Ææ¤Ç¤¹¡£(¥·¥Õ¥È¤·¤¿Ãͤò¤½¤Î¸å¤Ç»È¤Ã¤Æ¤â¤¤¤Þ¤»¤ó¤·¡Ä) ¢£Âкö Æó¼ïÎà¤ÎÂкöÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£ ¢¢Âкö­¡¡¡¤È¤ê¤¢¤¨¤º²óÈò¤¹¤ëÂкöÊýË¡ ¡Ösin()´Ø¿ô¡×¤ò¤¢¤Þ¤êÉÑÈˤ˻Ȥï¤Ê¤¤¾ì¹ç¤Ï¡¢¤½¤ÎÅÔÅÙÂкö¤¹¤ë¤Î¤¬¼ê¤Ã¼è¤êÁ᤯¤ÆÎɤ¤¤È»×¤¤¤Þ¤¹¡£ ¡Ösin(x) == cos(x-¦Ð/2)¡×¤Ç¤¹¤«¤é¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹¤ÎÃæ¤Ç¡¢¡Ösin()´Ø¿ô¡×¤ò°Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤·¤Æ²¼¤µ¤¤¡£ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹¤ÎÃæ¤Ç¡Ösin()´Ø¿ô¡×¤òÄêµÁ¤·¤Æ¤ª¤±¤Ð¡¢EPSON¥é¥¤¥Ö¥é¥ê¤Î¡Ösin()´Ø¿ô¡×¤Ï¥ê¥ó¥¯¤µ¤ì¤Þ¤»¤ó¡£ ¡Ú¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥à¤ÎÃæ¤ÇÄêµÁ¤¹¤ë¡Û ¨¢ double sin(double x) { return cos(x - 1.5707963267948966192313216916398); } ¢¢Âкö­¢¡¡º¬ËÜŪ¤Ë½¤Àµ¤¹¤ëÂкöÊýË¡ ¡Ösin()´Ø¿ô¡×¤òÉÑÈˤ˻Ȥ¦¾ì¹ç¤Ï¡¢¤½¤ÎÅÔÅپ嵭¤ÎÂкö¤ò¹Ô¤¦¤Î¤ÏÌÌÅݤÀ¤·¡¢¸«Íî¤È¤¹¤ª¤½¤ì¤¬¤¢¤ë¤Î¤Ç¡¢ EPSONÀ½C¥é¥¤¥Ö¥é¥ê¤Î¡Ösin()´Ø¿ô¡×¤ò½¤Àµ¤·¤Æ¡¢ÃÖ¤­´¹¤¨¤ëÊý¤¬°ÂÁ´¤Ç¤·¤ç¤¦¡£ ½¤Àµ¤·¤¿¡Ösin.s¡×¤ò¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤È°ì½ï¤Ë¥Ó¥ë¥É¤¹¤ì¤Ð¡¢ ¡Ö\usr\PIECE\lib\math.lib¡×¤ÎÃæ¤Ë¤¢¤ë¸µ¤Î¡Ösin()´Ø¿ô¡×¤è¤ê¤âÍ¥À褵¤ì¤Æ¡¢½¤Àµ¤·¤¿¡Ösin()´Ø¿ô¡×¤¬¥ê¥ó¥¯¤µ¤ì¤Þ¤¹¡£ ½¤Àµ¤·¤¿¡Ösin.s¡×¤Ï¤³¤Á¤é¡§¡¡http://www.piece-me.org/piece-lab/sinbug/sin.s ¢£¥À¥¦¥ó¥í¡¼¥É ¥Ð¥°ºÆ¸½¥×¥í¥°¥é¥à¤È¡¢Âкö¥×¥í¥°¥é¥à¤Î¥µ¥ó¥×¥ë¤Ï¡¢¤³¤Á¤é¤Ç¤¹¡£ ¥À¥¦¥ó¥í¡¼¥É¤Ï¤³¤Á¤é¡§¡¡http://www.piece-me.org/piece-lab/sinbug/sinbug-20161025-src.zip * Sat Aug 06 00:37:42 JST 2016 Naoyuki Sawa - int¤òlong long¤ËÉä¹æ³ÈÄ¥¤¹¤ë¡¢¿§¡¹¤ÊÊýË¡ ¥¢¥»¥ó¥Ö¥é¥×¥í¥°¥é¥à¤Ç¡¢int(32¥Ó¥Ã¥ÈÀ°¿ô)¤Èlong long(64¥Ó¥Ã¥ÈÀ°¿ô)¤òº®ºß¤·¤Æ·×»»¤¹¤ë¾ì¹ç¡¢int¤òlong long¤ËÉä¹æ³ÈÄ¥¤¹¤ëɬÍפ¬Í­¤ê¤Þ¤¹¡£ PC¤Îx86 CPU¤À¤È¡¢int¤òlong long¤ËÉä¹æ³ÈÄ¥¤¹¤ëÀìÍѤÎCDQÌ¿Î᤬ͭ¤Ã¤Æ¡¢¤¢¤Þ¤ê¹©ÉפÎ;ÃϤÏÍ­¤ê¤Þ¤»¤ó¡£ P/ECE¤ÎS1C33 CPU¤Ë¤Ï¡¢int¤òlong long¤ËÉä¹æ³ÈÄ¥¤¹¤ëÀìÍѤÎÌ¿Îá¤Ï̵¤¤¤Î¤Ç¡¢¿§¡¹¤ÊÊýË¡¤¬¹Í¤¨¤é¤ì¤ÆÌÌÇò¤¤¤Ç¤¹¡£ º£²ó¤Ï¡¢S1C33¤Ç¡¢int¤òlong long¤ËÉä¹æ³ÈÄ¥¤¹¤ë¡¢¿§¡¹¤ÊÊýË¡¤ò¾Ò²ð¤·¤Þ¤¹¡£ Îã¤È¤·¤Æ¡¢%r12¥ì¥¸¥¹¥¿¤ÎintÃͤκǾå°Ì¥Ó¥Ã¥È¤ò¡¢%r13¥ì¥¸¥¹¥¿¤ÎÁ´¥Ó¥Ã¥È¤ËÉä¹æ³ÈÄ¥¤·¤Æ¡¢%r13:%r12¥ì¥¸¥¹¥¿¤Îlong longÃͤȤ¹¤ë¥±¡¼¥¹¤ò¹Í¤¨¤Þ¤¹¡£ ­¡ÁÇľ¤ÊÊýË¡ver.1 ¨¢ ld.w %r13, %r12 ¨¢ xsra %r13, 31 °ì¸«¡¢Îɤµ¤½¤¦¤Ê¤Î¤Ç¤¹¤¬¡¢¼Â¤Ï¡¢¥³¡¼¥É¥µ¥¤¥º¤¬Â礭¤¯¤ÆÃÙ¤¤¡¢¤È¤¤¤¦ÌäÂ꤬ͭ¤ê¤Þ¤¹¡£ S1C33¤Ï°ìÅÙ¤Ë8¥Ó¥Ã¥È¤·¤«¥·¥Õ¥È½ÐÍè¤Ê¤¤¤¿¤á¡¢¾åµ­¤Î¥¢¥»¥ó¥Ö¥é¥×¥í¥°¥é¥à¤Ï¡¢¼ÂºÝ¤Ë¤Ï¡¢°Ê²¼¤ÎÌ¿Îá¤ËŸ³«¤µ¤ì¤ë¤«¤é¤Ç¤¹¡£ ¨¢ ld.w %r13, %r12 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ sra %r13, 8 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ sra %r13, 8 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ sra %r13, 8 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ sra %r13, 7 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¥³¡¼¥É¥µ¥¤¥º¤Ï10¥Ð¥¤¥È¤Ç¡¢¼Â¹Ô»þ´Ö¤Ï5¥µ¥¤¥¯¥ë¤Ç¤¹¡£ ¤Þ¤¢¡¢¤³¤ì¤Ç¤â¹½¤ï¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢¤â¤Ã¤È¾®¤µ¤¯¡¢¤â¤Ã¤ÈÁᤤÊýË¡¤¬Í­¤ë¤Î¤Ç¡¢¾åµ­¤ÎÊýË¡¤ÏµÑ²¼¤Ç¤¹¡£ ­¢ÁÇľ¤ÊÊýË¡ver.2 ¨¢ cmp %r12, 0 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ jrge.d 3 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ ld.w %r13, 0 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ ld.w %r13, -1 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ʬ´ô¤·¤¿¾ì¹ç¤Ï¼Â¹Ô¤·¤Ê¤¤ ¥³¡¼¥É¥µ¥¤¥º¤Ï8¥Ð¥¤¥È¤Ç¡¢¼Â¹Ô»þ´Ö¤Ï¡Ö%r12¡æ0¡×¤Î¾ì¹ç3¥µ¥¤¥¯¥ë¡¤¡Ö%r12¡ã0¡×¤Î¾ì¹ç4¥µ¥¤¥¯¥ë¤Ç¤¹¡£ S1C33¤Ï¾ò·ïʬ´ô¤¬Áᤤ¤Î¤Ç¡¢¤³¤ì¤Ï¤«¤Ê¤êÎɤ¤ÊýË¡¤Ç¤¹¡£ ¡Öx = (¾ò·ï) ? (ÃÍA) : (ÃÍB)¡×¤Î½èÍý¤ò¥¢¥»¥ó¥Ö¥é¤Ç½ñ¤¯¾ì¹ç¡¢ÃÙ±äʬ´ô¤Îľ¸å¤ËÃÍA¤Î¥í¡¼¥É¤òÃÖ¤¤¤Æ¡¢¤µ¤é¤Ë¤½¤Îľ¸å¤ËÃÍB¤Î¥í¡¼¥É¤òÃÖ¤¯¡¢¤È¤¤¤¦¤Î¤¬ºÇŬ²½¤ÎÄêÈ֤Ǥ¹¡£ ­£¥­¥ã¥ê¡¼¥Õ¥é¥°¤ò»È¤Ã¤¿ÊýË¡ ¨¢ ld.w %r13, %r12 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ add %r13, %r13 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ ld.w %r13, 0 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ sbc %r13, %r13 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¥³¡¼¥É¥µ¥¤¥º¤Ï8¥Ð¥¤¥È¤Ç¡¢¼Â¹Ô»þ´Ö¤Ï4¥µ¥¤¥¯¥ë¤Ç¤¹¡£ ­¢¤ÎÊýË¡¤è¤ê¤â¡¢Ê¿¶Ñ0.5¥µ¥¤¥¯¥ëÃÙ¤¤¤Î¤Ç¡¢´º¤¨¤Æ¤³¤ÎÊýË¡¤ò»È¤¦É¬ÍפÏÍ­¤ê¤Þ¤»¤ó¡£(ÍøÅÀ¤¬Ìµ¤¤¤Î¤Ë¾Ò²ð¤·¤¿Íýͳ¤Ï¡¢¤³¤Î¸å­§¤Ç¡¦¡¦¡¦) ¡Öld.w %r13, %r12¡×¡Öadd %r13, %r13¡×¤Ç¡¢¸µ¤ÎÃͤκǾå°Ì¥Ó¥Ã¥È¤ò%psr(C)¤ËÁ÷¤ê¡¢¡Öld.w %r13, 0¡×¡Ösbc %r13, %r13¡×¤Ç¡¢¡Ö%r13 = 0 - 0 - %psr(C)¡×¤ËÁêÅö¤¹¤ë½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£ ¸µ¤ÎÃͤκǾå°Ì¥Ó¥Ã¥È¤¬0¤À¤Ã¤¿¤é¡Ö%r13 = 0 - 0 - 0 = 0¡×¡¢¸µ¤ÎÃͤκǾå°Ì¥Ó¥Ã¥È¤¬1¤À¤Ã¤¿¤é¡Ö%r13 = 0 - 0 - 1 = -1¡×¤È¤Ê¤ê¤Þ¤¹¡£ ­¤Éä¹æ³ÈÄ¥¤òȼ¤¦Ì¿Îá¤òÍøÍѤ¹¤ëÊýË¡ver.1 ¨¢ ld.w %r13, 1 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ mlt.w %r12, %r13 ;//2¥Ð¥¤¥È¡¢5¥µ¥¤¥¯¥ë ¨¢ ld.w %r13, %ahr ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¥³¡¼¥É¥µ¥¤¥º¤Ï6¥Ð¥¤¥È¤Ç¡¢¼Â¹Ô»þ´Ö¤Ï7¥µ¥¤¥¯¥ë¤Ç¤¹¡£ ¥³¡¼¥É¥µ¥¤¥º¤Ï¤³¤³¤Þ¤Ç¤ÎÃæ¤ÇºÇû¤Ç¤¹¤¬¡¢¼Â¹Ô»þ´Ö¤ÏÃÙ¤¤¤Î¤Ç¡¢¤¤¤Þ¤¤¤Á¤ÊÊýË¡¤Ç¤¹¡£ mlt.wÌ¿Îá¤Ï¡¢intÃͤÈintÃͤò³Ý¤±¤Ælong longÃͤˤ¹¤ë¤Î¤Ç¡¢¡Ö%r12¡ß1¡×¤ò¹Ô¤¨¤Ð¡¢%r12¤ÎºÇ¾å°Ì¥Ó¥Ã¥È¤¬¡¢¾è»»·ë²Ì¤Î%ahr:%alr¤Î¾å°Ì¥ï¡¼¥É(%ahr)¤Ë³ÈÄ¥¤µ¤ì¤ë»ÅÁȤߤǤ¹¡£ ­¥Éä¹æ³ÈÄ¥¤òȼ¤¦Ì¿Îá¤òÍøÍѤ¹¤ëÊýË¡ver.2 ¨¢ ld.w %alr, %r12 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ div0s %r12 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ ld.w %r13, %ahr ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¥³¡¼¥É¥µ¥¤¥º¤Ï6¥Ð¥¤¥È¤Ç¡¢¼Â¹Ô»þ´Ö¤Ï3¥µ¥¤¥¯¥ë¤Ç¤¹¡£ div0sÌ¿Îá¤ÏËÜÍè¤Ï½ü»»¤ÎÁ°½àÈ÷¤Î¤¿¤á¤ÎÌ¿Îá¤Ê¤Î¤Ç¤¹¤¬¡¢¤½¤Î»þ¤Ë%alr¤ÎºÇ¾å°Ì¥Ó¥Ã¥È¤¬%ahr¤ËÉä¹æ³ÈÄ¥¤µ¤ì¤ë»ö¤òÍøÍѤ·¤¿ÊýË¡¤Ç¤¹¡£ ºÇ½é¤Ï¡¢¤³¤ì¤¬ºÇÎɤÎÊýË¡¤«¤È»×¤Ã¤Æ¤¤¤¿¤Î¤Ç¤¹¤¬¡¢Ã×̿Ū¤ÊÌäÂ꤬ͭ¤ë»ö¤Ëµ¤ÉÕ¤­¤Þ¤·¤¿¡£ %r12¤¬0¤Î¾ì¹ç¤Ë¡¢¡Ödiv0s %r12¡×¤¬¥¼¥í½ü»»Îã³°¤òÅêÆþ¤·¤Æ¤·¤Þ¤¦ÌäÂê¤Ç¤¹¡£ ¤³¤ÎÍÑÅӤǤϡ¢div0sÌ¿Îá¤Î¥ª¥Ú¥é¥ó¥É¤Ï´Ø·¸Ìµ¤¤¤Î¤Ç¡¢%r12°Ê³°¤ò»ØÄꤷ¤Æ¤â¹½¤ï¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢³Î¼Â¤Ë0°Ê³°¤Ç¤¢¤ë¥ì¥¸¥¹¥¿¤ÏÍ­¤ê¤Þ¤»¤ó¡£ ¡Á¡Öld.w %r13, 1¡×¡Ödiv0s %r13¡×¡Á¤Ê¤ó¤Æ¤·¤Æ¤·¤Þ¤¦¤È¡¢¥³¡¼¥É¥µ¥¤¥º¤È¼Â¹Ô»þ´Ö¤¬Áý¤¨¤ÆËÜËöžÅݤǤ¹¡£ ¤È¤¤¤¦Ìõ¤Ç¡¢¤³¤ÎÊýË¡¤Ï»È¤¨¤Þ¤»¤ó¡£ ­¦ÁÇľ¤ÊÊýË¡ver.1(²þÁ±ÈÇ) ¨¢ swap %r13, %r12 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ ld.b %r13, %r13 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ sra %r13, 7 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¥³¡¼¥É¥µ¥¤¥º¤Ï6¥Ð¥¤¥È¤Ç¡¢¼Â¹Ô»þ´Ö¤Ï3¥µ¥¤¥¯¥ë¤Ç¤¹¡£ ¤³¤ì¤¬¡¢ºÇÎɤÎÊýË¡¤Î°ì¤Ä¤Ç¤¹¡£ ­¡¤Ç½Ò¤Ù¤¿Ä̤êP/ECE¤Ï¥·¥Õ¥ÈÌ¿Î᤬¼å¤¤¤Î¤¬·çÅÀ¤Ê¤Î¤Ç¤¹¤¬¡¢¤½¤Î·çÅÀ¤ò²óÈò¤¹¤ë¤¿¤á¤Ë¡¢swapÌ¿Îá¤Èld.bÌ¿Îá¤òÁȤ߹ç¤ï¤»¤Æ¥í¡¼¥É¤È24¥Ó¥Ã¥È¥·¥Õ¥È¤ò°ìµ¤¤Ë¹Ô¤Ã¤¿¤Î¤¬¡¢¤³¤ÎÊýË¡¤Ç¤¹¡£ swapÌ¿Îá¤Î¾¤Ë¤â¡¢mirrorÌ¿Îá¤änotÌ¿Îá¤Ï¥í¡¼¥É¤È¥Ó¥Ã¥È½èÍý¤òƱ»þ¤Ë¼Â¹Ô½ÐÍè¤ë¤Î¤Ç¡¢¿§¡¹¹©Éפ¬¸ú¤¤¤ÆÊØÍø¤ÊÌ¿Îá¤Ç¤¹¡£ ­§¥­¥ã¥ê¡¼¥Õ¥é¥°¤ò»È¤Ã¤¿ÊýË¡(²þÁ±ÈÇ) ¨¢ ld.w %r13, %r12 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ add %r13, %r13 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¨¢ sbc %r13, %r13 ;//2¥Ð¥¤¥È¡¢1¥µ¥¤¥¯¥ë ¥³¡¼¥É¥µ¥¤¥º¤Ï6¥Ð¥¤¥È¤Ç¡¢¼Â¹Ô»þ´Ö¤Ï3¥µ¥¤¥¯¥ë¤Ç¤¹¡£ ¤³¤ì¤â¡¢ºÇÎɤÎÊýË¡¤Î°ì¤Ä¤Ç¤¹¡£ ­£¤Î¥×¥í¥°¥é¥à¤ò¤è¤¯¸«¤ë¤È¡¢¡Öld.w %r13, 0¡×¤ÏÉÔÍפǤ¢¤ë»ö¤Ëµ¤ÉÕ¤­¤Þ¤·¤¿¡£ ¡Ö%r13 = 0 - 0 - %psr(C)¡×¤â¡¢¡Ö%r13 = ÉÔÄêÃÍ - ÉÔÄêÃÍ - %psr(C)¡×¤â¡¢·ë²Ì¤ÏƱ¤¸¤À¤«¤é¤Ç¤¹¡£('ÉÔÄêÃÍ'¤Ï¡¢Î¾Êý¤È¤âƱ¤¸ÃͤȤ¹¤ë) ¤È¤¤¤¦¤ï¤±¤Ç¡¢­£¤Î¥×¥í¥°¥é¥à¤«¤é°ìÌ¿Îáºï½ü¤·¤¿¤Î¤¬¡¢¤³¤ÎÊýË¡¤Ç¤¹¡£ ¢£¤Þ¤È¤á P/ECE¤ÎS1C33 CPU¤Ç¡¢int¤òlong long¤ËÉä¹æ³ÈÄ¥¤¹¤ëÊýË¡¤Ï¡¢¾åµ­¤Î­¦Ëô¤Ï­§¤ÎÊýË¡¤¬ºÇÎɤÀ¤È»×¤¤¤Þ¤¹¡£ * Fri May 27 23:10:38 JST 2016 Naoyuki Sawa - Ì¿Îᥨ¥¯¥¹¥¿¥ó¥À¡Öext33.exe¡×¤Î¥Ð¥° P/ECE³«È¯´Ä¶­¤Î¡¢Ì¿Îᥨ¥¯¥¹¥¿¥ó¥À¡Öext33.exe¡×¤Ë¤Ï¡¢¥Ð¥°¤¬Í­¤ê¤Þ¤¹¡£ ʸ»úÎó¤ÎËöÈø¤ËÍ­¤ë¡¢¥¨¥¹¥±¡¼¥×¤µ¤ì¤¿¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤òÀµ¤·¤¯Ç§¼±½ÐÍè¤Ê¤¤¡¢¤È¤¤¤¦¥Ð¥°¤Ç¤¹¡£ ¢£¥Ð¥°¤òºÆ¸½¤¹¤ëÊýË¡ ¤Þ¤º¡¢Àµ¾ï¤Ê¥±¡¼¥¹¤ò³Îǧ¤·¤Þ¤¹¡£ ²¼µ­¤Î¥×¥í¥°¥é¥à¤ò¡¢"sample.c"¤È¤¤¤¦Ì¾Á°¤ÇÊݸ¤·¤Æ²¼¤µ¤¤¡£ ¨¢const char str[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmɽ¸½"; ²¼µ­¤Î¥Ð¥Ã¥Á¥Õ¥¡¥¤¥ë¤ò¡¢"compile.bat"¤È¤¤¤¦Ì¾Á°¤ÇÊݸ¤·¤Æ²¼¤µ¤¤¡£ ¨¢@REM compile.bat ¨¢pcc33.exe -b -c sample.c ¨¢@IF ERRORLEVEL 1 (ECHO ¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£) ELSE (ECHO Àµ¾ï½ªÎ»¤·¤Þ¤·¤¿¡£) ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¡¢compile.bat¤ò¼Â¹Ô¤·¤Æ²¼¤µ¤¤¡£ Àµ¾ï¤Ë¥³¥ó¥Ñ¥¤¥ë¤Ç¤­¤Æ¡¢°Ê²¼¤Î¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ ¨¢Àµ¾ï½ªÎ»¤·¤Þ¤·¤¿¡£ ¼¡¤Ë¡¢¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¥±¡¼¥¹¤ò³Îǧ¤·¤Þ¤¹¡£ ¤µ¤­¤Û¤ÉÊݸ¤·¤¿sample.c¤ò³«¤¤¤Æ¡¢°Ê²¼¤Î¤è¤¦¤ËÊѹ¹¤·¤Æ¡¢Êݸ¤·¤Æ²¼¤µ¤¤¡£ Êѹ¹ÅÀ¤Ï¡¢"ɽ"¤ÎÁ°¤Ë"n"¤ò°ìʸ»úÄɲä·¤¿¤À¤±¤Ç¤¹¡£ ¨¢const char str[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnɽ¸½"; ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¡¢compile.bat¤ò¼Â¹Ô¤·¤Æ²¼¤µ¤¤¡£ ¥¨¥é¡¼¤¬È¯À¸¤·¤Æ¡¢°Ê²¼¤Î¥á¥Ã¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ ¨¢ ¢«¶õ¹Ô¤Ç¤¹¡£ ¨¢ ¢«¶õ¹Ô¤Ç¤¹¡£ ¨¢ ¢«¶õ¹Ô¤Ç¤¹¡£ ¨¢¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£ ¢£¸¶°øÄ´ºº ʸ»úÎó¤Ë°ìʸ»úÄɲä·¤¿¤À¤±¤Ç¡¢C¸À¸ì¤Î¥×¥í¥°¥é¥à¤È¤·¤Æ¤ÏÁ´¤¯Àµ¤·¤¤¤Î¤Ë¡¢¤Ê¤¼¸å¼Ô¤Ç¤Ï¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤Î¤Ç¤·¤ç¤¦¤«¡£ Ä´ºº¤·¤¿¤È¤³¤í¡¢P/ECE³«È¯´Ä¶­¤Îext33.exe¤Î¥Ð¥°¤¬¸¶°ø¤Ç¤¢¤ë»ö¤¬È½¤ê¤Þ¤·¤¿¡£ °Ê²¼¡¢¾ÜºÙ¤Ç¤¹¡£ pcc33.exe¤Ï¥³¥ó¥Ñ¥¤¥é¥É¥é¥¤¥Ð¤Ç¤¢¤ê¡¢°Ê²¼¤Î¤è¤¦¤ËÊ£¿ô¤Î¥Ä¡¼¥ë¤ò¸Æ¤Ó½Ð¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£ ­¡ gcc33.exe C¸À¸ì¥½¡¼¥¹¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¡¢¥¢¥»¥ó¥Ö¥é¥½¡¼¥¹(³Èĥ̿ÎáÍ­¤ê)¤ËÊÑ´¹¤¹¤ë¡£(sample.c ¢Í sample.ps) ­¢ ext33.exe ¥¢¥»¥ó¥Ö¥é¥½¡¼¥¹(³Èĥ̿ÎáÍ­¤ê)¤ÎÃæ¤Î¡¢³Èĥ̿Îá¤òŸ³«¤·¤Æ¡¢¥¢¥»¥ó¥Ö¥é¥½¡¼¥¹(³Èĥ̿Îá̵¤·)¤ËÊÑ´¹¤¹¤ë¡£(sample.ps ¢Í sample.ms) ­£ as33.exe ¥¢¥»¥ó¥Ö¥é¥½¡¼¥¹(³Èĥ̿Îá̵¤·)¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¡¢¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ËÊÑ´¹¤¹¤ë¡£(sample.ms ¢Í sample.o) ­¤ lk33.exe ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò¥ê¥ó¥¯¤¹¤ë¡£(sample.o ¢Í sample.srf) ¢¨º£²ó¤Î·ï¤Ë¤Ï´Ø·¸Ìµ¤¤¤Î¤Ç¡¢pcc33.exe¤Ë¡Ö-c¡×¥Õ¥é¥°¤ò»ØÄꤷ¤Æ¡¢¤³¤Î½èÍý¤Ï¼Â¹Ô¤·¤Þ¤»¤ó¡£ ­¢¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤Ç¤¢¤ësample.ps¤ò¡¢¥¨¥é¡¼¤¬È¯À¸¤·¤Ê¤¤¥±¡¼¥¹¤È¡¢¥¨¥é¡¼¤¬È¯À¸¤·¤¿¥±¡¼¥¹¤È¤Ç¡¢Èæ³Ó¤·¤Æ¤ß¤Þ¤·¤¿¡£ ¢¢¥¨¥é¡¼¤¬È¯À¸¤·¤Ê¤¤¥±¡¼¥¹ ¨¢str: ¨¢ .ascii "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm\225\\\214" ¨¢ .ascii "\273\000" ¢¢¥¨¥é¡¼¤¬È¯À¸¤·¤¿¥±¡¼¥¹ ¨¢str: ¨¢ .ascii "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn\225\\" ¨¢ .ascii "\214\273\000" ËÜÍè¤Ï¤É¤Á¤é¤â¡¢¥¢¥»¥ó¥Ö¥é¥½¡¼¥¹¤È¤·¤ÆÀµ¤·¤¤ÆâÍƤǤ¹¡£ ¸å¼Ô¤Ï¡Öɽ¡×¤Î2¥Ð¥¤¥ÈÌܤÎ'\'¤¬¡¢Ê¸»úÎó¤Î°ìÈֺǸå¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤­¤Á¤ó¤È'\\'¤Ç¥¨¥¹¥±¡¼¥×¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢ËÜÍè¤ÏÀµ¤·¤¤¤Î¤Ç¤¹¤¬¡¢ ¤É¤¦¤ä¤éext33.exe¤Ï¡¢Ê¸»úÎó¤òÊĤ¸¤ë'"'¤òȽÄꤹ¤ë»þ¤Ë¡¢°ìʸ»úÁ°¤¬'\'¤«¤É¤¦¤«¤À¤±¤ò¸«¤Æ¥¨¥¹¥±¡¼¥×¤µ¤ì¤¿'"'¤«¤É¤¦¤«¤òȽÄꤷ¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£ ¢«¢«¢«¡ÚÍ×ÅÀ¡Û¤³¤ì¤¬¥Ð¥°¤Ç¤¹¡£ ¤½¤·¤Æ¡¢Ê¸»úÎó¤¬ÊĤ¸¤é¤ì¤Æ¤¤¤Ê¤¤¤ÈȽÄꤷ¤Æ¡¢¥¨¥é¡¼½ªÎ»¤·¤Æ¤·¤Þ¤¦¤è¤¦¤Ç¤¹¡£ »î¤·¤Ë¡¢¾åµ­¤Î¡Ö¢¢¥¨¥é¡¼¤¬È¯À¸¤·¤¿¥±¡¼¥¹¡×¤Îsample.ps¤ò¾¯¤·¼ê¤Ç½ñ¤­´¹¤¨¤ë¤È¡¢¥¨¥é¡¼¤¬½Ð¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£ ¢¢¥¨¥é¡¼¤¬È¯À¸¤·¤¿¥±¡¼¥¹(Êѹ¹¸å) ¨¢str: ¨¢ .ascii "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn\225" ¨¢ .ascii "\\\214\273\000" ¢«¸µ¡¹¾å¤Î¹Ô¤ÎºÇ¸å¤ËÍ­¤Ã¤¿'\\'¤ò¡¢¼¡¤Î¹Ô¤ÎÀèƬ¤Ë°Ü¤·¤¿¡£¥Ç¡¼¥¿¤ÎÆâÍƤÏÁ´¤¯Æ±¤¸¤Ç¡¢¥½¡¼¥¹¾å¤Î°ã¤¤¤À¤±¤Ç¤¹¡£ ¤½¤·¤Æ¡¢ext33.exe¤òľÀܼ¹Ԥ·¤Æ¤ß¤ë¤È¡Ä ¨¢ext33.exe sample.ps ¨¢@IF ERRORLEVEL 1 (ECHO ¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£) ELSE (ECHO Àµ¾ï½ªÎ»¤·¤Þ¤·¤¿¡£) ·ë²Ì¤Ï¡ÖÀµ¾ï½ªÎ»¤·¤Þ¤·¤¿¡£¡×¤Ë¤Ê¤ê¤Þ¤·¤¿¡£ ¤ä¤Ï¤ê¡¢Ê¸»úÎó¤ÎËöÈø¤ËÍ­¤ë'\\'¤¬¸¶°ø¤Ç¤¹¡£ ¤Á¤Ê¤ß¤Ë¡¢Ê¸»úÎó¤¬""¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤òȽÄꤹ¤ë¤Î¤Ï¡¢ext33.exe¤Îµ¡Ç½¤Î°ì¤Ä¤Ê¤Î¤Ç¤¹¤¬¡¢¤½¤Îµ¡Ç½¤¬Àµ¤·¤¯Æ°¤¤¤Æ¤¤¤Ê¤¤¤è¤¦¤Ç¤¹¤Í¡£ ¢¢»²¾È»ñÎÁ ¨¢¡ÖS5U1C33000C Manual (S1C33 Family C¥³¥ó¥Ñ¥¤¥é¥Ñ¥Ã¥±¡¼¥¸) (Ver.4) (P/ECE³«È¯´Ä¶­¤Î¡ÖC:\usr\PIECE\docs\datasheet\EPSON¡×¤ËÆþ¤Ã¤Æ¤¤¤Þ¤¹) ¨¢p.147¡Ö10. Ì¿Îᥨ¥¯¥¹¥Æ¥ó¥À - 10.8.3 ʸˡ¥Á¥§¥Ã¥¯¡× ¨¢¡äext33¤Ï³Èĥ̿Îá¤È°Ê²¼¤Î¥¢¥»¥ó¥Ö¥éµ¿»÷Ì¿Îá¤Îʸˡ¥Á¥§¥Ã¥¯¤Î¤ß¤ò¹Ô¤¤¤Þ¤¹¡£ ¨¢¡ä¡Á ¨¢¡ä.asciiµ¿»÷Ì¿Îá ¨¢¡ä ʸ»úÎó¤¬" "¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ë¤«¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£ ¸í¤Ã¤Æ¡¢Àµ¤·¤¤Ê¸»úÎó¤ò¥¨¥é¡¼¤È¸«¤Ê¤·¤Æ¤·¤Þ¤¦¤À¤±¤Ç¤Ê¤¯¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤»¤º¤Ë°ÕÌ£ÉÔÌÀ¤Ê¶õ¹Ô¤¬»°¹Ô½ÐÎϤµ¤ì¤¿¤ê¡¢ ¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º²èÌ̾å¤Ë¤Ï¡ÖExtend Completed¡×¤È¤¤¤¦¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Æ¤·¤Þ¤¦¤È¤¤¤¦¥Ð¥°¤âÍ­¤Ã¤¿¤ê¤¹¤ë¤è¤¦¤Ç¤¹¡£ ¢£¥Ð¥°¤Î±Æ¶Á °ì¸«¡¢¤«¤Ê¤êÃ×̿Ū¤Ê¥Ð¥°¤Î¤è¤¦¤Ë¸«¤¨¤Þ¤¹¤¬¡¢¼ÂºÝ¤Ë¤Ï¡¢¤³¤Î¥Ð¥°¤¬¸²ºß²½¤¹¤ë»ö¤Ï¤«¤Ê¤êµ©¤Ç¤¹¡£ ¤Ê¤¼¤Ê¤é¡¢C¸À¸ìʸ»úÎó¤Î¾ì¹ç¡¢ºÇ¸å¤Ë¥Ì¥ëʸ»ú¤¬ÉÕ¤¯¤Î¤Ç¡¢¥¢¥»¥ó¥Ö¥é¥½¡¼¥¹¤Ë¤Ê¤Ã¤¿»þ¤Ëʸ»úÎó¤ÎºÇ¸å¤Ë'\'¤¬Íè¤ë»ö¤Ïµ©¤À¤«¤é¤Ç¤¹¡£ ¨¢const char str1[]="ÌÀ¼¨Åª¤Ê\\"; ¨¢const char str2[]="°ÅÌۤΡÄɽ"; //¡Öɽ¡×¤Î2¥Ð¥¤¥ÈÌܤÏ'\'¤Ç¤¹¡£ ¾åµ­¤ÎC¸À¸ìʸ»úÎó¤Ï¤É¤Á¤é¤â'\'¤Ç½ª¤ï¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¥¢¥»¥ó¥Ö¥é¥½¡¼¥¹¾å¤Ç¤Ï¥Ì¥ëʸ»ú¤¬ÉÕ¤¯¤Î¤Ç¡Ä ¨¢str1: ¨¢ .ascii "\226\276\216\246\223I\202\310\\\000" ¨¢str2: ¨¢ .ascii "\210\303\226\331\202\314\201c\225\\\000" ¤³¤ó¤Ê¤Õ¤¦¤Ë¡¢ºÇ¸å¤¬'\'¤Ë¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ ¤Ç¤Ï¡¢¤É¤ó¤Ê»þ¤ËÌäÂ꤬¸²ºß²½¤¹¤ë¤«¤È¤¤¤¦¤È¡¢ÀÞ¤êÊÖ¤·¤¿°ÌÃÖ¤¬¶öÁ³'\'¤Îľ¸å¤ÇÀÞ¤êÊÖ¤µ¤ì¤¿¾ì¹ç¤Ç¤Ç¤¹¡£ gcc33.exe¤Ï¡¢Ä¹¤¤Ê¸»úÎ󤫤é.asciiµ¿»÷Ì¿Îá¤òÀ¸À®¤¹¤ë»þ¤Ë¡¢¤¢¤ëÄøÅÙ¤ÎŤµ¤ÇÀÞ¤êÊÖ¤·¤ÆÊ£¿ô¹Ô¤Ëʬ³ä¤¹¤ë¤è¤¦¤Ç¤¹¡£ ¤½¤Î»þ¤¿¤Þ¤¿¤Þ¡¢ÀÞ¤êÊÖ¤·¤¿°ÌÃÖ¤¬'\'¤Îľ¸å¤À¤È¡¢.asciiµ¿»÷Ì¿Îá¤Îʸ»úÎó¤ÎºÇ¸å¤¬'\'¤Ë¤Ê¤Ã¤Æ¡¢Á°½Ò¤Îext33.exe¤Î¥Ð¥°¤Ë°ú¤Ã¤«¤«¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¤¹¡£ ¨¢const char str[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnɽ¸½"; ¤Ï¡¢¤Þ¤µ¤Ë¤½¤Î°ìÎã¤Ç¤·¤¿¡£ ¤Á¤Ê¤ß¤Ë¡¢¤â¤Ã¤Èñ½ã¤Ë¥Ð¥°¤òºÆ¸½¤·¤è¤¦¤È»×¤¨¤Ð¡¢¤¿¤È¤¨¤Ð¤³¤ó¤ÊC¸À¸ìʸ»úÎó¤Ç¤âºÆ¸½¤·¤Þ¤¹¡£ ¨¢const char str[]="\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"; ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¡Ä ¨¢str: ¨¢ .ascii "\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" ¢«ext33.exe¤¬¸í¤Ã¤Æ¤³¤Î¹Ô¤ò¥¨¥é¡¼¤È¸«¤Ê¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ ¨¢ .ascii "\\\\\\\\\\\\\\\000" ¢£¥Ð¥°¤ò²óÈò¤¹¤ëÊýË¡ ´Êñ¤Ë¥Ð¥°¤ò²óÈò¤¹¤ëÊýË¡¤Ï¡¢»×¤¤ÉÕ¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£ ext33.exe¤ÎÁ°Ãʤˡ¢.ps¥Õ¥¡¥¤¥ë¤ò¥Á¥§¥Ã¥¯¤·¤Æ.asciiµ¿»÷Ì¿Îá¤Îʸ»úÎó¤ÎËöÈø¤Ë'\'¤¬Ìµ¤¤¤«Ä´¤Ù¤ë¤è¤¦¤Ê¥Õ¥£¥ë¥¿¤òºî¤í¤¦¤«¤Ê¡¢¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£ ¤Ç¤â¼ÂºÝ¤Ë¤Ï¡¢¤½¤³¤Þ¤Ç¤·¤Ê¤¯¤Æ¤âÎɤ¤¤È»×¤¤¤Þ¤¹¡£ ¤³¤ì¤Þ¤Ç10ǯ°Ê¾åP/ECE¤ÇÍ·¤ó¤Ç¤¤¤Æ¡¢º£¤Ë¤·¤Æ»×¤¨¤Ð¤³¤ì¤¬¸¶°ø¤À¤Ã¤¿¤Î¤«¤Ê¤¢¤È»×¤¦¥³¥ó¥Ñ¥¤¥ë¥¨¥é¡¼¤ËÁø¶ø¤·¤¿»ö¤¬¡¢¤»¤¤¤¼¤¤1¡Á2²ó¤À¤±¤À¤«¤é¤Ç¤¹¡£ ¼ÂºÝ¤Ë¤³¤Îext33.exe¥Ð¥°¤¬ÌäÂê¤Ë¤Ê¤ë»ö¤Ï¡¢¤´¤¯µ©¤À¤È»×¤¤¤Þ¤¹¡£ ¤È¤ê¤¢¤¨¤º¤³¤¦¤¤¤¦¥Ð¥°¤¬Í­¤ë»ö¤ò³Ð¤¨¤Æ¤ª¤¤¤Æ¡¢P/ECE¤Î¥×¥í¥°¥é¥à¤ò¥Ó¥ë¥É¤·¤¿»þ¤ËÆæ¤Î¶õ¹Ô¤¬É½¼¨¤µ¤ì¤Æ¥³¥ó¥Ñ¥¤¥ë¥¨¥é¡¼¤Ë¤Ê¤Ã¤¿¾ì¹ç¤Ï¡¢¤³¤ÎÅÀ¤òµ¿¤Ã¤Æ¤ß¤ë¤Î¤¬Îɤµ¤½¤¦¤Ç¤¹¡£ ¤½¤·¤Æ¡¢Ê¸»úÎó¤òÊѹ¹¤¹¤ë»ö¤¬²Äǽ¤Ê¤é¤Ð¡¢Ê¸»úÎó¤ò¾¯¤·Êѹ¹¤·¤Æ¡¢.asciiµ¿»÷Ì¿Îá¤Îʸ»úÎó¤ÎËöÈø¤Ë'\'¤¬Íè¤Ê¤¤¤è¤¦¤Ë¤·¤Æ²óÈò¤¹¤ì¤ÐÎɤ¤¤È»×¤¤¤Þ¤¹¡£ ¤Á¤Ê¤ß¤Ë¡¢Ê¸»úÎó¤òÊѹ¹¤Ç¤­¤Ê¤¤¾ì¹ç¤Ï¡¢Ê¸»úÎó¤òÇÛÎó¤ÇÄêµÁ¤·¤Æ²óÈò¤¹¤ë¤È¤¤¤¦¼ê¤âÍ­¤ê¤Þ¤¹¡£ C¸À¸ì¤ÇÇÛÎó¤È¤·¤ÆÄêµÁ¤¹¤ì¤Ð¡¢¥¢¥»¥ó¥Ö¥é¥½¡¼¥¹¤È¤·¤Æ¤Ï.ascii¤Ç¤Ï¤Ê¤¯.byte¤Ç½ÐÎϤµ¤ì¤ë¤è¤¦¤À¤«¤é¤Ç¤¹¡£ ¨¢const char str[]={'\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\','\\'}; ¨¢str: ¨¢ .byte 92 ¨¢ .byte 92 ¨¢ ¡Á ¨¢ .byte 92 ¨¢ .byte 92 ¤·¤«¤·¤Þ¤¢¡¢¼ÂºÝ¤Ë¤³¤ÎÂкö¤¬É¬Íפˤʤë»ö¤Ï̵¤¤¤«¤Ê¡¢¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£ * Sun May 15 21:25:46 JST 2016 Naoyuki Sawa - ispunct()¤Î¥Ð¥° P/ECE³«È¯´Ä¶­¤Îispunct()¤Ë¤Ï¥Ð¥°¤¬Í­¤ê¤Þ¤¹¡£ ispunct(' ')¤ÏÀµ¤·¤¯¤Ïfalse¤Ç¤¹¤¬¡¢P/ECE¤Ç¤Ïtrue¤Ë¤Ê¤ê¤Þ¤¹¡£ EPSON¥é¥¤¥Ö¥é¥ê¤Î¥Ð¥°¤ß¤¿¤¤¤Ç¤¹¡£ ¢£ºÆ¸½¥×¥í¥°¥é¥à #include #include #include #include #include unsigned char vbuff[DISP_X * DISP_Y]; void pceAppInit() { pceLCDSetBuffer(vbuff); pceLCDDispStart(); } void pceAppProc(int cnt) { memset(vbuff, 0, sizeof vbuff); pceFontSetPos(0, 0); pceFontPrintf("ispunct(' ') = %s", ispunct(' ') ? "true" : "false"); pceLCDTrans(); } void pceAppExit() { } ¢£·ë²Ì ¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤ ¨¢ispunct(' ') = true ¨¢ ¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥ http://www.piece-me.org/piece-lab/ispunct/ispunct1.gif ½¤Àµ¤¹¤ë¤Ë¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥×¥í¥°¥é¥àÆâ¤ÇÀµ¤·¤¤ispunct()¤òÄêµÁ¤·¤Æ¡¢EPSON¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤òÃÖ¤­´¹¤¨¤ì¤Ðok¤Ç¤¹¡£ ¢£½¤Àµ¥×¥í¥°¥é¥à #include #include #include #include #include unsigned char vbuff[DISP_X * DISP_Y]; void pceAppInit() { pceLCDSetBuffer(vbuff); pceLCDDispStart(); } void pceAppProc(int cnt) { memset(vbuff, 0, sizeof vbuff); pceFontSetPos(0, 0); pceFontPrintf("ispunct(' ') = %s", ispunct(' ') ? "true" : "false"); pceLCDTrans(); } void pceAppExit() { } //--- Àµ¤·¤¤ispunct()¤ÇEPSON¥é¥¤¥Ö¥é¥ê¤Î´Ø¿ô¤òÃÖ¤­´¹¤¨¤ë --- int ispunct(int c) { return ((c >= 0x21) && (c <= 0x2F)) || //EPSON¥é¥¤¥Ö¥é¥ê¤Ï¿ʬ¤³¤³¤¬((c >= 0x20) && (c <= 0x2F))¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ ((c >= 0x3A) && (c <= 0x40)) || ((c >= 0x5B) && (c <= 0x60)) || ((c >= 0x7B) && (c <= 0x7E)); } ¢£·ë²Ì ¨£¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¤ ¨¢ispunct(' ') = false¨¢ ¨¦¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¡¨¥ http://www.piece-me.org/piece-lab/ispunct/ispunct2.gif º£²ó»ÈÍѤ·¤¿¸¡¾Ú¥×¥í¥°¥é¥à°ì¼°¤Î¡¢¥À¥¦¥ó¥í¡¼¥É¤Ï¤³¤Á¤é¤Ç¤¹: http://www.piece-me.org/piece-lab/ispunct/ispunct-src.zip