Implemented basic data access

This commit is contained in:
2023-10-18 17:03:31 +02:00
parent 8b66c9588c
commit 506d1e30bf
4 changed files with 36 additions and 15 deletions

View File

@ -6,15 +6,14 @@ import (
)
const (
baseAddress = 0x10000
baseAddress = 0x400000
)
// ELF64 represents an ELF 64-bit file.
type ELF64 struct {
Header
ProgramHeader
Padding []byte
Code []byte
Code []byte
}
// New creates a new 64-bit ELF binary.
@ -43,7 +42,7 @@ func New(code []byte) *ELF64 {
},
ProgramHeader: ProgramHeader{
Type: ProgramTypeLOAD,
Flags: ProgramFlagsExecutable,
Flags: ProgramFlagsExecutable | ProgramFlagsReadable,
Offset: 0x80,
VirtualAddress: baseAddress + 0x80,
PhysicalAddress: baseAddress + 0x80,
@ -51,8 +50,7 @@ func New(code []byte) *ELF64 {
SizeInMemory: int64(len(code)),
Align: Align,
},
Padding: []byte{0, 0, 0, 0, 0, 0, 0, 0},
Code: code,
Code: code,
}
return elf
@ -62,6 +60,6 @@ func New(code []byte) *ELF64 {
func (elf *ELF64) Write(writer io.Writer) {
binary.Write(writer, binary.LittleEndian, &elf.Header)
binary.Write(writer, binary.LittleEndian, &elf.ProgramHeader)
writer.Write(elf.Padding)
writer.Write([]byte{0, 0, 0, 0, 0, 0, 0, 0})
writer.Write(elf.Code)
}