Server for Information Technologies óÅÒ×ÅÒ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ
ãÅÎÔÒÏÍ éÎÆÏÒÍÁÃÉÏÎÎÙÈ ôÅÈÎÏÌÏÇÉÊ
(095) 932-9212, 932-9213, 939-0783
E-mail: info@citforum.ru
óÅÒ×ÅÒ ÓÏÄÅÒÖÉÔ ÍÏÒÅ(!) ÁÎÁÌÉÔÉÞÅÓËÏÊ ÉÎÆÏÒÍÁÃÉÉ CIT Forum CD-ROM

86REL(5)
XENIX System V (1 ÑÎ×apÑ 1989)

îáú÷áîéå
86rel - æopÍaÔ oÂßeËÔÎoÇo ÍoÄyÌÑ, ÐpÉÎÑÔÙÊ ÄÌÑ ÐpoÃeccopa Intel 8086.

óéîôáëóéó

#include <sys/relsym86.h>

ïðéóáîéå
æopÍaÔ, ÐpÉÎÑÔÙÊ ÄÌÑ ÐpoÃeccopa Intell 8086, ÉÌÉ 86rel, ÐpeÄcÔa×ÌÑeÔ coÂoÊ oÂßeËÔÎÙÊ ÍoÄyÌØ , coÚÄa×aeÍÙÊ acceÍÂÌepoÍ masm(1) É Ñ×ÌÑeÔcÑ ×xoÄÎÙÍ ÆaÊÌoÍ ÄÌÑ peÄaËÔopa c×ÑÚeÊ ld(1). MaËpoÆaÊÌ relsym86.h coÄepÖÉÔ oÐÉcaÎÉÑ, ÐpÉ ÐoÌyÞeÎÉÉ × peÚyÌØÔaÔe ÔpaÎcÌÑÃÉÉ c ÑÚÙËa CÉ ÆaÊÌa × ÆopÍaÔe 86rel. OÐÉcaÎÉe ÔexÎÉÞecËÉx ÐoÄpoÂÎocÔeÊ ÆopÍaÔa 86rel cÍoÔpÉ × Intel 8086 ObjectModuleFormatExternal Product Specification.

æopÍaÔ 86rel cocÔoÉÔ ÉÚ ÚaÐÉceÊ ÐepeÍeÎÎoÊ ÄÌÉÎÙ. KaÖÄaÑ ÚaÐÉcØ ÉÍeeÔ Ðo ËpaÊÎeÊ Íepe ÔpÉ ÐoÌÑ: ÔÉÐ ÚaÐÉcÉ, ÄÌÉÎa É ËoÎÔpoÌØÎaÑ cyÍÍa. ðep×ÙÊ ÂaÊÔ ×ceÇÄa coÄepÖÉÔ ÔÉÐ ÚaÐÉcÉ. CyÝecÔ×yeÔ ÔpÉÄÃaÔØ oÄÉÎ paÚÌÉÞÎÙÊ ÔÉÐ ÚaÐÉceÊ. ToÌØËo oÄÉÎÎaÄÃaÔØ ÉÚ ÎÉx ÉcÐoÌØÚyeÔcÑ peÄaËÔopoÍ c×ÑÚeÊ ld(1) É masm(1). CÌo×o, pacÐoÌoÖeÎÎoe ÐocÌe Ðep×oÇo ÂaÊÔa ÐpeÄcÔa×ÌÑeÔ coÂoÊ ÄÌÉÎy ÚaÐÉcÉ × ÂaÊÔax;ÐpÉ ×ÙÞÉcÌeÎÉÉ ÄÌÉÎÙ Ðep×Ùe ÔpÉ ÂaÊÔa Îe yÞÉÔÙ×aÀÔcÑ .äaÌee cÌeÄyÀÔ oÄÎo ÉÌÉ ÎecËoÌØËo ÐoÌeÊ. KaÖÄÙÊ ÔÉÐ ÚaÐÉcÉ coÄepÖÉÔ cÐeÃÉÆÉÞecËyÀ ÐocÌeÄo×aÔeÌØÎocÔØ ÐoÌeÊ paÚÌÉÞÎoÊ ÄÌÉÎÙ, ÎeËoÔopÙe ÉÚ ËoÔopÙx ÍoÇyÔ ÂÙÔØ ÎeoÂÑÚaÔeÌØÎÙÍÉ ÉÌÉ . CaÍÙÊ ÐocÌeÄÎÉÊ ÂaÊÔ ËaÖÄoÊ ÚaÐÉcÉ coÄepÖÉÔ ËoÎÔpoÌØÎyÀ cyÍÍy. âaÊÔ ËoÎÔpoÌØÎoÊ cyÍÍÙ ÆopÍÉpyeÔcÑ ËaË cyÍÍa Ðo ÍoÄyÌÀ 256 ×cex ÄpyÇÉx ÂaÊÔ ÚaÐÉcÉ. CyÍÍa Ðo ÍoÄyÌÀ 256 ×cex ÂaÊÔ ÚaÐÉcÉ, ×ËÌÀÞaÑ É ÂaÊÔ ËoÎÔpoÌØÎoÊ cyÍÍÙ, ÄoÌÖÎa ÂÙÔØ pa×Îa ÎyÌÀ.

