PageRenderTime 47ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/source2/Users/Gero Landmann/Cosmos.Assembler.X86/OpCodeBuilder.cs

#
C# | 150 lines | 100 code | 25 blank | 25 comment | 3 complexity | c3c45bf35fcad4860e20243aa8ea7c4d MD5 | raw file
Possible License(s): BSD-2-Clause
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.Reflection;
  7. using System.IO;
  8. using System.Xml;
  9. using System.Xml.Linq;
  10. using System.Xml.XPath;
  11. using Cosmos.Assembler.X86;
  12. namespace Cosmos.Assembler.X86.Generator
  13. {
  14. public class OpCodeBuilder
  15. {
  16. [STAThread]
  17. static void Main( string[] args )
  18. {
  19. }
  20. public Operand[] GetOperands(int OpCount, ulong[] aData )
  21. {
  22. Operand[] ops = new Operand[OpCount];
  23. Operand op;
  24. int x = 0;
  25. bool OpFinish = false;
  26. for( int i = 0; i < OpCount; i++ )
  27. {
  28. ops[ i ] = new Operand();
  29. op = ops[ i ];
  30. for(; x < aData.Length; x++ )
  31. {
  32. switch( aData[ x ] )
  33. {
  34. case OpCodeData.MEMORY:
  35. break;
  36. case OpCodeData.REG8:
  37. break;
  38. case OpCodeData.REG16:
  39. break;
  40. case OpCodeData.REG32:
  41. break;
  42. case OpCodeData.REG64:
  43. break;
  44. case OpCodeData.FPUREG:
  45. break;
  46. case OpCodeData.XMMREG:
  47. break;
  48. case OpCodeData.YMMREG:
  49. break;
  50. case OpCodeData.IMMEDIATE:
  51. break;
  52. case OpCodeData.BITS8:
  53. break;
  54. case OpCodeData.BITS16:
  55. break;
  56. case OpCodeData.BITS32:
  57. break;
  58. case OpCodeData.BITS64:
  59. break;
  60. case OpCodeData.BITS80:
  61. break;
  62. case OpCodeData.BITS128:
  63. break;
  64. case OpCodeData.BITS256:
  65. break;
  66. }
  67. if( OpFinish )
  68. break;
  69. }
  70. }
  71. return ops;
  72. }
  73. public string GetInstructionVariant( OpCodeData.itemplate node )
  74. {
  75. string code = "";
  76. code += "new InstructionVariant()" + Environment.NewLine;
  77. code += "{" + Environment.NewLine;
  78. code += " " + Environment.NewLine;
  79. code += "}" + Environment.NewLine;
  80. return code;
  81. }
  82. public string GetInstruction( )
  83. {
  84. string code = "";
  85. code += "public void {0} : Instruction" + Environment.NewLine;
  86. code += "{" + Environment.NewLine;
  87. code += " public {0}()" + Environment.NewLine;
  88. code += " {" + Environment.NewLine;
  89. code += " Mnemonic = \"{0}\"" + Environment.NewLine;
  90. code += " }" + Environment.NewLine;
  91. code += Environment.NewLine;
  92. code += " public override bool Initialize()" + Environment.NewLine;
  93. code += " {" + Environment.NewLine;
  94. code += " Variants = new List<InstructionVariant>()" + Environment.NewLine;
  95. code += " }" + Environment.NewLine;
  96. code += "}" + Environment.NewLine;
  97. return code;
  98. }
  99. /*
  100. using System;
  101. using System.Collections.Generic;
  102. using System.Linq;
  103. using System.Text;
  104. namespace Cosmos.Assembler.X86
  105. {
  106. [OpCode("dec")]
  107. public class Dec : InstructionWithDestinationAndSize
  108. {
  109. aData.EncodingOptions.Add(new InstructionData.InstructionEncodingOption
  110. {
  111. OpCode = new byte[] { 0xFE },
  112. NeedsModRMByte = true,
  113. InitialModRMByteValue = 0xC8,
  114. OperandSizeByte = 0,
  115. ReverseRegisters=true,
  116. DestinationRegAny = true
  117. }); // reg
  118. }
  119. }
  120. */
  121. }
  122. }