Viewing a single comment thread. View all comments

parautenbach t1_iyenm8u wrote

There's been some great explanations, so I'll add something else.

Programming languages can also be ranked according to how close they are to the hardware. Assembly code is at a pretty low level where it directly gets translated to machine code. Assembly code contains e.g. jump instructions which is a more basic version of a goto statement. Anybody that has coded like this knows it can get pretty complicated quickly — as mentioned by others. That's what you have, so you need to use it, but you can build higher level abstractions where you don't directly need to deal with it (higher level languages, function calls, etc.).

Now, in many old games (like running on DOS), a popular hack was to disassemble the code and then insert jump statements to get around password or other checks. This is one place where it was useful, albeit perhaps illegal in some cases. This is also potentially useful for code where you don't have the source to recompile it, but need to fix something (I don't have an example at hand, but it has happened).

Lastly, it also gets used in a form of hacking known as ROP (return oreinted programming).

1