对LOAD_START,LOAD_END, RUN_START汇编伪指令的理解

转自:http://blog.sina.com.cn/s/blog_9e358f6d0102v5g8.html


在TI给的28335例程Example_2833xCodeRunFromXintf中,这个例子的目的是将定时器0和定时器1的中断服务函数的代码从SARAM的L1区搬运到外扩SRAM(ZONE7)上运行,28335有3个定时器Timer0,Timer1,Timer2,其中只有Timer0经过PIE,其他两个定时器中断直接与CPU相连,如下图对LOAD_START,LOAD_END, <wbr>RUN_START汇编伪指令的理解

程序中将Timer0和Timer1的中断服务函数的代码搬运到外扩的SRAM上运行,Timer3的中断服务函数依然在片上SARAM上运行,Timer3作为比较,看看Timer0和Timer1的中断服务函数是否在外扩SRAM上运行正常。在程序的CMD链接文件中有如下的代码:

 xintffuncs      : LOAD = RAML1,
                     RUN = ZONE7A,
                     LOAD_START(_XintffuncsLoadStart),
                     LOAD_END(_XintffuncsLoadEnd),
                     RUN_START(_XintffuncsRunStart),
                     PAGE = 0

 

经过调试,LOAD_START()的作用就是获得段xintffuncs的起始地址,并把这个起始地址赋给XintffuncsLoadStart这个符号,这么说其实不是太准确,准确的说就是在段xintffuncs的起始地址处添加一个标号XintffuncsLoadStart(由于C语言和汇编之间的调用规则,_XintffuncsLoadStart是汇编中定义的变量,若在C语言中引用则是XintffuncsLoadStart),这我们下面是我们从程序空间观察得到的结果 对LOAD_START,LOAD_END, <wbr>RUN_START汇编伪指令的理解
0x200000正好是xintffuncs段的起始地址(因为没有别的段被连接到ZONE7A里) 对LOAD_START,LOAD_END, <wbr>RUN_START汇编伪指令的理解

对LOAD_START,LOAD_END, <wbr>RUN_START汇编伪指令的理解

这里需要主要一个问题LOAD =RAML1表示加载地址是RAML1(SARAM的L1区),由于链接到RAML1区的不止一个段,所以直到0x00970A我们才找到XintffuncsLoadStart和XintffuncsLoadEnd(RAML1区的起始地址是0x009000)对LOAD_START,LOAD_END, <wbr>RUN_START汇编伪指令的理解


  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用openpyxl库中的load_workbook函数对Excel表格进行升序排序的示例代码: ```python from openpyxl import load_workbook from openpyxl.utils import get_column_letter from openpyxl.worksheet.table import Table, TableStyleInfo # 打开Excel文件 wb = load_workbook(filename='example.xlsx') # 选择工作表 ws = wb['Sheet1'] # 获取表格的维度 min_col, min_row, max_col, max_row = ws.dimensions # 获取表格的标题行 header_row = ws[1] # 将标题行中的列名存储到列表中 columns = [cell.value for cell in header_row] # 获取表格数据,存储到列表中 data = [] for row in ws.iter_rows(min_row=min_row+1, max_row=max_row, min_col=min_col, max_col=max_col): row_data = {} for col, cell in zip(columns, row): row_data[col] = cell.value data.append(row_data) # 对数据进行升序排序,以第一列为关键字 sorted_data = sorted(data, key=lambda x: x[columns[0]]) # 将排序后的数据写回到工作表中 for i, row_data in enumerate(sorted_data, start=min_row+1): for j, col in enumerate(columns): cell = ws.cell(row=i, column=j+1, value=row_data[col]) # 将表格转换为Excel表格 table = Table(displayName="Table1", ref=f"{get_column_letter(min_col)}{min_row}:{get_column_letter(max_col)}{max_row}") style = TableStyleInfo(name="TableStyleMedium9", showFirstColumn=False, showLastColumn=False, showRowStripes=True, showColumnStripes=False) table.tableStyleInfo = style ws.add_table(table) # 保存Excel文件 wb.save('example.xlsx') ``` 该代码将打开名为“example.xlsx”的Excel文件,选择名为“Sheet1”的工作表,获取表格的维度、标题行和数据,对数据进行升序排序,并将排序后的数据写回到工作表中。最后,将表格转换为Excel表格,并保存Excel文件。请注意,该代码仅对第一列进行排序,您可以根据需要修改排序关键字。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值