More tests passed, bug fix for INS REG IMM...

This commit is contained in:
xolatile
2024-07-10 07:39:22 -04:00
parent e7c11c938b
commit 8bb4b2be4f
3 changed files with 41 additions and 37 deletions

View File

@ -130,16 +130,24 @@ static void build_regular (operation_index operation,
(from == REG) && (upper ((form) source)));
// 40>front
place ((size == D8) && (to == REG) && (from == REG)
&& ((front (destination) && lower (source))
|| (lower (destination) && front (source))), (byte) 0X40);
place ((size == D8) && (to == REG) && ((from == REG) || (from == IMM))
&& (((front (destination) && lower (source))
|| (lower (destination) && front (source))) ||
((to == REG) && (from == IMM) && front (destination))),
(byte) 0X40);
build_constant (from == IMM, size);
build_constant ((from == IMM) && (to == REG) && (destination != 0), size);
place (1, (byte) (0X08 * (operation - REGULAR_BEGIN)
place ((from == IMM) && (to == REG) && (destination == 0),
(byte) (0X05
+ 0X08 * (operation & 0X07))
- 0X01 * (size == D8));
place ((from == IMM) && (to == REG) && (destination != 0),
(byte) (0X08 * (operation - REGULAR_BEGIN)
+ (destination & 0X07) * ((to == REG) && (from == IMM))
+ 0X01 * ((to == MEM) && (from == IMM) && (size == D8)) //
- 0X01 * ((to == REG) && (from == IMM)) //
- 0X01 * ((to == REG) && (from == IMM) && (size != D8)) //
+ 0X01 * (size != D8)
+ 0X02 * ((to == REG) && (from == MEM))
+ 0X04 * ((to == MEM) && (from == IMM))
@ -172,7 +180,7 @@ static void build_irregular (operation_index operation,
// 40>front
place ((size == D8) && (to == REG) && front (destination), (byte) 0X40);
place (1, (byte) (0XF8
place (1, (byte) (0XF7
+ 0X08 * ((operation == INC) || (operation == DEC))
- 0X01 * (size == D8)));

View File

@ -37,17 +37,7 @@ int main (void) {
printf ("nop\n");
printf ("nop\n");
for (a = 0; a < (int) (sizeof (fa) / sizeof (* fa)); ++a) {
//~for (w = 0; w < 4; ++w) {
for (d = 0; d < 64; ++d) {
//~for (s = 0; s < 16; ++s) {
printf ("nop\n");
printf ("%s %s, %s\n", fa [a], fr [d], fi [d / 16]);
//~}
}
//~}
}
// INR REG REG
//~for (a = 0; a < (int) (sizeof (faa) / sizeof (* faa)); ++a) {
//~for (w = 0; w < 4; ++w) {
//~for (d = 0; d < 16; ++d) {
@ -57,6 +47,24 @@ int main (void) {
//~}
//~}
// INR REG IMM
for (a = 0; a < (int) (sizeof (fa) / sizeof (* fa)); ++a) {
for (d = 0; d < 64; ++d) {
printf ("nop\n");
printf ("%s %s, %s\n", fa [a], fr [d], fi [d / 16]);
}
}
// INI REG
for (a = 0; a < (int) (sizeof (faa) / sizeof (* faa)); ++a) {
for (w = 0; w < 4; ++w) {
for (d = 0; d < 16; ++d) {
printf ("nop\n");
printf ("%s %s\n", faa [a], fr [d + 16 * w]);
}
}
}
printf ("nop\n");
printf ("nop\n");
printf ("nop\n");

View File

@ -27,30 +27,18 @@ int main (void) {
for (a = 0; a < (int) (sizeof (fa) / sizeof (* fa)); ++a) {
for (w = 0; w < 4; ++w) {
for (d = 0; d < 16; ++d) {
//~for (s = 0; s < 16; ++s) {
printf ("NOP, %s, %s, %s, %s,\n", fa [a], fw [w], fr [d], fi [w]);
//~}
}
}
}
//~for (a = 0; a < (int) (sizeof (faa) / sizeof (* faa)); ++a) {
//~for (w = 0; w < 4; ++w) {
//~for (d = 0; d < 16; ++d) {
//~for (s = 0; s < 16; ++s) {
//~printf ("NOP, %s, %s, %s, %s,\n", faa [a], fw [w], fr [d], fi [s]);
//~}
//~}
//~}
//~}
//~for (a = 0; a < (int) (sizeof (faa) / sizeof (* faa)); ++a) {
//~for (w = 0; w < 4; ++w) {
//~for (d = 0; d < 16; ++d) {
//~printf ("NOP, %s, %s, %s,\n", faa [a], fw [w], fr [d]);
//~}
//~}
//~}
for (a = 0; a < (int) (sizeof (faa) / sizeof (* faa)); ++a) {
for (w = 0; w < 4; ++w) {
for (d = 0; d < 16; ++d) {
printf ("NOP, %s, %s, %s,\n", faa [a], fw [w], fr [d]);
}
}
}
return (0);
}