machine-code 2.2.0

Assembler for x86, ELF reader, various disassemblers

Includes an assembler for x86 capable of producing ELF binaries.

Disassemblers for arm a64, i8080, m68hc12, mips and x86 (all modes).

And a library for reading ELF files.

$ akku update
$ akku install machine-code
$ .akku/env
Authors

Göran Weinholt

Homepage

Information missing.

License

MIT

Dependencies

Source code

https://gitlab.com/weinholt/machine-code.git git
298e3ba302b72faa406d016a87556febbe52fc85
Tag: v2.2.0

Package contents

  • (machine-code assembler elf) R6
    • → elf-32-assembler elf-64-assembler
    • ← (rnrs) R6
    • ← (struct pack)
    • ← (machine-code format elf)
  • (machine-code assembler x86-misc) R6
    • → make-modr/m make-sib bitwidth<= number->bytevector
    • ← (rnrs) R6
  • (machine-code assembler x86-operands) R6
    • → registers lookup-register register? register-name register-type register-index memory? memory-addressing-mode memory-datasize memory-segment memory-expr memory-scale memory-index memory-base encode-memory expression? expression-operand-size build-expression eval-expression expression-in-range? far-pointer? far-pointer-seg far-pointer-offset translate-operands operand-labels
    • ← (rnrs) R6
    • ← (machine-code assembler x86-misc)
  • (machine-code assembler x86) R6
    • → assemble
    • ← (rnrs) R6
    • ← (machine-code assembler x86-operands)
    • ← (machine-code assembler x86-misc)
    • ← (machine-code disassembler x86-opcodes)
  • (machine-code disassembler arm-a64) R6
    • → get-instruction invalid-opcode?
    • ← (rnrs) R6
    • ← (machine-code disassembler arm-aarch64)
    • ← (machine-code disassembler arm-private)
    • ← (machine-code disassembler private)
  • (machine-code disassembler arm-aarch64) R6
    • → system-registers
    • ← (rnrs) R6
  • (machine-code disassembler arm-private) R6
    • → define-encoding != &= !&=
    • ← (rnrs) R6
    • ← (machine-code disassembler private)
  • (machine-code disassembler i8080) R6
    • → get-instruction invalid-opcode?
    • ← (rnrs) R6
    • ← (machine-code disassembler private)
  • (machine-code disassembler m68hc12) R6
    • → get-instruction invalid-opcode?
    • ← (rnrs) R6
    • ← (machine-code disassembler private)
  • (machine-code disassembler mips) R6
    • → get-instruction invalid-opcode?
    • ← (rnrs) R6
    • ← (machine-code disassembler private)
  • (machine-code disassembler private) R6 Internal
    • → raise-UD invalid-opcode? map-in-order register-disassembler available-disassemblers get-disassembler make-disassembler disassembler? disassembler-name disassembler-min-instruction-size disassembler-max-instruction-size disassembler-instruction-getter
    • ← (rnrs) R6
  • (machine-code disassembler x86-opcodes) R6
    • → opcodes pseudo-mnemonics mnemonic-aliases lock-instructions branch-hint-instructions rep-instructions repz-instructions bnd-instructions XOP-opcode-map-8 XOP-opcode-map-9 XOP-opcode-map-A
    • ← (rnrs) R6
  • (machine-code disassembler x86) R6
    • → get-instruction invalid-opcode?
    • ← (rnrs) R6
    • ← (machine-code disassembler private)
    • ← (machine-code disassembler x86-opcodes)
  • (machine-code disassembler) R6
    • → invalid-opcode? available-disassemblers get-disassembler disassembler? disassembler-name disassembler-min-instruction-size disassembler-max-instruction-size disassembler-instruction-getter
    • ← (rnrs) R6
    • ← (machine-code disassembler private)
    • ← (machine-code disassembler arm-a64)
    • ← (machine-code disassembler i8080)
    • ← (machine-code disassembler m68hc12)
    • ← (machine-code disassembler mips)
    • ← (machine-code disassembler x86)
  • (machine-code format elf) R6
    • → is-elf-image? open-elf-image make-elf-image elf-image? elf-image-port elf-image-word-size elf-image-endianness elf-image-os-abi elf-image-abi-version elf-image-type elf-image-machine elf-image-version elf-image-entry elf-image-phoff elf-image-shoff elf-image-flags elf-image-ehsize elf-image-phentsize elf-image-phnum elf-image-shentsize elf-image-shnum elf-image-shstrndx make-elf-section elf-section? elf-section-name elf-section-type elf-section-flags elf-section-addr elf-section-offset elf-section-size elf-section-link elf-section-info elf-section-addralign elf-section-entsize make-elf-segment elf-segment? elf-segment-type elf-segment-flags elf-segment-offset elf-segment-vaddr elf-segment-paddr elf-segment-filesz elf-segment-memsz elf-segment-align make-elf-symbol elf-symbol? elf-symbol-name elf-symbol-other elf-symbol-shndx elf-symbol-value elf-symbol-size elf-symbol-binding elf-symbol-type elf-symbol-info elf-image-section-by-name elf-image-sections elf-image-segments elf-image-symbols make-string-table string-table? string-table-empty? string-table-size string-table-bytes string-table-list-index string-table-byte-index ELF-MAGIC ELFCLASS32 ELFCLASS64 ELFDATA2LSB ELFDATA2MSB ET-NONE ET-REL ET-EXEC ET-DYN ET-CORE ET-LOOS ET-HIOS ET-LOPROC ET-HIPROC EV-CURRENT ELFOSABI-SYSV ELFOSABI-HPUX ELFOSABI-NETBSD ELFOSABI-LINUX ELFOSABI-SOLARIS ELFOSABI-AIX ELFOSABI-IRIX ELFOSABI-FREEBSD ELFOSABI-TRU64 ELFOSABI-MODESTO ELFOSABI-OPENBSD ELFOSABI-OPENVMS ELFOSABI-NSK ELFOSABI-AROS EM-NONE EM-M32 EM-SPARC EM-386 EM-68K EM-88K EM-860 EM-MIPS EM-MIPS-RS3-LE EM-PARISC EM-SPARC32PLUS EM-PPC EM-PPC64 EM-S390 EM-ARM EM-SPARCV9 EM-IA-64 EM-68HC12 EM-X86-64 EM-68HC11 EM-AARCH6 elf-machine-names SHT-NULL SHT-PROGBITS SHT-SYMTAB SHT-STRTAB SHT-RELA SHT-HASH SHT-DYNAMIC SHT-NOTE SHT-NOBITS SHT-REL SHT-SHLIB SHT-DYNSYM SHT-LOOS SHT-HIOS SHT-LOPROC SHT-HIPROC SHF-WRITE SHF-ALLOC SHF-EXECINSTR SHF-MASKOS SHF-MASKPROC SHN-UNDEF SHN-ABS SHN-COMMON PT-NULL PT-LOAD PT-DYNAMIC PT-INTERP PT-NOTE PT-PHDR PT-LOPROC PT-HIPROC PF-R PF-W PF-X PF-MASKOS PF-MASKPROC STB-LOCAL STB-GLOBAL STB-WEAK STB-LOOS STB-HIOS STB-LOPROC STB-HIPROC STT-NOTYPE STT-OBJECT STT-FUNC STT-SECTION STT-FILE STT-LOOS STT-HIOS STT-LOPROC STT-HIPROC
    • ← (rnrs) R6
    • ← (struct pack)
  • (machine-code tests check) R6 Test
    • → check check-report check-passed?
    • ← (rnrs) R6

Version history

  • 2021-04-18 ~ 2.2.0
  • 2019-06-22 ~ 2.1.0
  • 2018-04-08 ~ 2.0.0