COM: Difference between revisions
Jump to navigation
Jump to search
[unchecked revision] | [unchecked revision] |
Content deleted Content added
m Added a small amount of information and made nicer to read. |
COM files are able to do their own memory organisation on the 8086 - the 64kB limit only applies to code that can't or doesn't make use of segmentation. |
||
Line 6: | Line 6: | ||
COM files are extremely simple executable files. They are useful for loading programs without complications like relocating symbols, reading file headers, etc. However, their simplicity can make their usefulness limited, so you may want to support something more complex but useful, like [[ELF]], once your OS is advanced. |
COM files are extremely simple executable files. They are useful for loading programs without complications like relocating symbols, reading file headers, etc. However, their simplicity can make their usefulness limited, so you may want to support something more complex but useful, like [[ELF]], once your OS is advanced. |
||
COM files were used by MS-DOS. They are raw binaries, meaning there is no header data |
COM files were used by MS-DOS. They are raw binaries, meaning there is no header data. |
||
MS-DOS creates and stores an info structure starting at offset 0 and ending just before 0x100, called the Program Segment Prefix (PSP). |
MS-DOS creates and stores an info structure starting at offset 0 and ending just before 0x100, called the Program Segment Prefix (PSP). The PSP is made just before starting the COM program. More info about the PSP can be found [http://heim.ifi.uio.no/~stanisls/helppc/program_segment_prefix.html here]. PSP is only required for running DOS programs. |
||
COM files usually terminate with a RET instruction. |
COM files usually terminate with a RET instruction. On DOS, the RET pops a empty word from the stack, which results in a interrupt 0x20 (DOS API Exit) being called. |
||
===Loading=== |
===Loading=== |