Программу как и все остальное можно переписать куда угодно тк это все набор байт.
Но чтобы она запустилась на новой машине - необходимо условие совместимости с изначальной.
Если речь идет о портатировании: можно если есть исходные коды.
Если компилятор поддерживает необходимое устройство или ос устройства
то возможно времени потребуется меньше.
Есть универсальные технологии кода не привязаные к железу:
Sun Microsystems Java и Microsoft .NET