Because it's designed to be hard to execute on anything that is not a CPU.
Right, but the program is generated by the miner. So the miner could just generate a program that has no branching, and run it on a GPU.
Each program is guaranteed to have a certain number of certain types of instructions, such as (IIRC) exactly one divide instruction.
Since the programs are randomly generated, there's no guarantee that any particular program always uses some number of any particular instruction. There's only a probability, X/256 instructions will be somesuch operation.
Right, but the program is generated by the miner. So the miner could just generate a program that has no branching, and run it on a GPU.
Each program is guaranteed to have a certain number of certain types of instructions, such as (IIRC) exactly one divide instruction.
Since the programs are randomly generated, there's no guarantee that any particular program always uses some number of any particular instruction. There's only a probability, X/256 instructions will be somesuch operation.