úa ÎeËoÔopÙÍ ÉcËÌÀÞeÎÉeÍ, Ðep×ÙÊ ÂaÊÔ cÔpoËÉ 86rel coÄepÖÉÔ ÞÉcÌo oÔ 0 Äo 40, ËoÔopoe oÐpeÄeÌÑeÔ ocÔa×ÛyÀcÑ ÄÌÉÎy cÔpoËÉ × ÂaÊÔax É cÔpoËa Îe coÄepÖÉÔ Úa×epÛaÀÝÉx ÎyÌeÊ (BHéMAHéE! B ÄaÌØÎeÊÛeÍ ×ce cÔpoËÉ, oÐÉcÙ×aeÍÙe × ÄoËyÍeÎÔe ÉÍeÀÔ ÔaËoÊ ÆopÍaÔ!). XoÔÑ × oÐÉcaÎÉÉ Intel ÐpeÄycÍoÔpeÎo ÉcÐoÌØÚo×aÎÉe ÔoÌØËo cÉÍ×oÌo× ×epxÎeÇo peÇÉcÔpa ËÌa×ÉaÔyp×Ù É cÉÍ×oÌo× `?', `@', `:' É `_' acceÍÂÌep masm(1) ÉcÐoØÚyeÔ ÐoÌÎÙÊ ÎaÂop ASCII cÉÍ×oÌo×.

OÐpeÄeÌeÎÉe Intel Object Module Format (OMF) ÉcÐoÌØÚyeÔ ÔepÍÉÎ "ÉÎÄeËc" ÉÌÉ ÄÌÑ oÂoÚÎaÞeÎÉÑ ÐoÌoÖÉÔeÌØÎÙx ÄecÑÔÉÞÎÙx ÞÉceÌ oÔ 0 Äo 127 ÉÌÉ oÔ 128 Äo 32,768. üÔa Öe ÔepÍÉÎoÌoÇÉÑ coxpaÎeÎa × ÄaÎÎoÍ ÄoËyÍeÎÔe É ×o ×ceÊ ÌÉÔepaÔype Ðo 86rel. éÎÄeËc ÐpeÄcÔa×ÌÑeÔcÑ oÄÎÉÍ ÉÌÉ Ä×yÍÑ ÂaÊÔaÍÉ. EcÌÉ Ðep×ÙÊ ÂaÊÔ ÉÍeeÔ ÎyÌe×oÊ Ðep×ÙÊ ÂÉÔ, ÉÎÄeËc ÐpeÄcÔa×ÌeÎ ÔoÌØËo oÄÎÉÍ ÂaÊÔoÍ, É ocÔaÔoË ÂaÊÔa ÐpeÄcÔa×ÌÑeÔ ÐoÌoÖÉÔeÌØÎoe ÄecÑÔÉÞÎoe ÞÉcÌo, pacÐoÌoÖeÎÎoe ÍeÖÄy 0 É 127. EcÌÉ ×ÔopoÊ ÂaÊÔ ÉÍeeÔ eÄÉÎÉÞÎÙÊ Ðep×ÙÊ ÂÉÔ, ÉÎÄeËc ÐpeÄcÔa×ÌeÎ Ä×yÍÑ ÂaÊÔaÍÉ É ocÔaÔoË cÌo×a coÄepÖÉÔ ÐoÌoÖÉÔeÌØÎoe ÄecÑÔÉÞÎoe ÞÉcÌo, pacÐoÌoÖeÎÎoe ÍeÖÄy 128 É 32.768.

HÉÖe ÐpÉ×eÄeÎ cÐÉcoË ÔÉÐo× ÚaÐÉceÊ É ÛecÔÎaÄÃaÔÉpÉÞÎÙe ×eÌÉÞÉÎÙ Éx Ðep×oÇo ÂaÊÔa, oÐpeÄeÌeÎÎÙx × ÆaÊÌe relsym86.h

#define MRHEADR  0x6e    /*ÚaÇoÌo×oË oÂßeËÔÎoÇo ÍoÄyÌÑ */
#define MRDGINT  0x70    /*ÉÎÉÃÉaÌÉÚaÃÉÑ peÇÉcÔpo×*/
#define MREDATA  0x72    /*Ñ×Îo oÐpeÄeÌeÎÎÙe ÄaÎÎÙe*/
#define MRIDATA  0x74    /*Ðo×ÔopÑeÍÙe ÄaÎÎÙe*/
#define MOVLDEF  0x76    /*oÐÉcaÎÉe ÐepeËpÙÔÉÑ*/
#define MENDREC  0x78    /*ÚaÐÉcØ ËoÎÃa ÂÌoËa ÉÌÉ ÐepeËpÙÔÉÑ*/
#define MBLKDEF  0x7a    /*oÐÉcaÎÉe ÂÌoËa*/
#define MBLKEND  0x7c    /*ËoÎeà ÂÌoËa*/
#define MDEBSYM  0x7e    /*cÉÍ×oÌÙ oÔÌaÄËÉ*/
#define MTHEADR  0x80    /*ÚaÇoÌo×oË ÍoÄyÌÑ, oÂÙÞÎo
                          Ðep×ÙÊ × oÂßeËÔÎoÍ ÆaÊÌe*/
#define MLHEADR  0x82    /*ÚaÇoÌo×oË ÍoÄyÌÑ c×ÑÚÉ*/
#define MPEDATA  0x84    /*aÂcoÌÀÔÎÙe ÄaÎÎÙe*/
#define MPIDATA  0x86    /*aÂcoÌÀÔÎÙe Ðo×ÔopÑeÍÙe ÄaÎÎÙx*/
#define MCOMENT  0x88    /*ÚaÐÉcØ ËoÍÍeÔapÉÑ*/
#define MMODEND  0x8a    /*ÚaÐÉcØ ËoÎÃa ÍoÄyÌÑ*/
#define MEXTDEF  0x8c    /*×ÎeÛÎÉe oÐÉcaÎÉÑ*/
#define MTYPDEF  0x8e    /*oÐÉcaÎÉÑ ÔÉÐa*/
#define MPUBDEF  0x90    /*ÇÌoÂaÌØÎÙe oÐÉcaÎÉÑ*/
#define MLOCSYM  0x92    /*ÌoËaÌØÎÙe cÉÍ×oÌÙ*/
#define MLINNUM  0x94    /*ÎoÍep cÔpoËÉ ÉcxoÄÎoÇo ÔeËcÔa*/
#define MLNAMES  0x96    /*ÚaÐÉcØ cÐÉcËa ÉÍeÎ*/
#define MSEGDEF  0x98    /*oÐÉcaÎÉe ceÇÍeÎÔa*/
#define MGRPDEF  0x9a    /*oÐÉcaÎÉe ÇpyÐÐÙ*/
#define MFIXUPP  0x9c    /*ÉÎÆopÍaÃÉÑ o ÎacÔpoÊËe
                          ÐepeÍecÔÉÍÙx ÄaÎÎÙx*/
#define MNONE1   0x9e    /*ÎeÔ*/
#define MLEDATA  0xa0    /*ÌoÇÉÞecËÉe ÄaÎÎÙe*/
#define MLIDATA  0xa2    /*ÌoÇÉÞecËÉe Ðo×ÔopÑeÍÙe ÄaÎÎÙe */
#define MLIBHED  0xa4    /*ÚaÇoÌo×oË ÂÉÂÌÉoÔeËÉ*/
#define MLIBNAM  0xa6    /*ÚaÐÉcØ ÉÍeÎ ÂÉÂÌÉoÔeËÉ*/
#define MLIBLOC  0xa8    /*paÚÍeÝeÎÉÑ ÍoÄyÌeÊ ÂÉÂÌÉoÔeËÉ*/
#define MLIBDIC  0xaa    /*cÌo×apØ ÂÉÂÌÉoÔeËÉ*/
#define M386END  0x86    /*ÚaÐÉcØ ËoÎÃa 32 ÂÉÔÎoÇo ÍoÄyÌÑ*/
#define MPUB386  0x91    /*32 ÂÉÔÎoe ÇÌoÂaÌØÎoe oÐpeÄeÌeÎÉe*/
#define MLOC386  0x93    /*32 ÂÉÔÎÙe ÌoÇÉÞecËÉe cÉÍ×oÌÙ*/
#define MLIN386  0x95    /*32 ÂÉÔÎÙÊ ÎoÍep ÉcxoÄÎoÊ cÔpoËÉ*/
#define MSEG386  0x99    /*32 ÂÉÔÎoe oÐÉcaÎÉe ceÇÍeÎÔa*/
#define MFIX386  0x9d    /*ÉÎÆopÍaÃÉÑ o ÎacÔpoÊËe
                          ÐepeÍecÔÉÍÙx ÄaÎÎÙx*/
#define MLED386  0xa1    /*32 ÂÉÔÎÙÊ ÌoÇÉÞecËÉe ÄaÎÎÙe*/
#define MLID386  0xa3    /*32 ÂÉÔÎÙe ÌoÇÉÞecËÉe Ðo×ÔopÑeÍÙe ÄaÎÎÙe*/

B ÄaÌØÎeÊÛeÍ ÂyÄyÔ oÐÉcaÎÙ ocoÂeÎÎocÔÉ ËaÖÄoÇo ÔÉÐa ÚaÐÉcÉ. EcÌÉ ÚaÐÉcØ Îe ÉcÐoÌØÚyeÔcÑ ÎÉ masm(1), ÎÉ ld(1), oÎa Îe oÐÉcaÎa.

THEADR
TÉÐ ÚaÐÉcÉ oÐpeÄeÌÑeÔcÑ ÚÎaÞeÎÉeÍ 0x80. úaÐÉcØ THEADR oÐpeÄeÌÑeÔ ÉÍÑ ÆaÊÌa ÉcxoÄÎoÇo ÍoÄyÌÑ c ÔeËcÔoÍ Îa acceÍÂÌepe (cÍ. úaÍeÞaÎÉÑ). EÄÉÎcÔ×eÎÎoe ÐoÌe coÄepÖÉÔ ÐoÌe TMODULE NAME, ÐoÌyÞeÎÎoe ËaË base name oÔ ÐoÌÎoÇo ÉÍeÎÉ ÆaÊÌa.
COMENT
TÉÐ ÚaÐÉcÉ oÐpeÄeÌÑeÔcÑ ÚÎaÞeÎÉeÍ 0x88. úaÐÉcØ COMENT ÍoÖeÔ coÄepÖaÔØ ËoÍeÎÔapÉÊ, coÚÄa×aeÍÙÊ ËoÍÐÉÌÑÔopoÍ. Mams(1) ÐoÍeÝaeÔ × ÐoÌe ÜÔoÇo ËoÍeÎÔapÉÑ cÔpoËy "XENIX 8086 ASSEMBLER."
MODEND
TÉÐ ÚaÐÉcÉ oÐpeÄeÌÑeÔcÑ ÚÎaÞeÎÉeÍ 0x8a. úaÐÉcØ MODEND Úa×epÛaeÔ ÍoÄyÌØ. OÎa oÐpeÄeÌÑeÔ, coÄepÖÉÔ ÌÉ ÔeËyÝÉÊ ÍoÄyÌØ ÔoÞËy ×xoÄa ÄÌÑ ×ÙÐoÌÎeÎÉÑ. EcÌÉ ÍoÄyÌØ Ñ×ÌÑeÔcÑ ÔoÞËoÊ ×xoÄa, ÚaÐÉcØ MODEND oÐpeÄeÌÑeÔ aÄpec ÔoÞËÉ ×xoÄa.
EXTDEF
TÉÐ ÚaÐÉcÉ oÐpeÄeÌÑeÔcÑ ÚÎÞeÎÉeÍ 0x8c. úaÐÉcØ EXTDEF coÄepÖÉÔ ÉÍeÎa É ÔÉÐÙ cÉÍ×oÌo×, oÐpeÄeÌeÎÎÙx × ÄpyÇÉx ÍoÄyÌÑx ÚaÐÉcØÀ ÔÉÐa PUBDEF (cÍ. ÎÉÖe). üÔo cooÔ×eÔcÔ×yeÔ ËÌaccy ÐaÍÑÔÉ "extern" × ÑÚÙËe CÉ. ðoÌÑ coÄepÖaÔ oÄÎy ÉÌÉ ÂoÌee cÔpoË, Úa ËaÖÄoÊ cÔpoËoÊ cÌeÄyeÔ ÉÎÄeËc. éÎÄeËcÙ yËaÚÙ×aÀÔ Îa ÚaÐÉcÉ TYPDEF, pacÐoÌoÖeÎÎÙe paÎee × ÍoÄyÌe. Masm(1) ÇeÎepÉpyeÔ ÔoÌØËo oÄÉÎ EXTDEF Îa ËaÖÄÙÊ ×ÎeÛÎÉÊ cÉÍ×oÌ.
TYPDEF
TÉÐ ÚaÐÉcÉ oÐpeÄeÌÑeÔcÑ ÚÎaÞeÎÉeÍ 0x8e. úaÐÉcØ TYPDEF coÄepÖÉÔ oÐÉcaÎÉe ÔÉÐo× (paÚÍep É aÔpÉÂyÔÙ xpaÎeÎÉÑ) . Ha ÜÔo oÐÉcaÎÉe ÍoÇyÔ ccÙÌaÔØcÑ ÚaÐÉcÉ EXTDEF, PUBDEF É ÄpyÇÉe ÚaÐÉcÉ.
PUBDEF
TÉÐ ÚaÐÉcÉ oÐpeÄeÌÑeÔcÑ ÚÎaÞeÎÉeÍ 0x90. B ÚaÐÉcÉ PUBDEF coÄepÖÉÔcÑ cÐÉcoË, cocÔoÑÝÉÊ ÉÚ oÄÎoÇo ÉÌÉ ÂoÌee ÉÍeÎ, Îa ËoÔopÙe ÍoÇyÔ ccÙÌaÔØcÑ ÄpyÇÉe ÍoÄyÌÉ. CÐÉcËy ÉÍeÎ ÐpeÄÛecÔ×yÀÔ ÉÎÄeËc ÇpyÐÐÙ É ceÇÍeÎÔa, ËoÔopÙe yËaÚÙ×aÀÔ Îa ÎaÞaÌo cÐÉcËa ÇÌoÂaÌØÎÙx ÐepeÍeÎÎÙx × ÔeËyÝeÍ ceÇÍeÎÔe É ÇpyÐÐe. EcÌÉ ÉÎÄeËc ceÇÍeÎÔa É ÇpyÐÐÙ pa×ÎÙ 0, ÚaÄaeÔcÑ ÎoÍep frame, oÐpeÄeÌÑÀÝÉÊ aÂcoÌÀÔÎÙÊ aÄpec × ÍoÄyÌe. CÐÉcoË cocÔoÉÔ ÉÚ oÄÎoÊ ÉÌÉ ÂoÌee cÔpoË, ËaÖÄaÑ ÉÚ ËoÔopÙx coÄepÖÉÔ 16-ÂÉÔÎoe cÍeÝeÎÉe × ÔeËyÝeÍ ceÇÍeÎÔe É ÉÎÄeËc, yËaÚÙ×aÀÝÉÊ Îa TYPDEF.
LNAMES
TÉÐ ÚaÐÉcÉ oÐpeÄeÌÑeÔcÑ ÚÎaÞeÎÉeÍ 0x96. úaÐÉcØ LNAMES ÚaÄaeÔ ÐocÌeÄo×aÔeÌØÎocÔØ cÔpoË, ËoÔopÙe cooÔ×eÔcÔ×yÀÔ ÉÍeÎaÍ, yËaÚaÎÎÙÍ × ÔeËyÝeÍ ÍoÄyÌe. KaÖÄoe ÉÍÑ ÉÎÄeËcÉpo×aÎo ÐocÌeÄo×aÔeÌØÎo, ÎaÞÉÎaÑ c 1. úaÐÉcÉ SEGDEF É GRDEF, pacÐoÌoÖeÎÎÙe Úa ÄaÎÎoÊ ÚaÐÉcØÀ É ÎaxoÄÑÝÉecÑ × ÄaÎÎoÍ ÍoÄyÌe, ÐoÌyÞaÀÔ ÉÚ ÜÔoÊ ÚaÐÉcÉ ÉÍeÎa ceÇÍeÎÔo×, ËÌacco×, ÐepeËpÙÔÉÊ É ÇpyÐÐ.
SEGDEF
TÉÐ ÚaÐÉcÉ oÐpeÄeÌÑeÔcÑ ÚÎaÞeÎÉeÍ 0x98. úaÐÉcØ SEGDEF coÄepÖÉÔ ÉÎÄeËc, yËaÚÙ×aÀÝÉÊ Îa ceÇÍeÎÔ É ÉÎÆopÍaÃÉÀ o aÄpecaÃÉÉ É aÔpÉÂyÔax ceÇÍeÎÔa. üÔoÔ ÉÎÄeËc ÍoÖeÔ ÂÙÔØ ÉcÐoÌØÚo×aÎ ÄpyÇÉÍÉ ÚaÐÉcÑÍÉ ÄÌÑ ccÙÌoË Îa ceÇÍeÎÔ. ðep×oe cÌo×o ÚaÐÉcÉ, pacÐoÌoÖeÎÎoe ÐocÌe ÐoÌÑ ÄÌÉÎÙ, coÄepÖÉÔ ÉÎÆopÍaÃÉÀ o ×Ùpa×ÎÉ×aÎÉÉ É ËoÍÂÉÎaÃÉÉ aÔpÉÂyÔo× ceÇÍeÎÔa. CÌeÄyÀÝee cÌo×o oÐpeÄeÌÑeÔ ÄÌÉÎy ceÇÍeÎÔa × ÂaÊÔax. úaÍeÔÉÍ, ÞÔo oÎo ÚaÄaeÔ ÍaËcÉÍaÌØÎyÀ ÄÌÉÎy ceÇÍeÎÔa, pa×ÎyÀ 65,536 ÂaÊÔ. äaÌee cÌeÄyeÔ ÉÎÄeËc ceÇÍeÎÔ (cÍ. ×ÙÛe). HaËoÎeÃ, SEGDEF ÍoÖeÔ, Îo Îe oÂÑÚaÔeÌØÎo, coÄepÖaÔØ ÐoÌÑ ÉÎÄeËco× ËÌacca É/ÉÌÉ ÐepeËpÙÔÉÑ.
FIXUPP
TÉÐ ÚaÐÉcÉ oÐpeÄeÌÑeÔcÑ ÚÎaÞeÎÉeÍ 0x9c. úaÐÉcØ FIXUPP oÐpeÄeÌÑeÔ oÄÎy ÉÌÉ ÂoÌee ÍoÄÉÆÉËaÃÉÊ aÄpeco× ×o ×peÍÑ peÄaËÔÉpo×aÎÉÑ c×ÑÚeÊ ("fixups"). KaÖÄaÑ ÚaÐÉcØ yËaÚÙ×aeÔ Îa aÄpec × ÐpeÄÙÄyÝeÊ ÚaÐÉcÉ LEDATA (cÍ. ÎÉÖe). äÌÑ ÔoÇo, ÞÔoÂÙ ÎacÔpoÉÔØ aÄpec ÎeoÂxoÄÉÍo ÚÎaÔØ: paÚÍeÝeÎÉe, peÖÉÍ, target É frame. Frame É target ÍoÇyÔ ÂÙÔØ ÚaÄaÎÙ Ñ×Îo ÉÌÉ ÞepeÚ ccÙÌËy Îa yÖe oÐpeÄeÌeÎÎyÀ cÔpyËÔypy ÎacÔpoÊËÉ aÄpeco×.
LEDATA
TÉÐ ÚaÐÉcÉ oÐpeÄeÌÑeÔcÑ ÚÎaÞeÎÉeÍ 0xa0. üÔa ÚaÐÉcØ coÄepÖÉÔ ÎeÐpepÙ×ÎÙe ÔeËcÔÙ ÉÌÉ ÄaÎÎÙe, ÉcÐoÌØÚyeÍÙe peÄaËÔopoÍ c×ÑÚeÊ ÄÌÑ coÚÄaÎÉÑ ÐopÃÉÉ ×ÙÐoÌÎÑeÍoÇo ÍoÄyÌÑ . üÔo ÐopÃÉÑ ÍoÖeÔ ÔpeÂo×aÔØ ÄoÐoÌÎÉÔeÌØÎÙx ÄeÊcÔ×ÉÊ (cÍ. FIXUPP) ÐepeÄ ÚaÇpyÚËoÊ × ÉcÐoÌÎÑeÍÙÊ ÆaÊÌ. ðepeÄ ÔeËcÔoÍ ÉÌÉ ÄaÎÎÙÍÉ ÍoÇyÔ pcÐoÌaÇaÔØcÑ 2 ÐoÌÑ: ÉÎÄeËc ceÇÍeÎÔa É cÍeÝeÎÉe. éÎÄeËc ceÇÍeÎÔa (cÍ. INDEX) oÐpeÄeÌÑeÔ ceÇÍeÎÔ, ËoÔopÙÊ oÐÉcaÎ × ÚaÐÉcÉ SEGDEF. CÍeÝeÎÉe, ÐoÄ xpaÎeÎÉe ËoÔopoÇo oÔ×eÄeÎo oÄÎo cÌo×o, oÐpeÄeÌÑeÔ ×eÌÉÞÉÎy cÍeÝeÎÉÑ oÔ ÎaÞaÌa ÜÔoÇo ceÇÍeÎÔa.

óí. ôáëöå
as(1), ld(1)

úáíåþáîéñ
EcÌÉ ×Ù ÐoÐÙÔaeÔecØ c×ÑÚaÔØ ÍoÄyÌÉ, acceÍÂÌÉpo×aÎÎÙe oÄÉÎaËo×ÙÍÉ ÉÍeÎaÍÉ, ÚaÇpyÚÞÉË ÂyÄeÔ ÐÙÔaÔØcÑ paÚÍecÔÉÔØ eÇo ×ecØ × oÄÉÎ ÂoÌØÛoÊ ceÇÍeÎÔ. B ÐpoÇpaÍÍax ÄÌÑ ÐpoÃeccopa I802286 paÚÍep ceÇÍeÎÔa oÇpaÎÉÞeÎ ×eÌÉÞÉÎoÊ 64K. B ÂoÌØÛÉx ÐpoÇpaÍÍax paÚÍep peÚyÌØÔÉpyÀÝeÇo ceÇÍeÎÔa ÍoÖeÔ Ðpe×ÙÛaÔØ 64K. EcÌÉ ÉcÐoÌØÚyeÔcÑ ÍoÄeÌØ ÐaÍÑÔÉ ÔÉÐa large, Ôo, ÐocÌe Úa×epÛeÎÉÑ paÂoÔÙ peÄaËÔopa c×ÑÚeÊ, ÐoÌyÞaeÔcÑ oÄÉÎ ÉÌÉ ÂoÌee ÍoÄyÌeÊ, cocÔoÑÝÉx ÉÚ ceÇÍeÎÔo×, oÂÝÉÊ paÚÍep ÔeËcÔa ËoÔopoÇo cyÝecÔ×eÎÎo Ðpe×ÙÛaeÔ 64K.

CÌeÄo×aÔeÌØÎo, ÎyÖÎo ÂÙÔØ y×epeÎÎÙÍ, ÞÔo ÉÍÑ ÍoÄyÌÑ, × ÐpoÃecce acceÍÂÌÉpo×aÎÉÑ, co×ÐaÄaeÔ c ÉÍeÎeÍ ÉcxoÄÎoÇo. éÍeÎa ÍoÇyÔ Îe co×ÐaÄaÔØ, ecÌÉ ÉcxoÄÎÙÊ ÍoÄyÌØ ÂyÄeÔ ÐpeÄ×apÉÔeÌØÎo oÂpaÂoÔaÎ Îe c ÐoÍoÝØÀ ËoÍaÎÄÙ cc(1), a, ÎaÐpÉÍep, ×pyÞÎyÀ ÉÌÉ shell-ÐpoÇpaÍÍoÊ. äaÌee cÌeÄyeÔ ÐpÉÍep, ÎaÍepeÎÎo coÄepÖaÝÉÊ oÛÉÂËy:

     #incorrect
     cc -E module12.c |filter >x.c
     cc x.c
     mv x.o module1.o
     cc -E module2.c |filter >x.c
     cc x.c
     mv x.o module2.o
     cc -E module3.c |filter >x.c
     cc x.c
     mv x.o module3.o
     ld module1.o module2.o module3.o

þÔoÂÙ ÉÚÂeÖaÔØ ÜÔoÇo, ËaÖÄÙÊ ÉÚ ÍoÄyÌeÊ ÄoÌÖeÎ ÉÍeÔØ yÎÉËaÌØÎoe ÉÍÑ × ÍoÍeÎÔ acceÍÂÌÉpo×aÎÉÑ, ËaË ÐoËaÚaÎo ÎÉÖe:

     #correct
     cc -E module1.c |filter >x.c
     cc -S x.c
     mv x.s module1.s
     as module1.s
     .
     .
     .
     ld module1.o module2.o module3.o
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT