private void checkDefRelAddress() {
		// iterate through the moduleList
		Iterator<ObjectModule> modListIt = moduleList.iterator();
		while (modListIt.hasNext()) {
			ObjectModule module = modListIt.next();
			
			int currModuleSize = module.codeCount - 1;

			// iterate through the current defList,
			Iterator<SymbolPair> it = module.getDefList().iterator();
			while (it.hasNext()) {
				// check if any relAddress exceeds module size(codeCount - 1)
				SymbolPair sp = it.next();
				boolean isDuplicated = symbolTable.isDuplicated(sp.symbol);
				if (sp.getRelAddress() > currModuleSize && !isDuplicated) {
					int oldRelAddr = sp.getRelAddress();
					// set relAddr in module
					sp.setRelAddress(0);
					// set globalAddr in symbolTable
					int globalAddr = module.baseAddress;
					symbolTable.setAddr(sp.symbol, globalAddr);

					int moduleNo = module.moduleNo;
					String warnMsg = "Module " + moduleNo + ": " + sp.symbol
							+ " too big " + oldRelAddr + " (max=" + currModuleSize
							+ ") assume zero relative";
					warningList.add(warnMsg);
				}
			}
		}
	}