������������� ��������

������������� ������ �������� ������� � ���, ��� �� ��������� ��������� ������ ��� � ������ ������. ��� ���� �� ������ ��������� �� �� ����� ������, � ��� ����� ��� ���� ��������� �������� ���������� ����� � ������, ��� �� ������ � ��������� ��������� � ������ ��������.
��� ������������� � ���� ��������� ���������� ��������� �� ������ ����� �������� ���� ���� ������, ������������ ����� ���������, � ����������� ��� �������� ���� � ������ ��������� ������ �������� (���. 3.3). ���� � ���� ��������� ����������� ��������-�����������, ������� � ��-����-��������� ������ ���������, ������� ����� �� �����, ��� � ������� ����������� �������� ������ (���. 3.4).


���. 3.3. ����������� ����, ������������� ���������� ���������

���. �.4. ����������� ����, �������������� ���������������� ������� ��������

��������� ����� � ���, ��� ���� ���������� �������� ���� ����� ����� �������� ����� ������ (������������������), �� �������� � �������� ������� ����� ����������� ������� �� ���������� ���������, ������, ��� �� ������ � �������� ���� ��� ���������� SPARC, ������������ �������� �������� ����� ����������� � �� ������. ��� ������ ������������ ��� ����������� (� ���� ����� �� �� ����� ��������� ���������� �� ���������� ��� ��������������� ���, � ����, ��� ����������� ���, ����� �������� �������������) ������ ������ � ���, ����� �� ������ ��������� � ������� ��������� ��������, � ����� -������� ����� ��� ����� ������, ����������. �� �� �������� ��������� � ������, ���� �� ���������� � �������� ��������� ������ ���������� ���������������� ������ (������ 3.3).

������ 3.3. ������� ���������� ���������������� ���������� � �

int buf[20], *bufptr=buf;
char * message="No message defined yet\n";
void do_nothing_hook(int);
void (*hook)(int)=do_nothing_hook;

�������� ����� ��������� � ������ ����, � ������� ��������� ���������� ������ ��� ������ ������������� �����-���� ���������, �� ������ ������, ��� �������� � ��� �������� (������ 3.4).

������ 3.4. ���������� ���������� �������� �� ������ dst_seg:dst_offs

push dst seg ; ��� � ����� ������� �� ���������� �����
push dst_offs
retf

�� �������� ���������� ������������ ���������� ������� � ���, ��� ����������� ��������� ��� ������������� �� ������������ � �������� ����� � � �������� �������� �������� ��������� ������������ �������� (������������� � ���� ����� ��������� ��� ��������� ��������� �������� ������ ��� ������� ���������, ������������� �� ������������� �������). ������ �����, ����������� ��������� ������������ �������, ��������������� �������.
��������� ��� ������ ������ �� ����� ������ ���������� �� ������ "���������" ������ � ����, �� � ������ � ������� ����������� (relocation table). ��� ������ ������ ����� ������ �� ����� ������ � ���� ��� ������. ���� � ������ ������������ ������ ����� ������, ��� � �������� sethi %10, %hi(addr) ���������� SPARC, ��� move ax, segment addr ���������� 8086, �� ���������� � ���� ����.
� �������� "���������" ������ ������ ������������ �������� ����������� ������� �� ������ ���������. ��� ��������� ��������� �� �������� ����� �������� ���, ����� �������, ���������� ������ �� ���� ��������, ������������� � ������� �����������, � ����������� ������ �� ������ � ������������ �� ��������� �����.
����, ���������� ������� �����������, ������� ������� ����������� ������������ ������ � ����� �������� �������������� ��� ������������� ������������ ������. ������ ����� ������ ����� ���-����� � ������� MS DOS (������ 3.5).

������ 3.5. ��������� ���-����� MS DOS. ���������� �� WINT.H �� �������� | ; MS Visual C++ v6.0 (������� ������������ ������)

#define IMAGE_DOS_SIGNATURE Ox4D5A // MZ
typedef struct _IMAGE_DOS_HEADER { // ��������� DOS .EXE
WORD e_magic; // ���������� ����� (���������)
WORD e_cblp; // ����� ��������� �������� ����� � ������
WORD e_cp; // ���������� ������� � �����
WORD e_crlc; // ���������� �����������
WORD e_cparhdr; // ������ ��������� � ����������
WORD ejrainalloc; // ����������� ���������� �������������� ����������
ORD e_maxalloc; // ������������ ���������� �������������� ����������
WORD e ss; // ��������� (�������������) �������� SS
WORD e_sp; // ��������� �������� SP
WORD e_csum; // ����������� �����
WORD e_ip; // ��������� �������� IP
WORD e_cs; // ��������� (�������������) �������� CS
WORD e_lfarlc;// ����� ������� ����������� � �����
WORD e_ovno;// ����� ����������
WORD e_res[4];// ���������������
WORD e_oemid; // OEM ������������� (��� e_oeminfo)
WORD e_oeminfo;// ���������� OEM; ���������� ��� e_oemid
WORD e_res2[10];// ���������������
LONG e_lfanew; }// ����� ���������� ��������� � �����
}IMAGE DOS HEADER, �IMAGE DOS HEADER;

�������� ����������� � ���� ��������� ������� RT-11, � ������� ���������� ����������� ������ ����� �����. ������� ��������� ����� ���������� sav, ������������ ����� ���������� ����������� ������ � �������� ������ � ������ 01000. ���� ����� ����������� ������ ��������� ������� ���������� � ���� ���������. ���� ������������ ������� ������ � ���������� ����������� � ������� ������� ������. �����������, �� �� ������ ��������� ������������ ��� sav-�����.
������, ���� ��� ����������� ����� ��������� ������������ ��� ���������, �� ������ ������� ������ �� ��� � ���� �������������� ������: ����� � ����������� rel. ����� ��������� ����� ����������� � ������� ������ ������, ������ ��� ������, � ����������� �� ������������ ���� �������, ���������� ����������� ��������� ��������� � ������ rel-������� (���. 3.5).

���. 3.5. ������������� ������ � RT-11 � ����� ����������� sav-������ � ����� rel-�������