package org.reasm.m68k.assembly.internal;
import java.io.IOException;
import javax.annotation.Nonnull;
import javax.annotation.concurrent.Immutable;
import org.reasm.SymbolType;
import org.reasm.m68k.messages.RegisterExpectedErrorMessage;
import org.reasm.messages.DirectiveRequiresLabelErrorMessage;
/**
* The <code>EQUR</code> directive.
*
* @author Francis Gagné
*/
@Immutable
class EqurDirective extends Mnemonic {
@Nonnull
static final EqurDirective EQUR = new EqurDirective();
private EqurDirective() {
}
@Override
void assemble(M68KAssemblyContext context) throws IOException {
context.sizeNotAllowed();
if (context.numberOfLabels == 0) {
context.addMessage(new DirectiveRequiresLabelErrorMessage(Mnemonics.EQUR));
} else {
if (context.requireNumberOfOperands(1)) {
context.prepareOperandReader(0);
final GeneralPurposeRegister register = parseRegister(context, context.logicalLineReader);
if (register != null) {
context.defineSymbols(M68KAssemblyContext.REGISTER_ALIAS, SymbolType.CONSTANT, register);
} else {
context.addMessage(new RegisterExpectedErrorMessage());
}
}
}
}
@Override
void defineLabels(M68KAssemblyContext context) {
// Don't define any labels.
}
}