Anda di halaman 1dari 3

ALINK v1.6 is copyright 1998/9 Anthony A.J. Williams. All Rights Reserved.

ALINK is a linker for OBJ and LIB files, and generates MSDOS COM and MSDOS EXE files, and Win32 PE files. Win32 resource files are also supported for linking to PE files. MS/Intel OMF and MS-COFF object and library files are supported. MS-COFF import libraries are not supported, and will cause an undefined symbol error in a .idata section. ALINK is free, and as such there is no warranty whatsoever. If anything bad happens, it is entirely your responsibility. The command line is: ALINK [options] filename [options] [filenames] [options] ... By default ALINK performs a case-sensitive link to an EXE file, without padding segments. If filenames don't include an extension, .obj is assumed. Additional parameters can be taken from response files, by specifying a filename preceded by an @ sign, e.g. ALINK @response.fil Blanks lines are ignored, options may be specified together, or on separate lines. Quoted strings are treated as a single parameter. Semicolons are treated as the start of a comment, and the rest of the line will be ignored. If you really want a semicolon, enclose it in quotes. Options and filenames can be used in the parameter file, but filenames may not include wildcards. Multiple response files can be referenced, and additional response files may be included from within a response file. Cyclic references are not detected, and will cause the program to loop until it runs out of memory (never, if the response files don't contain any options!). Possible options are: -c -c+ -c-p -p+ -p-o yyy -oxxx Enable Case sensitive link " Disable Case sensitive link Pad segments (initialise all segments) " Disable segment padding yyy is output filename xxx specifies output format COM = output COM file EXE = output EXE file PE = output Win32 PE file (.EXE) -m Generate map file -m+ " -mDon't generate map file -L ddd Add directory ddd to library search list -h Display this help list -H " -? " -entry name Use public symbol name as the entry point In addition, for PE files the following options apply: -base addr -objectalign xxx Set Image Base (default=4Mb) Set section alignment in memory (default=64K)

-filealign xxx -subsys xxx

Set section alignment in file (default=512) Set windows subsystem to use (default=windows) windows, win or gui => windows subsystem console, con or char => console subsystem native => native subsystem posix => POSIX subsystem -subsysver x.y Set subsystem version x.y (default=4.0) -osver x.y Set OS version x.y (default=1.0) -heapsize xxx Set heap size (default=1Mb) -heapcommitsize xxx Set heap commit size (default=4K) -stacksize xxx Set stack size (default=1Mb) -stackcommitsize xxx Set stack commit size (default=4K) -dll Build a DLL instead of an EXE file. -stub filename Use the specified file as the MSDOS stub. Note that Windows 3.1=> ver 3.10, 3.5=>ver 3.50 If you type -subsysver 3.1, this is the same as 3.01 The alignments must be powers of 2. ObjectAlign can be 512 to 256Mb, FileAlign c an be 512 to 64K. The Image base and alignments can be specified as decimal numbers , or as hex numbers prefixed by 0x (in fact, any number format supported by the C functi on strtoul). The image base must be a multiple of 64K. options are case sensitive, so -ocom is invalid, as is -C. If an output filename is not specified, then the output file is determined from the output type, and the root of the first object file. e.g. ALINK file1.obj -oCOM -o outfile.com Generates outfile.com from file1.obj ALINK file2.obj file3.obj -oEXE Generates file2.exe Segments from different object files are combined if they have the same name and class, and are not declared private. Absolute segments are never combined, and stack segments are always combined. Segments are emitted in the order they are present in the object files, unless groups are used. All segments in groups are emitted before segments not in groups. A segment may not be in more than one group. Segments in groups are emitted in the order specified in the group definition. If two different definitions of the same group specify different orders, the first definition is used. Thus, if in the second example above, file2.obj contains a group definition equivalent to agroup group code,data,stack and file3.obj contains a group definition equivalent to agroup group data,stack,bss,code

The final output for agroup will be code,data,stack,bss The text output they are loaded recognised, but will be printed COMENT records, from the linker is quite verbose, and lists all the files as in. Any unrecognised object records will cause an error. Any ignored records, such as LINNUM records and COMENT records on the screen. Since debug information is often contained in this could lead to a lot of output.

The map file will list the segments, publics, imports and exports. A sample Import library for Win32 is included as win32.lib. All named exports in Kernel32, User32, GDI32, Shell32, ADVAPI32, version,winmm, lz32,commdlg and comm ctl are included. Use alink -oPE file[.obj] win32.lib to include it. or specify INCLUDELIB "win32" in your source file (TASM) This consists of a series of entries for import redirection - call MessageBoxA, and it jumps to [__imp_MessageBoxA], which is in the Import Table. Thus calls to imports will run faster if call [__imp_importName] is used instead of call importName. See test.asm, my sample program, which calls up a message box both ways. See rtn.asm for an example program using NASM, and resources. Any questions, comments or bug reports please email me at anthony_w@geocities.com

Anda mungkin juga menyukai