|
Many moons ago, before I retired, for many decades, I programmed embedded devices (8 / 16 bit) in both plain C and Assembler. In the early 1980s I even programmed my first PC in Assembler. This was one of the first genuine IBM PCs that they produced in Scotland. It's processor was an Intel 8080 running at the stunning clock speed of 4.7 MHz! At the time that was considered revolutionary!
Since my retirement a decade ago, I have been dabbling with C# just to keep the grey cells busy. Lord knows I have lost too many of them due to the stoopid aging process!
But lately I have been looking around for another challenge. Learning 64 bit Assembler sounds interesting. Checked Amazon for not-too-expensive books on the subject, but some of the better books are for the Linux operating system. I just don't have the energy left to learn both Assembler and Linux.
Can any of you recommend any good resources covering 64 bit Assembler programming on Windows, preferably using Visual Studio?
Please understand that I have done a Google search. Got plenty possibilities from Google. But I would like options that come with your personal recommendations, please. It is so much easier to pick options that your trusted friends recommend.
|
|
|
|
|
Everything I've found on windows programming in 64 bit assembler leads me to the windows DDK.
That's both expensive and hard to work with.
Offhand - and this is just one witch's opinion - using the basics of linux is easy. Enough to run an assembler. And OS level programming in asm is going to be far less arduous in linux even if you're not familiar with the driver model and such, just because they don't have all the info on it paywalled like MS does.
I'd recommend familiarizing yourself with linux. you only need a little bit, and i think it will pay for itself for you in terms of effort invested if you want to code 64 bit asm code that actually does stuff.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
Thanks for responding!
|
|
|
|
|
Hi,
Cp-Coder wrote: Can any of you recommend any good resources covering 64 bit Assembler programming on Windows, preferably using Visual Studio? 64 bit inline assembler isn't supported in Visual Studio. But you should have no problem compiling ASM files. I would recommend The MASM Forum[^] as a great resource.
Best Wishes,
-David Delaune
|
|
|
|
|
Thanks for your response! I will check the forum out.
|
|
|
|
|
Intel itself has an introduction. I wouldn't recommend this to people who have never touched assembly before, but for you it should be good.
This table (and the linked SIB table) is also useful, even if you don't really care about the exact encoding of the operands, just to remind you of what forms the memory operand can have (a lot more flexible than the 8080). The ISDM has tables like that as well but this way it's more convenient IMO.
Of course get the Intel® 64 and IA-32 Architectures Software Developer Manuals (ISDM) as a reference. And you can use x86 and amd64 instruction reference, but that's only the instructions not the other details.
Once you know the basics you will probably find this interesting.
|
|
|
|
|
Good advice! Thanks.
|
|
|
|
|
There is nothing very difficult to understand with Linux. Get a copy of Ubuntu and if you don't have a spare PC, you can install it on a spare raw partition and do dual booting. I have it on my home system.
BTW, like you I retired (almost) a decade ago.
|
|
|
|
|
I dabbled with Ubuntu many years ago (I think it was their version 11) but at that time it did not have a driver for the Soundblaster card I had in my machine, so I dumped it. Anyway, thanks for the advice!
Quote: do dual booting
Yes, or run it in a virtual engine?
modified 7-Dec-19 7:20am.
|
|
|
|
|
The drivers have gotten far better.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
I have downloaded the ISO for version 19.10, thanks!
|
|
|
|
|
good luck to you, and have fun.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
Cp-Coder wrote: Yes, or run it in a virtual engine? Actually most people do it the other way... Linux main OS and Windows in a VM... specially Win10
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
There are several programs that will produce a bootable flash drive using any Linux distro. I've tried a couple, although not recently, and they worked fine.
Set your BIOS to boot from a stick before the internal HD, and you're set. This is nice, as anyone inclined can easily play with multiple distros.
I can't recall the program I used, but found this one: How to Create Bootable Linux USB Drive | Linuxize[^]
|
|
|
|
|
I don't think this message was meant for me.
|
|
|
|
|
Noted. Thanks!
|
|
|
|
|
You might use wsl (windows subsystem for linux). It's command line, but linux command line in Windows 10. Just install Ubuntu from Microsoft store.
|
|
|
|
|
Thanks!
|
|
|
|
|
Do you have any ideas that you want to implement, or just generally learn 64 bit assembler?
|
|
|
|
|
The main focus at the moment is just to get to know Assembler.
|
|
|
|
|
|
Thanks! Kip Irvine's book is on order, thanks.
modified 9-Dec-19 18:54pm.
|
|
|
|
|
If you are used to Visual Studio you can check out this link in Microsoft docs:
MASM for x64 (ml64.exe) | Microsoft Docs
And for the instructions set, the Intel documentation described in a previous reply is very helpful.
|
|
|
|
|
Noted! Thanks! And yes: I am very familiar with VS. Have used every version from 2010 (which cost me $500!) through 2012 (another $500 ) to 2019 CE, which is free.
Thanks MS! I for one appreciate what you do for me! A free upgrade to Windows 10 on all my family's machines, and the world's premier IDE free of charge.
modified 9-Dec-19 18:56pm.
|
|
|
|
|
I'll second the suggestion to use WSL - I do cross-platform (Linux/Windows) C++ development & use a Windows 10 laptop with a WSL Ubuntu 18.04 installation, and I wouldn't want to work any other way. I use Ubuntu bash as my main shell. I can invoke both Windows and Linux executables from that shell. I use Visual Studio Code as my editor, and can either interact with Windows tools, or Linux ones if I use the Remote-WSL extension.
If you use WSL1, you're using the Windows kernel through a translation layer, while WSL2 uses a lightweight VM with a Linux kernel - oh, and you can switch between WSL1 and 2 at will... In either case, your userspace experience should be pretty much the same...
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|