Example of calling printf from assembly on FreeBSD
This is an example assembly language program showing how to call
printf
in FreeBSD.
.global main .text main: mov $4, %edi loop: push %edi push $message # Address of string to output call printf dec %edi jnz loop push $0 call exit message: .ascii "Hello, world %d\n\0"
The output of the example looks like this:
Hello, world 4 Hello, world 3 Hello, world 2 Hello, world 1
To build the program, it's necessary to link
with /usr/lib/crt1.o
, /usr/lib/crti.o
,
and /usr/lib/crtn.o
. The following makefile illustrates
the steps:
all: cp.txt cp: cp.o ld -o cp cp.o /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o -lc cp.o: cp.s cc -c cp.s cp.txt: cp ./cp > $@ clean: -rm -f cp cp.txt
Web links
-
Problem linking with libc
This illustrates how to link libc and assembly language.
Copyright © Ben Bullock 2009-2024. All
rights reserved.
For comments, questions, and corrections, please email
Ben Bullock
(benkasminbullock@gmail.com).
/
Privacy /
Disclaimer