mirror of
https://github.com/AssetRipper/Cpp2IL.git
synced 2026-11-13 17:07:41 -10:00
109 lines
2.9 KiB
Markdown
109 lines
2.9 KiB
Markdown
# Call Analyzer
|
|
|
|
This processing layer analyzes method instructions for calls to other methods and emits attributes based on that.
|
|
|
|
For this processor, 9 new attributes are injected:
|
|
```cs
|
|
using System;
|
|
namespace Cpp2ILInjected.CallAnalysis;
|
|
|
|
/// <summary>
|
|
/// This method's instructions have been deduplicated by the compiler, and it shares its address with other methods.
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
|
|
public sealed class DeduplicatedMethodAttribute : Attribute
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// This method has no instructions to analyze and is not abstract nor an interface declaration.
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
|
|
public sealed class CallAnalysisNotSupportedAttribute : Attribute
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// This method is called from the method specified.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// This attribute is not emitted if there are a large amount of callers.
|
|
/// </remarks>
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
|
|
public sealed class CalledByAttribute : Attribute
|
|
{
|
|
public object Type;
|
|
|
|
public string Member;
|
|
|
|
public object[] MemberTypeParameters;
|
|
|
|
public object[] MemberParameters;
|
|
|
|
public object ReturnType;
|
|
}
|
|
|
|
/// <summary>
|
|
/// This method calls the method specified.
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
|
|
public sealed class CallsAttribute : Attribute
|
|
{
|
|
public object Type;
|
|
|
|
public string Member;
|
|
|
|
public object[] MemberTypeParameters;
|
|
|
|
public object[] MemberParameters;
|
|
|
|
public object ReturnType;
|
|
}
|
|
|
|
/// <summary>
|
|
/// The number of direct calls to this method.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// This attribute is similar in form and function to the one generated by <see href="https://github.com/knah/Il2CppAssemblyUnhollower">Unhollower</see>.
|
|
/// </remarks>
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
|
|
public sealed class CallerCountAttribute : Attribute
|
|
{
|
|
public int Count;
|
|
}
|
|
|
|
/// <summary>
|
|
/// This method calls at least one deduplicated method.
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
|
|
public sealed class CallsDeduplicatedMethodsAttribute : Attribute
|
|
{
|
|
public int Count;
|
|
}
|
|
|
|
/// <summary>
|
|
/// This method calls at least one unknown method.
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
|
|
public sealed class CallsUnknownMethodsAttribute : Attribute
|
|
{
|
|
public int Count;
|
|
}
|
|
|
|
/// <summary>
|
|
/// This method contains at least one instruction that is invalid.
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
|
|
public sealed class ContainsInvalidInstructionsAttribute : Attribute
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// This method contains at least one instruction that is not implemented.
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
|
|
public sealed class ContainsUnimplementedInstructionsAttribute : Attribute
|
|
{
|
|
}
|
|
```
|