• Stars
    star
    127
  • Rank 281,168 (Top 6 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created over 4 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A terminal viewer for x86 instruction/intrinsic information using Python 3 + curses

x86-info-term

x86-info-term is a curses-based viewer for x86 instruction info built with Python 3. It combines the following data sources:

screenshot

Features

  • Offline use: after the data sources are downloaded on the first run, requires no network access to run
  • More advanced filtering: multiple filters are allowed, and so is filtering by regular expression (using Python's regex syntax). Filter terms can be prefixed by ! to negate the filter meaning. For example, the filter avx-512 !_mask will show all AVX-512 operations but filter out the masking variants.
  • Keyboard-only navigation: using a combination of vim- and emacs-style key bindings, x86-info-term is sure to delight and/or annoy everyone.
  • 100% Pretty Cool

Key bindings

Data sources

  • s: switch main data source view (toggling between Intel intrinsics data or uops.info instructions)

Scrolling

  • <count>: a number can be prefixed to any vertical scroll to multiply the movement, like in vim.
  • Ctrl-Y: one line up
  • Ctrl-E: one line down
  • Ctrl-U: one half-page up
  • Ctrl-D: one half-page down
  • Page Up: one page up
  • Page Down: one page down (who would've thought?)
  • h, Left: scroll tables left (right now, just the performance data from uops.info)
  • l, Right: scroll tables right

Cursor movement

This is for the intrinsic-selection cursor, not for text editing: see "Filtering" below for that

  • <count>: a number can be prefixed to any movement to multiply the movement, like in vim. For example, 33j moves 33 rows down, and 33J moves 330 rows down. A count used with the g/G commands moves to an absolute line number.
  • j, Down: one row down
  • k, Up: one row up
  • J: ten rows down
  • K: ten rows up
  • u: one half-page up
  • d: one half-page down
  • g, Home: first row
  • G, End: last row

Detail view

Each intrinsic can be expanded/collapsed to show/hide complete data

  • Space, Enter: toggle open/close of selected row
  • o: open selected row
  • c: close selected row
  • O: open all rows
  • C: close all rows

Filtering

  • f, /, Tab: from the normal browsing mode, start entering a filter
  • most normal keys, arrow keys, delete/backspace, etc.: edit the filter with usual key meanings
  • Enter, Tab: keep filter, return to browsing mode
  • Esc: remove current filter and return to browsing mode
  • Ctrl-F: move cursor forward one character
  • Ctrl-B: move cursor back one character
  • Ctrl-W: delete word before cursor
  • Ctrl-U: delete line before cursor
  • Ctrl-K: delete line after cursor

More Repositories

1

x86-sat

Basic SAT model of x86 instructions using Z3, autogenerated from Intel docs
Python
312
star
2

faster-utf8-validator

A very fast library for validating UTF-8 using AVX2/SSE4 instructions
C
217
star
3

zp7

ZP7: Zach's Peppy Parallel-Prefix-Popcountin' PEXT/PDEP Polyfill
C
43
star
4

make.py

make.py, a fast Python-based build tool (fork of https://code.google.com/archive/p/make-py/)
Python
26
star
5

mutagen

Mutagen, a purely functional programming language with Pythonic syntax
Python
15
star
6

Miroslav

A proof-of-concept for a fast regex matcher using lossy NFA matching on SIMD
C++
12
star
7

sprdpl

Simple Python Recursive-Descent Parsing Library
Python
11
star
8

game-about-squares-solver

Solver for Game About Squares (gameaboutsquares.com)
Python
7
star
9

undulance

Python Software Synthesis Framework
Python
6
star
10

CubingB

CubingB is a timer/analyzer for speedsolving Rubik's cubes, with smart cube support
Python
6
star
11

slidey-blocky-thingy

Clone of Unblock Me/Rush Hour type games in react.js, with Python solver/puzzle generator
JavaScript
5
star
12

zmt

A vim-esque editor with a C backend and luajit frontend
C
3
star
13

obfusound

Old obfuscated sound-generating program, utilizing (asexual) genetic algorithms over tiny programs that run on a simple virtual machine.
C
2
star
14

stretchy

A basic Linjat/Ordinary Puzzles clone made with React
JavaScript
2
star
15

lc3b-sim

A simulator for the LC-3b microarchitecture.
C
2
star
16

pythonc

Pythonc, a Python 3->C++ compiler.
Python
2
star
17

tinychess

A very small obfuscated chess engine in C.
C
2
star
18

boro

Boro is a very basic Amazons engine written in C. It uses very dumb monte carlo/UCT for AI.
C
2
star
19

quines

Some old quines I wrote intermittently between 2008 and 2010
C
1
star
20

zct

ZCT, my old chess program
C
1
star
21

switchy

A simple javascript game of questionable entertainment value
Python
1
star
22

speedy

Speedy is a basic bitboard chess move generator framework in C.
C
1
star
23

prethon

Prethon is a Python based preprocessor. Take a text/code/whatever file with embedded Python macros and generate more text/code/whatever.
Python
1
star