Even more information
I’ve found this amazing website with a lot of information on how to encode x86 instructions. I know the manual is the best source, but some additional research doesn’t hurt much.
d e v o n
todays bird

No title available
Alisa U Zemlji Chuda
AnasAbdin
🪼

Origami Around

祝日 / Permanent Vacation

Kiana Khansmith

tannertan36
PUT YOUR BEARD IN MY MOUTH
TVSTRANGERTHINGS
macklin celebrini has autism
Claire Keane
tumblr dot com

No title available
we're not kids anymore.
Jules of Nature
No title available

❣ Chile in a Photography ❣
seen from United States
seen from Israel
seen from United States
seen from China

seen from United States
seen from United Kingdom
seen from United States

seen from United States

seen from United States

seen from Netherlands
seen from United Kingdom
seen from United States
seen from Brazil

seen from Brazil

seen from United States
seen from United States
seen from United States
seen from United States

seen from United States
seen from United States
@lunasm-assembler
Even more information
I’ve found this amazing website with a lot of information on how to encode x86 instructions. I know the manual is the best source, but some additional research doesn’t hurt much.
More information
I’ve been recollecting more and more information on the subject. A colleague of mine has refereed me to these sources: http://www.sandpile.org/, https://intelxed.github.io/ and https://github.com/zyantific/zydis. I’ve had not time to check them yet, but I sure will later. I leave them here so I don’t lose track of them.Â
Today I spent some time decoding this table I posted the other day with varying degree of success. After not understanding what prefixes where for a while, I remembered the Intel Manual was a thing and turned to its pages for help. There, as was expected, I found a whole section (section 2.1) dedicated to explaining how the x86-64 instruction format works. Apparently, every instruction in the ISA is a subset of the pattern shown in the picture above. More on this as I read.
Code started! You can check it out at Github, the commit hash for all I did today is 3e7c172a934f9c5de29ae20c584b58517ab3fafe. Lunasm can now load source files (many of them and join them together!) and even supports include commands, to include more source files from within a single one. I didn’t start with tokenizing, parsing nor lexing yet, that’s something for the future, but I’m quite happy with what I’ve achieved today. Next time: parsing each line into an easier to work with structure and maybe checking for syntax errors.
Stay tuned!
Instruction formats
 I found this article from the University of Virginia that separates instructions in four categories and lists some of the most common instructions with the types of parameters they can receive.
Charlie the Ninja
Today I found this article by Charlie the Ninja (it’s a real ninja, check out his photo) with interesting details on x86 assembler writing. It points to this magnificent table of opcodes and their instructions that I yet have to completely get to understand, but very useful nonetheless. And an x86-64 one.
It also explains how the registers are encoded (Intel being Intel does not reference registers in the same order as any sound person would alphabetically sort them) and many other strange quirks he ran into while developing his assembler, so I should have that covered.
Repository, logo and start
Today I created the repository for this project, designed the logo, named it and made this blog. Not much, but it’s a start. I’m happy with it. Tomorrow I will officially start the codebase, today I’m too tired (it’s already 4:03 AM!). Stay tuned!
It’s on! Officially, exams are over and it’s due time to get on with this. I’ve been assigned the task of writing an x86-64 assembler. Not an easy task, but not an impossible one. And so, I’ll be keeping record of my progress here, in case anyone has to ever endure the same challenge. Not that I’m not excited! My assembler will be called Lunasm, from Luna, Spanish for moon and Asm, programmer’s lingo for assembly language (but you probably knew that if you are reading this). That up there is the logo. It must have a logo, of course. Try to guess what the binary ascii code says. All that said, the idea is that this assembler will be able to compile Intel x86-64 assembly code to machine language, 16 bit, 32 bit and 64 bit instructions. Also, I would love to add not-so-cryptic mnemonics (for example move as an alternative for mov or packed-unpack-low-bytes-to-words instead of punpcklbw). Also, I’d like to support if-then-else-endif and while-do-wend flow control structures, in order to make assembly programming less of a pain in the... behind. But that shall come later. First what’s first: the three-letter opcodes we all know and love. Stay tuned.