Mercurial > projects > ldc
comparison gen/asm-x86-64.h @ 1093:cb868105a6b5
Change x64 asm in Cache.d from a positive offset from after rbp "-20(%rbp)+4" to before
"4+-20(%rbp)"
author | Kelly Wilson <wilsonk cpsc.ucalgary.ca> |
---|---|
date | Tue, 10 Mar 2009 22:02:11 -0600 |
parents | 20d96c148b39 |
children | d6bd818212de |
comparison
equal
deleted
inserted
replaced
1092:e6fadb6e6bdd | 1093:cb868105a6b5 |
---|---|
2175 { | 2175 { |
2176 mode = Mode_Input; | 2176 mode = Mode_Input; |
2177 } | 2177 } |
2178 | 2178 |
2179 use_star = opTakesLabel();//opInfo->takesLabel(); | 2179 use_star = opTakesLabel();//opInfo->takesLabel(); |
2180 | |
2181 if ( operand->segmentPrefix != Reg_Invalid || operand->constDisplacement ) | |
2182 { | |
2183 insnTemplate->printf ( "%d", operand->constDisplacement ); | |
2184 if ( operand->symbolDisplacement.dim ) | |
2185 insnTemplate->writebyte ( '+' ); | |
2186 //addOperand(fmt, Arg_Integer, newIntExp(operand->constDisplacement), asmcode); | |
2187 if ( opInfo->operands[i] & Opr_Dest ) | |
2188 asmcode->clobbersMemory = 1; | |
2189 } | |
2190 | |
2180 if ( operand->segmentPrefix != Reg_Invalid ) | 2191 if ( operand->segmentPrefix != Reg_Invalid ) |
2181 { | 2192 { |
2182 writeReg ( operand->segmentPrefix ); | 2193 writeReg ( operand->segmentPrefix ); |
2183 insnTemplate->writebyte ( ':' ); | 2194 insnTemplate->writebyte ( ':' ); |
2184 } | 2195 } |
2294 } | 2305 } |
2295 } | 2306 } |
2296 } | 2307 } |
2297 if ( use_star ) | 2308 if ( use_star ) |
2298 insnTemplate->writebyte ( '*' ); | 2309 insnTemplate->writebyte ( '*' ); |
2299 if ( operand->segmentPrefix != Reg_Invalid || operand->constDisplacement ) | |
2300 { | |
2301 if ( operand->symbolDisplacement.dim ) | |
2302 insnTemplate->writebyte ( '+' ); | |
2303 //addOperand(fmt, Arg_Integer, newIntExp(operand->constDisplacement), asmcode); | |
2304 insnTemplate->printf ( "%d", operand->constDisplacement ); | |
2305 if ( opInfo->operands[i] & Opr_Dest ) | |
2306 asmcode->clobbersMemory = 1; | |
2307 } | |
2308 if ( operand->baseReg != Reg_Invalid || operand->indexReg != Reg_Invalid ) | 2310 if ( operand->baseReg != Reg_Invalid || operand->indexReg != Reg_Invalid ) |
2309 { | 2311 { |
2310 insnTemplate->writebyte ( '(' ); | 2312 insnTemplate->writebyte ( '(' ); |
2311 if ( operand->baseReg != Reg_Invalid ) | 2313 if ( operand->baseReg != Reg_Invalid ) |
2312 writeReg ( operand->baseReg ); | 2314 writeReg ( operand->baseReg ); |