comparison graal/com.oracle.max.asm/src/com/oracle/max/asm/target/amd64/AMD64Assembler.java @ 5552:69a8969dbf40

Reduce public fields in api.code project.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Sat, 09 Jun 2012 21:50:02 +0200
parents b6617d13ea44
children 4d7175cf3526
comparison
equal deleted inserted replaced
5551:883c11613de5 5552:69a8969dbf40
191 emitByte(op1); 191 emitByte(op1);
192 emitByte(op2 | encode(dst) << 3 | encode(src)); 192 emitByte(op2 | encode(dst) << 3 | encode(src));
193 } 193 }
194 194
195 private void emitOperandHelper(Register reg, Address addr) { 195 private void emitOperandHelper(Register reg, Address addr) {
196 Register base = isLegal(addr.base) ? asRegister(addr.base) : Register.None; 196 Register base = isLegal(addr.getBase()) ? asRegister(addr.getBase()) : Register.None;
197 Register index = isLegal(addr.index) ? asRegister(addr.index) : Register.None; 197 Register index = isLegal(addr.getIndex()) ? asRegister(addr.getIndex()) : Register.None;
198 198
199 Address.Scale scale = addr.scale; 199 Address.Scale scale = addr.getScale();
200 int disp = addr.displacement; 200 int disp = addr.getDisplacement();
201 201
202 if (base == Register.Frame) { 202 if (base == Register.Frame) {
203 assert frameRegister != null : "cannot use register " + Register.Frame + " in assembler with null register configuration"; 203 assert frameRegister != null : "cannot use register " + Register.Frame + " in assembler with null register configuration";
204 base = frameRegister; 204 base = frameRegister;
205 // } else if (base == CiRegister.CallerFrame) { 205 // } else if (base == CiRegister.CallerFrame) {
2221 return isRegister(value) && asRegister(value).encoding >= MinEncodingNeedsRex; 2221 return isRegister(value) && asRegister(value).encoding >= MinEncodingNeedsRex;
2222 } 2222 }
2223 2223
2224 2224
2225 private void prefix(Address adr) { 2225 private void prefix(Address adr) {
2226 if (needsRex(adr.base)) { 2226 if (needsRex(adr.getBase())) {
2227 if (needsRex(adr.index)) { 2227 if (needsRex(adr.getIndex())) {
2228 emitByte(Prefix.REXXB); 2228 emitByte(Prefix.REXXB);
2229 } else { 2229 } else {
2230 emitByte(Prefix.REXB); 2230 emitByte(Prefix.REXB);
2231 } 2231 }
2232 } else { 2232 } else {
2233 if (needsRex(adr.index)) { 2233 if (needsRex(adr.getIndex())) {
2234 emitByte(Prefix.REXX); 2234 emitByte(Prefix.REXX);
2235 } 2235 }
2236 } 2236 }
2237 } 2237 }
2238 2238
2239 private void prefixq(Address adr) { 2239 private void prefixq(Address adr) {
2240 if (needsRex(adr.base)) { 2240 if (needsRex(adr.getBase())) {
2241 if (needsRex(adr.index)) { 2241 if (needsRex(adr.getIndex())) {
2242 emitByte(Prefix.REXWXB); 2242 emitByte(Prefix.REXWXB);
2243 } else { 2243 } else {
2244 emitByte(Prefix.REXWB); 2244 emitByte(Prefix.REXWB);
2245 } 2245 }
2246 } else { 2246 } else {
2247 if (needsRex(adr.index)) { 2247 if (needsRex(adr.getIndex())) {
2248 emitByte(Prefix.REXWX); 2248 emitByte(Prefix.REXWX);
2249 } else { 2249 } else {
2250 emitByte(Prefix.REXW); 2250 emitByte(Prefix.REXW);
2251 } 2251 }
2252 } 2252 }
2253 } 2253 }
2254 2254
2255 private void prefix(Address adr, Register reg) { 2255 private void prefix(Address adr, Register reg) {
2256 if (reg.encoding < 8) { 2256 if (reg.encoding < 8) {
2257 if (needsRex(adr.base)) { 2257 if (needsRex(adr.getBase())) {
2258 if (needsRex(adr.index)) { 2258 if (needsRex(adr.getIndex())) {
2259 emitByte(Prefix.REXXB); 2259 emitByte(Prefix.REXXB);
2260 } else { 2260 } else {
2261 emitByte(Prefix.REXB); 2261 emitByte(Prefix.REXB);
2262 } 2262 }
2263 } else { 2263 } else {
2264 if (needsRex(adr.index)) { 2264 if (needsRex(adr.getIndex())) {
2265 emitByte(Prefix.REXX); 2265 emitByte(Prefix.REXX);
2266 } else if (reg.encoding >= 4) { 2266 } else if (reg.encoding >= 4) {
2267 emitByte(Prefix.REX); 2267 emitByte(Prefix.REX);
2268 } 2268 }
2269 } 2269 }
2270 } else { 2270 } else {
2271 if (needsRex(adr.base)) { 2271 if (needsRex(adr.getBase())) {
2272 if (needsRex(adr.index)) { 2272 if (needsRex(adr.getIndex())) {
2273 emitByte(Prefix.REXRXB); 2273 emitByte(Prefix.REXRXB);
2274 } else { 2274 } else {
2275 emitByte(Prefix.REXRB); 2275 emitByte(Prefix.REXRB);
2276 } 2276 }
2277 } else { 2277 } else {
2278 if (needsRex(adr.index)) { 2278 if (needsRex(adr.getIndex())) {
2279 emitByte(Prefix.REXRX); 2279 emitByte(Prefix.REXRX);
2280 } else { 2280 } else {
2281 emitByte(Prefix.REXR); 2281 emitByte(Prefix.REXR);
2282 } 2282 }
2283 } 2283 }
2284 } 2284 }
2285 } 2285 }
2286 2286
2287 private void prefixq(Address adr, Register src) { 2287 private void prefixq(Address adr, Register src) {
2288 if (src.encoding < 8) { 2288 if (src.encoding < 8) {
2289 if (needsRex(adr.base)) { 2289 if (needsRex(adr.getBase())) {
2290 if (needsRex(adr.index)) { 2290 if (needsRex(adr.getIndex())) {
2291 emitByte(Prefix.REXWXB); 2291 emitByte(Prefix.REXWXB);
2292 } else { 2292 } else {
2293 emitByte(Prefix.REXWB); 2293 emitByte(Prefix.REXWB);
2294 } 2294 }
2295 } else { 2295 } else {
2296 if (needsRex(adr.index)) { 2296 if (needsRex(adr.getIndex())) {
2297 emitByte(Prefix.REXWX); 2297 emitByte(Prefix.REXWX);
2298 } else { 2298 } else {
2299 emitByte(Prefix.REXW); 2299 emitByte(Prefix.REXW);
2300 } 2300 }
2301 } 2301 }
2302 } else { 2302 } else {
2303 if (needsRex(adr.base)) { 2303 if (needsRex(adr.getBase())) {
2304 if (needsRex(adr.index)) { 2304 if (needsRex(adr.getIndex())) {
2305 emitByte(Prefix.REXWRXB); 2305 emitByte(Prefix.REXWRXB);
2306 } else { 2306 } else {
2307 emitByte(Prefix.REXWRB); 2307 emitByte(Prefix.REXWRB);
2308 } 2308 }
2309 } else { 2309 } else {
2310 if (needsRex(adr.index)) { 2310 if (needsRex(adr.getIndex())) {
2311 emitByte(Prefix.REXWRX); 2311 emitByte(Prefix.REXWRX);
2312 } else { 2312 } else {
2313 emitByte(Prefix.REXWR); 2313 emitByte(Prefix.REXWR);
2314 } 2314 }
2315 } 2315 }