This document discusses various embedded software development tools including compilers, assemblers, linkers, locators, debuggers, emulators, simulators, and profilers. A compiler converts source code to machine code. An assembler converts assembly language to machine code. A linker combines object files into an executable program. A locator assigns physical memory addresses. A debugger helps test and debug programs. An emulator runs programs for one system on another system. A simulator simulates another system for testing programs. A profiler gathers execution information to optimize programs.