# Hex serialization (ivss) **Hex serialization** writes an object's bytes as hexadecimal text so ivss tools can exchange them. It differs from the assembler's descriptive dump of symbols and sections: ```bash # Descriptive output for inspection. $ ./asembler -o reference.dump reference.s # Serialized bytes for the linker. $ ./asembler -hex -o reference.o reference.s ``` The serialized file begins with the ELF identification bytes: ```text 0000: 7f 45 4c 46 02 01 01 03 00 00 00 00 00 00 00 00 ``` The payload bytes are hexadecimal; the row prefix is a decimal byte-position label. `7f 45 4c 46` is the ELF magic, followed by the class, byte order, version, and ABI fields. The writer emits the header, section contents, and section headers. The reader decodes the text into a byte buffer, then uses the stored offsets to reconstruct the object structures. The file is neither a bare memory dump nor a conventional binary ELF file. Its `.o` or `.hex` extension does not select decoding behavior: ivss's linker and emulator explicitly use `Elf_ReadHexInit()` for their inputs. Source: [elf.c](https://github.com/yanevskiv/ivss/blob/main/src/elf.c).