Advertisement
BaSs_HaXoR

[Project] PPC2C [Source]

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