@specy/risc-v 2.1.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -21
- package/dist/index.d.mts +35 -26
- package/dist/index.d.ts +35 -26
- package/dist/index.js +6722 -5840
- package/dist/index.mjs +6721 -5840
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,22 +9,33 @@ It is part of a family of javascript assembly interpreters/simulators:
|
|
|
9
9
|
|
|
10
10
|
## Usage
|
|
11
11
|
|
|
12
|
-
First, create an instance of the simulator with the
|
|
12
|
+
First, create an instance of the simulator with `makeRiscVFromFiles`. Supply a virtual source tree and the path of its entry file. Relative `.include` paths resolve from the file containing the directive, while paths beginning with `/` resolve from the virtual root.
|
|
13
13
|
|
|
14
14
|
Before running the simulator, you must assemble and initialize it. You can then step through the program, simulate with breakpoints, or simulate with a limit.
|
|
15
15
|
|
|
16
16
|
⚠️**WARNING**⚠️ You must have only one instance of the simulator at a time. Memory, registers, and other state may be shared or behave unpredictably with multiple instances.
|
|
17
17
|
|
|
18
18
|
```typescript
|
|
19
|
-
import {RISCV, JsRiscV, RegisterName, BackStepAction} from '@specy/risc-v';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
import {RISCV, makeRiscVFromFiles, JsRiscV, RegisterName, BackStepAction} from '@specy/risc-v';
|
|
20
|
+
|
|
21
|
+
const files = {
|
|
22
|
+
'src/main.asm': `
|
|
23
|
+
.include "lib/math.asm"
|
|
24
|
+
.text
|
|
25
|
+
.globl main
|
|
26
|
+
main:
|
|
27
|
+
add_values(t2, 5, 7)
|
|
28
|
+
`,
|
|
29
|
+
'src/lib/math.asm': `
|
|
30
|
+
.macro add_values(%result, %left, %right)
|
|
31
|
+
li %result, %left
|
|
32
|
+
addi %result, %result, %right
|
|
33
|
+
.end_macro
|
|
34
|
+
`,
|
|
35
|
+
} as const;
|
|
25
36
|
|
|
26
37
|
// RISCV.setIs64Bit(true); // Set to 64-bit mode if needed
|
|
27
|
-
const riscvSimulator: JsRiscV =
|
|
38
|
+
const riscvSimulator: JsRiscV = makeRiscVFromFiles(files, 'src/main.asm');
|
|
28
39
|
|
|
29
40
|
riscvSimulator.assemble();
|
|
30
41
|
riscvSimulator.initialize(true); // Start at 'main'
|
|
@@ -154,10 +165,10 @@ riscvSimulator.removeMemoryObservers()
|
|
|
154
165
|
|
|
155
166
|
Provides static methods to initialize and create simulator instances.
|
|
156
167
|
|
|
157
|
-
* `
|
|
158
|
-
Creates a
|
|
168
|
+
* `makeRiscVFromFiles(files: RISCVSourceSet, entryFile: string): JsRiscV`
|
|
169
|
+
Creates a simulator from a snapshot of a virtual source tree and its entry file. Source paths are canonical, root-relative POSIX paths. The factory is also available as `RISCV.makeRiscVFromFiles` and initializes the simulation environment when needed.
|
|
159
170
|
* `RISCV.initializeRISCV(): void`
|
|
160
|
-
Initializes the core RISC-V simulation environment. Called internally by `
|
|
171
|
+
Initializes the core RISC-V simulation environment. Called internally by `makeRiscVFromFiles`, but can be called explicitly if needed.
|
|
161
172
|
* `RISCV.getInstructionSet(): JsInstruction[]`
|
|
162
173
|
Returns an array of objects, each describing a supported RISC-V instruction (name, example, description, tokens).
|
|
163
174
|
* `RISCV.setIs64Bit(is64Bit: boolean): void`
|
|
@@ -199,13 +210,12 @@ This interface provides methods to control and interact with a RISC-V simulator
|
|
|
199
210
|
* `removeMemoryObserver(handle: number): void`: Removes one registration.
|
|
200
211
|
* `removeMemoryObservers(): void`: Removes every registration.
|
|
201
212
|
* `countMemoryObservers(): number`: The number of live registrations.
|
|
202
|
-
* `getCurrentStatementIndex(): number`: Returns the index of the current instruction in the list of assembled program statements.
|
|
203
213
|
* `getNextStatement(): JsProgramStatement | null`: Returns the next `JsProgramStatement` to be executed, or `null` if at the end.
|
|
204
214
|
* `getStatementAtAddress(address: number): JsProgramStatement | null`: Gets the program statement at the given memory `address`.
|
|
205
|
-
* `
|
|
206
|
-
* `getCompiledStatements(): JsProgramStatement[]`: Returns
|
|
207
|
-
* `getParsedStatements():
|
|
208
|
-
* `getTokenizedLines(): RiscvTokenizedLine[]`: Returns
|
|
215
|
+
* `getStatementsAtSourceLocation(sourcePath: string, sourceLine: number): JsProgramStatement[]`: Returns every machine statement generated from an original one-based source location, in address order. Pseudo-instructions and macro calls can produce multiple results.
|
|
216
|
+
* `getCompiledStatements(): JsProgramStatement[]`: Returns all machine statements after a successful assembly.
|
|
217
|
+
* `getParsedStatements(): JsProgramStatement[]`: Returns the parsed statements before pseudo-instruction expansion.
|
|
218
|
+
* `getTokenizedLines(): RiscvTokenizedLine[]`: Returns the expanded source stream with each line's path, one-based line number, original source, processed source, and tokens. It is available after tokenization succeeds, including when a later assembly stage fails.
|
|
209
219
|
* `getCallStack(): JsRiscvStackFrame[]`: Returns the current call stack as an array of stack frame objects.
|
|
210
220
|
* `getLabelAtAddress(address: number): string | null`: Returns the label name at the given memory `address`, or `null` if no label exists there.
|
|
211
221
|
|
|
@@ -217,6 +227,8 @@ This interface provides methods to control and interact with a RISC-V simulator
|
|
|
217
227
|
#### Types
|
|
218
228
|
|
|
219
229
|
* `RegisterName`: Union type for RISC-V register names (e.g., `'ra'`, `'sp'`, `'a0'`, `'t0'`, etc.).
|
|
230
|
+
* `RISCVSourceSet`: A read-only mapping from canonical virtual source paths to source strings.
|
|
231
|
+
* `RISCVSourceLocation`: A source path and one-based source line.
|
|
220
232
|
* `HandlerName`: Union type of all possible handler names (keys of `HandlerMap`).
|
|
221
233
|
* `HandlerMap`: An object type mapping `HandlerName`s to their expected input argument types (`in`) and return type (`out`). This defines the signature for syscall/event handlers.
|
|
222
234
|
* `HandlerMapFns`: An object type where keys are `HandlerName`s and values are the corresponding handler functions.
|
|
@@ -224,10 +236,10 @@ This interface provides methods to control and interact with a RISC-V simulator
|
|
|
224
236
|
* `ConfirmResult`: Enum for confirm dialog results (`YES`, `NO`, `CANCEL`).
|
|
225
237
|
* `BackStepAction`: Enum representing types of actions that can be undone (e.g., `MEMORY_RESTORE_WORD`, `REGISTER_RESTORE`).
|
|
226
238
|
* `JsBackStep`: Interface representing an entry in the undo stack, detailing the action, parameters, and PC value.
|
|
227
|
-
* `JsProgramStatement`: Interface representing an assembled instruction, including source line, address, binary/machine/assembly representations.
|
|
228
|
-
* `JsInstructionToken`: Interface representing a token from the assembly source (value, type, source
|
|
239
|
+
* `JsProgramStatement`: Interface representing an assembled instruction, including its source path, source line, address, binary/machine/assembly representations, and full original source line.
|
|
240
|
+
* `JsInstructionToken`: Interface representing a token from the assembly source (value, type, and one-based source column).
|
|
229
241
|
* `JsInstruction`: Interface describing a RISC-V instruction (name, example, description, token patterns).
|
|
230
|
-
* `RiscvTokenizedLine`: An object containing
|
|
231
|
-
* `RISCVAssembleError`: Interface describing an assembly
|
|
242
|
+
* `RiscvTokenizedLine`: An object containing source identity, original and processed line strings, and parsed `JsInstructionToken`s.
|
|
243
|
+
* `RISCVAssembleError`: Interface describing an assembly diagnostic with its source path, one-based line and column, warning status, and structured macro expansion trace.
|
|
232
244
|
* `RISCVAssembleResult`: Interface for the result of `assemble()`, containing a report string, list of `RISCVAssembleError`s, and a `hasErrors` boolean.
|
|
233
|
-
* `JsRiscvStackFrame`: Interface describing a frame on the call stack (PC, target address, SP, FP, register snapshot).
|
|
245
|
+
* `JsRiscvStackFrame`: Interface describing a frame on the call stack (PC, target address, SP, FP, register snapshot).
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
type JsInstructionToken = {
|
|
2
|
-
|
|
2
|
+
/** One-based column in the processed source line. */
|
|
3
3
|
sourceColumn: number;
|
|
4
|
-
originalSourceLine: number;
|
|
5
4
|
value: string;
|
|
6
5
|
type: string;
|
|
7
6
|
};
|
|
@@ -178,16 +177,30 @@ type JsInstruction = {
|
|
|
178
177
|
getIsRv64Only: () => boolean;
|
|
179
178
|
};
|
|
180
179
|
type RiscvTokenizedLine = {
|
|
181
|
-
|
|
180
|
+
sourcePath: string;
|
|
181
|
+
/** One-based line in `sourcePath`. */
|
|
182
|
+
sourceLine: number;
|
|
183
|
+
/** Exact line supplied in the source set. */
|
|
184
|
+
source: string;
|
|
185
|
+
/** Line after assembler substitutions such as `.eqv`. */
|
|
186
|
+
processedSource: string;
|
|
182
187
|
tokens: JsInstructionToken[];
|
|
183
188
|
};
|
|
189
|
+
type RISCVSourceLocation = {
|
|
190
|
+
sourcePath: string;
|
|
191
|
+
/** One-based line in `sourcePath`. */
|
|
192
|
+
sourceLine: number;
|
|
193
|
+
};
|
|
194
|
+
type RISCVSourceSet = Readonly<Record<string, string>>;
|
|
184
195
|
type RISCVAssembleError = {
|
|
185
196
|
isWarning: boolean;
|
|
186
197
|
message: string;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
198
|
+
macroExpansionTrace: RISCVSourceLocation[];
|
|
199
|
+
sourcePath: string;
|
|
200
|
+
/** One-based line in `sourcePath`. */
|
|
201
|
+
sourceLine: number;
|
|
202
|
+
/** One-based column in `sourcePath`. Zero only for diagnostics without a source location. */
|
|
203
|
+
sourceColumn: number;
|
|
191
204
|
};
|
|
192
205
|
type RISCVAssembleResult = {
|
|
193
206
|
report: string;
|
|
@@ -198,7 +211,7 @@ type RISCVAssembleResult = {
|
|
|
198
211
|
hasWarnings: boolean;
|
|
199
212
|
};
|
|
200
213
|
declare class RISCV {
|
|
201
|
-
static
|
|
214
|
+
static makeRiscVFromFiles: typeof makeRiscVFromFiles;
|
|
202
215
|
static initializeRISCV: typeof initializeRISCV;
|
|
203
216
|
static getInstructionSet(): JsInstruction[];
|
|
204
217
|
static setIs64Bit(is64Bit: boolean): void;
|
|
@@ -230,9 +243,9 @@ type JsRiscVStackFrame = {
|
|
|
230
243
|
* Represents a statement in the assembled program.
|
|
231
244
|
*/
|
|
232
245
|
interface JsProgramStatement {
|
|
233
|
-
/**
|
|
234
|
-
|
|
235
|
-
|
|
246
|
+
/** Canonical path of the original source file. */
|
|
247
|
+
readonly sourcePath: string;
|
|
248
|
+
/** The one-based line number in the original source file. */
|
|
236
249
|
readonly sourceLine: number;
|
|
237
250
|
/**
|
|
238
251
|
* The memory address of the instruction.
|
|
@@ -382,11 +395,8 @@ interface JsRiscV {
|
|
|
382
395
|
* @param address
|
|
383
396
|
*/
|
|
384
397
|
getStatementAtAddress(address: number): JsProgramStatement;
|
|
385
|
-
/**
|
|
386
|
-
|
|
387
|
-
* @param line
|
|
388
|
-
*/
|
|
389
|
-
getStatementAtSourceLine(line: number): JsProgramStatement;
|
|
398
|
+
/** Gets every machine statement generated from an original source location. */
|
|
399
|
+
getStatementsAtSourceLocation(sourcePath: string, sourceLine: number): JsProgramStatement[];
|
|
390
400
|
getTokenizedLines(): RiscvTokenizedLine[];
|
|
391
401
|
/**
|
|
392
402
|
* Checks if the simulation can be undone.
|
|
@@ -403,7 +413,7 @@ interface JsRiscV {
|
|
|
403
413
|
* @returns An array of `JsProgramStatement` objects representing the compiled program.
|
|
404
414
|
*/
|
|
405
415
|
getCompiledStatements(): JsProgramStatement[];
|
|
406
|
-
getParsedStatements():
|
|
416
|
+
getParsedStatements(): JsProgramStatement[];
|
|
407
417
|
/**
|
|
408
418
|
* Gets the label at the given address.
|
|
409
419
|
* @param address The memory address.
|
|
@@ -560,11 +570,6 @@ interface JsRiscV {
|
|
|
560
570
|
* The number of live registrations, across every `JsRiscV` instance.
|
|
561
571
|
*/
|
|
562
572
|
countMemoryObservers(): number;
|
|
563
|
-
/**
|
|
564
|
-
* Gets the index of the current statement in the assembled program.
|
|
565
|
-
* @returns The index of the current statement.
|
|
566
|
-
*/
|
|
567
|
-
getCurrentStatementIndex(): number;
|
|
568
573
|
/**
|
|
569
574
|
* Gets the next statement to be executed.
|
|
570
575
|
* @returns The next `JsProgramStatement`.
|
|
@@ -583,15 +588,19 @@ interface JsRiscV {
|
|
|
583
588
|
terminated: boolean;
|
|
584
589
|
}
|
|
585
590
|
/**
|
|
586
|
-
* Creates a
|
|
587
|
-
*
|
|
591
|
+
* Creates a RISC-V simulator from a virtual source tree and its entry file.
|
|
592
|
+
*
|
|
593
|
+
* Source paths are canonical, root-relative, case-sensitive POSIX paths. The source set is
|
|
594
|
+
* snapshotted by this call; only the entry file and files reached through `.include` are assembled.
|
|
595
|
+
* @param files Source text keyed by canonical source path.
|
|
596
|
+
* @param entryFile Canonical path of the file from which include expansion starts.
|
|
588
597
|
* @returns A new `JsRiscV` object.
|
|
589
598
|
*/
|
|
590
|
-
declare function
|
|
599
|
+
declare function makeRiscVFromFiles(files: RISCVSourceSet, entryFile: string): JsRiscV;
|
|
591
600
|
/**
|
|
592
601
|
* Initializes the RISCV simulator.
|
|
593
602
|
*/
|
|
594
603
|
declare function initializeRISCV(): void;
|
|
595
604
|
declare function bigintToHighLow(value: bigint): [high: number, low: number];
|
|
596
605
|
|
|
597
|
-
export { BackStepAction, ConfirmResult, DialogType, type HandlerMap, type HandlerMapFns, type JsBackStep, type JsInstruction, type JsInstructionToken, type JsProgramStatement, type JsRiscV, type JsRiscVStackFrame, type MemoryAccessObserver, type MemoryObserverHandle, type MemoryWriteObserver, RISCV, type RISCVAssembleError, type RISCVAssembleResult, RISCVRegisters, RISCV_REGISTERS, type RegisterName, type RiscvTokenizedLine, StopReason, bigintToHighLow, registerHandlers, unimplementedHandler };
|
|
606
|
+
export { BackStepAction, ConfirmResult, DialogType, type HandlerMap, type HandlerMapFns, type JsBackStep, type JsInstruction, type JsInstructionToken, type JsProgramStatement, type JsRiscV, type JsRiscVStackFrame, type MemoryAccessObserver, type MemoryObserverHandle, type MemoryWriteObserver, RISCV, type RISCVAssembleError, type RISCVAssembleResult, RISCVRegisters, type RISCVSourceLocation, type RISCVSourceSet, RISCV_REGISTERS, type RegisterName, type RiscvTokenizedLine, StopReason, bigintToHighLow, makeRiscVFromFiles, registerHandlers, unimplementedHandler };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
type JsInstructionToken = {
|
|
2
|
-
|
|
2
|
+
/** One-based column in the processed source line. */
|
|
3
3
|
sourceColumn: number;
|
|
4
|
-
originalSourceLine: number;
|
|
5
4
|
value: string;
|
|
6
5
|
type: string;
|
|
7
6
|
};
|
|
@@ -178,16 +177,30 @@ type JsInstruction = {
|
|
|
178
177
|
getIsRv64Only: () => boolean;
|
|
179
178
|
};
|
|
180
179
|
type RiscvTokenizedLine = {
|
|
181
|
-
|
|
180
|
+
sourcePath: string;
|
|
181
|
+
/** One-based line in `sourcePath`. */
|
|
182
|
+
sourceLine: number;
|
|
183
|
+
/** Exact line supplied in the source set. */
|
|
184
|
+
source: string;
|
|
185
|
+
/** Line after assembler substitutions such as `.eqv`. */
|
|
186
|
+
processedSource: string;
|
|
182
187
|
tokens: JsInstructionToken[];
|
|
183
188
|
};
|
|
189
|
+
type RISCVSourceLocation = {
|
|
190
|
+
sourcePath: string;
|
|
191
|
+
/** One-based line in `sourcePath`. */
|
|
192
|
+
sourceLine: number;
|
|
193
|
+
};
|
|
194
|
+
type RISCVSourceSet = Readonly<Record<string, string>>;
|
|
184
195
|
type RISCVAssembleError = {
|
|
185
196
|
isWarning: boolean;
|
|
186
197
|
message: string;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
198
|
+
macroExpansionTrace: RISCVSourceLocation[];
|
|
199
|
+
sourcePath: string;
|
|
200
|
+
/** One-based line in `sourcePath`. */
|
|
201
|
+
sourceLine: number;
|
|
202
|
+
/** One-based column in `sourcePath`. Zero only for diagnostics without a source location. */
|
|
203
|
+
sourceColumn: number;
|
|
191
204
|
};
|
|
192
205
|
type RISCVAssembleResult = {
|
|
193
206
|
report: string;
|
|
@@ -198,7 +211,7 @@ type RISCVAssembleResult = {
|
|
|
198
211
|
hasWarnings: boolean;
|
|
199
212
|
};
|
|
200
213
|
declare class RISCV {
|
|
201
|
-
static
|
|
214
|
+
static makeRiscVFromFiles: typeof makeRiscVFromFiles;
|
|
202
215
|
static initializeRISCV: typeof initializeRISCV;
|
|
203
216
|
static getInstructionSet(): JsInstruction[];
|
|
204
217
|
static setIs64Bit(is64Bit: boolean): void;
|
|
@@ -230,9 +243,9 @@ type JsRiscVStackFrame = {
|
|
|
230
243
|
* Represents a statement in the assembled program.
|
|
231
244
|
*/
|
|
232
245
|
interface JsProgramStatement {
|
|
233
|
-
/**
|
|
234
|
-
|
|
235
|
-
|
|
246
|
+
/** Canonical path of the original source file. */
|
|
247
|
+
readonly sourcePath: string;
|
|
248
|
+
/** The one-based line number in the original source file. */
|
|
236
249
|
readonly sourceLine: number;
|
|
237
250
|
/**
|
|
238
251
|
* The memory address of the instruction.
|
|
@@ -382,11 +395,8 @@ interface JsRiscV {
|
|
|
382
395
|
* @param address
|
|
383
396
|
*/
|
|
384
397
|
getStatementAtAddress(address: number): JsProgramStatement;
|
|
385
|
-
/**
|
|
386
|
-
|
|
387
|
-
* @param line
|
|
388
|
-
*/
|
|
389
|
-
getStatementAtSourceLine(line: number): JsProgramStatement;
|
|
398
|
+
/** Gets every machine statement generated from an original source location. */
|
|
399
|
+
getStatementsAtSourceLocation(sourcePath: string, sourceLine: number): JsProgramStatement[];
|
|
390
400
|
getTokenizedLines(): RiscvTokenizedLine[];
|
|
391
401
|
/**
|
|
392
402
|
* Checks if the simulation can be undone.
|
|
@@ -403,7 +413,7 @@ interface JsRiscV {
|
|
|
403
413
|
* @returns An array of `JsProgramStatement` objects representing the compiled program.
|
|
404
414
|
*/
|
|
405
415
|
getCompiledStatements(): JsProgramStatement[];
|
|
406
|
-
getParsedStatements():
|
|
416
|
+
getParsedStatements(): JsProgramStatement[];
|
|
407
417
|
/**
|
|
408
418
|
* Gets the label at the given address.
|
|
409
419
|
* @param address The memory address.
|
|
@@ -560,11 +570,6 @@ interface JsRiscV {
|
|
|
560
570
|
* The number of live registrations, across every `JsRiscV` instance.
|
|
561
571
|
*/
|
|
562
572
|
countMemoryObservers(): number;
|
|
563
|
-
/**
|
|
564
|
-
* Gets the index of the current statement in the assembled program.
|
|
565
|
-
* @returns The index of the current statement.
|
|
566
|
-
*/
|
|
567
|
-
getCurrentStatementIndex(): number;
|
|
568
573
|
/**
|
|
569
574
|
* Gets the next statement to be executed.
|
|
570
575
|
* @returns The next `JsProgramStatement`.
|
|
@@ -583,15 +588,19 @@ interface JsRiscV {
|
|
|
583
588
|
terminated: boolean;
|
|
584
589
|
}
|
|
585
590
|
/**
|
|
586
|
-
* Creates a
|
|
587
|
-
*
|
|
591
|
+
* Creates a RISC-V simulator from a virtual source tree and its entry file.
|
|
592
|
+
*
|
|
593
|
+
* Source paths are canonical, root-relative, case-sensitive POSIX paths. The source set is
|
|
594
|
+
* snapshotted by this call; only the entry file and files reached through `.include` are assembled.
|
|
595
|
+
* @param files Source text keyed by canonical source path.
|
|
596
|
+
* @param entryFile Canonical path of the file from which include expansion starts.
|
|
588
597
|
* @returns A new `JsRiscV` object.
|
|
589
598
|
*/
|
|
590
|
-
declare function
|
|
599
|
+
declare function makeRiscVFromFiles(files: RISCVSourceSet, entryFile: string): JsRiscV;
|
|
591
600
|
/**
|
|
592
601
|
* Initializes the RISCV simulator.
|
|
593
602
|
*/
|
|
594
603
|
declare function initializeRISCV(): void;
|
|
595
604
|
declare function bigintToHighLow(value: bigint): [high: number, low: number];
|
|
596
605
|
|
|
597
|
-
export { BackStepAction, ConfirmResult, DialogType, type HandlerMap, type HandlerMapFns, type JsBackStep, type JsInstruction, type JsInstructionToken, type JsProgramStatement, type JsRiscV, type JsRiscVStackFrame, type MemoryAccessObserver, type MemoryObserverHandle, type MemoryWriteObserver, RISCV, type RISCVAssembleError, type RISCVAssembleResult, RISCVRegisters, RISCV_REGISTERS, type RegisterName, type RiscvTokenizedLine, StopReason, bigintToHighLow, registerHandlers, unimplementedHandler };
|
|
606
|
+
export { BackStepAction, ConfirmResult, DialogType, type HandlerMap, type HandlerMapFns, type JsBackStep, type JsInstruction, type JsInstructionToken, type JsProgramStatement, type JsRiscV, type JsRiscVStackFrame, type MemoryAccessObserver, type MemoryObserverHandle, type MemoryWriteObserver, RISCV, type RISCVAssembleError, type RISCVAssembleResult, RISCVRegisters, type RISCVSourceLocation, type RISCVSourceSet, RISCV_REGISTERS, type RegisterName, type RiscvTokenizedLine, StopReason, bigintToHighLow, makeRiscVFromFiles, registerHandlers, unimplementedHandler };
|