1、方法一

要对绝对地址0x100000赋值,我们可以用

(unsigned int  * ) 0x100000 = 1234;

那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?

*((void (*)( ))0x100000 ) ( );

首先要将0x100000强制转换成函数指针,即:

(void (*)())0x100000

然后再调用它:

*((void (*)())0x100000)();

用typedef可以看得更直观些:

typedef void(*)() voidFuncPtr;

*((voidFuncPtr)0x100000)();

又如

如果用 C 语言,可以像下列示例代码这样来调用内核:

void (*theKernel)(int zero, int arch, u32 params_addr)

= (void (*)(int, int, u32))KERNEL_RAM_BASE;

……

theKernel(0, ARCH_NUMBER, (u32) kernel_params_start);

KERNEL_RAM_BASE 是内核在系统内存中的第一条指令的地址。

2、方法二

C语言使用函数指针跳转到程序固定地址(0x8000)执行程序的方法

使用函数指针,把一个纯数据强制转换为函数指针类型。

int main(void)

{

void (* my_function)(void);

//int *my_address = 0x8000;

my_function =(void (*)())(0x8000);

my_function();

}

其实更简单,不适用中间变量,直接一步到位:

(*(void(*)())0x8000)();

---------------------

java跨函数跳转_C语言中将绝对地址转换为函数指针以及跳转到内存指定位置处执行的技巧...相关推荐

  1. C语言中将绝对地址转换为函数指针以及跳转到内存指定位置处执行的技巧

    要对绝对地址0x100000赋值,我们可以用       (unsigned int  * ) 0x100000 = 1234;       那么要是想让程序跳转到绝对地址是0x100000去执行,应 ...

  2. C语言中将数字转换为字符串的方法

    C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转换为字符串的一个例子: # include <stdio. h> # ...

  3. R语言ggplot2包和ggtext包在可视化图像中的指定位置添加文本框(横向文本框、竖向文本框)

    R语言ggplot2包和ggtext包在可视化图像中的指定位置添加文本框(横向文本框.竖向文本框) 目录

  4. c语言插入特定的字符串,C语言实现:将一个字符串插入到另一个字符串的指定位置...

    C语言实现:将一个字符串插入到另一个字符串的指定位置 发布时间:2018-08-22 13:23, 浏览次数:1672 示例一: char *insert(char *s1, char *s2, in ...

  5. 【指针编程】 编写一个函数,利用指针在字符串s中的指定位置pos处(这里插入的位置是从1开始,不是下标。)插入字符串。插入的位置和内容是从键盘输入

    [问题描述] 编写一个函数,利用指针在字符串s中的指定位置pos处(这里插入的位置是从1开始,不是下标)插入字符串.插入的位置和内容是从键盘输入 要求:子函数 void InsertStr(char ...

  6. java文档注释定界符_c语言的注释定界符详解

    c语言的注释定界符详解 c语言的注释定界符是什么 1.最早期的C语言注释是:/* */ 2.后来又增加的行注释:// 其中/**/是多行注释,//是单行注释. 需要注意的是:C 语言的注释并不是可以出 ...

  7. c语言程序 中断函数示例,单片机_C语言函数_中断函数(中断服务程序)

    c语言中的中断函数注意事项 单片机_C语言函数_中断函数(中断服务程序) 在开始写中断函数之前,我们来一起回顾一下,单片机的中断系统. 中断的意思(学习过微机原理与接口技术的同学,没学过单片机,也应该 ...

  8. keil lib 只调用自己的函数_C语言学习篇(28)——函数库

    引言 我们在编写代码时,常常会写一个.c源文件和与之对应的.h文件(例如a.c和a.h),并在源文件.c中定义(具体实现)一些函数,在.h文件中声明, 这样我们就可以在其他源文件中包含该头文件,来调用 ...

  9. c语言prime函数怎么用_C语言教程_v20201106

    编程基础 1.1    通俗地理解什么是编程语言 1.2    C语言究竟是一门怎样的语言? 1.6    初中毕业能学会编程吗? 1.7    C和C++到底有什么关系? 1.8    学了 C 语 ...

最新文章

  1. BeanPostProcessor —— 连接Spring IOC和AOP的桥梁
  2. js中的attribute详解
  3. vue 如何生成一个dom元素_vue 学习心得——DOM树如何被构建
  4. 大数据实践的 6 个阶段
  5. silverlight导出excel
  6. php 5.6连接sqlserver,wamp php5.6连接sqlserver
  7. 微信小程序开发问题汇总
  8. android短信模板,短信服务 · Android – Bmob后端云
  9. 如何复制出计算机缓存中的歌曲,怎么把哔哩哔哩里缓存的视频中的音频单独提取出来。...
  10. CSS样式div和img居中
  11. DTL 模板 for
  12. 【JavaEE】网络编程基础之Socket套接字
  13. UCK将信任建立在安全之上 让生态价值源远流长
  14. 三种实现分布式锁的方式
  15. Windows定时自动执行bat脚本命令
  16. 我为什么喜欢周六来加班?
  17. Java多线程进阶面试-Atomic 原子类
  18. 人力资源管理的新形式
  19. 如何将Word文件批量转换成PDF
  20. 基于javaSteam游戏平台系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

热门文章

  1. 【Sql Server】DateBase-子查询
  2. Jquery实现form表单回填数据
  3. Transformer的PyTorch实现
  4. Pytorch实现MNIST(附SGD、Adam、AdaBound不同优化器下的训练比较) adabound实现
  5. OpenMP用法大全
  6. MindSpore特性支持类
  7. Python 应用领域以及版本之间的区别
  8. 3D-camera结构光原理
  9. 【注意事项】论文/申报书格式
  10. MySQL新建数据库+用Navicat查看MySQL的方法