1. A method for dynamically patching code, comprising the steps of: intercepting program instructions; determining if a program instruction requires unavailable hardware functionality; and dynamically replacing the program instruction with a replacement instruction that does not require unavailable hardware functionality if it is determined that the program instruction requires unavailable hardware functionality.