· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Free Pascal/Programmers Guide

ÇÁ¸® ÆĽºÄ® ÇÁ·Î±×·¡¸Ó ¾È³»¼­

ÀÌ ¹®¼­´Â ¹ø¿ª ÁßÀÔ´Ï´Ù.
  • ÀÌ ¹®¼­´Â ¿µ¾î·Î ÀÛ¼ºµÈ ¹®¼­ÀÎ Free Pascal's Programmer's Guide¿¡¼­ Çѱ¹¾î·Î ¹ø¿ª ÁßÀÔ´Ï´Ù. ¿ø¹®Àº ftp://ftp.freepascal.org/pub/fpc/docs-pdf/prog.pdf ¿¡ ÀÖ½À´Ï´Ù. ÇÔ²² ¹ø¿ªÇØ ÁÖ¼¼¿ä. °ü½ÉÀִ éÅͺÎÅÍ ¹ø¿ªÇØ ÁÖ½Ã¸é µÇ°Ú½À´Ï´Ù.


0.1. ÀÌ ¹®¼­¿¡ ´ëÇÏ¿©

ÇÁ¸® ÆĽºÄ®ÀÇ ÇÁ·Î±×·¡¸Ó ¾È³»¼­ÀÔ´Ï´Ù.

ÀÌ ¾È³»¼­´Â ÇÁ¸® ÆĽºÄ® ÄÄÆÄÀÏ·¯ÀÇ Æ¯Â¡À» ¼³¸íÇÏ°í, ÄÄÆÄÀÏ·¯°¡ ¾î¶»°Ô Äڵ带 »ý¼ºÇÏ°í, ¶Ç »ý¼ºµÈ Äڵ带 ¾î¶»°Ô ¹Ù²Ü ¼ö ÀÖ´ÂÁö¸¦ ¼³¸íÇÒ °ÍÀÔ´Ï´Ù. ±×·¯³ª ÄÄÆÄÀÏ·¯ ³»ºÎÀÇ µ¿ÀÛ¿¡ ´ëÇؼ­ ÀÚ¼¼È÷ ¼³¸íÇÏÁö´Â ¾ÊÀ» °ÍÀÌ°í, ÄÄÆÄÀÏ·¯ »ç¿ë¹ýÀ» ¼³¸íÇÏÁöµµ ¾ÊÀ» °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº »ç¿ëÀÚ ¾È³»¼­¿¡ Àß ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù. ½ÇÇà½Ã°£ ¶óÀ̺귯¸®(RTL)ÀÇ ³»ºÎ µ¿ÀÛ¿¡ ´ëÇؼ­µµ ¼³¸íÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. RTLÀÌ ¾î¶»°Ô ±¸ÇöµÇ¾î ÀÖ´ÂÁö¸¦ ¾Ë·Á¸é ¼Ò½º Äڵ带 Á÷Á¢ »ìÆ캸´Â °ÍÀÌ Á¦ÀÏ ÁÁÀ» °ÍÀÔ´Ï´Ù.

¿©±â¼­ ¼³¸íÇÏ´Â °ÍµéÀº ÂüÁ¶ ¾È³»¼­¿¡¼­ ¼³¸íµÇ¾î Àִ ǥÁØ ÆĽºÄ® ¾ð¾î°¡ ±¸¼ºÇÏ´Â °Íº¸´Ù ´õ À¯¿¬ÇØ¾ß ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù.

ÄÄÆÄÀÏ·¯°¡ Áö¼ÓÀûÀ¸·Î °³¹ßµÇ°í Àֱ⠶§¹®¿¡, ÀÌ ¹®¼­´Â ÀÌ¹Ì Áö³­ °ÍÀÏ ¼ö ÀÖ½À´Ï´Ù. °¡´ÉÇÑ ºÎºÐ¿¡¼­, ÀÌ ¸Å´º¾óÀÇ Á¤º¸´Â ¾÷µ¥ÀÌÆ® µÉ °ÍÀÔ´Ï´Ù. Ʋ¸° ºÎºÐÀÌ Àְųª ºüÁø ºÎºÐÀÌ ÀÖ´Ù¸é ÁÖÀú¸»°í ¿¬¶ôÇØ ÁֽʽÿÀ[1].

1. ÄÄÆÄÀÏ·¯ Áö½ÃÀÚ

