-
Notifications
You must be signed in to change notification settings - Fork 0
Home
bmeurer edited this page Dec 16, 2011
·
11 revisions
This repository contains my work on a new ARM backend for the OCaml native code compiler, currently based on the 3.12.1 release. Compared to the old ARM backend, this one does the following:
- Support for both software and hardware floating-point (VFPv3).
- Properly supports interworking with Thumb/Thumb-2 code for both OCaml and C code.
- Supports dynamic linking and large memory models.
- Optional support for position-independent code via a command line option
-fPIC. This is disabled by default and not required for natdynlink. - Can emit both ARM and Thumb-2 code, with avg. code size savings of 27% for Thumb-2 (quite close the optimal 30% advertised by ARM Ltd.).
- Supports both AAPCS (
armel) as well as extended VFP calling conventions (armhf). - Supports several special ARM instructions to reduce code size and latency.
- Uses standard ARM EABI runtime functions instead of relying on GCC internals.
- Supports exception backtraces.
- Supports profiling using gprof.
You can specify the architecture when compiling with ocamlopt using the -farch switch. Currently we support the following ARM architectures:
-
armv4(not supported for armhf) -
armv5(not supported for armhf) -
armv5te(not supported for armhf) -
armv6(not supported for armhf) armv7