3
87
283
中级技术员
#include <stdint.h> #include <stdlib.h> struct test_t { void (*func)(void *); void *param; }; static uint8_t buffer[10]; static uint8_t i; void *p1, *p2; void inc(void *param) { uint8_t *num = param; if(param == NULL) { return; } (*num)++; } int main(void) { struct test_t *test = (struct test_t *)&buffer[1]; p1 = (void *)&test->func; p2 = (void *)&test->param; test->func = inc; test->param = (void *)&i; if( test->func != NULL && test->param != NULL ) { test->func(test->param); } while(1) { } }
使用特权
struct test_t { void (*func)(void); }; void inc(void) { uint32_t num; num++; }
5~M4`@BY92Q_)F{DM)IK7.png (17.11 KB )
下载附件
2017-4-12 10:07 上传
内存地址
if( test->func != NULL && test->param != NULL ) { test->func(test->param); }
if( test->func != NULL && test->param != NULL ) { test->func((void *)&i); }
static uint8_t buffer2[10]; if( test->func != NULL && test->param != NULL ) { test->func((void *)&buffer2[1]); }
R1GYMY~CDLK@2]Z4JFR~Z4F.png (119.63 KB )
2017-4-12 10:19 上传
LDRD r1,r0,[r4,#0]
%7Y11HN{SZKT{US6A6OTI3A.png (16.34 KB )
2017-4-12 10:32 上传
汇编
X$U(JD2GOBY%TYASVKCGNR5.png (109.58 KB )
2017-4-12 10:52 上传
LDRD指令
812
2507
初级工程师
TXALPU3{RK45~G}B8$KCMVF.png (75.97 KB )
2017-4-12 11:10 上传
hardfault寄存器
8{($DDVDBXKKAJNU~4RSJQ5.png (1.61 KB )
2017-4-12 11:11 上传
hardfault寄存器值
feelhyq 发表于 2017-4-12 11:03 我刚才分析了半天,也弄不清楚,只是感觉 struct test_t *test = (struct test_t *)&buffer[1] 这个赋值非 ...
struct test_t *test = (struct test_t *)&buffer[1]
19$UKOMM4W2OY4@4(4@HYHP.png (73.08 KB )
2017-4-12 11:23 上传
MemManage状态寄存器
BY0GC$)GTR4GH[V$W4(_A07.png (83.5 KB )
BusFault状态寄存器
4(G~@C7}L{FH$FIJ3D@LAX4.png (134.66 KB )
2017-4-12 11:24 上传
UsageFault状态寄存器
]IOV4_L56$F2C8%[NX]JF6G.png (1.58 KB )
MemManage状态寄存器值
~GD{%_2A}3_UPM4W`W2NLOX.png (86.27 KB )
2017-4-12 11:31 上传
寄存器介绍
RP)Q1@@@[~Y~A0K`K`(Z[C2.png (1.46 KB )
寄存器值
yearnext 发表于 2017-4-12 10:57 于是需要对ldrd指令做一些了解,入下图所示: 可以等效为
6Y27D@R4~~8MG685(PUUCRO.png (5.39 KB )
2017-4-12 12:35 上传
1.png (193.67 KB )
2017-4-12 12:41 上传
yearnext 发表于 2017-4-12 12:42 有看到介绍是这样的
yearnext 发表于 2017-4-12 12:43 不知道是否能解释产生此现象的原因
L0W[_)`LXX$K@`YYH$GW}$U.png (29.75 KB )
2017-4-12 12:53 上传
1120
1万
5万
版主
发表回复 本版积分规则 回帖后跳转到最后一页
人才类勋章
等级类勋章
发帖类勋章
时间类勋章
1
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号