I’ve never worked in assembly, but I was just curious if SDK’s exist for assembly programming. For instance, if I wanted to create a linked list, are there libraries available that have already done this, or is everything typically done from scratch?
2
At the assembly level, you could build out an “API” by using some Macros and fleshing out a set of assembly functions into a separate file which perform a particular generic task, which you could then call…
Complex functionality, including linked lists, etc., are frequently implemented in a higher level language and called from assembly, Like C, C++, etc. If you are starting out with ASM, but want to utilize more complex patterns and structures, calling a C library is the way to go.
The reason for this is because it quickly becomes an enormous job to manage the spaghetti of registers and addressing muck when you start dealing with an excess of stack frames.
However, if you are interested in implementing complex stuff, it has been done before: Linked Lists in ASM – the only thing you’d need to do is implement this as a macro.
The value of implementing complex functionality in ASM is quickly outweighed by the advantages of just using a higher level language to begin with (which, fyi, are already very fast). If your motivation is speed, my suspicion would be that there is a C library out there can come very close to what you need.
2
I might be wrong on this, but I guess there are SDKs regarding processors architectures, ABIs and other hardware stuff. Other than that, I guess there is no such thing.
Everything in an ASM tends to be ad-hoc, so there are no datastructures per se.
Of course, you could design a couple of standard jumps one could make with some sort of programming contract of what you might expect to be in the stack and memory address, but that would be using C. No real advantage.
0
It looks like Spontaneous Assembly is still avialable. Some of it is aimed toward MS-DOS, which you probably don’t care about. Other parts, however, are (or should be, anyway) reasonably independent of the target platform, as long as it runs on an x86 processor.
1
NASMX? MASM32? Check these “SDK”s which are just regular MACROs for Win32 Programming with ASSEMBLY language.(for x86 and x64)
For Linked List and other DATASTRUCTURES, you might have to code them yourself. Assembly language toolkits are much like C language toolkits – open and extensible.
Only to combine what I said with what @Prototype Stark said: When you have a SDK like Windows, you get plenty of libraries and those come as object code. The same kind you would get from a C/C++ compiler. Your favorite ASM linker will link to those libraries and turn everything into a nice executable (depending of your OS of choice).
And how can you use WinAPI with ASM? Well, you must follow the calling conventions. You can even specify this when you’re compiling C code with some special keywords.