⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gen.java

📁 用java语言做的L语言编译器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
						dx=true;
						outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
						outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
						outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
						outDesFile.writeBytes(lineNum+++" : jl "+genNum[gs.getAddress()]+"\r\n");
					}
					else {
						if (bx==true && dx==true){
							outDesFile.writeBytes(lineNum+++" : push bx\r\n");
							outDesFile.writeBytes(lineNum+++" : push dx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jl "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
							outDesFile.writeBytes(lineNum+++" : pop bx\r\n");						
						}
						else if (bx==true){
							dx=true;
							outDesFile.writeBytes(lineNum+++" : push bx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jl "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
						}
						else{
							bx=true;
							outDesFile.writeBytes(lineNum+++" : push dx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jl "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
						}
					}
					break;
				case 32://=
					if (bx==false && dx==false){
						bx=true;
						dx=true;
						outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
						outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
						outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
						outDesFile.writeBytes(lineNum+++" : jz "+genNum[gs.getAddress()]+"\r\n");
					}
					else {
						if (bx==true && dx==true){
							outDesFile.writeBytes(lineNum+++" : push bx\r\n");
							outDesFile.writeBytes(lineNum+++" : push dx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jz "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
							outDesFile.writeBytes(lineNum+++" : pop bx\r\n");						
						}
						else if (bx==true){
							dx=true;
							outDesFile.writeBytes(lineNum+++" : push bx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jz "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
						}
						else{
							bx=true;
							outDesFile.writeBytes(lineNum+++" : push dx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jz "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
						}
					}
					break;
				case 35://<>
					if (bx==false && dx==false){
						bx=true;
						dx=true;
						outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
						outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
						outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
						outDesFile.writeBytes(lineNum+++" : jnz "+genNum[gs.getAddress()]+"\r\n");
					}
					else {
						if (bx==true && dx==true){
							outDesFile.writeBytes(lineNum+++" : push bx\r\n");
							outDesFile.writeBytes(lineNum+++" : push dx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jnz "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
							outDesFile.writeBytes(lineNum+++" : pop bx\r\n");						
						}
						else if (bx==true){
							dx=true;
							outDesFile.writeBytes(lineNum+++" : push bx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jnz "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
						}
						else{
							bx=true;
							outDesFile.writeBytes(lineNum+++" : push dx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jnz "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
						}
					}
					break;
				case 36://>
					if (bx==false && dx==false){
						bx=true;
						dx=true;
						outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
						outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
						outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
						outDesFile.writeBytes(lineNum+++" : jg "+genNum[gs.getAddress()]+"\r\n");
					}
					else {
						if (bx==true && dx==true){
							outDesFile.writeBytes(lineNum+++" : push bx\r\n");
							outDesFile.writeBytes(lineNum+++" : push dx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jg "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
							outDesFile.writeBytes(lineNum+++" : pop bx\r\n");						
						}
						else if (bx==true){
							dx=true;
							outDesFile.writeBytes(lineNum+++" : push bx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jg "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
						}
						else{
							bx=true;
							outDesFile.writeBytes(lineNum+++" : push dx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jg "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
						}
					}
					break;
				case 37://>=
					if (bx==false && dx==false){
						bx=true;
						dx=true;
						outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
						outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
						outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
						outDesFile.writeBytes(lineNum+++" : jnl "+genNum[gs.getAddress()]+"\r\n");
					}
					else {
						if (bx==true && dx==true){
							outDesFile.writeBytes(lineNum+++" : push bx\r\n");
							outDesFile.writeBytes(lineNum+++" : push dx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jnl "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
							outDesFile.writeBytes(lineNum+++" : pop bx\r\n");						
						}
						else if (bx==true){
							dx=true;
							outDesFile.writeBytes(lineNum+++" : push bx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jnl "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop bx\r\n");
						}
						else{
							bx=true;
							outDesFile.writeBytes(lineNum+++" : push dx\r\n");
							outDesFile.writeBytes(lineNum+++" : mov bx,"+gs.getVarA()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : mov dx,"+gs.getVarB()+"\r\n");
							outDesFile.writeBytes(lineNum+++" : cmp bx,dx\r\n");
							outDesFile.writeBytes(lineNum+++" : jnl "+genNum[gs.getAddress()]+"\r\n");
							outDesFile.writeBytes(lineNum+++" : pop dx\r\n");
						}
					}
					break;
				case 38://j
						outDesFile.writeBytes(lineNum+++" : jmp "+genNum[gs.getAddress()]+"\r\n");
					
					break;
					default:JOptionPane.showMessageDialog(null,"Gen error");
				}
				
			}
			outDesFile.writeBytes("\r\nmov ax,4c00h\r\n"+
                    "int 21h\r\n"+
                    "end start");
			
			outDesFile.close();
			BuildWindow.getBuildWindow().gettaProName().append("The DestinationFile is finish\nPlease see over it");
		} catch (FileNotFoundException e) {
			JOptionPane.showMessageDialog(null,"FileNotFoundException is occurred--Create RandomAccessFile");
		} catch (IOException e) {
			JOptionPane.showMessageDialog(null,"IOException is occurred--write DesFile");
		}
		
	}
	private void createDestinationFile() {//创建目的文件
		
		if(desFile.exists()){
			desFile.delete();
			try {
				desFile.createNewFile();
				BuildWindow.getBuildWindow().gettaProName().append("The DestinationFile is created\n");
			} catch (IOException e) {
				JOptionPane.showMessageDialog(null,"Create festinationFile is failed");
			}
		}
		else{
			try {
				desFile.createNewFile();
				BuildWindow.getBuildWindow().gettaProName().append("The DestinationFile is created\n");
			} catch (IOException e) {
				JOptionPane.showMessageDialog(null,"Create festinationFile is failed");
			}
		}
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -