comparison gen/asm-x86-64.h @ 1096:25d3aaf9e058

Fix FS:4 miswrite due to earlier changes for a constant displacement
author Kelly Wilson <wilsonk cpsc.ucalgary.ca>
date Wed, 11 Mar 2009 09:16:41 -0600
parents d6bd818212de
children 51543303f768
comparison
equal deleted inserted replaced
1095:d6bd818212de 1096:25d3aaf9e058
2179 2179
2180 use_star = opTakesLabel();//opInfo->takesLabel(); 2180 use_star = opTakesLabel();//opInfo->takesLabel();
2181 2181
2182 if ( operand->segmentPrefix != Reg_Invalid || operand->constDisplacement ) 2182 if ( operand->segmentPrefix != Reg_Invalid || operand->constDisplacement )
2183 { 2183 {
2184 insnTemplate->printf ( "%d", operand->constDisplacement );
2185 if ( operand->symbolDisplacement.dim ) 2184 if ( operand->symbolDisplacement.dim )
2185 {
2186 insnTemplate->printf ( "%d", operand->constDisplacement );
2186 insnTemplate->writebyte ( '+' ); 2187 insnTemplate->writebyte ( '+' );
2188 }
2187 //addOperand(fmt, Arg_Integer, newIntExp(operand->constDisplacement), asmcode); 2189 //addOperand(fmt, Arg_Integer, newIntExp(operand->constDisplacement), asmcode);
2188 if ( opInfo->operands[i] & Opr_Dest ) 2190 if ( opInfo->operands[i] & Opr_Dest )
2189 asmcode->clobbersMemory = 1; 2191 asmcode->clobbersMemory = 1;
2190 } 2192 }
2191 2193
2306 } 2308 }
2307 } 2309 }
2308 } 2310 }
2309 if ( use_star ) 2311 if ( use_star )
2310 insnTemplate->writebyte ( '*' ); 2312 insnTemplate->writebyte ( '*' );
2313 if ( operand->segmentPrefix != Reg_Invalid || !(operand->constDisplacement))
2314 {
2315 insnTemplate->printf ( "%d", operand->constDisplacement );
2316 if ( opInfo->operands[i] & Opr_Dest )
2317 asmcode->clobbersMemory = 1;
2318 }
2311 if ( operand->baseReg != Reg_Invalid || operand->indexReg != Reg_Invalid ) 2319 if ( operand->baseReg != Reg_Invalid || operand->indexReg != Reg_Invalid )
2312 { 2320 {
2313 insnTemplate->writebyte ( '(' ); 2321 insnTemplate->writebyte ( '(' );
2314 if ( operand->baseReg != Reg_Invalid ) 2322 if ( operand->baseReg != Reg_Invalid )
2315 writeReg ( operand->baseReg ); 2323 writeReg ( operand->baseReg );