The Open RVC-CAL Compiler (Orcc) can generate code for any platform, including hardware (Verilog, VHDL), software (C, Java), heterogeneous platforms (mixed hardware/software), and multi-softcore platforms, from a platform-agnostic, high-level description.
The Orcc project also provides a dedicated Virtual Machine, the Just-in-time Adaptive Decoder Engine (Jade) based on LLVM infrastructure, that can dynamically produce machine code for a wide range of software platforms.
Orcc is a collection of support tools under BSD license. The primary purpose of Orcc is to provide developers with a compiler infrastructure to allow several languages and combination of languages (in the case of co-design) to be generated from RVC-CAL actors and XDF networks. Orcc does not generate assembly or executable code directly, rather it generates source code that must be compiled by another tool.
Something like this:

Something like this:
package org.mpeg4.part10.cbp.selectMacroblock; import org.mpeg4.part10.cbp.MacroBlockInfo.BLOCK_TYPE_INTRA_MAX; actor SelectMb() uint(size=6) MbType, uint(size=8) MbFromIntra, uint(size=8) MbFromInter ==> uint(size=8) MbOut : uint(size=6) mbType; getMbType: action MbType:[valMbType] ==> do mbType := valMbType; end forwardMb.intra: action MbFromIntra:[x] repeat 64 ==> MbOut:[x] repeat 64 guard mbType <= BLOCK_TYPE_INTRA_MAX end forwardMb.inter: action MbFromInter:[x] repeat 64 ==> MbOut:[x] repeat 64 guard mbType > BLOCK_TYPE_INTRA_MAX end schedule fsm GetMbType: GetMbType (getMbType ) --> ForwardMb; ForwardMb (forwardMb ) --> GetMbType; end end