summaryrefslogtreecommitdiff
path: root/usr.bin
AgeCommit message (Collapse)Author
3 daysoasm: Add stdbool.h includesIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
3 daysoasm: Unreserve 9 opcode gapIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
3 daysoasm: Add table to keep track of labelsIan Moffett
Implement a hash table used to store a maximum of 128 labels. This commit adds functions such as label_enter() to add labels to the table, label_lookup() to lookup labels as well as various utility functions used internally by the assembler. Signed-off-by: Ian Moffett <ian@osmora.org>
3 daysoemu: cpu: Add decoding logic of MRO instructionsIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
3 daysoasm: Add encoding for MRO type instructionsIan Moffett
This commit introduces encoding logic for 4 additional instructions: - MROB (Mask Register Over [byte]) - MROW (Mask Register Over [word]) - MROD (Mask Register Over [dword]) - MROQ (Mask Register Over [qword]) This instruction is used to fill a register with a specific length of zeros or ones. For example, to fill a register (e.g., x2) with 16-bits of 1s: -- !! !! Clear bits x2[7:0]... Mrrp,, !! mrow!! !! mrow x2, #1 -- Similarly, an operand of zero sets it to zero. For example, to clear an entire 64-bit register with zeros. Something like this can be done: -- mroq x1, #0 -- Signed-off-by: Ian Moffett <ian@osmora.org>
3 daysoasm: parse: Remove unused stubIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
3 daysoasm: Add initial support for labelsIan Moffett
A label is like a pin on a map with a number attached to it. OASM keeps track of a number referred to as the psuedo instruction pointer (PIP). This value is initially zero by default and is incremented every instruction. The purpose of this value is to pin a location in the code and mark it to be at a specific address so that further references to that label would be translated to the previous PIP value at the time of encountering the label. Signed-off-by: Ian Moffett <ian@osmora.org>
3 daysusr: Add 'oasm' and 'oemu' to the build listIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
3 daysoasm: parse: Use oasm_err instead of printf()Ian Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoasm: Add support for '!' commentsIan Moffett
Introduce comments, example usage: -- !! !! Double the X5 register by using the !! MUL instruction. !! mul x5, 2 !! wow -- Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoemu: cpu: Decode the BR instructionIan Moffett
Add support for interpreting the BR (branch) instruction. This instruction takes in a single register operand containing an address to reassign the instruction pointer to. Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoemu: types: Add addr_t typeIan Moffett
The addr_t type represents any kind of memory address. We also assign paddr_t to addr_t. Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoasm: Add encoding for BR instructionIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoemu: cpu: Add link registers and SR_STATEIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoemu: cpu: Add CPU register dumpIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoemu: cpu: Introduce decoding logic for DIVIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoasm: Add encoding logic for "DIV" instructionIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoemu: cpu: Introduce decoding for MUL instructionIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoasm: Introduce encoding for MUL instructionIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoasm: 'osxm64' -> 'osmx64'Ian Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoemu: cpu: Introduce decoding logic for SUBIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
5 daysoasm: Add encoding logic for "SUB" instructionIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoemu: cpu: Decode and process HLT instructionIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: Parse and encode the "HLT" instructionIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoemu: cpu: Decode ADD instructionsIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: Implement encoding for 'ADD' instructionIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: emit: Remove extra whitespaceIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: emit: Remove extra newlineIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysusr: Add initial OSMX64 emulator sourcesIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: emit: Handle increment/decrement operationsIan Moffett
Implement the initial encoding logic for INC/DEC instructions. Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: emit: Add 'unused' field to instructionIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: emit: Fix typoIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: parse: Add TT_INC to parse_tok()Ian Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: emit: Don't use TAILQ_FOREACH for processingIan Moffett
In order to have more control over the flow at which we grab the next tokens, we should roll our own loop by hand using TAILQ_FIRST() and TAILQ_NEXT() Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: Add initial codegen emit sourcesIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: Open and grab fd for binary output fileIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: parse: Add tok_is_xreg() helperIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: lex: Convert and store <imm> to uint16_tIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
6 daysoasm: lex: Free tokenstr on errorIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
7 daysusr: oasm: Free pointers on error pathsIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
7 daysusr: oasm: Add initial parsing logicIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
7 daysusr: oasm: Add IMM tokstr entryIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
7 daysusr: oasm: Lex registers and operandsIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
7 daysusr: oasm: Add log.cIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
7 daysusr: oasm: Store last token and line numberIan Moffett
Keep track of the last token type (for parser) and keep track of the current line number for debugging. Signed-off-by: Ian Moffett <ian@osmora.org>
7 daysusr: oasm: Add register token typesIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
7 daysusr: oasm: Add quotes around token nameIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
7 daysusr: Add initial "oasm" assembler workIan Moffett
Signed-off-by: Ian Moffett <ian@osmora.org>
8 daysusr: osh: Introduce '&' for background tasksIan Moffett
Previously, when running programs from the shell. The execution must finish before anything else can be done. This commit allows users to add an ampersand ('&') after the command in order to run it in the background. This is an example of its usage: -- @ beep at 400 Hz for 9000ms (to annoy people for fun). @ We will be running it in the background and do a 'kstat' @ to see that the number of tasks have increased. beep 400 9000 & kstat .. -- Signed-off-by: Ian Moffett <ian@osmora.org>
8 daysusr: osh: Refactor parsing logicIan Moffett
- Add parse_line() to simplify parsing user input - Fixup style ... Signed-off-by: Ian Moffett <ian@osmora.org>