1
0
mirror of https://github.com/taigrr/gopher-os synced 2025-01-18 04:43:13 -08:00
Achilleas Anagnostopoulos be6cd181b1 acpi: support compilation of logic operators to VM opcodes
The compiler will use the following template for compiling expressions
that involve comparisons:

 00   push op1
 01   push op2
 02   je/jg/jl true_label
 03   push_0
 04   jmp done_label
 05 true_label:
 06   push_1
 07 done_label:

The jmp instruction type  used for L02 depends on the AML opcode that is
compiled. To conserve space, the ACPI spec only defines opcodes for the
following comparison operations: equal, less, greater. All other
comparisons are constructed by combining one of the above opcodes with a
logical not opcode (e.g. greaterOrEqual = !(less)).

The VM opcode exploits the fact the comparison expressions always push a
0/1 value on the stack and uses bitwise operations to emulate some
additional logic opcodes:
 - logic not: 0/1 (on stack) XOR 1
 - logic and: 0/1 (left expr on stack) AND 0/1 (right expr on stack)
 - logic or : 0/1 (left expr on stack) OR 0/1 (right expr on stack)
2017-12-31 07:40:53 +00:00
2017-07-06 06:13:13 +01:00
2017-09-18 09:45:41 +02:00
2017-08-08 23:42:25 +01:00
2017-08-08 23:57:54 +01:00
2017-03-23 06:50:13 +00:00
2017-08-08 23:34:24 +01:00

gopher-os

Build Status codecov Go Report Card License: MIT

The goal of this project is to build a 64-bit POSIX-compliant tick-less kernel with a Linux-compatible syscall implementation using Go.

This project is not about building yet another OS but rather exists to serve as proof that Go is indeed a suitable tool for writing low level code that runs at ring-0.

Note: This project is still in the early stages of development and is not yet in a usable state. In fact, if you build the ISO and boot it, the kernel will eventually panic with a Kmain returned error.

To find out more about the current project status and feature roadmap take a look at the status page.

Building and running gopher-os

TLDR version: make run-qemu or make run-vbox.

A detailed guide about building, running and debugging gopher-os on Linux/OSX as well as the list of supported boot command line options are available here.

How does it look?

80x25 (stadard 8x16 font): 80x25 with standard 8x16 font

1024x768 (10x18 font): 1024x768x32 with 10x18 font

2560x1600 (14x28 font): retina mode (2560x1600) with 14x28 font

Contributing

gopher-os is Open Source. Feel free to contribute! To get started take a look at the contributing guide.

Licence

gopher-os is distributed under the MIT license.

Description
A proof of concept OS kernel written in Go
Readme 773 KiB
Languages
Go 84.9%
ASL 10.2%
Assembly 4%
Makefile 0.9%