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]