asm.ts
TypeScript icon, indicating that this package has built-in type declarations

0.0.5 • Public • Published

asm.ts

X86_64 assember with a chaining API and auto-complete support.

Motivation

Learning assembly for real. Having fun while doing so. Feel free to join me in this; keep calm and PR! :)

Install

npm install asm.ts

# or

yarn add asm.ts

Usage

Example in asm.ts:

import { asm } from 'asm.ts'

// standard-compliant x86_64 machine code
// this code creates a 512 byte bootloader which ends up
// in an infinite loop; can be loaded e.g. via QEmu, VMWare, v86, etc.
const machineCode = asm()
  .code()
  .label('hang') // declare label
  .jmp('hang') // jump to iself; initinite loop
  .macro((asm) => {
    // pad until 510 bytes are reached
    for (let i = 0; i < 510 - asm.$; i++) {
      asm.code().db(0x0)
    }
  })
  // this data is put at the end, packed in the data section
  .data()
  // internal big endian to little endian conversion
  .dw(0xaa55)
  // returns a Buffer (native in Node.js, polyfilled in browser)
  .assemble()

The same code in Netwide Assembler (NASM):

loop:
  jmp loop
times 510 -( $ - $$ ) db 0
dw 0xaa55

To assemple using NASM:

nasm boot_sect.asm -f bin -o boot_sect.bin

Learning Resources

Beginner course on assembler

https://www.youtube.com/playlist?list=PL9C96j-WSJzIGSzImXyK2Yec2Z0cbPZ5p

X86 Cheat sheets

OpCode table for x86_64: http://ref.x86asm.net/coder.html

Instruction set reference: https://www.felixcloutier.com/x86/

Low Level from 0 to hero

Low level from zero to hero (MIT OpenCourseWare) MIT 6.004 Computation Structures, Spring 2017 by Chris Terman https://www.youtube.com/watch?v=qyBuzeUYs2M&list=PLUl4u3cNGP62WVs95MNq3dQBqY2vGOtQ2&index=1

Complete course: https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/

Performance - and Assembly deep dive

MIT 6.172 Performance Engineering of Software Systems, Fall 2018 by Charles Leiserson https://www.youtube.com/watch?v=o7h_sYMk_oc&list=PLUl4u3cNGP63VIBQVWguXxZZi0566y7Wf

Complete course: https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/

Own Operating System course

A course on how to write your own operating system by Daedalus Community. https://www.youtube.com/watch?v=MwPjvJ9ulSc

Another course on writing your own operating system

Writing a Simple Operating System — from Scratch by Nick Blundell https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf

Package Sidebar

Install

npm i asm.ts

Weekly Downloads

1

Version

0.0.5

License

MIT

Unpacked Size

4.22 MB

Total Files

684

Last publish

Collaborators

  • kyr0