📄 initlink.c
字号:
(byte *) ";");
space_string = make_constant_string(
(byte *) " ");
star_string = make_constant_string(
(byte *) "*");
sym_extension_string = make_constant_string(
(byte *) ".sym");
sys_extension_string = make_constant_string(
(byte *) ".sys");
tilde_string = make_constant_string(
(byte *) "~");
true_string = make_constant_string(
(byte *) "true");
quoted = ' ' ;
program_config_file_string = allocate_string( TEMP_STRING_LENGTH) ;
copy_string( program_config_file_string, program_directory_string) ;
p = strrchr(String(program_config_file_string),'\\') ;
If p IsNotNull
Then
config_name = make_constant_string( (byte *) "VALX.CFG") ;
trunc_string(program_config_file_string,p+1-String(program_config_file_string)) ;
concat_string(program_config_file_string,config_name) ;
process_filename(program_config_file_string) ;
Else
trunc_string(program_config_file_string,0) ;
EndIf
/*+-------------------------------------------------------------------------+
| |
| DOS Initialization |
| |
+-------------------------------------------------------------------------+*/
/*+-------------------------------------------------------------------------+
| |
| Other Initialization |
| |
+-------------------------------------------------------------------------+*/
current_record_header = (obj_record_header_ptr) object_file_element;
last_LIDATA_record_header = (obj_record_header_ptr) last_LIDATA_record;
copy_string(help_filename, program_directory_string);
change_extension(help_filename, help_extension_string);
return;
EndCode
/*+-------------------------------------------------------------------------+
| |
| secondary_linker_initialization |
| |
+-------------------------------------------------------------------------+
There are several steps in the initialization process which had to be
delayed because switches specified by the user affect the initialization
process. After user input is processed, this procedure is called and that
initialization occurs. */
void secondary_linker_initialization()
BeginDeclarations
EndDeclarations
BeginCode
secondary_init_start_time = Now;
/*+-------------------------------------------------------------------------+
| |
| Allocate the I/O buffer. |
| |
+-------------------------------------------------------------------------+*/
infile_buffer = allocate_memory(
Bit_32(buffer_size.val));
infile.buffer = infile_buffer;
infile.buffer_size = buffer_size.val;
outfile_buffer = allocate_memory(
Bit_32(buffer_size.val));
outfile.buffer = outfile_buffer;
outfile.buffer_size = buffer_size.val;
/*+-------------------------------------------------------------------------+
| |
| Allocate hash tables. |
| |
+-------------------------------------------------------------------------+*/
externals = (public_entry_ptr_array)
allocate_memory(
(Bit_32(max_externals)+1L) *
Bit_32(sizeof(group_entry_ptr)));
exports = (public_entry_ptr_array)
allocate_memory(
(Bit_32(max_exports)+1L) *
Bit_32(sizeof(group_entry_ptr)));
imports = (public_entry_ptr_array)
allocate_memory(
(Bit_32(max_imports)+1L) *
Bit_32(sizeof(group_entry_ptr)));
gnames = (group_entry_ptr_array)
allocate_memory(
(Bit_32(max_groups)+1L) *
Bit_32(sizeof(group_entry_ptr)));
group_hash_table = (group_entry_ptr_array)
allocate_memory(
Bit_32(group_table_hash_size.val) *
Bit_32(sizeof(group_entry_ptr)));
lname_hash_table = (lname_entry_ptr_array)
allocate_memory(
Bit_32(lname_table_hash_size.val) *
Bit_32(sizeof(lname_entry_ptr)));
lnames = (lname_entry_ptr_array)
allocate_memory(
(Bit_32(max_lnames)+1L) *
Bit_32(sizeof(lname_entry_ptr)));
public_hash_table = (public_entry_ptr_array)
allocate_memory(
Bit_32(public_table_hash_size.val) *
Bit_32(sizeof(public_entry_ptr)));
segment_hash_table = (segment_entry_ptr_array)
allocate_memory(
Bit_32(segment_table_hash_size.val) *
Bit_32(sizeof(segment_entry_ptr)));
snames = (lseg_ptr_array)
allocate_memory(
(Bit_32(max_segments)+1L) *
Bit_32(sizeof(lseg_ptr)));
/*+-------------------------------------------------------------------------+
| |
| Miscellaneous Secondary Initialization |
| |
+-------------------------------------------------------------------------+*/
c_common_lname = lookup_lname(8, (byte *) "c_common");
generated_lname = lookup_lname(11 ,(byte *) "(generated)");
none_lname = lookup_lname(6, (byte *) "(none)");
If case_ignore.val IsTrue
Then
CODE_lname = lookup_lname(4, (byte *) "code");
BSS_lname = lookup_lname(3, (byte *) "bss");
DGROUP_lname = lookup_lname(6, (byte *) "dgroup");
FAR_BSS_lname = lookup_lname(7, (byte *) "far_bss");
FLAT_lname = lookup_lname(4, (byte *) "flat");
HUGE_BSS_lname = lookup_lname(8, (byte *) "huge_bss");
STACK_lname = lookup_lname(5, (byte *) "stack");
codeview_class_DEBSYM = lookup_lname(6, (byte *) "debsym");
codeview_class_DEBTYP = lookup_lname(6, (byte *) "debtyp");
codeview_class_DEBBROWSE = lookup_lname(6, (byte *) "browse") ;
codeview_segment_SYMBOLS = lookup_lname(9, (byte *) "$$symbols");
codeview_segment_TYPES = lookup_lname(7, (byte *) "$$types");
codeview_segment_BROWSE = lookup_lname(8, (byte *) "$$browse");
Else
CODE_lname = lookup_lname(4, (byte *) "CODE");
BSS_lname = lookup_lname(3, (byte *) "BSS");
DGROUP_lname = lookup_lname(6, (byte *) "DGROUP");
FAR_BSS_lname = lookup_lname(7, (byte *) "FAR_BSS");
FLAT_lname = lookup_lname(4, (byte *) "FLAT");
HUGE_BSS_lname = lookup_lname(8, (byte *) "HUGE_BSS");
STACK_lname = lookup_lname(5, (byte *) "STACK");
codeview_class_DEBSYM = lookup_lname(6, (byte *) "DEBSYM");
codeview_class_DEBTYP = lookup_lname(6, (byte *) "DEBTYP");
codeview_class_DEBBROWSE = lookup_lname(6, (byte *) "BROWSE") ;
codeview_segment_SYMBOLS = lookup_lname(9, (byte *) "$$SYMBOLS");
codeview_segment_TYPES = lookup_lname(7, (byte *) "$$TYPES");
codeview_segment_BROWSE = lookup_lname(8, (byte *) "$$BROWSE");
EndIf;
exefile = (comfile.val IsFalse) AndIf (sysfile.val IsFalse);
return;
EndCode
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -