Question related to assembly programming

2 points by pencil ↗ HN
Hello HN, Please tell me how many different varieties of assembly language exists like x86 etc,,their differences(how do they differ from one another) which varient should i choose? Please give me some insight on the tools that are needed for programming in assembly.some say i need to buy a intel 8085/8086 kit.but others say a simulator would do.i'am damn confused. also suggest good simulators if that's the case

4 comments

[ 4.8 ms ] story [ 16.8 ms ] thread
x86 isn't an assembly language it is an instruction set. That is to say it provides an instruction that allows you to add the value at a memory location and a constant. Intel's assembly language exposes this instruction one way vs GNU's assmebly language that exposes this a different way. So you have instruction sets then you have for lack of a better word instruction patterns. So you can use GNU Assembler (GAS) with x86, power, and arm instructions is each a different language?

If you want to learn x86 assembly and have an x86 computer then all you need is an assembler. Have a power Mac then you have every thing you need to run power assembly. There is a free online book called the Art of Assembly.

The separation between assembly language and instruction set architecture (ISA) isn't really as well defined as you present it. For example, if you attempt to execute the VMLAUNCH instruction in GAS on anything but a very specific IA-32(e) architecture subset, it will not work. In this sense it is perfectly valid to refer to an "x86 assembly language." This language is highly dependent on the presented ISA, but the line of separation is not clear.

PS: My advice for learning the IA-32(e) ISA is to read the Intel Developers manuals. http://www.intel.com/products/processor/manuals/

Sorry, I thought I was pretty clear. There is nothing I would consider an assembly language there are Instruction sets X86, power, arm, mips, etc. Then there are (textual) instruction layouts GAS, Intel etc. Pretty much one per assembler. So when people mention something being written in assembly language they almost always mean the instruction set, but being able to compile and run almost always means a second round of guess that syntax that has nothing to do with which ISA it came from.

Calling it X86 assembly language is about like saying I wrote this in High Level Language and have that refer to pretty much any High level language in existence. It all runs on the same ISA so it must be the same language. Can't feed it all to the same compiler and have it work, so what that is just an implementation detail.

OK, I see what you're saying now. That's fine and true, although I tend to use the words "IA-32 ISA" and "IA-32 assembly" interchangeably. Different perspectives on the same thing, I guess.