ELVM-IR, 116 68 6666 65 bytes
load.data
.string"Hello, World!"load B,A
putc B
add A,1jne 0,A,13exit
.data
.string"Hello, World!"
Thanks to @ASCII-only for golfing off 48 50 5051 bytes!
Background
Running the above program with eli <file>
interprets it, but elc -<target> <file>
is where the real magic happens: it translates ELVM-IR source code to any of the supported backends!
The ELVM toolchain also supports compiling (a subset of) C and its standard library to ELVM-IR.