Date: Tue, 13 Nov 2001 23:30:20 +0100 (CET) From: Khaled Daham <khaled@w-arts.com> To: <freebsd-alpha@freebsd.org> Subject: Alpha assembler programming. Message-ID: <20011113231429.W97694-100000@fantasy.telia.net>
index | next in thread | raw e-mail
Hello!
I have convinced myself to do some assembly coding on alpha for some
reason. I have almost managed to do a simple hello world involving
write(2).
main:
lda $16, 1
lda $17, msg
lda $18, len
jsr write
lda $16, 0
jsr exit
which bombs out on
45328 a.out CALL write(0x1,0x1200107a0,0xc)
45328 a.out GIO fd 1 wrote 12 bytes
"Hello World!"
45328 a.out RET write 12/0xc
45328 a.out PSIG SIGSEGV SIG_DFL
I am note sure why I get the SIGSEGV, anyone ?
Another thing I noted in /usr/src/sys/alpha/alpha/support.s
is the line
lda a0, longjmp_botchmsg
where longjmp_botchmsg is a string just like my
lda $16, msg
( $16 == a0 ) but I cannot get gcc to compile if I use
lda a0, msg
gcc returns "Error: inappropriate arguments for opcode `lda'"
I cannot really see why it does not accept it, except that in the
alpha assembler guide's I have seen a0-a5 is used for passing integers,
but howcome the mapping between $16-$21 to a0-a5.
Does anyone know a good site with some alpha assembly examples using C
calling convention ?
680x0 was alot easier :)
/Khaled Daham, w.arts
Mail: khaled@w-arts.com
Cell: +46-70-6785492
FreeBSD: The Power to Serve! http://www.FreeBSD.org/
This isn't rocket science -- but it _is_ computer science.
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011113231429.W97694-100000>
