In response to Zecronious
I'm pretty sure it's against the Terms of Service. You probably shouldn't do it.
Hiead is one of the few people who can get away with it because he's a trusted oldbie in the community and we know he'd never do anything harmful with his work. It's generally against the rules though, but he did ask.
In response to Nadrew
Nadrew wrote:
Hiead is one of the few people who can get away with it because he's a trusted oldbie in the community and we know he'd never do anything harmful with his work. It's generally against the rules though, but he did ask.

Ah right yeah, was just wondering.
Yeah, Hiead was right. I was wrong. I just figured that BYOND was likely written in such a way that ++ would be aliased to the overall add functionality.

Hiead is one of the few people who post here that you should listen to without exception.
In response to Ter13
I can confirm this from reverse engineering the DMB and bytecode over a few bored afternoons
The compiler doesnt have any optimization engine, an operator or keyword maps basicaly directly to an opcode (or two sometimes)
In response to Tobba
Tobba wrote:
reverse engineering the DMB and bytecode

Considering your key is younger than mine, I have doubts that you are anything like Hiead (Trusted oldbie who is allowed to reverse engineer the DMB).
In response to Albro1
Albro1 wrote:
Tobba wrote:
reverse engineering the DMB and bytecode

Considering your key is younger than mine, I have doubts that you are anything like Hiead (Trusted oldbie who is allowed to reverse engineer the DMB).


Its not like I asked for permission, its not about having "permission" to do it, the point of reverse engineering is to figure out how something works without any help from the one who wrote it.
It's more about RE skills and patience (and having a computer good enough to have IDA decompile the huge VM functions before the heat death of the universe)
In response to Tobba
Nadrew wrote:
It's generally against the rules though, but he did ask.
Galactic Soldier wrote:
Reverse engineering is nothing but patience. There aren't much instructions or fundamentals behind the x84 architecture. Anybody can do it, but most people think it's too hard for whatever reason.

The assembly doesnt actually even help much, the main VM code is far too huge to get anything useful out of, although you do get a modern art peice if you open it in IDAs graph view (however looking at the bins does help a lot in figuring out the DMB format), it's mostly just staring at it in a hex editor
Thats an extra push opcode for the number you're adding to it
Though decoding push opcodes is fast, decoding opcodes like set, get, inc, addset is all hideously slow because of all the branching and variable lookups involved

If you did b = b + 1 then you'd probably see an over 50% slowdown
Its because of the atrocious instruction encoding, it would first read the opcode number, find that entry in the jumptable to execute that opcode, then, for opcodes like get/set, it has to decode an overly complex system of modifiers of which most cant be combined without it dying in a fire anyways
If the instruction encoding was sensible you'd probably be able to get a lot more juice out of the current DM VM
Galactic Soldier wrote:
I confirm that statement. That's pretty ridiculous, they really should add things to fix that.
Doing
a = a + 1 over a += 1
Increases the output by 8 bytes.

a = a + 1 compiles to
get v1
push 1
add
set v1

a += 1 compiles to
push 1
addset v1
It does encrypt the stringtable (in a hilariously bad manner, took me a few mins to figure it out) to prevent someone from just opening it in a text editor and finding embedded passwords etc (though that doesnt solve the problem that you really shouldent do that in the first place)
In response to Tobba
Tobba wrote:
It does encrypt the stringtable (in a hilariously bad manner, took me a few mins to figure it out) to prevent someone from just opening it in a text editor and finding embedded passwords etc (though that doesnt solve the problem that you really shouldent do that in the first place)

Encryption is never a once-and-for-all solution. It will always fail to protect against a relatively curious mind.
Obfasucation is a bad idea, its mostly what encourged me to crack the whole thing apart because of the continous bad attempts to obfasucate it

But yes the current DM engine is pretty terrible, but I doubt it'll ever get replaced
I Like += 1 better because lots of the time I use numbers besides 1 and it would look wierd if I all the sudden used ++
Page: 1 2