Advertisement
IAmXeClutch

[Project] PPC2C

Jun 11th, 2014
1,160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 23.69 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. // Made by XeClutch :)
  12. // Alpha Build #5
  13.  
  14. namespace PowerPC2C
  15. {
  16.     public partial class Form1 : Form
  17.     {
  18.         public Form1()
  19.         {
  20.             InitializeComponent();
  21.         }
  22.  
  23.         private void convertcode_Click(object sender, EventArgs e)
  24.         {
  25.  
  26.             int instr = 0;
  27.             string[] lines = codebox_ppc.Text.Split("\n".ToCharArray());
  28.             string output = "";
  29.             foreach (string str in lines)
  30.             {
  31.                 try
  32.                 {
  33.                     #region PPC:add
  34.                     if (lines[instr].StartsWith("add ")) // Add
  35.                     {
  36.                         lines[instr] = lines[instr].Replace("add ", "");
  37.                         string reg = lines[instr].ToCharArray()[0].ToString();
  38.                         reg += lines[instr].ToCharArray()[1].ToString();
  39.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  40.                             reg += lines[instr].ToCharArray()[2].ToString();
  41.                         output += reg + " = (";
  42.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  43.                         string reg2 = lines[instr].ToCharArray()[0].ToString();
  44.                         reg2 += lines[instr].ToCharArray()[1].ToString();
  45.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  46.                             reg2 += lines[instr].ToCharArray()[2].ToString();
  47.                         output += reg2 + " + ";
  48.                         lines[instr] = lines[instr].Replace(reg2 + ", ", "");
  49.                         string val = lines[instr];
  50.                         output += val + ");\n";
  51.                     }
  52.                     #endregion
  53.                     #region PPC:addi
  54.                     if (lines[instr].StartsWith("addi ")) // # Add Immediate
  55.                     {
  56.                         lines[instr] = lines[instr].Replace("addi ", "");
  57.                         string reg = lines[instr].ToCharArray()[0].ToString();
  58.                         reg += lines[instr].ToCharArray()[1].ToString();
  59.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  60.                             reg += lines[instr].ToCharArray()[2].ToString();
  61.                         output += reg + " = (";
  62.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  63.                         string reg2 = lines[instr].ToCharArray()[0].ToString();
  64.                         reg2 += lines[instr].ToCharArray()[1].ToString();
  65.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  66.                             reg2 += lines[instr].ToCharArray()[2].ToString();
  67.                         output += reg2 + " + ";
  68.                         lines[instr] = lines[instr].Replace(reg2 + ", ", "");
  69.                         string val = lines[instr];
  70.                         output += val + ");\n";
  71.                     }
  72.                     #endregion
  73.                     #region PPC:and
  74.                     if (lines[instr].StartsWith("and "))
  75.                     {
  76.                         lines[instr] = lines[instr].Replace("and ", "");
  77.                         string reg = lines[instr].ToCharArray()[0].ToString();
  78.                         reg += lines[instr].ToCharArray()[1].ToString();
  79.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  80.                             reg += lines[instr].ToCharArray()[2].ToString();
  81.                         output += reg + " &= ";
  82.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  83.                         string val = lines[instr];
  84.                         output += val + ";\n";
  85.                     }
  86.                     #endregion
  87.                     #region PPC:andi
  88.                     if (lines[instr].StartsWith("andi "))
  89.                     {
  90.                         lines[instr] = lines[instr].Replace("andi ", "");
  91.                         string reg = lines[instr].ToCharArray()[0].ToString();
  92.                         reg += lines[instr].ToCharArray()[1].ToString();
  93.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  94.                             reg += lines[instr].ToCharArray()[2].ToString();
  95.                         output += reg + " &= ";
  96.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  97.                         string val = lines[instr];
  98.                         output += val + ";\n";
  99.                     }
  100.                     #endregion
  101.                     #region PPC:andis
  102.                     if (lines[instr].StartsWith("andis "))
  103.                     {
  104.                         lines[instr] = lines[instr].Replace("andis ", "");
  105.                         string reg = lines[instr].ToCharArray()[0].ToString();
  106.                         reg += lines[instr].ToCharArray()[1].ToString();
  107.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  108.                             reg += lines[instr].ToCharArray()[2].ToString();
  109.                         output += reg + " &= (";
  110.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  111.                         string val = lines[instr];
  112.                         output += val + " << 16);\n";
  113.                     }
  114.                     #endregion
  115.                     #region PPC:divw
  116.                     if (lines[instr].StartsWith("divw ")) // # Divide Word
  117.                     {
  118.                         lines[instr] = lines[instr].Replace("divw ", "");
  119.                         string reg = lines[instr].ToCharArray()[0].ToString();
  120.                         reg += lines[instr].ToCharArray()[1].ToString();
  121.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  122.                             reg += lines[instr].ToCharArray()[2].ToString();
  123.                         output += reg + " = (";
  124.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  125.                         string reg2 = lines[instr].ToCharArray()[0].ToString();
  126.                         reg2 += lines[instr].ToCharArray()[1].ToString();
  127.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  128.                             reg2 += lines[instr].ToCharArray()[2].ToString();
  129.                         output += reg2 + " / ";
  130.                         lines[instr] = lines[instr].Replace(reg2 + ", ", "");
  131.                         string val = lines[instr];
  132.                         output += val + ");\n";
  133.                     }
  134.                     #endregion
  135.                     #region PPC:li
  136.                     if (lines[instr].StartsWith("li ")) // # Load Immediate
  137.                     {
  138.                         lines[instr] = lines[instr].Replace("li ", "");
  139.                         string reg = lines[instr].ToCharArray()[0].ToString();
  140.                         reg += lines[instr].ToCharArray()[1].ToString();
  141.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  142.                             reg += lines[instr].ToCharArray()[2].ToString();
  143.                         output += reg + " = ";
  144.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  145.                         string val = lines[instr];
  146.                         output += val + ";\n";
  147.                     }
  148.                     #endregion
  149.                     #region PPC:lis
  150.                     if (lines[instr].StartsWith("lis ")) // # Load Immediate Shifted
  151.                     {
  152.                         lines[instr] = lines[instr].Replace("lis ", "");
  153.                         string reg = lines[instr].ToCharArray()[0].ToString();
  154.                         reg += lines[instr].ToCharArray()[1].ToString();
  155.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  156.                             reg += lines[instr].ToCharArray()[2].ToString();
  157.                         output += reg + " = (";
  158.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  159.                         string val = lines[instr];
  160.                         output += val + " << 16);\n";
  161.                     }
  162.                     #endregion
  163.                     #region PPC:mr
  164.                     if (lines[instr].StartsWith("mr ")) // # Move Register
  165.                     {
  166.                         lines[instr] = lines[instr].Replace("mr ", "");
  167.                         string reg = lines[instr].ToCharArray()[0].ToString();
  168.                         reg += lines[instr].ToCharArray()[1].ToString();
  169.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  170.                             reg += lines[instr].ToCharArray()[2].ToString();
  171.                         output += reg + " = ";
  172.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  173.                         string val = lines[instr];
  174.                         output += val + ";\n";
  175.                     }
  176.                     #endregion
  177.                     #region PPC:mulli
  178.                     if (lines[instr].StartsWith("mulli ")) // # Multiply Immediate
  179.                     {
  180.                         lines[instr] = lines[instr].Replace("mulli ", "");
  181.                         string reg = lines[instr].ToCharArray()[0].ToString();
  182.                         reg += lines[instr].ToCharArray()[1].ToString();
  183.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  184.                             reg += lines[instr].ToCharArray()[2].ToString();
  185.                         output += reg + " = (";
  186.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  187.                         string reg2 = lines[instr].ToCharArray()[0].ToString();
  188.                         reg2 += lines[instr].ToCharArray()[1].ToString();
  189.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  190.                             reg2 += lines[instr].ToCharArray()[2].ToString();
  191.                         output += reg2 + " * ";
  192.                         lines[instr] = lines[instr].Replace(reg2 + ", ", "");
  193.                         string val = lines[instr];
  194.                         output += val + ");\n";
  195.                     }
  196.                     #endregion
  197.                     #region PPC:mullw
  198.                     if (lines[instr].StartsWith("mullw ")) // # Multiply Word
  199.                     {
  200.                         lines[instr] = lines[instr].Replace("mullw ", "");
  201.                         string reg = lines[instr].ToCharArray()[0].ToString();
  202.                         reg += lines[instr].ToCharArray()[1].ToString();
  203.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  204.                             reg += lines[instr].ToCharArray()[2].ToString();
  205.                         output += reg + " = (";
  206.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  207.                         string reg2 = lines[instr].ToCharArray()[0].ToString();
  208.                         reg2 += lines[instr].ToCharArray()[1].ToString();
  209.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  210.                             reg2 += lines[instr].ToCharArray()[2].ToString();
  211.                         output += reg2 + " * ";
  212.                         lines[instr] = lines[instr].Replace(reg2 + ", ", "");
  213.                         string val = lines[instr];
  214.                         output += val + ");\n";
  215.                     }
  216.                     #endregion
  217.                     #region PPC:or
  218.                     if (lines[instr].StartsWith("or "))
  219.                     {
  220.                         lines[instr] = lines[instr].Replace("or ", "");
  221.                         string reg = lines[instr].ToCharArray()[0].ToString();
  222.                         reg += lines[instr].ToCharArray()[1].ToString();
  223.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  224.                             reg += lines[instr].ToCharArray()[2].ToString();
  225.                         output += reg + " |= ";
  226.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  227.                         string val = lines[instr];
  228.                         output += val + ";\n";
  229.                     }
  230.                     #endregion
  231.                     #region PPC:ori
  232.                     if (lines[instr].StartsWith("ori "))
  233.                     {
  234.                         lines[instr] = lines[instr].Replace("ori ", "");
  235.                         string reg = lines[instr].ToCharArray()[0].ToString();
  236.                         reg += lines[instr].ToCharArray()[1].ToString();
  237.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  238.                             reg += lines[instr].ToCharArray()[2].ToString();
  239.                         output += reg + " |= ";
  240.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  241.                         string val = lines[instr];
  242.                         output += val + ";\n";
  243.                     }
  244.                     #endregion
  245.                     #region PPC:oris
  246.                     if (lines[instr].StartsWith("oris "))
  247.                     {
  248.                         lines[instr] = lines[instr].Replace("oris ", "");
  249.                         string reg = lines[instr].ToCharArray()[0].ToString();
  250.                         reg += lines[instr].ToCharArray()[1].ToString();
  251.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  252.                             reg += lines[instr].ToCharArray()[2].ToString();
  253.                         output += reg + " |= (";
  254.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  255.                         string val = lines[instr];
  256.                         output += val + " << 16);\n";
  257.                     }
  258.                     #endregion
  259.                     #region PPC:slw
  260.                     if (lines[instr].StartsWith("slw ")) // # Shift Left Word
  261.                     {
  262.                         lines[instr] = lines[instr].Replace("slw ", "");
  263.                         string reg = lines[instr].ToCharArray()[0].ToString();
  264.                         reg += lines[instr].ToCharArray()[1].ToString();
  265.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  266.                             reg += lines[instr].ToCharArray()[2].ToString();
  267.                         output += reg + " = (";
  268.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  269.                         string reg2 = lines[instr].ToCharArray()[0].ToString();
  270.                         reg2 += lines[instr].ToCharArray()[1].ToString();
  271.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  272.                             reg2 += lines[instr].ToCharArray()[2].ToString();
  273.                         output += reg2 + " << ";
  274.                         lines[instr] = lines[instr].Replace(reg2 + ", ", "");
  275.                         string val = lines[instr];
  276.                         output += val + ");\n";
  277.                     }
  278.                     #endregion
  279.                     #region PPC:slwi
  280.                     if (lines[instr].StartsWith("slwi ")) // # Shift Left Word Immediate
  281.                     {
  282.                         lines[instr] = lines[instr].Replace("slwi ", "");
  283.                         string reg = lines[instr].ToCharArray()[0].ToString();
  284.                         reg += lines[instr].ToCharArray()[1].ToString();
  285.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  286.                             reg += lines[instr].ToCharArray()[2].ToString();
  287.                         output += reg + " = (";
  288.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  289.                         string reg2 = lines[instr].ToCharArray()[0].ToString();
  290.                         reg2 += lines[instr].ToCharArray()[1].ToString();
  291.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  292.                             reg2 += lines[instr].ToCharArray()[2].ToString();
  293.                         output += reg2 + " << ";
  294.                         lines[instr] = lines[instr].Replace(reg2 + ", ", "");
  295.                         string val = lines[instr];
  296.                         output += val + ");\n";
  297.                     }
  298.                     #endregion
  299.                     #region PPC:srw
  300.                     if (lines[instr].StartsWith("srw ")) // # Shift Right Word Immediate
  301.                     {
  302.                         lines[instr] = lines[instr].Replace("srw ", "");
  303.                         string reg = lines[instr].ToCharArray()[0].ToString();
  304.                         reg += lines[instr].ToCharArray()[1].ToString();
  305.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  306.                             reg += lines[instr].ToCharArray()[2].ToString();
  307.                         output += reg + " = (";
  308.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  309.                         string reg2 = lines[instr].ToCharArray()[0].ToString();
  310.                         reg2 += lines[instr].ToCharArray()[1].ToString();
  311.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  312.                             reg2 += lines[instr].ToCharArray()[2].ToString();
  313.                         output += reg2 + " >> ";
  314.                         lines[instr] = lines[instr].Replace(reg2 + ", ", "");
  315.                         string val = lines[instr];
  316.                         output += val + ");\n";
  317.                     }
  318.                     #endregion
  319.                     #region PPC:srwi
  320.                     if (lines[instr].StartsWith("srwi ")) // # Shift Right Word Immediate
  321.                     {
  322.                         lines[instr] = lines[instr].Replace("srwi ", "");
  323.                         string reg = lines[instr].ToCharArray()[0].ToString();
  324.                         reg += lines[instr].ToCharArray()[1].ToString();
  325.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  326.                             reg += lines[instr].ToCharArray()[2].ToString();
  327.                         output += reg + " = (";
  328.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  329.                         string reg2 = lines[instr].ToCharArray()[0].ToString();
  330.                         reg2 += lines[instr].ToCharArray()[1].ToString();
  331.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  332.                             reg2 += lines[instr].ToCharArray()[2].ToString();
  333.                         output += reg2 + " >> ";
  334.                         lines[instr] = lines[instr].Replace(reg2 + ", ", "");
  335.                         string val = lines[instr];
  336.                         output += val + ");\n";
  337.                     }
  338.                     #endregion
  339.                     #region PPC:subf
  340.                     if (lines[instr].StartsWith("subf ")) // # Subtract
  341.                     {
  342.                         lines[instr] = lines[instr].Replace("subf ", "");
  343.                         string reg = lines[instr].ToCharArray()[0].ToString();
  344.                         reg += lines[instr].ToCharArray()[1].ToString();
  345.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  346.                             reg += lines[instr].ToCharArray()[2].ToString();
  347.                         output += reg + " = (";
  348.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  349.                         string reg2 = lines[instr].ToCharArray()[0].ToString();
  350.                         reg2 += lines[instr].ToCharArray()[1].ToString();
  351.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  352.                             reg2 += lines[instr].ToCharArray()[2].ToString();
  353.                         lines[instr] = lines[instr].Replace(reg2 + ", ", "");
  354.                         string val = lines[instr];
  355.                         output += val + " - " + reg2 + ");\n";
  356.                     }
  357.                     #endregion
  358.                     #region PPC:subi
  359.                     if (lines[instr].StartsWith("subi ")) // # Subtract Immediate
  360.                     {
  361.                         lines[instr] = lines[instr].Replace("subi ", "");
  362.                         string reg = lines[instr].ToCharArray()[0].ToString();
  363.                         reg += lines[instr].ToCharArray()[1].ToString();
  364.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  365.                             reg += lines[instr].ToCharArray()[2].ToString();
  366.                         output += reg + " = (";
  367.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  368.                         string reg2 = lines[instr].ToCharArray()[0].ToString();
  369.                         reg2 += lines[instr].ToCharArray()[1].ToString();
  370.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  371.                             reg2 += lines[instr].ToCharArray()[2].ToString();
  372.                         output += reg2 + " - ";
  373.                         lines[instr] = lines[instr].Replace(reg2 + ", ", "");
  374.                         string val = lines[instr];
  375.                         output += val + ");\n";
  376.                     }
  377.                     #endregion
  378.                     #region PPC:xor
  379.                     if (lines[instr].StartsWith("xor "))
  380.                     {
  381.                         lines[instr] = lines[instr].Replace("xor ", "");
  382.                         string reg = lines[instr].ToCharArray()[0].ToString();
  383.                         reg += lines[instr].ToCharArray()[1].ToString();
  384.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  385.                             reg += lines[instr].ToCharArray()[2].ToString();
  386.                         output += reg + " ^= ";
  387.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  388.                         string val = lines[instr];
  389.                         output += val + ";\n";
  390.                     }
  391.                     #endregion
  392.                     #region PPC:xori
  393.                     if (lines[instr].StartsWith("xori "))
  394.                     {
  395.                         lines[instr] = lines[instr].Replace("xori ", "");
  396.                         string reg = lines[instr].ToCharArray()[0].ToString();
  397.                         reg += lines[instr].ToCharArray()[1].ToString();
  398.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  399.                             reg += lines[instr].ToCharArray()[2].ToString();
  400.                         output += reg + " ^= ";
  401.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  402.                         string val = lines[instr];
  403.                         output += val + ";\n";
  404.                     }
  405.                     #endregion
  406.                     #region PPC:xoris
  407.                     if (lines[instr].StartsWith("xoris "))
  408.                     {
  409.                         lines[instr] = lines[instr].Replace("xoris ", "");
  410.                         string reg = lines[instr].ToCharArray()[0].ToString();
  411.                         reg += lines[instr].ToCharArray()[1].ToString();
  412.                         if (lines[instr].ToCharArray()[2].ToString() != ",")
  413.                             reg += lines[instr].ToCharArray()[2].ToString();
  414.                         output += reg + " ^= (";
  415.                         lines[instr] = lines[instr].Replace(reg + ", ", "");
  416.                         string val = lines[instr];
  417.                         output += val + " << 16);\n";
  418.                     }
  419.                     #endregion
  420.                     instr++;
  421.                 }
  422.                 catch (Exception ex)
  423.                 {
  424.                     MessageBox.Show("Could not convert instruction! :/\n\n" + ex);
  425.                 }
  426.             }
  427.             codebox_c.Text = output;
  428.         }
  429.     }
  430. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement