- esi = Instruction Pointer
- ebp = Return Stack Pointer
- ebx = Top of (Parameter) Stack
- esp = Parameter Stack Pointer
Memory addresses - see binutils-???/ld/emulparams/elf_i386.sh. It contains a line saying "NONPAGED_TEXT_START_ADDR=0x08048000". This is the default load address for executables; try "ld --verbose" to see your default linker script. The SECTIONS command will start off with a command ". = 0x08048000 + SECTION_HEADERS" or similar. This will be different on a different platform, for instance, on mine it's 0x10000000. Hmm...ought to be a better way to do this than just sticking in the bare number with no explanation. Preferably we should make the linker supply this. It looks like the default linker script always provides a symbol __executable_start, perhaps we should use that.
-- Josh Grams