DragonFly users List (threaded) for 2006-03
Assembly in DragonFly
After installing DragonFly on a spare box at work, I was trying out asimple "Hello World" in assembly, and found that one needed to do alittle more than "as -o hello.o hello.s; ld -o hello hello.o" to getit to work; here's what I did:
1. Wrote a "Hello World" in assembly:
============ hello.s =====================================.section .data
helloworld: .ascii "Hello, World\n"len : .long . - helloworld
. section .text
. globl _start
syscall: int $0x80 ret
_start: pushl $len pushl $helloworld pushl $1 movl $4, %eax call syscall add $12, %esp # clean up stack
pushl $0 movl $1, %eax call syscall==========================================================
2. Ran "as -o hello.o hello.s; ld -o hello hello.o; ./hello", and sawthis on the console:
ELF binary type "0" not known.Abort trap
3. Running "file hello" produced this output:
hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),statically linked,not stripped
4. Scratched head a little. Inspired by the lead of , wrote a small"Hello, World" in C, ran objdump on the executable. Et Voila, it lookedlike I had found what was required:
Contents of section .note.ABI-tag: 8048110 0a000000 04000000 01000000 44726167 ............Drag 8048120 6f6e466c 79000000 d6fb0100 onFly.......
5. I then added the following to the original hello.s:
=============================================================.section .note.ABI-tag, "a" .long 0xA .long 0x4 .long 0x1 .string "DragonFly" .long 0x1fbd6==============================================================
And it works!
This probably isn't of much use to anybody except for crazy guys likeme who like to code in assembly once in a while - but I thought I'dpost it here anyway.
1. http://mail-index.netbsd.org/port-i386/2001/08/21/0018.html, and http://mail-index.netbsd.org/port-i386/2001/09/03/0004.html