about summary refs log tree commit diff stats
path: root/subx/teensy/test7-global.s
diff options
context:
space:
mode:
Diffstat (limited to 'subx/teensy/test7-global.s')
-rw-r--r--subx/teensy/test7-global.s58
1 files changed, 58 insertions, 0 deletions
diff --git a/subx/teensy/test7-global.s b/subx/teensy/test7-global.s
new file mode 100644
index 00000000..4cb4e8f3
--- /dev/null
+++ b/subx/teensy/test7-global.s
@@ -0,0 +1,58 @@
+; https://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
+; nasm -f bin test7-global.s -o test7
+; chmod +x test7
+BITS 32
+
+              org     0x08048000
+
+ehdr:                                                 ; Elf32_Ehdr
+              db      0x7F, "ELF", 1, 1, 1, 0         ;   e_ident
+      times 8 db      0
+              dw      2                               ;   e_type
+              dw      3                               ;   e_machine
+              dd      1                               ;   e_version
+              dd      _start                          ;   e_entry
+              dd      phdr1 - $$                      ;   e_phoff
+              dd      0                               ;   e_shoff
+              dd      0                               ;   e_flags
+              dw      ehdrsize                        ;   e_ehsize
+              dw      phdrsize                        ;   e_phentsize
+              dw      2                               ;   e_phnum
+              dw      0                               ;   e_shentsize
+              dw      0                               ;   e_shnum
+              dw      0                               ;   e_shstrndx
+ehdrsize  equ  $ - ehdr
+
+phdr1:                                                ; Elf32_Phdr
+              dd      1                               ;   p_type
+              dd      0                               ;   p_offset
+              dd      $$                              ;   p_vaddr
+              dd      $$                              ;   p_paddr
+              dd      codesize                        ;   p_filesz
+              dd      codesize                        ;   p_memsz
+              dd      5                               ;   p_flags = r-x
+              dd      0x1000                          ;   p_align
+phdrsize  equ  $ - phdr1
+
+phdr2:
+              dd      1                               ;   p_type
+              dd      _data - $$                      ;   p_offset
+              dd      _data                           ;   p_vaddr
+              dd      _data                           ;   p_paddr
+              dd      datasize                        ;   p_filesz
+              dd      datasize                        ;   p_memsz
+              dd      6                               ;   p_flags = rw-
+              dd      0x1000                          ;   p_align
+
+_start:
+  mov ebx, [foo]
+  mov eax, 1
+  int 0x80
+
+codesize      equ     $ - $$  ; TODO: why include the headers?!
+
+alignb 0x1000
+_data:
+  foo:        dd      42
+
+datasize      equ     $ - _data