[TOC] STM32 .ld链接文件分析及一次bug解决过程 问题描述 原子板的代码中含有一个关于使用外部SRAM的功能,由于本人的开发板的SRAM只有512K,因此稍微修改了一下代码,同时使用GCC进行编译,但是这里却报错了,源码如下: 这里的 指的是4字节对齐,这是个MDK的用法,换到GCC只 ...
分类:
其他好文 时间:
2019-12-02 00:32:35
阅读次数:
590
EQU 给数字常量取一个符号名,相当于c中的define。 AREA 告诉汇编器汇编一个新的代码段。 SPACE 分配内存空间。 PRESERVE 当前文件堆栈按照8字节对齐。 EXPORT 声明一个标号具有全局属性,可被外部文件使用。 PROC 定义子程序,与ENDP成对使用。 DCD 以字为单位 ...
分类:
其他好文 时间:
2019-11-15 14:11:42
阅读次数:
72
一、字节对齐的规则: 1、一般设置的对齐方式为1,2,4字节对齐方式。结构的首地址必须是结构内最宽类型的整数倍地址;另外,结构体的每一个成员起始地址必须是自身类型大小的整数倍(需要特别注意的是windows下是这样的,但在linux的gcc编译器下最高为4字节对齐),否则在前一类型后补0;这里特别提 ...
分类:
其他好文 时间:
2019-11-13 14:43:14
阅读次数:
62
本文转自:https://www.cnblogs.com/clover-toeic/p/3853132.html 引言 考虑下面的结构体定义: 1 typedef struct{ 2 char c1; 3 short s; 4 char c2; 5 int i; 6 }T_FOO; 假设这个结构体的 ...
分类:
编程语言 时间:
2019-11-10 13:50:43
阅读次数:
79
__asm void xPortPendSVHandler( void ) { extern uxCriticalNesting; extern pxCurrentTCB; extern vTaskSwitchContext; PRESERVE8 //栈的8字节对齐 mrs r0, psp //读取... ...
分类:
其他好文 时间:
2019-10-30 13:15:22
阅读次数:
128
mips 指令集特性 1 没有push pop指令 2 所有指令都是32位,4字节对齐 mips 动态调试 1 IDA ./qemu-mipsel -g 23946 ./xxx IDA 上选择Remote GDB debuffer 2 gdb-multiarch qemu-mipsel -L . - ...
分类:
其他好文 时间:
2019-10-29 23:35:03
阅读次数:
168
ARM的.align 5就是2的5次方对齐,也就是4字节对齐 .macro <name> {<arg_1} {,<arg_2>} … {,<arg_N>} 定义一段名为name的宏,arg_xxx为参数。 必须有对应的.endm结尾。 ldr r1, _rWTCON _rWTCON: .word 0 ...
分类:
系统相关 时间:
2019-10-07 19:14:28
阅读次数:
102
什么是内存对齐 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 为什么要内存对齐 平台原因: 某些硬 ...
分类:
其他好文 时间:
2019-09-29 12:27:07
阅读次数:
84
1、前言 什么是字节对齐呢?现代计算机中的内存空间都是按字节(byte)划分的,从理论上讲似乎任何类型的变量的访问都可以从任何地址开始,但是实际情况是在访问特定变量的时候经常需要在特定的内存地址进行访问,因此,就需要各种类型数据按照一定的规则在空间上排列,而不是顺序地一个接一个地排放,这就是字节对齐 ...
分类:
编程语言 时间:
2019-08-31 19:25:50
阅读次数:
102
1. 按照上面的代码写出来的文件,文件图片打开失败,说文件破损。 后来才发现BMPFILEHEADER_T这个数据接口的内部变量排序,并没有4字节对齐,导致sizeof(BMPFILEHEADER_T)比预想的大! 所以直接用宏设置数据结构的字节对齐方式为:1字节对齐。 ...
分类:
其他好文 时间:
2019-08-18 20:09:55
阅读次数:
79