some changes
This commit is contained in:
parent
ffc77bef9f
commit
415828d694
@ -203,15 +203,42 @@ uint16_t *BinaryInstructionToBin(BinaryInstruction instruction)
|
|||||||
return bin;
|
return bin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int WhereIn2DCharArray(int x, int y, char array[x][y], char *val)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < x; i++)
|
||||||
|
{
|
||||||
|
if (strcmp(array[i], val) == 0)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
uint16_t *CompileAsembly(AsmInstructionArray *assembly, AsmLabelArray *labels)
|
uint16_t *CompileAsembly(AsmInstructionArray *assembly, AsmLabelArray *labels)
|
||||||
{
|
{
|
||||||
uint16_t *ret = malloc(sizeof(uint16_t) * UINT16_MAX);
|
uint16_t *ret = malloc(sizeof(uint16_t) * UINT16_MAX);
|
||||||
uint16_t cSize = 0, mSize = ARRAY_SNAP_SIZE;
|
uint16_t cSize = 0;
|
||||||
|
|
||||||
for (int i = 0; i < assembly->length; i++)
|
for (int i = 0; i < assembly->length; i++)
|
||||||
{
|
{
|
||||||
BinaryInstruction binaryIns;
|
BinaryInstruction binaryIns;
|
||||||
|
|
||||||
|
int instruction = WhereIn2DCharArray(LEN(CpuInstructionsHumanReadable),
|
||||||
|
LEN(CpuInstructionsHumanReadable[0]),
|
||||||
|
CpuInstructionsHumanReadable,
|
||||||
|
assembly->instruction[i].instruction);
|
||||||
|
|
||||||
|
if (instruction < 0)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "INSTRUCTION NOT FOUND\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
binaryIns.instruction = instruction;
|
||||||
|
|
||||||
|
cSize++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret = realloc(ret, cSize);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
#define ARRAY_SNAP_SIZE 32
|
#define ARRAY_SNAP_SIZE 32
|
||||||
|
|
||||||
|
#define LEN(arr) ((int) (sizeof (arr) / sizeof (arr)[0]))
|
||||||
|
|
||||||
char *FindNextChar(char *data, char toFind, bool careAboutNull);
|
char *FindNextChar(char *data, char toFind, bool careAboutNull);
|
||||||
char *FindNextNonSpaceChar(char *data, bool careAboutNull);
|
char *FindNextNonSpaceChar(char *data, bool careAboutNull);
|
||||||
char *FindNextSpaceChar(char *data, bool careAboutNull);
|
char *FindNextSpaceChar(char *data, bool careAboutNull);
|
||||||
|
@ -47,7 +47,6 @@ char CpuInstructionsHumanReadable[25][4] =
|
|||||||
"OUT",
|
"OUT",
|
||||||
"DIN",
|
"DIN",
|
||||||
"DOT",
|
"DOT",
|
||||||
"MOV"
|
"MOV"};
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
#endif
|
Loading…
Reference in New Issue
Block a user