Skip to content

Commit aca1d45

Browse files
Alfred Arnold0cjs
Alfred Arnold
authored andcommitted
asl-current-142-bld174
1 parent e7cdfef commit aca1d45

File tree

139 files changed

+5968
-2574
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

139 files changed

+5968
-2574
lines changed

Makefile.def-samples/Makefile.def-i686-w32-on-linux

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
OBJDIR =
66
CC = gcc
7-
CFLAGS = -g -O3 -fomit-frame-pointer -Wall -Wextra -Werror
8-
#CFLAGS = -g -O3 -fomit-frame-pointer -Wall -Wextra -Werror -ansi -std=c89 -pedantic
7+
CFLAGS = -g -O3 -fomit-frame-pointer -Wall -Wextra -Werror -Wstrict-prototypes
8+
#CFLAGS = -g -O3 -fomit-frame-pointer -Wall -Wextra -Werror -Wstrict-prototypes -ansi -std=c89 -pedantic
99
HOST_OBJEXTENSION = .o
1010
LD = $(CC)
1111
LDFLAGS =

Makefile.def-samples/Makefile.def-x86_64-w32_w64-on-linux

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
OBJDIR =
88
CC = gcc
9-
CFLAGS = -g -O3 -fomit-frame-pointer -Wall -Wextra -Werror
9+
CFLAGS = -g -O3 -fomit-frame-pointer -Wall -Wextra -Werror -Wstrict-prototypes
1010
#CFLAGS = $(CFLAGS) -ansi -std=c89 -pedantic
1111
HOST_OBJEXTENSION = .o
1212
LDFLAGS =

as.c

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2421,10 +2421,10 @@ static void SplitLine(void)
24212421

24222422
/* Non-blank character in first column is always label: */
24232423

2424-
if ((pRun < pEnd) && (*pRun) && (!myisspace(*pRun)))
2424+
if ((pRun < pEnd) && (*pRun) && (!as_isspace(*pRun)))
24252425
{
24262426
for (pPos = pRun; pPos < pEnd; pPos++)
2427-
if ((myisspace(*pPos)) || (*pPos == ':'))
2427+
if ((as_isspace(*pPos)) || (*pPos == ':'))
24282428
break;
24292429
LabPart.Pos.StartCol = pRun - OneLine;
24302430
if (pPos >= pEnd)
@@ -2447,8 +2447,8 @@ static void SplitLine(void)
24472447

24482448
while (True)
24492449
{
2450-
for (; (pRun < pEnd) && myisspace(*pRun); pRun++);
2451-
for (pPos = pRun; (pPos < pEnd) && !myisspace(*pPos); pPos++);
2450+
for (; (pRun < pEnd) && as_isspace(*pRun); pRun++);
2451+
for (pPos = pRun; (pPos < pEnd) && !as_isspace(*pPos); pPos++);
24522452

24532453
/* If potential OpPart starts with argument divider,
24542454
OpPart is empty and rest of line is all-arguments: */
@@ -2550,7 +2550,7 @@ static void SplitLine(void)
25502550

25512551
while ((pRun < pEnd) || pActDivPos)
25522552
{
2553-
while (*pRun && myisspace(*pRun))
2553+
while (*pRun && as_isspace(*pRun))
25542554
pRun++;
25552555
pDivPos = pEnd;
25562556
for (pActDiv = DivideChars; *pActDiv; pActDiv++)
@@ -2609,7 +2609,7 @@ static void ProcessFile(String FileName)
26092609
NextIncDepth = IncDepth;
26102610

26112611
for (Run = OneLine; *Run != '\0'; Run++)
2612-
if (!isspace(((unsigned int) * Run) & 0xff))
2612+
if (!as_isspace(*Run))
26132613
break;
26142614
if (*Run == '#')
26152615
Preprocess();
@@ -2856,7 +2856,6 @@ static void AssembleFile_ExitPass(void)
28562856
pPhaseStacks[z] = pSavePhase->pNext;
28572857
free(pSavePhase);
28582858
}
2859-
TossRegDefs(-1);
28602859
if (FirstIfSave)
28612860
WrError(ErrNum_MissEndif);
28622861
if (FirstSaveState)
@@ -3093,7 +3092,6 @@ static void AssembleFile(char *Name)
30933092
CloseIfOpen(&LstFile);
30943093
if (CodeOutput)
30953094
unlink(OutName);
3096-
CleanupRegDefs();
30973095
ClearCodepages();
30983096
if (MakeUseList)
30993097
ClearUseList();
@@ -3277,7 +3275,6 @@ static void AssembleFile(char *Name)
32773275
/* Speicher freigeben */
32783276

32793277
ClearSymbolList();
3280-
ClearRegDefs();
32813278
ClearCodepages();
32823279
ClearMacroList();
32833280
ClearFunctionList();
@@ -4209,7 +4206,7 @@ int main(int argc, char **argv)
42094206
case NoRedir:
42104207
Env = getenv("USEANSI");
42114208
strmaxcpy(Dummy, Env ? Env : "Y", STRINGSIZE);
4212-
if (mytoupper(Dummy[0]) == 'N')
4209+
if (as_toupper(Dummy[0]) == 'N')
42134210
{
42144211
}
42154212
else

as.res

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,22 @@ Message ErrMsgExpectInt
285285
"Ganzzahl erwartet"
286286
"expected integer"
287287

288+
Message ErrMsgStringOrIntOrFloatButReg
289+
"Ganz-, Gleitkommazahl oder String erwartet, aber Register bekommen"
290+
"expected integer, floating point number or string but got register"
291+
292+
Message ErrMsgExpectIntOrString
293+
"Ganzzahl oder String erwartet"
294+
"expected integer or string"
295+
296+
Message ErrMsgExpectReg
297+
"Register erwartet"
298+
"expected register"
299+
300+
Message ErrMsgRegWrongTarget
301+
"Registersymbol f&uuml;r anderes Ziel"
302+
"register symbol for different target"
303+
288304
Message ErrMsgUnknownInstruction
289305
"unbekannter Befehl"
290306
"unknown instruction"
@@ -980,7 +996,7 @@ Message HeadingPageLab
980996
; Strings in Listing
981997

982998
Message ListSymListHead1
983-
" Symboltabelle (*=unbenutzt):"
999+
" Symboltabelle (* = unbenutzt):"
9841000
" Symbol Table (* = unused):"
9851001

9861002
Message ListSymListHead2
@@ -1004,12 +1020,12 @@ Message ListUSymSumsMsg
10041020
" unused symbols"
10051021

10061022
Message ListRegDefListHead1
1007-
" Registerdefinitionen (*=unbenutzt):"
1008-
" Register Definitions (*=unused):"
1023+
" Registerdefinitionen (* = unbenutzt):"
1024+
" Register Definitions (* = unused):"
10091025

10101026
Message ListRegDefListHead2
10111027
" -----------------------------------"
1012-
" --------------------------------"
1028+
" ----------------------------------"
10131029

10141030
Message ListRegDefSumMsg
10151031
" Definition"

asmallg.c

Lines changed: 78 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ static void SetCPUCore(const tCPUDef *pCPUDef, const tStrComp *pCPUArgs)
132132
strmaxcpy(TmpCompStr, MomCPUIdentName, sizeof(TmpCompStr)); EnterStringSymbol(&TmpComp, MomCPUIdent, True);
133133

134134
InternSymbol = Default_InternSymbol;
135+
DissectBit = Default_DissectBit;
136+
DissectReg = NULL;
135137
SetIsOccupiedFnc = NULL;
136138
DecodeAttrPart = NULL;
137139
SwitchIsOccupied = PageIsOccupied = False;
@@ -280,7 +282,6 @@ static void CodeENDSECTION(Word Index)
280282
CodeENDSECTION_ChkEmptList(&(Tmp->LocSyms));
281283
CodeENDSECTION_ChkEmptList(&(Tmp->GlobSyms));
282284
CodeENDSECTION_ChkEmptList(&(Tmp->ExportSyms));
283-
TossRegDefs(MomSectionHandle);
284285
if (ArgCnt == 0)
285286
as_snprintf(ListLine, STRINGSIZE, "[%s]", GetSectionName(MomSectionHandle));
286287
SetMomSection(Tmp->Handle);
@@ -354,6 +355,9 @@ static void CodeSETEQU(Word MayChange)
354355
case TempString:
355356
EnterDynStringSymbolWithFlags(pName, &t.Contents.Ascii, MayChange, t.Flags);
356357
break;
358+
case TempReg:
359+
EnterRegSymbol(pName, &t.Contents.RegDescr, t.DataSize, MayChange, False);
360+
break;
357361
default:
358362
break;
359363
}
@@ -363,6 +367,78 @@ static void CodeSETEQU(Word MayChange)
363367
}
364368
}
365369

370+
static void CodeREGCore(const tStrComp *pNameArg, const tStrComp *pValueArg)
371+
{
372+
if (InternSymbol)
373+
{
374+
TempResult t;
375+
376+
t.Typ = TempNone;
377+
InternSymbol(pValueArg->Str, &t);
378+
switch (t.Typ)
379+
{
380+
case TempReg:
381+
goto Set;
382+
case TempNone:
383+
{
384+
tEvalResult EvalResult;
385+
tErrorNum ErrorNum;
386+
387+
ErrorNum = EvalStrRegExpressionWithResult(pValueArg, &t.Contents.RegDescr, &EvalResult);
388+
389+
switch (ErrorNum)
390+
{
391+
case ErrNum_SymbolUndef:
392+
/* ignore undefined symbols in first pass */
393+
if (PassNo <= MaxSymPass)
394+
{
395+
Repass = True;
396+
return;
397+
}
398+
break;
399+
case ErrNum_RegWrongTarget:
400+
/* REG is architecture-agnostic */
401+
EvalResult.OK = True;
402+
break;
403+
default:
404+
break;
405+
}
406+
407+
if (EvalResult.OK)
408+
{
409+
t.DataSize = EvalResult.DataSize;
410+
goto Set;
411+
}
412+
else
413+
WrStrErrorPos(ErrorNum, pValueArg);
414+
415+
break;
416+
}
417+
Set:
418+
EnterRegSymbol(pNameArg, &t.Contents.RegDescr, t.DataSize, False, True);
419+
break;
420+
default:
421+
WrStrErrorPos(ErrNum_ExpectReg, pValueArg);
422+
return;
423+
}
424+
}
425+
}
426+
427+
void CodeREG(Word Index)
428+
{
429+
UNUSED(Index);
430+
431+
if (ChkArgCnt(1, 1))
432+
CodeREGCore(&LabPart, &ArgStr[1]);
433+
}
434+
435+
void CodeNAMEREG(Word Index)
436+
{
437+
UNUSED(Index);
438+
439+
if (ChkArgCnt(2, 2))
440+
CodeREGCore(&ArgStr[2], &ArgStr[1]);
441+
}
366442

