diff options
Diffstat (limited to 'subx/teensy')
-rwxr-xr-x | subx/teensy/test6 | bin | 0 -> 5588 bytes | |||
-rw-r--r-- | subx/teensy/test6-global.s | 13 | ||||
-rwxr-xr-x | subx/teensy/test7 | bin | 0 -> 4100 bytes | |||
-rw-r--r-- | subx/teensy/test7-global.s | 58 |
4 files changed, 71 insertions, 0 deletions
diff --git a/subx/teensy/test6 b/subx/teensy/test6 new file mode 100755 index 00000000..0c08219f --- /dev/null +++ b/subx/teensy/test6 Binary files differdiff --git a/subx/teensy/test6-global.s b/subx/teensy/test6-global.s new file mode 100644 index 00000000..9b981b62 --- /dev/null +++ b/subx/teensy/test6-global.s @@ -0,0 +1,13 @@ +; Example with a data segment. +; nasm -f elf test6-global.s +; gcc -Wall -s test6-global.o -o test6 +BITS 32 + +SECTION .data +foo: dd 42 + +SECTION .text +GLOBAL main +main: + mov eax, foo + ret diff --git a/subx/teensy/test7 b/subx/teensy/test7 new file mode 100755 index 00000000..0d44519d --- /dev/null +++ b/subx/teensy/test7 Binary files differdiff --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 |