top of page

Java - Assembly Derleyecisi

Yazarın fotoğrafı: Sevdanur GENC
Sevdanur GENC
8 May 2012
3 dakikada okunur

Asm komutlarini okuyup derleyebilen, hatali kodlarda kullaniciya hatali bilgi mesaji verebilen Java tarafinda gorsel arayuz kullanarak gelistirmis oldugumuz bir derleyicidir. Hashmap icin guzel bir ornek olabilecegini dusunuyorum...

Kullanilan Kutuphaneler ; import java.io.BufferedReader; import java.io.FileReader; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.swing.JOptionPane;                  

Projenin Kaynak Kodlari ;

public class Assembly_Compiler extends javax.swing.JFrame { public Assembly_Compiler() { initComponents(); }

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)

{ jFileChooser1.showOpenDialog(null); jTextField1.setText(jFileChooser1.getSelectedFile().toString()); } int d=0;

private void cozumle(String equ)

{if (equ.trim().length() != 0){ if(equ.indexOf("ORG")!=-1) { d = Integer.parseInt((equ.substring(equ.lastIndexOf("ORG")+4)), 16); } else{ String[] dgr= equ.split(" |:"); String k=dgr<0>

; list3.add(Integer.toHexString(d)); if(null!=hafiza_adresleyen(dgr<0>

)) { if(null!=simge_cetveli(dgr<1>

)) list4.add(Integer.toHexString(((Integer.parseInt((hafiza_adresleyen(dgr<0>

)),16))+(Integer.parseInt((simge_cetveli(dgr<1>

)),16))))); else list4.add(Integer.toHexString(((Integer.parseInt((hafiza_adresleyen(dgr<0>

)),16))+(Integer.parseInt((simge_cetveli_etiket(dgr<1>

)),16))))); } else if(null!=hafiza_adreslemeyen(dgr<0>

)) list4.add(hafiza_adreslemeyen(dgr<0>

)); else if(null!=yigin(dgr<0>

)) list4.add(yigin(dgr<0>

)); else if(null!=simge_cetveli(dgr<0>

)) { if(dgr<2>

.endsWith("H")) dgr<2>

=Integer.toHexString(Integer.parseInt(((dgr<2>

).substring(0,(dgr<2>

.length()-1))), 16)); if(dgr<2>

.length()>4) dgr<2>

=dgr<2>

.substring(dgr<2>

.length()-4); else   { int f=dgr<2>

.length(); for (int i = 0; i <=(3-f); i++) {dgr<2>

=("0"+dgr<2>

);} } list4.add(dgr<2>

); } else if(null!=simge_cetveli_etiket(dgr<0>

)) { if(null!=hafiza_adresleyen(dgr<1>

)) {if(null!=simge_cetveli(dgr<2>

)) list4.add(Integer.toHexString(((Integer.parseInt((hafiza_adresleyen(dgr<1>

)),16))+(Integer.parseInt((simge_cetveli(dgr<2>

)),16))))); else list4.add(Integer.toHexString(((Integer.parseInt((hafiza_adresleyen(dgr<1>

)),16))+(Integer.parseInt((simge_cetveli_etiket(dgr<2>

)),16))))); } else if(null!=hafiza_adreslemeyen(dgr<1>

)) list4.add(hafiza_adreslemeyen(dgr<1>

)); else if(null!=yigin(dgr<1>

)) list4.add(yigin(dgr<1>

)); else if(null!=simge_cetveli(dgr<1>

)) { if(dgr<3>

.endsWith("H")) dgr<3>

=Integer.toHexString(Integer.parseInt(((dgr<3>

).substring(0,(dgr<3>

.length()-1))), 16)); if(dgr<3>

.length()>4) dgr<3>

=dgr<3>

.substring(dgr<3>

.length()-4); else{ int f=dgr<3>

.length(); for (int i = 0; i <=(3-f); i++) {dgr<3>

=("0"+dgr<3>

);} } list4.add(dgr<3>

); } } d=++d; } } } int a=0; String b;

  private void equ_yakala(String equ)

{if (equ.trim().length() != 0){ if(equ.indexOf("ORG")!=-1) {   b =(equ.substring(equ.lastIndexOf("ORG")+4)); a = Integer.parseInt(b, 16); a=a-1; } String[] dgr= equ.split(" |:"); if(((equ.indexOf("equ"))!=-1)) { list2.add(dgr<0>

); list5.add(Integer.toHexString(a)); simge_cetveli(dgr<0>

,(Integer.toHexString(a))); } if(((equ.indexOf(":"))!=-1)) { list2.add(dgr<0>

); list5.add(Integer.toHexString(a)); simge_cetveli_etiket(dgr<0>

,(Integer.toHexString(a))); } a=++a; } }

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)

