Difference between Portable Executable (PE) file and a Assembly

Discussion in 'ASP .Net' started by =?Utf-8?B?c3VyZXNoX0Mj?=, May 1, 2005.

  1. Dear All,

    What is difference between Portable Executable (PE) file and a Assembly?

    Thanks,
    Mahesh
    =?Utf-8?B?c3VyZXNoX0Mj?=, May 1, 2005
    #1
    1. Advertising

  2. =?Utf-8?B?c3VyZXNoX0Mj?=

    Ben Fidge Guest

    PE is the name given to standard 32 bit Windows executables and defined the
    structure of the .exe file format. These files contain header information,
    resource and the raw machine code compiled from an applications souirce
    code.

    An assembly on the other hand can be a dll or exe file compiled using a .NET
    compiler and actually contain pseudo assembly code called IL, or
    Intermediary Language. IL was devised by Microsoft to promote cross-platform
    compatibility.

    When an assembly is first executed, JIT compiling (Just-in-time) is invoked
    and the assembly is then compiled using platofrm specific compilers to turn
    the IL into native machine code specific to the platform on which it's
    running. In principle, the same assembly can run on any platform that
    supports the .NET Framework and has it's own JIT compiler.

    That's my understanding of it.

    Ben Fidge

    "suresh_C#" <> wrote in message
    news:...
    > Dear All,
    >
    > What is difference between Portable Executable (PE) file and a Assembly?
    >
    > Thanks,
    > Mahesh
    >
    >
    >
    Ben Fidge, May 1, 2005
    #2
    1. Advertising

  3. =?Utf-8?B?c3VyZXNoX0Mj?=

    Scott Allen Guest

    Hi Mahesh:

    PE is a file format.

    An assembly is the smallest unit of deployment for .NET applications
    and consist of one or more modules. These modules use the PE file
    format.

    --
    Scott
    http://www.OdeToCode.com/blogs/scott/

    On Sun, 1 May 2005 12:17:05 -0700, suresh_C#
    <> wrote:

    >Dear All,
    >
    >What is difference between Portable Executable (PE) file and a Assembly?
    >
    >Thanks,
    >Mahesh
    >
    >
    Scott Allen, May 1, 2005
    #3
  4. Re: Difference between Portable Executable (PE) file and a Assembl

    Thanks Ben, Thanks Scott.

    But, following is definition of Ilasm.exe
    --
    When you compile managed code, the compiler converts the source code to MSIL
    code. MSIL is a CPU-independent language and its code can be converted to
    native code. ***You can use the Ilasm tool, Ilasm.exe, to generate a portable
    executable file from the MSIL code. *** You can then run the resulting
    executable file to determine the performance of your application. This
    enables you to generate the MSIL code and the metadata without emitting MSIL
    in the portable executable file format. In addition, Ilasm.exe does not
    create intermediate object files. It also does not have a linking stage to
    generate a portable executable file.
    --

    ***You can use the Ilasm tool, Ilasm.exe, to generate a portable executable
    file from the MSIL code. ***

    Considering this point, I think it generates a portable executable file (
    ??? different file ) from the MSIL code (Assembly ???)

    Am I right? If right please I don’t understand what is PE and why it is used
    then.



    "Scott Allen" wrote:

    > Hi Mahesh:
    >
    > PE is a file format.
    >
    > An assembly is the smallest unit of deployment for .NET applications
    > and consist of one or more modules. These modules use the PE file
    > format.
    >
    > --
    > Scott
    > http://www.OdeToCode.com/blogs/scott/
    >
    > On Sun, 1 May 2005 12:17:05 -0700, suresh_C#
    > <> wrote:
    >
    > >Dear All,
    > >
    > >What is difference between Portable Executable (PE) file and a Assembly?
    > >
    > >Thanks,
    > >Mahesh
    > >
    > >

    >
    >
    =?Utf-8?B?c3VyZXNoX0Mj?=, May 1, 2005
    #4
  5. =?Utf-8?B?c3VyZXNoX0Mj?=

    Ben Fidge Guest

    Re: Difference between Portable Executable (PE) file and a Assembl

    Yes you are right, a PE executable is created from the IL. PE is the file
    format used to define 32bit Windows Executables. This is the native format
    used by Windows. As mentioned, your .NET assembly is first compiled to IL
    which is a platform independant assembly language. This is then compiled
    into the platform specific binary, which for us Windows developers is called
    PE.

    PE has been around since the first versions of Windows NT and all versions
    of Windows since Win95 have also been made to expect that particular format
    to store binary executables. Obviously, as no current processors know how to
    execute IL, it needs recompiling for the processor and platform it's running
    on.

    For more info on the format have a look here:

    http://www.wotsit.org/search.asp?page=2&s=binary



    "suresh_C#" <> wrote in message
    news:...
    >
    > Thanks Ben, Thanks Scott.
    >
    > But, following is definition of Ilasm.exe
    > --
    > When you compile managed code, the compiler converts the source code to
    > MSIL
    > code. MSIL is a CPU-independent language and its code can be converted to
    > native code. ***You can use the Ilasm tool, Ilasm.exe, to generate a
    > portable
    > executable file from the MSIL code. *** You can then run the resulting
    > executable file to determine the performance of your application. This
    > enables you to generate the MSIL code and the metadata without emitting
    > MSIL
    > in the portable executable file format. In addition, Ilasm.exe does not
    > create intermediate object files. It also does not have a linking stage to
    > generate a portable executable file.
    > --
    >
    > ***You can use the Ilasm tool, Ilasm.exe, to generate a portable
    > executable
    > file from the MSIL code. ***
    >
    > Considering this point, I think it generates a portable executable file (
    > ??? different file ) from the MSIL code (Assembly ???)
    >
    > Am I right? If right please I don't understand what is PE and why it is
    > used
    > then.
    >
    >
    >
    > "Scott Allen" wrote:
    >
    >> Hi Mahesh:
    >>
    >> PE is a file format.
    >>
    >> An assembly is the smallest unit of deployment for .NET applications
    >> and consist of one or more modules. These modules use the PE file
    >> format.
    >>
    >> --
    >> Scott
    >> http://www.OdeToCode.com/blogs/scott/
    >>
    >> On Sun, 1 May 2005 12:17:05 -0700, suresh_C#
    >> <> wrote:
    >>
    >> >Dear All,
    >> >
    >> >What is difference between Portable Executable (PE) file and a Assembly?
    >> >
    >> >Thanks,
    >> >Mahesh
    >> >
    >> >

    >>
    >>

    >
    Ben Fidge, May 1, 2005
    #5
  6. Re: Difference between Portable Executable (PE) file and a Assembl

    Thanks Ben. This is clear to me now.

    I would be grateful if you answer to this question also.

    I assume that JIT compiler and Ilasm.exe convert the IL code into machine
    dependent code.

    I knew that there are 2 tools ie JIT and one more tool [I forgot name] which
    do the above. Then in .NET who uses the Ilasm.exe tool.



    "Ben Fidge" wrote:

    > Yes you are right, a PE executable is created from the IL. PE is the file
    > format used to define 32bit Windows Executables. This is the native format
    > used by Windows. As mentioned, your .NET assembly is first compiled to IL
    > which is a platform independant assembly language. This is then compiled
    > into the platform specific binary, which for us Windows developers is called
    > PE.
    >
    > PE has been around since the first versions of Windows NT and all versions
    > of Windows since Win95 have also been made to expect that particular format
    > to store binary executables. Obviously, as no current processors know how to
    > execute IL, it needs recompiling for the processor and platform it's running
    > on.
    >
    > For more info on the format have a look here:
    >
    > http://www.wotsit.org/search.asp?page=2&s=binary
    >
    >
    >
    > "suresh_C#" <> wrote in message
    > news:...
    > >
    > > Thanks Ben, Thanks Scott.
    > >
    > > But, following is definition of Ilasm.exe
    > > --
    > > When you compile managed code, the compiler converts the source code to
    > > MSIL
    > > code. MSIL is a CPU-independent language and its code can be converted to
    > > native code. ***You can use the Ilasm tool, Ilasm.exe, to generate a
    > > portable
    > > executable file from the MSIL code. *** You can then run the resulting
    > > executable file to determine the performance of your application. This
    > > enables you to generate the MSIL code and the metadata without emitting
    > > MSIL
    > > in the portable executable file format. In addition, Ilasm.exe does not
    > > create intermediate object files. It also does not have a linking stage to
    > > generate a portable executable file.
    > > --
    > >
    > > ***You can use the Ilasm tool, Ilasm.exe, to generate a portable
    > > executable
    > > file from the MSIL code. ***
    > >
    > > Considering this point, I think it generates a portable executable file (
    > > ??? different file ) from the MSIL code (Assembly ???)
    > >
    > > Am I right? If right please I don't understand what is PE and why it is
    > > used
    > > then.
    > >
    > >
    > >
    > > "Scott Allen" wrote:
    > >
    > >> Hi Mahesh:
    > >>
    > >> PE is a file format.
    > >>
    > >> An assembly is the smallest unit of deployment for .NET applications
    > >> and consist of one or more modules. These modules use the PE file
    > >> format.
    > >>
    > >> --
    > >> Scott
    > >> http://www.OdeToCode.com/blogs/scott/
    > >>
    > >> On Sun, 1 May 2005 12:17:05 -0700, suresh_C#
    > >> <> wrote:
    > >>
    > >> >Dear All,
    > >> >
    > >> >What is difference between Portable Executable (PE) file and a Assembly?
    > >> >
    > >> >Thanks,
    > >> >Mahesh
    > >> >
    > >> >
    > >>
    > >>

    > >

    >
    >
    >
    =?Utf-8?B?c3VyZXNoX0Mj?=, May 1, 2005
    #6
  7. =?Utf-8?B?c3VyZXNoX0Mj?=

    Ben Fidge Guest

    Re: Difference between Portable Executable (PE) file and a Assembl

    I've never used the ILASM tool day-to-day, only for experimentation.

    Referring back to the MS documentation, ILASM is a tool for vendors creating
    IL generators. It allows them to concentrate on the actual renderring of IL
    from their custom language compilers without the need to write an IL to
    machine-code compiler.

    I may be wrong but JIT may also use ILASM when compiling IL to native
    machine code for the first time, but you may want to check up on this. I
    certainly don't consider myself an expert on all thing IL!!

    http://msdn.microsoft.com/library/d...s/cptools/html/cpconMSILAssemblerIlasmexe.asp


    Ben


    "suresh_C#" <> wrote in message
    news:...
    >
    > Thanks Ben. This is clear to me now.
    >
    > I would be grateful if you answer to this question also.
    >
    > I assume that JIT compiler and Ilasm.exe convert the IL code into machine
    > dependent code.
    >
    > I knew that there are 2 tools ie JIT and one more tool [I forgot name]
    > which
    > do the above. Then in .NET who uses the Ilasm.exe tool.
    >
    >
    >
    > "Ben Fidge" wrote:
    >
    >> Yes you are right, a PE executable is created from the IL. PE is the file
    >> format used to define 32bit Windows Executables. This is the native
    >> format
    >> used by Windows. As mentioned, your .NET assembly is first compiled to IL
    >> which is a platform independant assembly language. This is then compiled
    >> into the platform specific binary, which for us Windows developers is
    >> called
    >> PE.
    >>
    >> PE has been around since the first versions of Windows NT and all
    >> versions
    >> of Windows since Win95 have also been made to expect that particular
    >> format
    >> to store binary executables. Obviously, as no current processors know how
    >> to
    >> execute IL, it needs recompiling for the processor and platform it's
    >> running
    >> on.
    >>
    >> For more info on the format have a look here:
    >>
    >> http://www.wotsit.org/search.asp?page=2&s=binary
    >>
    >>
    >>
    >> "suresh_C#" <> wrote in message
    >> news:...
    >> >
    >> > Thanks Ben, Thanks Scott.
    >> >
    >> > But, following is definition of Ilasm.exe
    >> > --
    >> > When you compile managed code, the compiler converts the source code to
    >> > MSIL
    >> > code. MSIL is a CPU-independent language and its code can be converted
    >> > to
    >> > native code. ***You can use the Ilasm tool, Ilasm.exe, to generate a
    >> > portable
    >> > executable file from the MSIL code. *** You can then run the resulting
    >> > executable file to determine the performance of your application. This
    >> > enables you to generate the MSIL code and the metadata without emitting
    >> > MSIL
    >> > in the portable executable file format. In addition, Ilasm.exe does not
    >> > create intermediate object files. It also does not have a linking stage
    >> > to
    >> > generate a portable executable file.
    >> > --
    >> >
    >> > ***You can use the Ilasm tool, Ilasm.exe, to generate a portable
    >> > executable
    >> > file from the MSIL code. ***
    >> >
    >> > Considering this point, I think it generates a portable executable file
    >> > (
    >> > ??? different file ) from the MSIL code (Assembly ???)
    >> >
    >> > Am I right? If right please I don't understand what is PE and why it is
    >> > used
    >> > then.
    >> >
    >> >
    >> >
    >> > "Scott Allen" wrote:
    >> >
    >> >> Hi Mahesh:
    >> >>
    >> >> PE is a file format.
    >> >>
    >> >> An assembly is the smallest unit of deployment for .NET applications
    >> >> and consist of one or more modules. These modules use the PE file
    >> >> format.
    >> >>
    >> >> --
    >> >> Scott
    >> >> http://www.OdeToCode.com/blogs/scott/
    >> >>
    >> >> On Sun, 1 May 2005 12:17:05 -0700, suresh_C#
    >> >> <> wrote:
    >> >>
    >> >> >Dear All,
    >> >> >
    >> >> >What is difference between Portable Executable (PE) file and a
    >> >> >Assembly?
    >> >> >
    >> >> >Thanks,
    >> >> >Mahesh
    >> >> >
    >> >> >
    >> >>
    >> >>
    >> >

    >>
    >>
    >>
    Ben Fidge, May 2, 2005
    #7
  8. =?Utf-8?B?c3VyZXNoX0Mj?=

    Scott Allen Guest

    Re: Difference between Portable Executable (PE) file and a Assembl

    ILASM is more of a repackaging tool. It takes IL code and packages the
    code into a file in the PE format. If you wrote your own compiler that
    generated MSIL, then you could use ILASM to put the MSIL into a
    managed executable. ILASM doesn't generate native code.

    NGEN.EXE can be used to generate native code for an assembly. I'd only
    recommend using NGEN if you have a good reason to avoid JIT compiling.

    --
    Scott
    http://www.OdeToCode.com/blogs/scott/


    On Sun, 1 May 2005 15:11:14 -0700, suresh_C#
    <> wrote:

    >
    >Thanks Ben. This is clear to me now.
    >
    >I would be grateful if you answer to this question also.
    >
    >I assume that JIT compiler and Ilasm.exe convert the IL code into machine
    >dependent code.
    >
    >I knew that there are 2 tools ie JIT and one more tool [I forgot name] which
    >do the above. Then in .NET who uses the Ilasm.exe tool.
    >
    >
    >
    >"Ben Fidge" wrote:
    >
    >> Yes you are right, a PE executable is created from the IL. PE is the file
    >> format used to define 32bit Windows Executables. This is the native format
    >> used by Windows. As mentioned, your .NET assembly is first compiled to IL
    >> which is a platform independant assembly language. This is then compiled
    >> into the platform specific binary, which for us Windows developers is called
    >> PE.
    >>
    >> PE has been around since the first versions of Windows NT and all versions
    >> of Windows since Win95 have also been made to expect that particular format
    >> to store binary executables. Obviously, as no current processors know how to
    >> execute IL, it needs recompiling for the processor and platform it's running
    >> on.
    >>
    >> For more info on the format have a look here:
    >>
    >> http://www.wotsit.org/search.asp?page=2&s=binary
    >>
    >>
    >>
    >> "suresh_C#" <> wrote in message
    >> news:...
    >> >
    >> > Thanks Ben, Thanks Scott.
    >> >
    >> > But, following is definition of Ilasm.exe
    >> > --
    >> > When you compile managed code, the compiler converts the source code to
    >> > MSIL
    >> > code. MSIL is a CPU-independent language and its code can be converted to
    >> > native code. ***You can use the Ilasm tool, Ilasm.exe, to generate a
    >> > portable
    >> > executable file from the MSIL code. *** You can then run the resulting
    >> > executable file to determine the performance of your application. This
    >> > enables you to generate the MSIL code and the metadata without emitting
    >> > MSIL
    >> > in the portable executable file format. In addition, Ilasm.exe does not
    >> > create intermediate object files. It also does not have a linking stage to
    >> > generate a portable executable file.
    >> > --
    >> >
    >> > ***You can use the Ilasm tool, Ilasm.exe, to generate a portable
    >> > executable
    >> > file from the MSIL code. ***
    >> >
    >> > Considering this point, I think it generates a portable executable file (
    >> > ??? different file ) from the MSIL code (Assembly ???)
    >> >
    >> > Am I right? If right please I don't understand what is PE and why it is
    >> > used
    >> > then.
    >> >
    >> >
    >> >
    >> > "Scott Allen" wrote:
    >> >
    >> >> Hi Mahesh:
    >> >>
    >> >> PE is a file format.
    >> >>
    >> >> An assembly is the smallest unit of deployment for .NET applications
    >> >> and consist of one or more modules. These modules use the PE file
    >> >> format.
    >> >>
    >> >> --
    >> >> Scott
    >> >> http://www.OdeToCode.com/blogs/scott/
    >> >>
    >> >> On Sun, 1 May 2005 12:17:05 -0700, suresh_C#
    >> >> <> wrote:
    >> >>
    >> >> >Dear All,
    >> >> >
    >> >> >What is difference between Portable Executable (PE) file and a Assembly?
    >> >> >
    >> >> >Thanks,
    >> >> >Mahesh
    >> >> >
    >> >> >
    >> >>
    >> >>
    >> >

    >>
    >>
    >>
    Scott Allen, May 2, 2005
    #8
  9. Re: Difference between Portable Executable (PE) file and a Assembl

    Thanks Scott, thanks Ben.

    "Scott Allen" wrote:

    > ILASM is more of a repackaging tool. It takes IL code and packages the
    > code into a file in the PE format. If you wrote your own compiler that
    > generated MSIL, then you could use ILASM to put the MSIL into a
    > managed executable. ILASM doesn't generate native code.
    >
    > NGEN.EXE can be used to generate native code for an assembly. I'd only
    > recommend using NGEN if you have a good reason to avoid JIT compiling.
    >
    > --
    > Scott
    > http://www.OdeToCode.com/blogs/scott/
    >
    >
    > On Sun, 1 May 2005 15:11:14 -0700, suresh_C#
    > <> wrote:
    >
    > >
    > >Thanks Ben. This is clear to me now.
    > >
    > >I would be grateful if you answer to this question also.
    > >
    > >I assume that JIT compiler and Ilasm.exe convert the IL code into machine
    > >dependent code.
    > >
    > >I knew that there are 2 tools ie JIT and one more tool [I forgot name] which
    > >do the above. Then in .NET who uses the Ilasm.exe tool.
    > >
    > >
    > >
    > >"Ben Fidge" wrote:
    > >
    > >> Yes you are right, a PE executable is created from the IL. PE is the file
    > >> format used to define 32bit Windows Executables. This is the native format
    > >> used by Windows. As mentioned, your .NET assembly is first compiled to IL
    > >> which is a platform independant assembly language. This is then compiled
    > >> into the platform specific binary, which for us Windows developers is called
    > >> PE.
    > >>
    > >> PE has been around since the first versions of Windows NT and all versions
    > >> of Windows since Win95 have also been made to expect that particular format
    > >> to store binary executables. Obviously, as no current processors know how to
    > >> execute IL, it needs recompiling for the processor and platform it's running
    > >> on.
    > >>
    > >> For more info on the format have a look here:
    > >>
    > >> http://www.wotsit.org/search.asp?page=2&s=binary
    > >>
    > >>
    > >>
    > >> "suresh_C#" <> wrote in message
    > >> news:...
    > >> >
    > >> > Thanks Ben, Thanks Scott.
    > >> >
    > >> > But, following is definition of Ilasm.exe
    > >> > --
    > >> > When you compile managed code, the compiler converts the source code to
    > >> > MSIL
    > >> > code. MSIL is a CPU-independent language and its code can be converted to
    > >> > native code. ***You can use the Ilasm tool, Ilasm.exe, to generate a
    > >> > portable
    > >> > executable file from the MSIL code. *** You can then run the resulting
    > >> > executable file to determine the performance of your application. This
    > >> > enables you to generate the MSIL code and the metadata without emitting
    > >> > MSIL
    > >> > in the portable executable file format. In addition, Ilasm.exe does not
    > >> > create intermediate object files. It also does not have a linking stage to
    > >> > generate a portable executable file.
    > >> > --
    > >> >
    > >> > ***You can use the Ilasm tool, Ilasm.exe, to generate a portable
    > >> > executable
    > >> > file from the MSIL code. ***
    > >> >
    > >> > Considering this point, I think it generates a portable executable file (
    > >> > ??? different file ) from the MSIL code (Assembly ???)
    > >> >
    > >> > Am I right? If right please I don't understand what is PE and why it is
    > >> > used
    > >> > then.
    > >> >
    > >> >
    > >> >
    > >> > "Scott Allen" wrote:
    > >> >
    > >> >> Hi Mahesh:
    > >> >>
    > >> >> PE is a file format.
    > >> >>
    > >> >> An assembly is the smallest unit of deployment for .NET applications
    > >> >> and consist of one or more modules. These modules use the PE file
    > >> >> format.
    > >> >>
    > >> >> --
    > >> >> Scott
    > >> >> http://www.OdeToCode.com/blogs/scott/
    > >> >>
    > >> >> On Sun, 1 May 2005 12:17:05 -0700, suresh_C#
    > >> >> <> wrote:
    > >> >>
    > >> >> >Dear All,
    > >> >> >
    > >> >> >What is difference between Portable Executable (PE) file and a Assembly?
    > >> >> >
    > >> >> >Thanks,
    > >> >> >Mahesh
    > >> >> >
    > >> >> >
    > >> >>
    > >> >>
    > >> >
    > >>
    > >>
    > >>

    >
    >
    =?Utf-8?B?TWFoZXNoIE5pbWJhbGthcg==?=, May 3, 2005
    #9
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Eli Bendersky
    Replies:
    1
    Views:
    1,162
    Mike Treseler
    Mar 1, 2006
  2. jakk
    Replies:
    4
    Views:
    12,133
  3. Replies:
    7
    Views:
    916
  4. Beemer Biker
    Replies:
    2
    Views:
    698
    Beemer Biker
    Apr 24, 2007
  5. Jack Dowson
    Replies:
    5
    Views:
    4,874
    Greg R. Broderick
    May 7, 2007
Loading...

Share This Page