Hironaka's original desingularization algorithm had constructive aspects but as I understand, also had aspects / computations which are not constructive and could not be done by hand or with a computer.
Resolution algorithms now typically are based upon blowing up the strata of some invariant (where heuristically the singularities are at their worst) and so they are constructive if you can compute the invariant. But these invariants might be for all intents and purposes completely incomputable, for example based on infinite amounts of data.
New algorithms have simplified many aspects on this, and indeed, algorithms have been implemented in computers, and it isn't so hard to write down all the various invariants as you follows modern algorithms.
You can see
for more discussion.