flat assembler
Message board for the users of flat assembler.
Index
> Windows > Linker Problem, i don't think i got one for FASM :? |
Author |
|
vbVeryBeginner 18 Aug 2004, 11:12
hi,
i just walk one step more into the world of FASM. could somebody tell me what is the linker in the concept of ASM or FASM? i just use the Depencency Walker to view the created FASM .exe file. just wish to know, why the Linker Version of the FASM created executables is always 1.54? where the linker is located? is it a file or another .exe? or is it a utility that combined with and come with fasm.exe? in the C concept, we compile the file then link it using linker. does the linker i mentioned above is the linker we use in linking C compile .obj code, .res? sincerely, vbVeryBeginner d(`..')b http://sulaiman.thefreebizhost.com |
|||
18 Aug 2004, 11:12 |
|
roticv 18 Aug 2004, 12:07
The "linker" is built into fasm. This means that there is no use for an external linker.
|
|||
18 Aug 2004, 12:07 |
|
vbVeryBeginner 18 Aug 2004, 14:13
thanks, roticv & mimas...
one more question, if we don't need a linker when using the PE format, then how and why the Depencency Walker shows us the Linker Version? em.. mimas, care to give me a small description of what is IAT? sincerely, vbVeryBeginner d(.~.)b http://sulaiman.thefreebizhost.com |
|||
18 Aug 2004, 14:13 |
|
mimas 18 Aug 2004, 18:00
Well it may be the number that Fasm use to populate the linker's informations in the PE header.
IAT (Import Address Table) is where Windows puts the addresses of the imported functions called by the program. When you create a COFF object, all these imports are indicated externals. The linker resolves all externals and create the necessary tables (IAT & more) to build a "real" executable. This is the masm's way (assembler + linker) or any C compiler's way (compiler + linker), but Fasm is smarter. If you want a linker, I think that golink may be a good choice. You could use it later if you have to link several binary objects together. |
|||
18 Aug 2004, 18:00 |
|
vbVeryBeginner 18 Aug 2004, 19:43
thanks mimas,
i guess i need to bog you down with some more issue related with IAT. Quote:
1.does this implies that the IAT is stored inside the .obj file? 2.is the addresses of the IAT is static (no change) and same in each computer, eg like the WINAPI function address, or could i call it function entry point? 3.does this means .exe (final complete executable) would not have IAT inside them? or IAT still exists inside the .exe and theoritically we could link it one more time? eg. to link the explorer.exe with our .obj file.. ? sincerely, vbVeryBeginner d(@-@)b http://sulaiman.thefreebizhost.com |
|||
18 Aug 2004, 19:43 |
|
mimas 18 Aug 2004, 21:16
1) There are no imports in a COFF Object, just external symbols which have to be linked (and the symbols you are exporting).
2) You don't have to care about IAT, except if you want to understand the PE format. You'd better learn assembly very well at the first time. Fasm handle the PE structure for you, enjoy! 3) Theorically, a PE needs imports and a way to resolve system's API. An executable without it cannot be run and dont have to exist. You can link a binary object with a PE (executable or DLL) to resolve the imports of the object, golink works this way. Learn Win32 assembly, and when you'll get a higher skill, just take a look at the PE structure to understand it. |
|||
18 Aug 2004, 21:16 |
|
silkodyssey 18 Aug 2004, 22:14
vbVeryBeginner wrote:
1.54 is the current version of fasm. _________________ silkodyssey |
|||
18 Aug 2004, 22:14 |
|
vbVeryBeginner 19 Aug 2004, 00:29
>from: silkodyssey <- thank you
>1.54 is the current version of fasm. ic, that is logic >from : mimas <- thank you >Learn Win32 assembly, and when you'll get a higher skill, just take a >look at the PE structure to understand it. ye, maybe will look at that PE structure when i want to modify the LINKER Version in my executable. i want to set it to 0.0 sincerely, vbVeryBeginner d(..&)b |
|||
19 Aug 2004, 00:29 |
|
f0dder 19 Aug 2004, 01:27
Quote:
Windows API functions addresses are not static - they change between windows versions, and even service packs (and even hotfixes). So you do need an IAT, even if you don't need the "import jumptable" (ie, you can call IAT slots directly). If you're interested in slightly faster loadspeed on huge programs, have a look at the "bind" utility (should be available with PSDK?) - but never depend on hardcoded addresses. |
|||
19 Aug 2004, 01:27 |
|
vbVeryBeginner 19 Aug 2004, 05:14
>from : fodder
>If you're interested in slightly faster loadspeed on huge programs he he ... :p, i am in the hello world! state ... :p ~ this thread is SOLVED. vbVeryBeginner d(&.*)b says thanks to those who reply |
|||
19 Aug 2004, 05:14 |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.