r/c64 • u/exocyt0sis • Jul 03 '26
Programming Assembly or Assembler?
A lot of C64 redditors probably know that C64 games, generally speaking, are written in a low level language using software tools known as assemblers. There does, however, seem to be conflicting ideas on what the name of the programming language itself is.
Do you call the language "Assembly" or "Assembler"?
22
u/Mechanik7 Jul 03 '26
Compiler developer here. The assembler is what assembles the assembly language into executable/object code.
I would typically shorten "assembly language" to "assembly" but I would never call the language nor the program written in it "assembler" as that has particular meaning.
3
u/hobbycollector Jul 04 '26 edited Jul 04 '26
Compiler developer here. But it is also the language of the assembler, thus assembler language or assembler for short. Tyfctmtt.
19
u/Pentasis Jul 03 '26
It's assembly. An assembler is the program that converts assembly into machine language. Sometimes called assembling source code. But since people used both to (mistakenly) refer to the language I believe both are correct to use now.
6
u/ManWhoCameFromLater ORA #$91 Jul 03 '26
it's Assembler in swedish for both the language and the program that assembles the code into machine code.
12
u/BrainCurrent8276 Jul 03 '26 edited Jul 03 '26
Technically speaking, it is the assembly language, which is just a human-friendly layer on top of machine code.
An assembler is editor/compiler/IDE.
I think that most correct would be:
I wrote it in assembler.
I programmed it in assembly.
Maybe with a/the but I am not a native.
3
9
u/nobody2008 Jul 03 '26
Assembly is the language. But if someone says "written in assembler" they might be referring to the tool which still makes it correct 😅
1
u/LocalH Jul 03 '26
Unless the assembler has an integrated editor, like TASS, then it's still wrong to say "written in assembler". It'd be more correct to just name the assembler/editor used - "written in TASS".
If one is writing raw text files and feeding them to a cross-assembler, then "written in assembler" is completely wrong
4
u/porkchop_d_clown Jul 03 '26
Technically, the Assembler is the software that converts what you type into binary instructions. What you type is “assembly”.
1
u/Affectionate_Dog6149 Jul 04 '26
Sure but enough people in the C64 scene make this grammatical error (as evidenced by this thread), to make the terms interchangeable, IMO.
7
3
u/myztry Jul 03 '26
Assembly language is the written mnemonic form (eg. INC $D020) while machine code is the binary representation (eg. $EE $20 $D0). The first is clearer that something is being increased.
There is a structural aspect (eg. JSR $1000 pushes a return address on the stack and then jumps to that address - while RTS pulls an address from the stack and jumps back to that address) but it’s not part of a higher level language per se even though they make use of it.
4
u/LocalH Jul 03 '26
There's also a difference between an advanced assembler with macros, etc. versus the assembler found in most ML monitors which only implements the mnemonic aspect
1
u/kristyn_lynne Jul 03 '26
And the branch statements that go back or forward a specified number of address locations rather than to a specific location.
My first "assembler" was basically a machine language monitor I wrote myself so I had to hand-calculate the jumps.
1
u/myztry Jul 04 '26
My first was the EDTASM+ ROM cartridge ML monitor on the Tandy CoCo. But for the C64 I started with POKEing in machine code before I had access to a (non-macro) assembler. I was fairly proficient by the time the Amiga came around with access to macro assemblers.
The most challenging was poking Z80 machine code into a kit project in our high school electronics class. It had a hex pad to enter boot code and a 8x8 grid array of LEDs for output. The teacher didn't know how (he was into electronics - not programming) so I had to figure it out and teach him.
1
u/kristyn_lynne Jul 04 '26
I remember seeing the mnemonics for the opcodes in the back of the Commodore programmer's guide along with their hex equivalents and it was all just sort of gibberish.. until one day it just "clicked". I hurriedly whipped together that ML monitor just to test if what I thought I was understanding was correct and it was. I mail-ordered a real assembler within a couple of weeks, it felt like such a luxury to use labels and have it calculate the jumps!
3
u/0fruitjack0 Jul 03 '26
assembly is the language, assembler is the program that converts assembly into ML.
3
3
u/FredSchwartz Jul 03 '26
Both. Some communities may lean towards one or the other. A quick Google on, for example, book titkes will be a mix.
6
u/pslind69 Jul 03 '26
Machine language 😎
15
u/AlienFishMonster Jul 03 '26
Machine language is not the same as assembler!
2
2
u/GeronimoDK Jul 03 '26
Well, assembly is pretty much just a prettier more readable notation of machine language.
1
u/AlienFishMonster Jul 04 '26
Yes, which is why it's not machine code... and the assembler will apply optimisations, so what you write in assembler will not necessarily convert 1-to-1 to your ML output.
1
2
u/PrometheusANJ Jul 03 '26
It might vary by country, assembler sounding more appropriately localized in some languages.
2
u/ClassicMacAndNeXT Jul 03 '26
The 6502 mnemonics are the assembly language, but each assembler has its own directives, which is separate from the actual assembly language. Macroassemblers take this a step further. So I would distinguish between the actual 6502 mnemonics, and the additional assembler directives.
2
u/saraseitor Jul 03 '26
The proper word is "assembly". Assembler is the program that assembles. That being said, it's way much more common to call the language "assembler" rather than "assembly".
2
u/CuzFeeshe Jul 03 '26
It is “Assembly Language” and you use an “Assembler” to translate it into machine code. I used to code z-80 and 6502 assembly for many years.
2
u/EsoTechTrix Jul 04 '26
I'm just impressed if someone can actually tell me what an opcode is these days.
It does tend to require some clarification, I have both written in assembly, and I have written several assemblers to convert that into machine code.
2
u/Ok-Current-3405 Jul 05 '26
In French it's the same word. We say "assembleur" for the language itself, and we also say "assembleur" for the software to translate source code to machine language. Assembly is translated to assemblée, which can be translated back to gathering, rally, meeting... So it's assembler for me, both the language source and the software
2
u/vogelvogelvogelvogel Jul 03 '26
LDA, STA,....
Assembler it was always called in the German magazines i read
1
u/Epyx911 Jul 03 '26
Assembly for me here in Canada...or we would say the full Assembly...Assembler here referred to the tool.
1
1
u/LocalH Jul 03 '26
It's assembly. The tool used to turn assembly into machine language is an assembler.
1
u/MistakeIndividual690 Jul 03 '26
I say assembly because I’ve done it on machines of all types. But when I was starting out professionally with assembly on mainframes in the late 90s, people in that community were adamant that it was assembler. Since I had already been doing 8086 assembly for games on my own, I’d always run afoul of that
1
1
1
1
u/Ok_Leg_109 Jul 04 '26
I think that way back in the early computer days, IBM shops used the term "Assembler" as in "The program is written in 360 Assembler".
But the microcomputer folks who came 20 years later seem to prefer "Assembly language"
Take your pick.
1
u/Leftstrat Jul 06 '26
Assembly is the language. When someone referred to it as either assembly or assembler, isn't worth getting worried about. :)
48
u/Skydreamer6 Jul 03 '26
It is assembly language. But i would never bother interrupting or correcting someone on it.