Then when you're happy with your revised VM, you can spit out portable C code, compile it, and BAM you've got a production VM! Most plug-ins and primitives are also written in the Smalltalk subset (called SLANG), so they will likely be similarly portable.
There is also an FFI for interfacing beyond the standard model.
For example, Pharo github repo doesn't have any C code at all, and to build it I need Pharo VM already running. It is Ok for building new version for existing platform, but what should I do if I want to build VM for other platform (OS)? Hardware platform is supported already, so, I think, I don't need to have new assembler / JIT / Whatever, but I need new glue to new libc, kernel, etc., and new executable file format, am I right?