Articles count is : 918
Disassembler Tools and Resources
1. Introduction Disassemblers are crucial tools for anyone designing or debugging an assembler, providing a human-readable representation of machine...
Intel x86-64 ISA Manual Summary
1. Introduction The Intel x86-64 Instruction Set Architecture (ISA) is defined across multiple detailed volumes in Intel's architecture documentatio...
Conclusion and Next Steps: Next Step — Writing a Linker
1. Introduction After completing the development of an x86-64 assembler, the logical progression is to explore the next component in the toolchain p...
Conclusion and Next Steps: Suggested Open-Source Assemblers to Study
1. Introduction As you reach the end of this book and consider expanding your understanding or even contributing to assembler development, examining...
Conclusion and Next Steps: Summary of Learning Path
1. Introduction Designing a modern x86-64 assembler from scratch is a deeply technical process that draws on knowledge from computer architecture, b...
Advanced Topics : Integration with Linkers and Toolchains
1. Introduction Integration with linkers and toolchains is a critical phase in the development of an assembler. An assembler that can only emit raw ...
Static vs Dynamic Typing: Why Static Type Systems Are Safer, and Why Dynamic Languages Are Adopting Them
Programming languages can be broadly classified into two categories based on their type systems: statically typed and dynamically typed. This class...
Advanced Topics : Adding Debug Info — DWARF Overview
1. Introduction to Debug Information in Assemblers Debug information is a critical aspect of modern software development, allowing developers to tra...
Advanced Topics : Writing Assemblers in Rust or Other Languages
1. Introduction Traditionally, assemblers have been implemented in C or C++ for performance and system-level access. However, with the growing empha...
Opcode Table Reference: Full Expanded Opcode Listings with Instruction Variants
In the architecture of an x86-64 assembler, the opcode table forms the backbone for instruction encoding and decoding. To correctly translate assembly...
Practical Examples and Debugging: Cross-assembling from Custom ISA to x86-64.
Cross-assembling involves translating assembly code written for one instruction set architecture (ISA) into machine code targeting a different ISA. Th...
Managed Code vs Unmanaged Code: A Deep Dive into Performance, Control, and Safety
In the ever-evolving world of software engineering, developers frequently face trade-offs between control and convenience, performance and safety, raw...