Mercurial > projects > ldc
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 ); |