/*
* Copyright (c) 2013-2017 Chris Newland.
* Licensed under https://github.com/AdoptOpenJDK/jitwatch/blob/master/LICENSE-BSD
* Instructions: https://github.com/AdoptOpenJDK/jitwatch/wiki
*/
package org.adoptopenjdk.jitwatch.model.assembly;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.S_HEX_POSTFIX;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.S_HEX_PREFIX;
import org.adoptopenjdk.jitwatch.model.assembly.arm.AssemblyParserARM;
import org.adoptopenjdk.jitwatch.model.assembly.x86.AssemblyParserX86;
public final class AssemblyUtil
{
private AssemblyUtil()
{
}
public static long getValueFromAddress(final String address)
{
long addressValue = 0;
if (address != null)
{
String trimmedAddress = address.trim();
if (trimmedAddress.startsWith(S_HEX_PREFIX))
{
trimmedAddress = trimmedAddress.substring(S_HEX_PREFIX.length());
}
if (trimmedAddress.endsWith(S_HEX_POSTFIX))
{
trimmedAddress = trimmedAddress.substring(0, trimmedAddress.length() - 1);
}
addressValue = Long.parseLong(trimmedAddress, 16);
}
return addressValue;
}
public static IAssemblyParser getParserForArchitecture(Architecture architecture)
{
IAssemblyParser parser = null;
if (architecture != null)
{
switch (architecture)
{
case ARM_32:
case ARM_64:
parser = new AssemblyParserARM(architecture);
break;
case X86_32:
case X86_64:
parser = new AssemblyParserX86(architecture);
break;
default:
break;
}
}
return parser;
}
}