mirror of https://github.com/n64decomp/mk64.git
63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
# usr/bin/python3
|
|
|
|
def process_map_file(map_file_path):
|
|
result = (
|
|
"# Memory Addresses\n"
|
|
"This page displays the memory addresses of variables in the project.\n"
|
|
"\n"
|
|
"## Memory Addresses\n"
|
|
"The following table shows the memory addresses of important variables:\n"
|
|
"Variable Name | Memory Address\n"
|
|
"--------------|---------------\n"
|
|
)
|
|
|
|
with open(map_file_path, 'r') as file:
|
|
for line in file:
|
|
# Check if the line starts with a memory address (e.g., 0x)
|
|
if line.strip().startswith("0x"):
|
|
# Split the line into tokens
|
|
tokens = line.split()
|
|
|
|
# Ensure there are enough tokens to extract address and function name
|
|
if len(tokens) >= 2:
|
|
address = f"0x{int(tokens[0][2:].upper(), base=16):08X}"
|
|
|
|
if int(address, 16) == 0:
|
|
continue
|
|
|
|
function_name = tokens[-1]
|
|
|
|
if function_name.startswith("L8"): # Ignore local labels
|
|
continue
|
|
if function_name.startswith("jpt_"):
|
|
continue
|
|
if function_name.startswith("0x"):
|
|
continue
|
|
if function_name.startswith("("):
|
|
continue
|
|
if function_name.startswith("__"):
|
|
continue
|
|
|
|
# Format the information into the Doxygen style
|
|
result += f"[{function_name}](@ref {function_name}) | {address}\n"
|
|
|
|
result += (
|
|
"\n"
|
|
"Note: This information is generated during the compilation process.\n"
|
|
"\n"
|
|
)
|
|
|
|
return result
|
|
|
|
|
|
if __name__ == "__main__":
|
|
map_file_path = "build/us/mk64.us.map"
|
|
doxygen_formatted_content = process_map_file(map_file_path)
|
|
|
|
# Specify the output file path
|
|
output_file_path = "docs/doxygen_syms.md"
|
|
|
|
# Write the result to the output file
|
|
with open(output_file_path, 'w') as output_file:
|
|
output_file.write(doxygen_formatted_content)
|