summaryrefslogtreecommitdiff
path: root/asm/lisp/test.pit
blob: cafa8f46727fce8248b14cddac48b870b30f9c07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
(let ( (elf (elf/new!))
       (entrypoint 0x696000)
       (toff 0x1000)
       (phdroff 0x2000))
  (elf/write-bytes! elf toff
    '( 0xb8 0x3c 0x00 0x00 0x00 ;; mov rax, 60
       0xbf 0x2a 0x00 0x00 0x00 ;; mov rdi, 42
       0x0f 0x05 ;; syscall
       ))
  (elf/write-program-header! elf (+ phdroff elf/64_PROGRAM_HEADER_SIZE)
    :type elf/PROGRAM_HEADER_TYPE_LOAD
    :offset toff
    :virtual-addr entrypoint
    :file-size 0x100
    :mem-size 0x100
    :flags (bitwise/or elf/PROGRAM_HEADER_FLAG_R elf/PROGRAM_HEADER_FLAG_X)
    )
  (elf/write-header! elf
    :type elf/TYPE_EXEC
    :machine elf/MACHINE_AMD64
    :program-header-offset phdroff
    :program-header-entry-size elf/64_PROGRAM_HEADER_SIZE
    :program-header-entries 2
    :section-header-offset 0
    :section-header-entry-size elf/64_SECTION_HEADER_SIZE
    :section-header-entries 0
    :entry entrypoint
    )
  (elf/spit! "test.elf" elf))