/* Primary = TOS >> Primary */
{
static char* ops [12] = {
/* Primary = TOS >> Primary */
{
static char* ops [12] = {
- 0, "tosasra0", "tosasrax",
- 0, "tosshra0", "tosshrax",
+ 0, 0, "tosasrax",
+ 0, 0, "tosshrax",
0, 0, "tosasreax",
0, 0, "tosshreax",
};
0, 0, "tosasreax",
0, 0, "tosshreax",
};
/* Primary = TOS << Primary */
{
static char* ops [12] = {
/* Primary = TOS << Primary */
{
static char* ops [12] = {
- 0, "tosasla0", "tosaslax",
- 0, "tosshla0", "tosshlax",
+ 0, 0, "tosaslax",
+ 0, 0, "tosshlax",
0, 0, "tosasleax",
0, 0, "tosshleax",
};
0, 0, "tosasleax",
0, 0, "tosshleax",
};
/* If the right hand side is const, the lhs is not on stack but still
* in the primary register.
*/
/* If the right hand side is const, the lhs is not on stack but still
* in the primary register.
*/
- if (flags & CF_CONST) {
+ if (flags & CF_CONST) {
switch (flags & CF_TYPE) {
switch (flags & CF_TYPE) {
{ "tosaddax", REG_AX, REG_AXY },
{ "tosanda0", REG_A, REG_AXY },
{ "tosandax", REG_AX, REG_AXY },
{ "tosaddax", REG_AX, REG_AXY },
{ "tosanda0", REG_A, REG_AXY },
{ "tosandax", REG_AX, REG_AXY },
+ { "tosaslax", REG_A, REG_AXY | REG_TMP1 },
+ { "tosasleax", REG_A, REG_EAXY | REG_TMP1 },
+ { "tosasrax", REG_A, REG_AXY | REG_TMP1 },
+ { "tosasreax", REG_A, REG_EAXY | REG_TMP1 },
{ "tosdiva0", REG_AY, REG_ALL },
{ "tosdivax", REG_AXY, REG_ALL },
{ "tosdiveax", REG_EAXY, REG_ALL },
{ "tosdiva0", REG_AY, REG_ALL },
{ "tosdivax", REG_AXY, REG_ALL },
{ "tosdiveax", REG_EAXY, REG_ALL },
{ "tosmulax", REG_AX, REG_ALL },
{ "tosmuleax", REG_EAX, REG_ALL },
{ "tosneeax", REG_EAX, REG_AXY | REG_PTR1 },
{ "tosmulax", REG_AX, REG_ALL },
{ "tosmuleax", REG_EAX, REG_ALL },
{ "tosneeax", REG_EAX, REG_AXY | REG_PTR1 },
- { "tosshreax", REG_EAX, REG_EAXY | REG_PTR1 | REG_PTR2 },
+ { "tosshlax", REG_A, REG_AXY | REG_TMP1 },
+ { "tosshleax", REG_A, REG_EAXY | REG_TMP1 },
+ { "tosshrax", REG_A, REG_AXY | REG_TMP1 },
+ { "tosshreax", REG_A, REG_EAXY | REG_TMP1 },
{ "tossuba0", REG_A, REG_AXY },
{ "tossubax", REG_AX, REG_AXY },
{ "tossubeax", REG_EAX, REG_EAXY },
{ "tossuba0", REG_A, REG_AXY },
{ "tossubax", REG_AX, REG_AXY },
{ "tossubeax", REG_EAX, REG_EAXY },