MC7 is the lowest level machine code, but there's no huge difference between MC7 and STL.
Sometimes you see the MC7 code in the Step7 code editor, when you download a block from a plc with a function call where the editor has no parameter list of, and thus it can't "decompile" the MC7 to STL. Then the editor switches to the MC7 code view, where you can't edit or save anything.
There's also a hidden trick in the Step7 editor that allows you to see the MC7 code, but it's read only.
It helps a little bit to understand how the STL editor compiles to MC7, an why some things are as they are.
For example:
L DB1.DBW0
is internally split into two operations:
OPN DB1
L DBW0
Parameter passing is also an interesting part and looks different, and you see how the pointers are passed to FCs:
UC "R_STRNG"
P#L 37.0
P#L 41.0
Also MC7 does not know of jump-labels, this are only relative address jumps internally.
There are S7 which are MC7 interpreter and others that are compiler machines. And there are processors like the Vipa Speed7 which "speak" MC7 natively.