'''ÇÁ¸® ÆĽºÄ® ÇÁ·Î±×·¡¸Ó ¾È³»¼­''' ---- {{{ÀÌ ¹®¼­´Â ¹ø¿ª ÁßÀÔ´Ï´Ù. }}} * ÀÌ ¹®¼­´Â ¿µ¾î·Î ÀÛ¼ºµÈ ¹®¼­ÀÎ Free Pascal's Programmer's Guide¿¡¼­ Çѱ¹¾î·Î ¹ø¿ª ÁßÀÔ´Ï´Ù. ¿ø¹®Àº ftp://ftp.freepascal.org/pub/fpc/docs-pdf/prog.pdf ¿¡ ÀÖ½À´Ï´Ù. ÇÔ²² ¹ø¿ªÇØ ÁÖ¼¼¿ä. °ü½ÉÀִ éÅͺÎÅÍ ¹ø¿ªÇØ ÁÖ½Ã¸é µÇ°Ú½À´Ï´Ù. [[TableOfContents]] 0.1. ÀÌ ¹®¼­¿¡ ´ëÇÏ¿© ÇÁ¸® ÆĽºÄ®ÀÇ ÇÁ·Î±×·¡¸Ó ¾È³»¼­ÀÔ´Ï´Ù. ÀÌ ¾È³»¼­´Â ÇÁ¸® ÆĽºÄ® ÄÄÆÄÀÏ·¯ÀÇ Æ¯Â¡À» ¼³¸íÇÏ°í, ÄÄÆÄÀÏ·¯°¡ ¾î¶»°Ô Äڵ带 »ý¼ºÇÏ°í, ¶Ç »ý¼ºµÈ Äڵ带 ¾î¶»°Ô ¹Ù²Ü ¼ö ÀÖ´ÂÁö¸¦ ¼³¸íÇÒ °ÍÀÔ´Ï´Ù. ±×·¯³ª ÄÄÆÄÀÏ·¯ ³»ºÎÀÇ µ¿ÀÛ¿¡ ´ëÇؼ­ ÀÚ¼¼È÷ ¼³¸íÇÏÁö´Â ¾ÊÀ» °ÍÀÌ°í, ÄÄÆÄÀÏ·¯ »ç¿ë¹ýÀ» ¼³¸íÇÏÁöµµ ¾ÊÀ» °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº »ç¿ëÀÚ ¾È³»¼­¿¡ Àß ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù. ½ÇÇà½Ã°£ ¶óÀ̺귯¸®(RTL)ÀÇ ³»ºÎ µ¿ÀÛ¿¡ ´ëÇؼ­µµ ¼³¸íÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. RTLÀÌ ¾î¶»°Ô ±¸ÇöµÇ¾î ÀÖ´ÂÁö¸¦ ¾Ë·Á¸é ¼Ò½º Äڵ带 Á÷Á¢ »ìÆ캸´Â °ÍÀÌ Á¦ÀÏ ÁÁÀ» °ÍÀÔ´Ï´Ù. ¿©±â¼­ ¼³¸íÇÏ´Â °ÍµéÀº ÂüÁ¶ ¾È³»¼­¿¡¼­ ¼³¸íµÇ¾î Àִ ǥÁØ ÆĽºÄ® ¾ð¾î°¡ ±¸¼ºÇÏ´Â °Íº¸´Ù ´õ À¯¿¬ÇØ¾ß ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù. ÄÄÆÄÀÏ·¯°¡ Áö¼ÓÀûÀ¸·Î °³¹ßµÇ°í Àֱ⠶§¹®¿¡, ÀÌ ¹®¼­´Â ÀÌ¹Ì Áö³­ °ÍÀÏ ¼ö ÀÖ½À´Ï´Ù. °¡´ÉÇÑ ºÎºÐ¿¡¼­, ÀÌ ¸Å´º¾óÀÇ Á¤º¸´Â ¾÷µ¥ÀÌÆ® µÉ °ÍÀÔ´Ï´Ù. Ʋ¸° ºÎºÐÀÌ Àְųª ºüÁø ºÎºÐÀÌ ÀÖ´Ù¸é ÁÖÀú¸»°í ¿¬¶ôÇØ ÁֽʽÿÀ[* Michael.Van''''''Canneyt@wisa.be ·Î ¿¬¶ôÇØ ÁÖ¼¼¿ä.]. = ÄÄÆÄÀÏ·¯ Áö½ÃÀÚ = ÇÁ¸® ÆĽºÄ®Àº ¼Ò½º ÆÄÀÏ ³»¿¡¼­ ÄÄÆÄÀÏ·¯ Áö½ÃÀÚ¸¦ Áö¿øÇÕ´Ï´Ù. ȣȯ¼ºÀ» À§ÇÏ¿© Åͺ¸ ÆĽºÄ®ÀÇ Áö½ÃÀÚ Áß¿¡¼­ ÀϺθ¦ Áö¿øÇÏÁö¸¸ Åͺ¸ ÆĽºÄ®ÀÇ Áö½ÃÀÚ¿Í´Â ´Ù¸¨´Ï´Ù. Áö½ÃÀÚ´Â Áö¿ª°ú Àü¿ª Áö½ÃÀÚ·Î ±¸ºÐÇÕ´Ï´Ù. Áö¿ª Áö½ÃÀÚ´Â Áö½ÃÀÚ¸¦ ¸¸³µÀ» ¶§ È¿°ú°¡ ¹ßÈֵǰí, Àü¿ª Áö½ÃÀÚ´Â ÄÄÆÄÀÏ µÈ ÄÚµå Àüü¿¡¼­ È¿°ú¸¦ ¹ßÈÖÇÕ´Ï´Ù. ¿©·¯ ½ºÀ§Ä¡µéÀº ±æ°Ô ¾µ ¼öµµ ÀÖ½À´Ï´Ù. ±æ°Ô ¾µ ¼ö ÀÖ´Â °ÍµéÀº ±ä ÇüÅÂÀÇ À̸§ÀÌ ÀÖ½À´Ï´Ù. +³ª - ¹®ÀÚ´Â ¿É¼ÇÀ» ÄѰųª ²ø ¼ö Àִµ¥ ONÀ̳ª OFF·Î ±æ°Ô ¾µ ¼öµµ ÀÖ½À´Ï´Ù. µû¶ó¼­ {{{ {$I+} }}} ¿É¼ÇÀº {{{ {$IOCHECKS ON} }}} ȤÀº {{{ {$IOCHECKS +} }}}°ú °°°í {{{ {$C-} }}}Àº {{{ {$ASSERTIONS OFF} }}} ȤÀº {{{ {$ASSERTIONS -} }}}°ú °°½À´Ï´Ù. ½ºÀ§Ä¡ÀÇ ±ä ÇüÅ´ µ¨ÆÄÀÌ ÂÊ°ú °°½À´Ï´Ù. == Áö¿ª Áö½ÃÀÚ == Áö¿ª Áö½ÃÀÚ´Â À¯´ÖÀ̳ª ÇÁ·Î±×·¥¿¡¼­ Çѹø ÀÌ»ó ³ª¿Ã ¼ö ÀÖ¾¹´Ï´Ù. ¸í·ÉÁÙ¿¡ Áö¿ª Áö½ÃÀÚ°¡ ÀÖÀ¸¸é ¸í·ÉÁÙ ÀÎÀÚ°¡ °¢°¢ÀÇ ÄÄÆÄÀÏµÈ ÆÄÀÏ¿¡ ±âº»À¸·Î ÀúÀåµË´Ï´Ù. Áö¿ªÁö½ÃÀÚ¸¦ ¸¸³ª¸é ´Ù¸¥ ½ºÀ§Ä¡°¡ ¹«È¿È­Çϰųª ÇÁ·Î±×·¥ ³¡¿¡ µµ´ÞÇÒ ¶§±îÁö ÄÄÆÄÀÏ·¯ÀÇ Çൿ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù === $A or $ALIGN : µ¥ÀÌÅÍ Á¤·Ä ¹æ½Ä === {{{ {$ALIGN }}} Áö½ÃÀÚ´Â Mac OS¿ëÀ¸·Î ÄÄÆÄÀÏÇÒ ¶§ µ¥ÀÌÅÍÀÇ Á¤·Ä ¹æ½ÄÀ» ¼±ÅÃÇϴµ¥ »ç¿ëÇÕ´Ï´Ù. MACPAS¸ðµå¿¡¼­¸¸ ¾µ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ||'''MAC68K'''|| ||'''POWER'''|| ||'''RESET'''|| === $ASMMODE : ¾î¼Àºí·¯ ¸ðµå (ÀÎÅÚ 80x86 Àü¿ë) === {{{ {$ASMMODE XXX} }}} Áö½ÃÀÚ´Â {{{asm}}}ºí·°À» ¸¸³µÀ» ¶§ ¾î¶² Á¾·ùÀÇ ¾î¼Àºí·¯¸¦ »ç¿ëÇÒÁö¸¦ ¼³Á¤ÇÕ´Ï´Ù. XXXºÎºÐ¿¡ ´ÙÀ½ Áß¿¡ Çϳª¸¦ ½á ³Ö½À´Ï´Ù. ||'''att'''||{{{ asm }}} ºí·ÏÀÌ AT&T ±¸¹® ¾î¼Àºí·¯¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù.|| ||'''intel'''||{{{ asm }}} ºí·ÏÀÌ ÀÎÅÚ ±¸¹® ¾î¼Àºí·¯¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù.|| ||'''direct'''||{{{asm}}} ºí·°ÀÌ ¹Ù·Î ¾î¼Àºí·¯ ÆÄÀÏ·Î º¹»çµÇ¾î¾ß ÇÑ´Ù´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù.|| ¸ðµÎ Áö¿ª ½ºÀ§Ä¡À̸ç, °°Àº Á¾·ùÀÇ Áö½ÃÀÚ·Î ´ëüµÇÁö ¾Ê´Â ÇÑ, ÄÄÆÄÀϵǴ À¯´ÖÀÇ ³¡±îÁö °ªÀ» À¯ÁöÇÕ´Ï´Ù. ÀÌ°Í°ú °ü·ÃµÈ ¸í·ÉÁÙ ½ºÀ§Ä¡´Â {{{ -R }}}ÀÔ´Ï´Ù. ±âº» ¾î¼Àºí·¯ ¸®´õ´Â AT&T ¸®´õÀÔ´Ï´Ù. === $B or $BOOLEVAL : ¿ÏÀüÇÑ ºÒ¸®¾ð ¿¬»ê¹ý === ÀÌ ½ºÀ§Ä¡´Â ÇÁ¸® ÆĽºÄ® ÄÄÆÄÀÏ·¯°¡ ÀÌÇØÇÏ´Â °ÍÀ̱ä ÇÏÁö¸¸ ¹«½ÃµË´Ï´Ù. ÄÄÆÄÀÏ·¯´Â Ç×»ó ºÒ¿ÏÀü ¿¬»êÀ» ÇÕ´Ï´Ù. Áï, Àüü ¿¬»êÀÇ °á°ú°¡ ¹«¾ùÀÎÁö È®½ÅÇÒ ¼ö ÀÖ´Â ½ÃÁ¡¿¡¼­ ¿¬»êÀ» ±×¸¸µÓ´Ï´Ù. µû¶ó¼­ ´ÙÀ½°ú °°Àº ¿¹Á¦¿¡¼­ ºÒ¸®¾ð °ªÀ» ¸®ÅÏÇÏ´Â Bofu¶ó´Â ÇÔ¼ö´Â Àý´ë È£ÃâµÇÁö ¾Ê½À´Ï´Ù. {{{If False and Bofu then ... }}} µû¶ó¼­ Bofu°¡ Ãß°¡ÀûÀ¸·Î ÇÏ´Â °ÍµéÀº ¼öÇàµÇÁö ¾Ê½À´Ï´Ù. === $C or $ASSERTIONS : Assertion Áö¿ø === {{{ {$ASSERTIONS} }}} ½ºÀ§Ä¡´Â assert¹®À» ÀÌÁø ÄÚµå·Î ÄÄÆÄÀÏ ÇÒ °ÍÀÎÁö ¾È ÇÒ °ÍÀÎÁö¸¦ °áÁ¤ÇÕ´Ï´Ù. ½ºÀ§Ä¡°¡ ÄÑÁ® ÀÖÀ¸¸é {{{Assert(BooleanExpression,AssertMessage); }}} ¿Í °°Àº ±¸¹®Àº ÀÌÁø ÆÄÀÏ·Î ÄÄÆÄÀÏ µÉ °ÍÀÔ´Ï´Ù. ¸¸ÀÏ {{{BooleanExpression}}}ÀÇ °ªÀÌ False°¡ µÇ¸é, RTLÀÌ {{{AssertErrorProc}}}°¡ ¼¼ÆõǾî ÀÖ´ÂÁö üũÇÕ´Ï´Ù. ÀÌ°ÍÀÌ ¼¼ÆõǾî ÀÖÀ¸¸é {{{AssertMessage}}} ¸Þ½ÃÁö¿¡ ÁÙ ¹øÈ£¿Í ÁÖ¼Ò¸¦ ÆĶó¹ÌÅÍ·Î ³Ñ°Ü¼­ È£ÃâÇÕ´Ï´Ù. ÀÌ°ÍÀÌ ¼¼ÆõǾî ÀÖÁö ¾ÊÀ¸¸é 227¹ø ½ÇÇà ½Ã°£ ¿¡·¯°¡ »ý¼ºµË´Ï´Ù. {{{AssertErrorProc}}}´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ½À´Ï´Ù. {{{Type TAssertErrorProc=procedure(const msg,fname:string;lineno,erroraddr:longint); Var AssertErrorProc = TAssertErrorProc; }}} ÀÌ°ÍÀº µð¹ö±ë ¿ëµµ·Î ÁÖ·Î ¾µ ¼ö ÀÖ½À´Ï´Ù. ½Ã½ºÅÛ À¯´ÖÀº {{{AssertErrorProc}}}À» {{{stderr}}}·Î ¸Þ½ÃÁö¸¦ º¸¿©ÁÖ°í ´Ü¼øÈ÷ Á¾·áÇعö¸®´Â °ÍÀ¸·Î Çڵ鷯¸¦ ¼³Á¤ÇÕ´Ï´Ù. sysutils À¯´ÖÀº 227¹ø ½ÇÇà ½Ã°£ ¿À·ù¸¦ catchÇÏ¿© {{{EAssertionFailed}}} ¿¹¿Ü¸¦ ¹ß»ý½Ãŵ´Ï´Ù. === $CALLING : È£Ãâ ±Ô¾à ÁöÁ¤ === {{{ {$CALLING } }}} Áö½ÃÀÚ´Â ÄÄÆÛÀÏ·¯¿¡°Ô ¾Æ¹« È£Ãâ ±Ô¾àÀÌ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ» ¶§ ¾î¶² È£Ãâ ±Ô¾àÀ» ½á¾ß ÇÏ´ÂÁö¸¦ ¾Ë·ÁÁÝ´Ï´Ù. {{{ {$CALLING REGISTER} }}} ±âº»°ªÀº {{{REGISTER}}}ÀÔ´Ï´Ù. ´ÙÀ½°ú °°Àº È£Ãâ ±Ô¾àÀÌ ÀÖ½À´Ï´Ù. ||'''register'''|| ||'''cdecl'''|| ||'''pascal'''|| ||'''safecall'''|| ||'''stdcall'''|| ||'''oldfpccall'''|| È£Ã⠱Ծ࿡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ ¼³¸íÀº ¼½¼Ç 6.3, 67 ÆäÀÌÁö¿¡ ³ª¿Í ÀÖ½À´Ï´Ù. Ư¼öÇÑ °æ¿ì·Î½á {{{DEFAULT}}}¸¦ ½á¼­ ±âº» È£Ãâ ±Ô¾àÀ¸·Î º¹±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù. === $CHECKPOINTER : Check pointer values === The {{{ {$CHECKPOINTER} }}} directive turns heap pointer checking on (value {{{ON}}}) or off (value {{{OFF}}}). When heap pointer checking is on and the code is compiled with the {{{-gh}}} (heaptrace) option on, then a check is inserted when dereferencing a pointer. The check will verify that the pointer contains a valid value, i.e. points to a location that is reachable by the program: the stack or a location in the heap. If not, a run-time error 216 or 204 is raised. If the code is compiled without {{{-gl}}} switch, then this directive has no effect. Note that this consider- ably slows down the code. = Using conditionals, messages and macros = = Using Assembly language = = Generated code = = Intel MMX support = = Code issues = = Linking issues = = Memory issues = = Resource strings = = Thread programming = = Optimizations = = Programming shared libraries = = Using Windows resources = = A: Anatomy of a unit file = = B: Compiler and RTL source tree structure = = C: Compiler limits = = D: Compiler modes = = E: Using fpcmake = = F: Compiling the compiler = = G: Compiler defines during compilation = = H: Stack configuration = = I: Operating system specific behavior =