Next: Introduction, Up: (dir) [Contents][Index]
This manual describes GNU poke (version 0.1-beta, 3 May 2020).
Copyright © 2019, 2020 Jose E. Marchesi
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.
| • Introduction: | Introducing GNU poke. | |
Using poke | ||
|---|---|---|
| • Basic Editing: | Poking bits, bytes and simple data. | |
| • Structuring Data: | Poking your own abstractions. | |
| • Debugging Poke Programs: | When something goes wrong. | |
Pickles | ||
| • Colors: | Editing colors. | |
Advanced Pokology | ||
| • Writing Pickles: | Sharing your abstractions the sane way. | |
Reference Material | ||
| • Dot-Commands: | Commanding the tool. | |
| • Commands: | Commands for editing data. | |
| • Configuration: | Tailoring the tool to your needs. | |
| • The Poke Language: | All you wanted to know about Poke. | |
| • The Standard Library: | Standard goodies for Poke programs. | |
Internals | ||
| • Hacking Poke: | Extending poke. | |
| • The Poke Virtual Machine: | The PVM and its mysteries. | |
Appendices | ||
| • Table of ASCII Codes: | The ASCII character set. | |
| • GNU Free Documentation License: | Distribution terms for this document. | |
Indexes | ||
| • Concept Index: | ||
Here are some other nodes which are really subnodes of the ones already listed, mentioned here so you can get to them in one step: Introduction | ||
| • Motivation: | Why a binary editor? | |
| • Nomenclature: | poke, Poke and pickles. | |
| • Invoking poke: | command line options. | |
| • Commanding poke: | Interactive and non-interactive usage. | |
Basic Editing | ||
| • Binary Files: | Text vs. binary. | |
| • Files as IO Spaces: | Poking files. | |
| • Dumping File Contents: | A first look at a file’s bytes. | |
| • Poking Bytes: | Reading, manipulating and writing bytes. | |
| • Values and Variables: | Values can be stored in variables. | |
| • From Bytes to Integers: | Building numbers with bytes. | |
| • Big and Little Endians: | Pick your egg. | |
| • Negative Integers: | Going behind zero. | |
| • Weird Integers: | Incomplete bytes in numbers. | |
| • Unaligned Integers: | IO spaces are bit-oriented. | |
| • Integers of Different Sizes: | Promotion of integers in expressions. | |
| • Buffers as IO Spaces: | Poking memory buffers. | |
| • Copying Bytes: | Moving data between IO spaces. | |
| • Saving Buffers in Files: | From memory to files. | |
| • Character Sets: | ASCII, Unicode, … | |
| • From Bytes to Characters: | Working with ASCII codes | |
| • ASCII Strings: | NULL-terminated strings. | |
| • From Strings to Characters: | Indexing strings. | |
Structuring Data | ||
| • The SBM Format: | The Stupid BitMap Format | |
| • Poking a SBM Image: | A need for abstraction. | |
| • Modifying SBM Images: | Modifying existing data. | |
| • Defining Types: | Abstracting data structures. | |
| • Pickles: | Pickling useful abstractions. | |
| • Poking Structs: | Abstracting heterogeneous data. | |
Debugging Poke Programs | ||
| • __LINE__ and __FILE__: | Error locations in traces. | |
Colors | ||
| • The Color Registry: | The color pickle. | |
| • RGB24 Encoding: | Encoding colors with three bytes. | |
Advanced Pokololy | ||
| • Writing Pickles: | Sharing your abstractions the sane way. | |
Dot-Commands | ||
| • load command: | Loading pickles. | |
| • file command: | Opening and selecting file IO spaces. | |
| • mem command: | Opening and selecting memory IO spaces. | |
| • nbd command: | Opening and selecting NBD IO spaces. | |
| • ios command: | Switching between IO spaces. | |
| • close command: | Closing IO spaces. | |
| • doc command: | Online manual. | |
| • editor command: | Using an external editor for input. | |
| • info command: | Getting information about open files, etc. | |
| • set command: | Querying and setting global options. | |
| • vm command: | Poke Virtual Machine services. | |
| • exit command: | Exiting poke :( | |
Commands | ||
| • dump: | Binary dumps. | |
| • copy: | Copying data around. | |
| • save: | Save data into a file. | |
Configuration | ||
| • pokerc: | User’s initialization file. | |
| • Load Path: | Determining location of modules. | |
| • Styling: | Changing the appearance of poke’s output. | |
The Poke Language | ||
| • Integers: | Whole numbers. | |
| • Offsets: | Memory sizes and offsets. | |
| • Strings: | NULL-terminated strings. | |
| • Arrays: | Homogeneous collections. | |
| • Structs: | Heterogeneous collections. | |
| • Types: | Declaring types. | |
| • Assignments: | Changing the value of variables. | |
| • Compound Statements: | Sequences of statements. | |
| • Conditionals: | Conditional statements and expressions. | |
| • Loops: | Statements to iterate on conditions. | |
| • Expression Statements: | Using expressions for their side-effects. | |
| • Functions: | Procedural abstraction. | |
| • Endianness: | Byte ordering. | |
| • Mapping: | Accessing IO spaces. | |
| • Exception Handling: | Dealing with exceptional conditions. | |
| • Printing: | Output in Poke programs. | |
| • Comments: | Documenting Poke programs. | |
| • Modules: | Loading pickles from Poke programs. | |
| • System: | Accessing the system from within Poke. | |
The Standard Library | ||
| • Standard Integral Types: | int, long and the like. | |
| • Standard Offset Types: | off64 and the like. | |
| • Standard Units: | b, B, Kb and the like. | |
| • Conversion Functions: | catos, atoi, etc. | |
| • String Functions: | Functions which deal with strings. | |
| • Sorting Functions: | qsort. | |
| • CRC Functions: | Cyclic Redundancy Checksums. | |
| • Dates and Times: | Processing and displaying dates and times. | |
Hacking poke | ||
| • Writing Commands: | Extending poke with new commands. | |
The Poke Virtual Machine | ||
| • PVM Instructions: | Virtual Machine instructions. | |
Next: Introduction, Up: (dir) [Contents][Index]