Tag: thumb

更改函数指针的地址值

我在C中有以下代码: int addInt(int n, int m) { return n + m; } int (*functionPtr)(int, int); functionPtr = &addInt; functionPtr是一个函数指针,它指向函数addInt的特定地址。 我想改变它的1位值,但我无法弄清楚如何。 假设functionPtr在最后一个语句之后指向0xABC0 (假设一个16位地址)。 我想将其值更改为0xABC1 。 我试图将值与0x1进行OR运算,但我猜操作数转换有问题: functionPtr = &addInt | 0x00000001; // addresses are of 32 bits 我知道乱搞指针是有风险的,但我必须更改地址的LSB才能进入ARM Cortex-M4 MCU的Thumb状态。

ARM-C互通

我正在尝试一个简单的ARM-C互通程序。 这是代码: #include #include int Double(int a); extern int Start(void); int main(){ int result=0; printf(“in C main\n”); result=Start(); printf(“result=%d\n”,result); return 0; } int Double(int a) { printf(“inside double func_argument_value=%d\n”,a); return (a*2); } 汇编文件如下 – .syntax unified .cpu cortex-m3 .thumb .align .global Start .global Double .thumb_func Start: mov r10,lr mov r0,#42 bl Double mov lr,r10 mov […]