{ list1.clear(); list2.clear(); list3.clear(); list4.clear(); list5.clear(); simge.clear(); etiket.clear(); try { String path = jTextField1.getText(); FileReader file = new FileReader(path); BufferedReader reader = new BufferedReader(file); String satir; while(!(satir = reader.readLine()).equals("STOP")) { equ_yakala(satir); list1.add(satir); } list1.add("STOP"); } catch(Exception ex) { JOptionPane.showMessageDialog(null, "hata : Bitiş komutu eksik!!!"); } }

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)

{ list4.clear(); list3.clear(); try { String path = jTextField1.getText(); FileReader file = new FileReader(path); BufferedReader reader = new BufferedReader(file); String satir; while(!(satir = reader.readLine()).equals("STOP")) { cozumle(satir); } } catch(Exception ex) { JOptionPane.showMessageDialog(null, "hata : " + ex); } }

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt)

{ list1.clear(); list2.clear(); list3.clear(); list4.clear(); list5.clear(); simge.clear(); etiket.clear(); }

private String hafiza_adresleyen(String kmt)

{ String k = null; HashMap komut = new HashMap(); komut.put("AND", new String("0000")); komut.put("ADD", new String("1000")); komut.put("LDA", new String("2000")); komut.put("STA", new String("3000")); komut.put("BUN", new String("4000")); komut.put("BSA", new String("5000")); komut.put("ISZ", new String("6000")); Set set = komut.entrySet(); Iterator i = set.iterator(); while(i.hasNext()) {Map.Entry me = (Map.Entry)i.next(); if( (me.getKey()).equals(kmt)) k=(String) me.getValue(); } return k; }

private String hafiza_adreslemeyen(String kmt)

{  String k = null; HashMap komut1 = new HashMap(); komut1.put("SPA", new String("7400")); komut1.put("SNA", new String("7200")); komut1.put("SZA", new String("7100")); komut1.put("SZE", new String("7080")); komut1.put("CLA", new String("7040")); komut1.put("CLE", new String("7020")); komut1.put("CMA", new String("7010")); komut1.put("CME", new String("7008")); komut1.put("INC", new String("7004")); komut1.put("CIR", new String("7002")); komut1.put("CIL", new String("7001")); Set set = komut1.entrySet(); Iterator i = set.iterator(); while(i.hasNext()) {Map.Entry me = (Map.Entry)i.next(); if( (me.getKey()).equals(kmt)) k=(String) me.getValue(); } return k; }

private String yigin(String kmt)

{  String k=null; HashMap komut2= new HashMap(); komut2.put("SPS", new String("7840")); komut2.put("SPI", new String("7820")); komut2.put("PUSH", new String("7810")); komut2.put("POP", new String("7808")); komut2.put("SPM", new String("7804")); komut2.put("ISP", new String("7802")); komut2.put("RET", new String("7801")); Set set = komut2.entrySet(); Iterator i = set.iterator(); while(i.hasNext()) {Map.Entry me = (Map.Entry)i.next(); if( (me.getKey()).equals(kmt)) k=(String) me.getValue(); } return k; } HashMap simge = new HashMap();

private void simge_cetveli(String smg,String dgr)

{ simge.put(smg, new String (dgr)); } private String simge_cetveli(String smg) { String k=null; Set set = simge.entrySet(); Iterator i = set.iterator(); while(i.hasNext()) {Map.Entry me = (Map.Entry)i.next(); if( (me.getKey()).equals(smg)) {k=(String)me.getValue(); } } return k; } HashMap etiket = new HashMap();

private void simge_cetveli_etiket(String smg,String dgr)

{ etiket.put(smg, new String (dgr)); }

private String simge_cetveli_etiket(String smg)

{ String k=null; Set set = etiket.entrySet(); Iterator i = set.iterator(); while(i.hasNext()) {Map.Entry me = (Map.Entry)i.next(); if( (me.getKey()).equals(smg)) {k=(String)me.getValue(); } } return k; } } } }

Not ;  Bu uygulama; Suleyman Demirel Universitesi – Bilgisayar Muhendisligi Bilgisayar Mimarisi dersi icin tarafimizdan yazilmis ve de gelistirilmis bir uygulamadir…

Son Yazılar

Hepsini Gör
C# Dependency Injection

Dependency Injection (DI) aslinda bir tasarım şablonu olarak bilinmektedir ve genel amacı nesneler arasında bulunan bağımlılıkları azaltarak kullandığı İnterface'ler sayesinde implement edilen içerikl

 
 
 
Windows Azure Nedir?

Windows Azure, hizmet yönetim ortamlarını ve servislerini barındırarak geliştirilmiş bulut teknolojilerinin oluştuğu bir işletim sistemi gibi düşünülebilir. Windows azure, Microsoft veri merkezleri

 
 
 
Navigation - Navigasyon

Kullanıcıların Metro Style uygulamalarında kolay bir şekilde kullanabilmeleri ve sayfalar arası geçişleri daha sezgizel bir şekilde yapabilmeleri için geliştirilmiş bir yöntemdir. Bu özellik sayesinde

 
 
 

Yorumlar


©2026 by Sevdanur Genc

bottom of page