ÇÁ¸® ÆĽºÄ®Àº ¼Ò½º ÆÄÀÏ ³»¿¡¼­ ÄÄÆÄÀÏ·¯ Áö½ÃÀÚ¸¦ Áö¿øÇÕ´Ï´Ù. ȣȯ¼ºÀ» À§ÇÏ¿© Åͺ¸ ÆĽºÄ®ÀÇ Áö½ÃÀÚ Áß¿¡¼­ ÀϺθ¦ Áö¿øÇÏÁö¸¸ Åͺ¸ ÆĽºÄ®ÀÇ Áö½ÃÀÚ¿Í´Â ´Ù¸¨´Ï´Ù. Áö½ÃÀÚ´Â Áö¿ª°ú Àü¿ª Áö½ÃÀÚ·Î ±¸ºÐÇÕ´Ï´Ù. Áö¿ª Áö½ÃÀÚ´Â Áö½ÃÀÚ¸¦ ¸¸³µÀ» ¶§ È¿°ú°¡ ¹ßÈֵǰí, Àü¿ª Áö½ÃÀÚ´Â ÄÄÆÄÀÏ µÈ ÄÚµå Àüü¿¡¼­ È¿°ú¸¦ ¹ßÈÖÇÕ´Ï´Ù.

¿©·¯ ½ºÀ§Ä¡µéÀº ±æ°Ô ¾µ ¼öµµ ÀÖ½À´Ï´Ù. ±æ°Ô ¾µ ¼ö ÀÖ´Â °ÍµéÀº ±ä ÇüÅÂÀÇ À̸§ÀÌ ÀÖ½À´Ï´Ù. +³ª - ¹®ÀÚ´Â ¿É¼ÇÀ» ÄѰųª ²ø ¼ö Àִµ¥ ONÀ̳ª OFF·Î ±æ°Ô ¾µ ¼öµµ ÀÖ½À´Ï´Ù.

µû¶ó¼­ {$I+} ¿É¼ÇÀº {$IOCHECKS ON} ȤÀº {$IOCHECKS +} °ú °°°í {$C-} Àº {$ASSERTIONS OFF} ȤÀº {$ASSERTIONS -} °ú °°½À´Ï´Ù.

½ºÀ§Ä¡ÀÇ ±ä ÇüÅ´ µ¨ÆÄÀÌ ÂÊ°ú °°½À´Ï´Ù.

1.1. Áö¿ª Áö½ÃÀÚ

Áö¿ª Áö½ÃÀÚ´Â À¯´ÖÀ̳ª ÇÁ·Î±×·¥¿¡¼­ Çѹø ÀÌ»ó ³ª¿Ã ¼ö ÀÖ¾¹´Ï´Ù. ¸í·ÉÁÙ¿¡ Áö¿ª Áö½ÃÀÚ°¡ ÀÖÀ¸¸é ¸í·ÉÁÙ ÀÎÀÚ°¡ °¢°¢ÀÇ ÄÄÆÄÀÏµÈ ÆÄÀÏ¿¡ ±âº»À¸·Î ÀúÀåµË´Ï´Ù. Áö¿ªÁö½ÃÀÚ¸¦ ¸¸³ª¸é ´Ù¸¥ ½ºÀ§Ä¡°¡ ¹«È¿È­Çϰųª ÇÁ·Î±×·¥ ³¡¿¡ µµ´ÞÇÒ ¶§±îÁö ÄÄÆÄÀÏ·¯ÀÇ Çൿ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù

1.1.1. $A or $ALIGN : µ¥ÀÌÅÍ Á¤·Ä ¹æ½Ä

{$ALIGN Áö½ÃÀÚ´Â Mac OS¿ëÀ¸·Î ÄÄÆÄÀÏÇÒ ¶§ µ¥ÀÌÅÍÀÇ Á¤·Ä ¹æ½ÄÀ» ¼±ÅÃÇϴµ¥ »ç¿ëÇÕ´Ï´Ù. MACPAS¸ðµå¿¡¼­¸¸ ¾µ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

MAC68K
POWER
RESET

1.1.2. $ASMMODE : ¾î¼Àºí·¯ ¸ðµå (ÀÎÅÚ 80x86 Àü¿ë)

{$ASMMODE XXX} Áö½ÃÀÚ´Â asmºí·°À» ¸¸³µÀ» ¶§ ¾î¶² Á¾·ùÀÇ ¾î¼Àºí·¯¸¦ »ç¿ëÇÒÁö¸¦ ¼³Á¤ÇÕ´Ï´Ù. XXXºÎºÐ¿¡ ´ÙÀ½ Áß¿¡ Çϳª¸¦ ½á ³Ö½À´Ï´Ù.

att asm ºí·ÏÀÌ AT&T ±¸¹® ¾î¼Àºí·¯¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù.
intel asm ºí·ÏÀÌ ÀÎÅÚ ±¸¹® ¾î¼Àºí·¯¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù.
directasm ºí·°ÀÌ ¹Ù·Î ¾î¼Àºí·¯ ÆÄÀÏ·Î º¹»çµÇ¾î¾ß ÇÑ´Ù´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù.

¸ðµÎ Áö¿ª ½ºÀ§Ä¡À̸ç, °°Àº Á¾·ùÀÇ Áö½ÃÀÚ·Î ´ëüµÇÁö ¾Ê´Â ÇÑ, ÄÄÆÄÀϵǴ À¯´ÖÀÇ ³¡±îÁö °ªÀ» À¯ÁöÇÕ´Ï´Ù. ÀÌ°Í°ú °ü·ÃµÈ ¸í·ÉÁÙ ½ºÀ§Ä¡´Â -R ÀÔ´Ï´Ù.

±âº» ¾î¼Àºí·¯ ¸®´õ´Â AT&T ¸®´õÀÔ´Ï´Ù.

1.1.3. $B or $BOOLEVAL : ¿ÏÀüÇÑ ºÒ¸®¾ð ¿¬»ê¹ý

ÀÌ ½ºÀ§Ä¡´Â ÇÁ¸® ÆĽºÄ® ÄÄÆÄÀÏ·¯°¡ ÀÌÇØÇÏ´Â °ÍÀ̱ä ÇÏÁö¸¸ ¹«½ÃµË´Ï´Ù. ÄÄÆÄÀÏ·¯´Â Ç×»ó ºÒ¿ÏÀü ¿¬»êÀ» ÇÕ´Ï´Ù. Áï, Àüü ¿¬»êÀÇ °á°ú°¡ ¹«¾ùÀÎÁö È®½ÅÇÒ ¼ö ÀÖ´Â ½ÃÁ¡¿¡¼­ ¿¬»êÀ» ±×¸¸µÓ´Ï´Ù.

µû¶ó¼­ ´ÙÀ½°ú °°Àº ¿¹Á¦¿¡¼­ ºÒ¸®¾ð °ªÀ» ¸®ÅÏÇÏ´Â Bofu¶ó´Â ÇÔ¼ö´Â Àý´ë È£ÃâµÇÁö ¾Ê½À´Ï´Ù.
If False and Bofu then
   ...
µû¶ó¼­ Bofu°¡ Ãß°¡ÀûÀ¸·Î ÇÏ´Â °ÍµéÀº ¼öÇàµÇÁö ¾Ê½À´Ï´Ù.

1.1.4. $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 ¿¹¿Ü¸¦ ¹ß»ý½Ãŵ´Ï´Ù.

1.1.5. $CALLING : È£Ãâ ±Ô¾à ÁöÁ¤

{$CALLING } Áö½ÃÀÚ´Â ÄÄÆÛÀÏ·¯¿¡°Ô ¾Æ¹« È£Ãâ ±Ô¾àÀÌ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ» ¶§ ¾î¶² È£Ãâ ±Ô¾àÀ» ½á¾ß ÇÏ´ÂÁö¸¦ ¾Ë·ÁÁÝ´Ï´Ù.

 
{$CALLING REGISTER}
±âº»°ªÀº REGISTERÀÔ´Ï´Ù. ´ÙÀ½°ú °°Àº È£Ãâ ±Ô¾àÀÌ ÀÖ½À´Ï´Ù.

register
cdecl
pascal
safecall
stdcall
oldfpccall

È£Ã⠱Ծ࿡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ ¼³¸íÀº ¼½¼Ç 6.3, 67 ÆäÀÌÁö¿¡ ³ª¿Í ÀÖ½À´Ï´Ù. Ư¼öÇÑ °æ¿ì·Î½á DEFAULT¸¦ ½á¼­ ±âº» È£Ãâ ±Ô¾àÀ¸·Î º¹±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

1.1.6. $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.

2. Using conditionals, messages and macros


3. Using Assembly language


4. Generated code


5. Intel MMX support


6. Code issues


7. Linking issues


8. Memory issues


9. Resource strings


10. Thread programming


11. Optimizations


12. Programming shared libraries


13. Using Windows resources


14. A: Anatomy of a unit file


15. B: Compiler and RTL source tree structure


16. C: Compiler limits


17. D: Compiler modes


18. E: Using fpcmake


19. F: Compiling the compiler


20. G: Compiler defines during compilation


21. H: Stack configuration


22. I: Operating system specific behavior

----
  • [1] Michael.VanCanneyt@wisa.be ·Î ¿¬¶ôÇØ ÁÖ¼¼¿ä.

ID
Password
Join
You have an ability to sense and know higher truth.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2007-01-15 17:30:20
Processing time 0.0073 sec