Hi,

Will really old knowledge on Assembly; like the Motorola 680xx series be of any boost in learning todays win asm ? 
I understand i will need to learn a new CPU Architecture, instruction set, then the win32/64 api but im hoping some logical concepts still applies.

Will i be able to do any highspeed 1 to 10 Gbps i/o operations using Ethernet and IP without beeing a rocket scientist in math ?
Also How well are asm api´s maintained / updated by MS ?

Just trying to determine if its realistic for me to learn ASM to do what i want.
Posted on 2011-09-26 13:49:54 by JifUniversal
To be honest, there isn't a bunch that's different. You won't have direct pin I/O acess under protected mode on the IA32/64 systems, but concepts of flags, branches, arithmetic and logical operations are more or less the same (some very small changes apply). Basic data movement is a bit different, in IA32/64 we have a MOV instruction instead of an LD? set of instructions. While on that topic, I've also seen people move between registers on microcontrollers using OR, that's not necessary.. A lot of the problems you'll encounter is hw/mem access.. There are restrictions on what you can and can't access once you get into Win32/64 apps cause the operating system is "protecting" you from the underlying subsystem. You can of course get around that by writing Win32/64 device drivers.. but I don't suggest doing that until you are at least familiar with the instruction set.

HtH,
Bryant Keller
Posted on 2011-09-26 21:22:53 by Synfire
I'd like to add that networking isn't exactly computationally expensive. There isn't a lot of math involved. Aside from calculating the CRC of a packet, everything else is basically just placing data in buffers and parsing some simple headers.
Then again, this will be taken care of by your drivers anyway (unless you plan on writing a driver for your own custom hardware).
I don't think it's an area where assembly can gain much over a language such as C/C++.

I'm also not sure what you mean by "asm api's". The Windows APIs are all aimed at C-programming (although some APIs use COM, which is object-oriented, although it can still be used from non-OO languages such as C and ASM). In assembly you use the same APIs (same DLLs and LIB files), which are always up-to-date, as a result.
The only problem is that Microsoft doesn't provide headers in assembly (generally .inc files, rather than the .h files that C/C++ use). So you have to rely on third-party headers, such as the ones found in the MASM32 package. These may not always be entirely up-to-date, but in most cases it's very simple to translate some of the structs and function definitions from C to assembly. The main problem is with COM (such as DirectX). Translating them to assembly properly may take a bit of effort.

Then again, when you are using networking, you will generally not encounter COM. Windows uses BSD sockets, which have a simple procedural interface.
Posted on 2011-09-27 06:09:28 by Scali

(...)So you have to rely on third-party headers, such as the ones found in the MASM32 package. These may not always be entirely up-to-date, but in most cases it's very simple to translate some of the structs and function definitions from C to assembly. The main problem is with COM (such as DirectX). Translating them to assembly properly may take a bit of effort.

True. When starting with win32/64 asm you almost always do things like registerclass/createwindow and not very much of anything else. By the time you need those "up-to-date" headers, you should be experienced enough to be able to make them yourself.
Posted on 2011-10-09 07:39:31 by ti_mo_n