Plus NASM is cross platform. Last time it was an issue of whether C++ was slower than C. To be honest, hardware emulation is a procedural process and does not benifit from object oriented code.__Xzyx987X said:Assembly isn't that tough. It's actually easier than C in some ways since there aren't as many syntax rules to worry about. If you're looking to write any portion of your emulator in ASM, I'd reccomend using NASM. It's a quite good assembler, and it's free to boot.
Oh, and KillerShots, you really don't want to start the whole "is there an advantage to using C++ in an emulator instead of C" debate again. While I do agree with you, this is the excact thing the last "how to program an emulator" thread derailed on...
Nobody is arguing that C is faster or better than C++. The point is that processors operate in a procedural fashion, and object oriented semantics just don't apply as nicely to emulation as they would for other projects. If you do use C++, you'd find yourself most likely using few C++ features and mostly features that are available in ANSI C anyway.zenogais said:You guys can we please end this debate right now, you're only opening up a can of worms which has been opened every single time a thread of this type has been started. I'm no admin, but I've seen this exact thing 5-6 times now, and its a little worn out, so let's just drop it.
I'd definately agree with you, for basic emulators most people end up using few C++ features. The ones that can be used for just about every level emulator (vectors, lists, iterators, strings, exception handling, file streams) are quite helpful though. I'd say most of the advanced features though don't scale well to emulators, but then again they weren't created with emulators specifically in mind. All I'm saying is don't pass judgement on C++ or any other language as an emulation tool because you don't use it, as we've already seen its possible to create an emulator in just about any language out there.scottlc said:Nobody is arguing that C is faster or better than C++. The point is that processors operate in a procedural fashion, and object oriented semantics just don't apply as nicely to emulation as they would for other projects. If you do use C++, you'd find yourself most likely using few C++ features and mostly features that are available in ANSI C anyway.
But one thing I neglected to mention earlier is that if you really have to use assembly procedures, write fallback C routines for issues of portability across different architectures.