Mercurial > repo
view nasmbuild/nasm-2.13rc9/misc/exebin.mac @ 10656:d14f0b444087
<oerjan> ` cd wisdom; mv {\xc3\x84,\xc3\xa4}; mv \'{\xc3\x85,\xc3\xa5}\'
author | HackBot |
---|---|
date | Thu, 13 Apr 2017 03:46:40 +0000 |
parents | 587a0a262d22 |
children |
line wrap: on
line source
; -*- nasm -*- ; NASM macro file to allow the `bin' output format to generate ; simple .EXE files by constructing the EXE header by hand. ; Adapted from a contribution by Yann Guidon <whygee_corp@hol.fr> %define EXE_stack_size EXE_realstacksize %macro EXE_begin 0 ORG 0E0h section .text header_start: db 4Dh,5Ah ; EXE file signature dw EXE_allocsize % 512 dw (EXE_allocsize + 511) / 512 dw 0 ; relocation information: none dw (header_end-header_start)/16 ; header size in paragraphs dw (EXE_absssize + EXE_realstacksize) / 16 ; min extra mem dw (EXE_absssize + EXE_realstacksize) / 16 ; max extra mem dw -10h ; Initial SS (before fixup) dw EXE_endbss + EXE_realstacksize ; Initial SP (1K DPMI+1K STACK) dw 0 ; (no) Checksum dw 100h ; Initial IP - start just after the header dw -10h ; Initial CS (before fixup) dw 0 ; file offset to relocation table: none dw 0 ; (no overlay) align 16,db 0 header_end: EXE_startcode: section .data EXE_startdata: section .bss EXE_startbss: %endmacro %macro EXE_stack 1 EXE_realstacksize equ %1 %define EXE_stack_size EXE_bogusstacksize ; defeat EQU in EXE_end %endmacro %macro EXE_end 0 section .text EXE_endcode: section .data EXE_enddata: section .bss alignb 4 EXE_endbss: EXE_acodesize equ (EXE_endcode-EXE_startcode+3) & (~3) EXE_datasize equ EXE_enddata-EXE_startdata EXE_absssize equ (EXE_endbss-EXE_startbss+3) & (~3) EXE_allocsize equ EXE_acodesize + EXE_datasize EXE_stack_size equ 0x800 ; default if nothing else was used %endmacro