367443
static void CodeORG(Word Index)
368444
{
@@ -1862,7 +1938,7 @@ static void CodeSEGTYPE(Word Index)
18621938
UNUSED(Index);
18631939

18641940
if (ChkArgCnt(0, 0))
1865-
RelSegs = (mytoupper(*OpPart.Str) == 'R');
1941+
RelSegs = (as_toupper(*OpPart.Str) == 'R');
18661942
}
18671943

18681944
static void CodePPSyms(PForwardSymbol *Orig,

asmallg.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ extern void ClearONOFF(void);
2424

2525
extern Boolean CodeGlobalPseudo(void);
2626

27+
extern void CodeREG(Word Index);
28+
extern void CodeNAMEREG(Word Index);
29+
2730
extern void INCLUDE_SearchCore(struct sStrComp *pDest, const struct sStrComp *pArg, Boolean SearchPath);
2831

2932
extern void codeallg_init(void);

asmdef.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ void (*SwitchFrom)();
141141
void (*InternSymbol)();
142142
#endif
143143
DissectBitProc DissectBit;
144+
DissectRegProc DissectReg;
144145

145146
StringPtr IncludeList; /* Suchpfade fuer Includedateien */
146147
Integer IncDepth, NextIncDepth; /* Verschachtelungstiefe INCLUDEs */
@@ -323,6 +324,7 @@ void asmdef_init(void)
323324
SwitchFrom = NullProc;
324325
InternSymbol = Default_InternSymbol;
325326
DissectBit = Default_DissectBit;
327+
DissectReg = NULL;
326328

327329
SetMaxCodeLen(MaxCodeLen_Ini);
328330

asmdef.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ typedef struct
3535
char *Contents;
3636
unsigned Length;
3737
} String;
38+
tRegDescr RegDescr;
3839
} Contents;
3940
} SymbolVal;
4041

@@ -332,6 +333,7 @@ extern Boolean (*IsDef)(void);
332333
extern void (*SwitchFrom)(void);
333334
extern void (*InternSymbol)(char *Asc, TempResult *Erg);
334335
extern DissectBitProc DissectBit;
336+
extern DissectRegProc DissectReg;
335337

336338
extern StringPtr IncludeList;
337339
extern Integer IncDepth,NextIncDepth;

asmerr.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,14 @@ static const char *ErrorNum2String(tErrorNum Num, char *Buf, int BufSize)
292292
msgno = Num_ErrMsgExpectString; break;
293293
case ErrNum_ExpectInt:
294294
msgno = Num_ErrMsgExpectInt; break;
295+
case ErrNum_StringOrIntOrFloatButReg:
296+
msgno = Num_ErrMsgStringOrIntOrFloatButReg; break;
297+
case ErrNum_ExpectIntOrString:
298+
msgno = Num_ErrMsgExpectIntOrString; break;
299+
case ErrNum_ExpectReg:
300+
msgno = Num_ErrMsgExpectReg; break;
301+
case ErrNum_RegWrongTarget:
302+
msgno = Num_ErrMsgRegWrongTarget; break;
295303
case ErrNum_NoRelocs:
296304
msgno = Num_ErrMsgNoRelocs; break;
297305
case ErrNum_UnresRelocs:

asmif.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ Boolean CodeIFs(void)
388388

389389
ActiveIF = False;
390390

391-
switch (mytoupper(*OpPart.Str))
391+
switch (as_toupper(*OpPart.Str))
392392
{
393393
case 'I':
394394
if (Memo("IF")) CodeIF();

asmmac.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ static Boolean ExpandDefines_NErl(char inp)
201201
return (((inp >= '0') && (inp <= '9')) || ((inp >= 'A') && (inp <= 'Z')) || ((inp >= 'a') && (inp <= 'z')));
202202
}
203203

204-
#define t_toupper(ch) ((CaseSensitive) ? (ch) : (mytoupper(ch)))
204+
#define t_toupper(ch) ((CaseSensitive) ? (ch) : (as_toupper(ch)))
205205

206206
void ExpandDefines(char *Line)
207207
{

0 commit comments

Comments
 (0)