003 File Manager
Current Path:
/usr/src/contrib/bearssl/T0
usr
/
src
/
contrib
/
bearssl
/
T0
/
📁
..
📄
BlobWriter.cs
(2.95 KB)
📄
CPU.cs
(4.2 KB)
📄
CodeElement.cs
(2.51 KB)
📄
CodeElementJump.cs
(2.45 KB)
📄
CodeElementUInt.cs
(1.62 KB)
📄
CodeElementUIntExpr.cs
(1.94 KB)
📄
CodeElementUIntInt.cs
(1.79 KB)
📄
CodeElementUIntUInt.cs
(1.79 KB)
📄
ConstData.cs
(4.01 KB)
📄
Opcode.cs
(3.02 KB)
📄
OpcodeCall.cs
(1.9 KB)
📄
OpcodeConst.cs
(2.47 KB)
📄
OpcodeGetLocal.cs
(1.58 KB)
📄
OpcodeJump.cs
(1.73 KB)
📄
OpcodeJumpIf.cs
(1.71 KB)
📄
OpcodeJumpIfNot.cs
(1.72 KB)
📄
OpcodeJumpUncond.cs
(1.74 KB)
📄
OpcodePutLocal.cs
(1.58 KB)
📄
OpcodeRet.cs
(1.47 KB)
📄
SType.cs
(2.37 KB)
📄
T0Comp.cs
(48.08 KB)
📄
TPointerBase.cs
(1.8 KB)
📄
TPointerBlob.cs
(2.02 KB)
📄
TPointerExpr.cs
(2.41 KB)
📄
TPointerNull.cs
(1.42 KB)
📄
TPointerXT.cs
(1.88 KB)
📄
TValue.cs
(4.57 KB)
📄
Word.cs
(4.09 KB)
📄
WordBuilder.cs
(8.47 KB)
📄
WordData.cs
(2.6 KB)
📄
WordInterpreted.cs
(6.15 KB)
📄
WordNative.cs
(1.72 KB)
📄
kern.t0
(7.47 KB)
Editing: Word.cs
/* * Copyright (c) 2016 Thomas Pornin <pornin@bolet.org> * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ using System; using System.Collections.Generic; /* * A "word" is a function with a name. Words can be either native or * interpreted; native words are implemented as some in-compiler special * code. * * Some native words (not all of them) have a C implementation and can * thus be part of the generated C code. Native words with no C * implementation can be used only during compilation; this is typically * the case for words that support the syntax (e.g. 'if'). */ abstract class Word { /* * The compiler context for this word. */ internal T0Comp TC { get; private set; } /* * Immediate words are executed immediately when encountered in the * source code, even while compiling another word. */ internal bool Immediate { get; set; } /* * Each word has a unique name. Names are case-sensitive. */ internal string Name { get; private set; } /* * Words are allocated slot numbers when output code is generated. */ internal int Slot { get; set; } /* * Each word may have a known stack effect. */ internal SType StackEffect { get; set; } internal Word(T0Comp owner, string name) { TC = owner; Name = name; StackEffect = SType.UNKNOWN; } /* * Resolving a word means looking up all references to external * words. */ internal virtual void Resolve() { } /* * Execute this word. If the word is native, then its code is * run right away; if the word is interpreted, then the entry * sequence is executed. */ internal virtual void Run(CPU cpu) { throw new Exception(String.Format( "cannot run '{0}' at compile-time", Name)); } /* * All words may have an explicit C implementations. To be part * of the generated C code, a word must either be interpreted, * or have an explicit C implementation, or both. */ internal string CCode { get; set; } /* * Get all words referenced from this one. This implies * resolving the word. */ internal virtual List<Word> GetReferences() { return new List<Word>(); } /* * Get all data blocks directly referenced from this one. This * implies resolving the word. */ internal virtual List<ConstData> GetDataBlocks() { return new List<ConstData>(); } /* * Produce the code elements for this word. */ internal virtual void GenerateCodeElements(List<CodeElement> dst) { throw new Exception("Word does not yield code elements"); } /* * Compute/verify stack effect for this word. */ internal virtual void AnalyseFlow() { } /* * Get maximum data stack usage for this word. This is the number * of extra slots that this word may need on the data stack. If * the stack effect is not known, this returns -1. */ internal virtual int MaxDataStack { get { SType se = StackEffect; if (!se.IsKnown) { return -1; } if (se.NoExit) { return 0; } else { return Math.Min(0, se.DataOut - se.DataIn); } } } /* * Get maximum return stack usage for this word. */ internal virtual int MaxReturnStack { get { return 0; } } }
Upload File
Create Folder