添加debug,每个线程都维护一个jump帧

This commit is contained in:
ranchuan
2024-06-21 15:20:47 +08:00
parent 9ac75c09ac
commit 474a58e53d
10 changed files with 329 additions and 47 deletions

34
make.py
View File

@@ -28,17 +28,19 @@ CSRC = []
CINC = ['-Isoft']
CDEF = ["-DTEST"]
CDEF = ["-DTEST","-DLINUX"]
ASRC = []
BUILD_DIR = 'build'
TARGET = 'hello'
TARGET = 'hello.exe'
# CFLAG = ["-Wall -pedantic -specs=nano.specs -mcpu=cortex-m3 -mthumb -lc -lm -lnosys -Og -Tstm32_boot.ld",
# f"-Wl,-Map={BUILD_DIR}/{TARGET}.map,--cref -Wl,--gc-sections"]
CFLAG = ["-Wall -pedantic -g"]
# -pedantic <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ISO<53><EFBFBD><EFB7A8><EFBFBD><EFBFBD>
CFLAG = ["-Wall -g"]
# <20>ҵ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>׺<EFBFBD><D7BA><EFBFBD>ļ<EFBFBD>
def find_type(path:str,fix:list[str]):
@@ -82,6 +84,7 @@ def tran_path(path:str):
# <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
def check_rebuild(dst:str,src:list[str]):
# print(f"src:{src}")
if(not os.path.exists(dst)):
return True
dst_time=os.path.getmtime(dst)
@@ -91,6 +94,9 @@ def check_rebuild(dst:str,src:list[str]):
src_time.sort()
if(src_time[-1]>dst_time):
return True
# for item in src_time:
# if(item>dst_time):
# return True
return False
@@ -98,7 +104,14 @@ def check_rebuild(dst:str,src:list[str]):
# <20><>ȡ.d<>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD>
def read_depend_files(name:str):
with open(name) as f:
t=f.readline()
lines=f.readlines()
t=''
for line in lines:
line=line.strip()
if(line[-1]=='\\'):
t+=line[:-1]
else:
t+=line
t=t.split(':')[-1].strip()
t=t.split(' ')
# print(f"<22><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>{t}")
@@ -118,7 +131,8 @@ def build_depend(src:list[str]):
ret=os.system(cmd)
if(ret):
exit()
else:
print(f"{i} û<>и<EFBFBD><D0B8><EFBFBD>Դ<EFBFBD>ļ<EFBFBD>")
# <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC>ļ<EFBFBD>
def build_object(src:list[str]):
@@ -135,9 +149,13 @@ def build_object(src:list[str]):
cd=os.path.join(BUILD_DIR,cd)
if(check_rebuild(dst,read_depend_files(cd))):
cmd=f"{CC} -c {i} -o {dst} {flags}"
else:
print(f"{i} û<>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ")
elif(file_type in ['s','S','asm','ASM']):
if(check_rebuild(dst,[i])):
cmd=f"{AS} -c {i} -o {dst} {flags}"
else:
print(f"{i} û<>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ")
if(len(cmd)>0):
print(cmd)
ret=os.system(cmd)
@@ -160,13 +178,13 @@ def build_target(src:list[str]):
if(ret):
exit()
else:
print("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD>Ŀ<EFBFBD><EFBFBD>")
print(f"{dst} û<>и<EFBFBD><EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>")
def main():
global CSRC
global ASRC
CSRC+=find_type('./',['c','C'])
CSRC+=find_type('.\\',['c','C'])
# ASRC+=find_type('./',['s','S','asm','ASM'])
if(not os.path.exists(BUILD_DIR)):
@@ -176,7 +194,7 @@ def main():
build_depend(CSRC)
print("<EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>")
build_object(CSRC)
build_object(ASRC)
# build_object(ASRC)
print("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>")
build_target(CSRC+ASRC)
# os.system(f"{HEX} {BUILD_DIR}/{TARGET} {BUILD_DIR}/{TARGET}.hex")