tubie 发表于 2009-1-2 20:34

keil下如何在C语言代码中改变程序指针PC的内容?

computer00 发表于 2009-1-2 20:44

执行下一条命令,PC内容自然就改变了...

db10 发表于 2009-1-2 20:48

00 说的很对 呵呵

C里引用下汇编。

tubie 发表于 2009-1-2 21:30

用在线汇编不行啊

比如<br /><br />__asm<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LD&nbsp;PC,&nbsp;=&nbsp;XXXXX<br />}<br /><br />编译都无法通过,说PC未定义。

山寨MDK 发表于 2009-1-3 11:38

有三种方法你可以尝试一下

第一种,使用R15&nbsp;eg:&nbsp;<br />&ltpre&gt<br />&nbsp;__asm&nbsp;void&nbsp;jing()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;R15,&nbsp;=&nbsp;0x2000;<br />}<br />&lt/pre&gt<br />第二种方法,把PC的指针改变定义到汇编文件中,通过C去调用改汇编文件<br />第三种,编写调试*.ini文件,将要改变PC的值写一个调试函数Func然后在需要的地方调用这个Func函数。

decoder8 发表于 2009-1-3 12:25

楼主是指程序的绝对定位?

AV693 发表于 2009-1-3 14:08

汇编下,先把地址压到栈中,然后执行RET指令

computer00 发表于 2009-1-3 14:36

楼主你到底想干啥?直接强制转化为函数调用

((void(*)(void))地址)();

db10 发表于 2009-1-4 23:47

LZ不出来逗了。。。

high 发表于 2009-1-5 03:24

r15不行。ADS也不支持。

改变pc是为了跳转。估计主要是用在mmu开启关闭之际的跳转<br /><br />一般都在asm部分实现。非得在c调用的话,用asm做成一个函数给c调用。

tubie 发表于 2009-1-22 22:04

我是楼主

不知道楼上几位什么意思?什么地方逗了?<br />

drzhu 发表于 2019-2-19 10:41

不知道实现了没有?
页: [1]
查看完整版本: keil下如何在C语言代码中改变程序指针PC的内容?