Currently job artifacts in CI/CD pipelines on LRZ GitLab never expire. Starting from Wed 26.1.2022 the default expiration time will be 30 days (GitLab default). Currently existing artifacts in already completed jobs will not be affected by the change. The latest artifacts for all jobs in the latest successful pipelines will be kept. More information: https://gitlab.lrz.de/help/user/admin_area/settings/continuous_integration.html#default-artifacts-expiration

Commit a806d7c6 authored by Martin Ruckert's avatar Martin Ruckert
Browse files

first running version of mmixvd

parent 004164e0
...@@ -101,9 +101,9 @@ extern int mmix_fputc(int c, FILE *f); ...@@ -101,9 +101,9 @@ extern int mmix_fputc(int c, FILE *f);
/* MMIXAL has its own notion of file numbers as embedded in the mmo file /* MMIXAL has its own notion of file numbers as embedded in the mmo file
we might want to convert this to a global file number */ we might want to convert this to a global file number */
#define MMIX_FILE_NO(file_no) (file_no) #define MMIX_FILE_NO(file_no) filename2file(filename[file_no], file_no)
/* define this to record file line and location associations while assembling */ /* define this to record file line and location associations while assembling */
#define MMIXAL_LINE_LOC(file_no,line_no,cur_loc) #define MMIXAL_LINE_LOC(file_no,line_no,cur_loc) add_line_loc(file_no,line_no,cur_loc)
#endif #endif
...@@ -79,3 +79,4 @@ extern FILE*dump_file; ...@@ -79,3 +79,4 @@ extern FILE*dump_file;
extern char*usage_help[]; extern char*usage_help[];
extern char*interactive_help[]; extern char*interactive_help[];
extern jmp_buf mmix_exit; extern jmp_buf mmix_exit;
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#ifndef LIBMMIXAL_H #ifndef LIBMMIXAL_H
#define LIBMMIXAL_H #define LIBMMIXAL_H
#include "mmixlib.h"
/* types and definitions from mmixal */ /* types and definitions from mmixal */
typedef struct sym_tab_struct{ typedef struct sym_tab_struct{
...@@ -51,11 +51,8 @@ short code; ...@@ -51,11 +51,8 @@ short code;
int bits; int bits;
}op_spec; }op_spec;
typedef enum{
SET= 0x100,IS,LOC,PREFIX,BSPEC,ESPEC,GREG,LOCAL,
BYTE,WYDE,TETRA,OCTA}pseudo_op;
//extern trie_node *trie_root; extern trie_node *trie_root;
//extern sym_node*sym_avail; //extern sym_node*sym_avail;
#define DEFINED (sym_node*)1 /* link value for octabyte equivalents */ #define DEFINED (sym_node*)1 /* link value for octabyte equivalents */
#define REGISTER (sym_node*) 2 /* link value for register equivalents */ #define REGISTER (sym_node*) 2 /* link value for register equivalents */
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#include <setjmp.h> #include <setjmp.h>
#include "libname.h" #include "libname.h"
extern jmp_buf mmix_exit;
/* simple implementation of the identity mapping */ /* simple implementation of the identity mapping */
......
...@@ -14,7 +14,8 @@ the subroutine. ...@@ -14,7 +14,8 @@ the subroutine.
@<Preprocessor definitions@>= @<Preprocessor definitions@>=
@y @y
@<Sub...@>= @<Sub...@>=
#include "mmixlib.h" extern void add_line_loc(int file_no, int line_no, octa loc);
@ @<Global...@>= @ @<Global...@>=
#include <setjmp.h> #include <setjmp.h>
...@@ -307,6 +308,7 @@ int main(argc,argv) ...@@ -307,6 +308,7 @@ int main(argc,argv)
#include <time.h> #include <time.h>
#include <setjmp.h> #include <setjmp.h>
#include "libconfig.h" #include "libconfig.h"
#include "libimport.h"
@# @#
@h @h
@<Preprocessor definitions@>@; @<Preprocessor definitions@>@;
......
...@@ -6,6 +6,7 @@ Types and preprocessor macros go into libtype.h ...@@ -6,6 +6,7 @@ Types and preprocessor macros go into libtype.h
@y @y
@ @(libtype.h@>= @ @(libtype.h@>=
@h @h
#define _LIBTYPE_H_
@<Preprocessor macros@>@; @<Preprocessor macros@>@;
@<Type declarations@>@; @<Type declarations@>@;
...@@ -2470,6 +2471,18 @@ void catchint(n) ...@@ -2470,6 +2471,18 @@ void catchint(n)
MMIX_GET_INTERRUPT MMIX_GET_INTERRUPT
@z @z
@x
case '-': k=strlen(p);@+if (p[k-1]=='\n') p[k-1]='\0';
@y
case '-': k=(int)strlen(p);@+if (p[k-1]=='\n') p[k-1]='\0';
@z
@x
default: what_say: k=strlen(command_buf);
@y
default: what_say: k=(int)strlen(command_buf);
@z
@x @x
@ @d command_buf_size 1024 /* make it plenty long, for floating point tests */ @ @d command_buf_size 1024 /* make it plenty long, for floating point tests */
......
/* auxiliar functions provided by the library but without a prototype here*/ #ifndef _MMIXLIB_H_
#define _MMIXLIB_H_
#include <stdio.h>
/* auxiliar functions provided by the library but without a prototype here*/
#if 0 #if 0
extern void free_tree(trie_node *root); extern void free_tree(trie_node *root);
#endif #endif
#ifndef _MMIXAL_ #ifndef _LIBTYPE_H_
extern void free_file_info(void);
/* reset the file_info and ybyte2file_no information */ typedef enum{false,true}bool;
extern mem_tetra* mem_find(octa addr); typedef unsigned int tetra;
extern mem_node* new_mem(void); typedef struct{tetra h,l;} octa;
typedef char Char;
typedef enum{
rB,rD,rE,rH,rJ,rM,rR,rBB,
rC,rN,rO,rS,rI,rT,rTT,rK,rQ,rU,rV,rG,rL,
rA,rF,rP,rW,rX,rY,rZ,rWW,rXX,rYY,rZZ}special_reg;
typedef enum{
TRAP,FCMP,FUN,FEQL,FADD,FIX,FSUB,FIXU,
FLOT,FLOTI,FLOTU,FLOTUI,SFLOT,SFLOTI,SFLOTU,SFLOTUI,
FMUL,FCMPE,FUNE,FEQLE,FDIV,FSQRT,FREM,FINT,
MUL,MULI,MULU,MULUI,DIV,DIVI,DIVU,DIVUI,
ADD,ADDI,ADDU,ADDUI,SUB,SUBI,SUBU,SUBUI,
IIADDU,IIADDUI,IVADDU,IVADDUI,VIIIADDU,VIIIADDUI,XVIADDU,XVIADDUI,
CMP,CMPI,CMPU,CMPUI,NEG,NEGI,NEGU,NEGUI,
SL,SLI,SLU,SLUI,SR,SRI,SRU,SRUI,
BN,BNB,BZ,BZB,BP,BPB,BOD,BODB,
BNN,BNNB,BNZ,BNZB,BNP,BNPB,BEV,BEVB,
PBN,PBNB,PBZ,PBZB,PBP,PBPB,PBOD,PBODB,
PBNN,PBNNB,PBNZ,PBNZB,PBNP,PBNPB,PBEV,PBEVB,
CSN,CSNI,CSZ,CSZI,CSP,CSPI,CSOD,CSODI,
CSNN,CSNNI,CSNZ,CSNZI,CSNP,CSNPI,CSEV,CSEVI,
ZSN,ZSNI,ZSZ,ZSZI,ZSP,ZSPI,ZSOD,ZSODI,
ZSNN,ZSNNI,ZSNZ,ZSNZI,ZSNP,ZSNPI,ZSEV,ZSEVI,
LDB,LDBI,LDBU,LDBUI,LDW,LDWI,LDWU,LDWUI,
LDT,LDTI,LDTU,LDTUI,LDO,LDOI,LDOU,LDOUI,
LDSF,LDSFI,LDHT,LDHTI,CSWAP,CSWAPI,LDUNC,LDUNCI,
LDVTS,LDVTSI,PRELD,PRELDI,PREGO,PREGOI,GO,GOI,
STB,STBI,STBU,STBUI,STW,STWI,STWU,STWUI,
STT,STTI,STTU,STTUI,STO,STOI,STOU,STOUI,
STSF,STSFI,STHT,STHTI,STCO,STCOI,STUNC,STUNCI,
SYNCD,SYNCDI,PREST,PRESTI,SYNCID,SYNCIDI,PUSHGO,PUSHGOI,
OR,ORI,ORN,ORNI,NOR,NORI,XOR,XORI,
AND,ANDI,ANDN,ANDNI,NAND,NANDI,NXOR,NXORI,
BDIF,BDIFI,WDIF,WDIFI,TDIF,TDIFI,ODIF,ODIFI,
MUX,MUXI,SADD,SADDI,MOR,MORI,MXOR,MXORI,
SETH,SETMH,SETML,SETL,INCH,INCMH,INCML,INCL,
ORH,ORMH,ORML,ORL,ANDNH,ANDNMH,ANDNML,ANDNL,
JMP,JMPB,PUSHJ,PUSHJB,GETA,GETAB,PUT,PUTI,
POP,RESUME,SAVE,UNSAVE,SYNC,SWYM,GET,TRIP}mmix_opcode;
#define trace_bit (1<<3)
#define read_bit (1<<2)
#define write_bit (1<<1)
#define exec_bit (1<<0) \
#define RESUME_AGAIN 0
#define RESUME_CONT 1
#define RESUME_SET 2
#define RESUME_TRANS 3
#define P_BIT (1<<0)
#define S_BIT (1<<1)
#define B_BIT (1<<2)
#define K_BIT (1<<3)
#define N_BIT (1<<4)
#define PX_BIT (1<<5)
#define PW_BIT (1<<6)
#define PR_BIT (1<<7)
#define PF_BIT (1<<0)
#define MP_BIT (1<<1)
#define NM_BIT (1<<2)
#define YY_BIT (1<<3)
#define RE_BIT (1<<4)
#define CP_BIT (1<<5)
#define PT_BIT (1<<6)
#define IN_BIT (1<<7)
typedef struct{
#ifndef VMB
tetra tet;
#endif
tetra freq;
unsigned char bkpt;
unsigned char file_no;
unsigned short line_no;
} mem_tetra;
typedef struct mem_node_struct{
octa loc;
tetra stamp;
struct mem_node_struct*left,*right;
mem_tetra dat[512];
} mem_node;
#endif
extern bool show_operating_system;
extern unsigned int tracing_exceptions;
extern int G,L,O;
extern octa g[256];
extern octa*l;
extern int lring_size;
extern int lring_mask;
extern int S;
char*special_name[32];
extern void mmputchars(unsigned char *buf,int size,octa addr); extern void mmputchars(unsigned char *buf,int size,octa addr);
extern int mmgetchars(unsigned char *buf, int size, octa addr, int stop); extern int mmgetchars(unsigned char *buf, int size, octa addr, int stop);
extern void show_line(void);
extern void show_stats(bool verbose);
extern mem_tetra* mem_find(octa addr);
extern mem_node*mem_root;
extern mem_node* new_mem(void);
extern octa incr(octa y,int delta);
extern void free_file_info(void);
extern void scan_option(char *arg, /* command-line argument (without the `\.-') */ extern void scan_option(char *arg, /* command-line argument (without the `\.-') */
bool usage); /* should we exit with usage note if unrecognized? */ bool usage); /* should we exit with usage note if unrecognized? */
extern void print_hex(octa o); extern void print_hex(octa o);
extern void print_int(octa o); extern void print_int(octa o);
extern void print_string(octa o); extern void print_string(octa o);
extern void show_line(void);
extern void show_breaks(mem_node *p); extern void show_breaks(mem_node *p);
#endif
...@@ -57,6 +176,8 @@ extern void mmix_dynamic_trap(void); ...@@ -57,6 +176,8 @@ extern void mmix_dynamic_trap(void);
/* check for dynamic traps */ /* check for dynamic traps */
extern void mmix_profile(void); extern void mmix_profile(void);
/* print the profile */ /* print the profile */
extern void show_stats(bool verbose);
/* show statistics */
extern int mmix_printf(char *format,...); extern int mmix_printf(char *format,...);
/* printf replacement */ /* printf replacement */
...@@ -64,11 +185,30 @@ extern int mmix_fputc(int c, FILE *f); ...@@ -64,11 +185,30 @@ extern int mmix_fputc(int c, FILE *f);
/* fputc replacement */ /* fputc replacement */
void mmix_stack_trace(char *format,...); void mmix_stack_trace(char *format,...);
/* function to do the stack trace */ /* function to do the stack trace */
extern bool halted;
extern bool breakpoint;
extern bool interrupt;
extern bool interacting;
extern octa rOlimit;
extern bool line_listed; /* have we listed the buffer contents? */
extern octa neg_one;
extern bool tracing;
extern bool stack_tracing;
extern octa loc;
extern octa inst_ptr;
extern tetra inst;
extern bool rw_break;
extern bool show_operating_system;
extern bool trace_once;
extern bool resuming;
extern mmix_opcode op;
extern bool profiling;
extern bool showing_stats;
#if 0 #if 0
extern int cur_file; /* index of the current file in |filename| */ extern int cur_file; /* index of the current file in |filename| */
extern int line_no; /* current position in the file */ extern int line_no; /* current position in the file */
extern bool line_listed; /* have we listed the buffer contents? */
extern int err_count; /* this many errors were found */ extern int err_count; /* this many errors were found */
...@@ -120,5 +260,5 @@ extern int expanding; /* are we expanding instructions when base address fail? * ...@@ -120,5 +260,5 @@ extern int expanding; /* are we expanding instructions when base address fail? *
extern int buf_size; /* maximum number of characters per line of input */ extern int buf_size; /* maximum number of characters per line of input */
extern int mmixal(char *mms_name, char *mmo_name, char *mml_name, int x_option, int b_option); extern int mmixal(char *mms_name, char *mmo_name, char *mml_name, int x_option, int b_option);
extern int err_count; /* the error count */ extern int err_count; /* the error count */
extern bool line_listed;
extern void flush_listing_line(char*line); extern void flush_listing_line(char*line);
#endif
\ No newline at end of file
...@@ -666,26 +666,6 @@ ...@@ -666,26 +666,6 @@
RelativePath=".\mmix-io.c" RelativePath=".\mmix-io.c"
> >
</File> </File>
<File
RelativePath=".\mmix-vmb.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="C:\home\vmb\src\util;C:\home\vmb\src\vmbmmixlib"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="C:\home\vmb\src\util;C:\home\vmb\src\vmbmmixlib"
/>
</FileConfiguration>
</File>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
...@@ -696,10 +676,22 @@ ...@@ -696,10 +676,22 @@
RelativePath=".\vmb\address.h" RelativePath=".\vmb\address.h"
> >
</File> </File>
<File
RelativePath=".\libconfig.h"
>
</File>
<File
RelativePath=".\libglobals.h"
>
</File>
<File <File
RelativePath=".\libimport.h" RelativePath=".\libimport.h"
> >
</File> </File>
<File
RelativePath=".\libtype.h"
>
</File>
<File <File
RelativePath=".\mmixlib.h" RelativePath=".\mmixlib.h"
> >
...@@ -727,7 +719,7 @@ ...@@ -727,7 +719,7 @@
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="ctangle mmix-arith with arith-win changefile" Description="ctangle mmix-arith with arith-win changefile"
CommandLine="ctangle mmixware\mmix-arith.w arith-win.ch" CommandLine="ctangle mmixware\mmix-arith.w arith-win.ch&#x0D;&#x0A;"
Outputs="mmix-arith.c" Outputs="mmix-arith.c"
/> />
</FileConfiguration> </FileConfiguration>
...@@ -737,7 +729,7 @@ ...@@ -737,7 +729,7 @@
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="ctangle mmix-arith with arith-win changefile" Description="ctangle mmix-arith with arith-win changefile"
CommandLine="ctangle mmixware\mmix-arith.w arith-win.ch" CommandLine="ctangle mmixware\mmix-arith.w arith-win.ch&#x0D;&#x0A;"
Outputs="mmix-arith.c" Outputs="mmix-arith.c"
/> />
</FileConfiguration> </FileConfiguration>
...@@ -751,7 +743,7 @@ ...@@ -751,7 +743,7 @@
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="ctangle mmix-io with io-win.ch" Description="ctangle mmix-io with io-win.ch"
CommandLine="ctangle mmixware\mmix-io.w io-win.ch" CommandLine="ctangle mmixware\mmix-io.w io-win.ch&#x0D;&#x0A;"
Outputs="mmix-io.c" Outputs="mmix-io.c"
/> />
</FileConfiguration> </FileConfiguration>
...@@ -761,7 +753,7 @@ ...@@ -761,7 +753,7 @@
<Tool <Tool
Name="VCCustomBuildTool" Name="VCCustomBuildTool"
Description="ctangle mmix-io with io-win.ch" Description="ctangle mmix-io with io-win.ch"
CommandLine="ctangle mmixware\mmix-io.w io-win.ch" CommandLine="ctangle mmixware\mmix-io.w io-win.ch&#x0D;&#x0A;"
Outputs="mmix-io.c" Outputs="mmix-io.c"
/> />
</FileConfiguration> </FileConfiguration>
...@@ -822,6 +814,10 @@ ...@@ -822,6 +814,10 @@
RelativePath=".\mmixallib.ch" RelativePath=".\mmixallib.ch"
> >
</File> </File>
<File
RelativePath=".\mmixlib.ch"
>
</File>
</Filter> </Filter>
</Files> </Files>
<Globals> <Globals>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment