iis服务器助手广告
返回顶部
首页 > 资讯 > 前端开发 > html >如何增加KVM中的系统调用API
  • 939
分享到

如何增加KVM中的系统调用API

2024-04-02 19:04:59 939人浏览 薄情痞子
摘要

今天就跟大家聊聊有关如何增加KVM中的系统调用api,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。不同的j2me设备,也有不同的系统调用API以及它

今天就跟大家聊聊有关如何增加KVM中的系统调用api,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

不同的j2me设备,也有不同的系统调用API以及它们的实现,。

J2ME KVM教程之如何增加KVM中的系统调用API  

大家都晓得KVM是不支持Native函数调用的,如果要增加一些系统调用的API,那么只能加到KVM内部。同时,不同的j2me设备,也有不同的系统调用API以及它们的实现。我们从SUN那么下载到原始的KVM源代码,如何为其增加一个系统调用API呢?本文以具体实践的步骤一步一步来讲解增加KVM系统API的方法。

其实为KVM增加一个系统调用API比为linux增加一个系统调用API还简单。大致就分成两步工作就完成。一步是在classes.zip中增加一个你自己新增的class,一步是在KVM的nativeCore.c中实现这个新增的class的nativeapi函数。

下面以org.test.MiniTest这个新增的class为例来实现一个TestInt()系统调用函数。函数的功能很简单,就是返回一个整数9999。

1.新增org.test.MiniTest类

从SUN那里下载到j2me_cldc1.1版本的KVM代码后。在j2me_cldcapi目录下,增加orgestMiniTest.Java的包目录以及java文件。然后写上如下的代码:

packageorg.test;  publicclaSSMiniTest  {  publicstaticnativeintTestInt();  }

2.进行***次编译

根据上一篇文章中的KVM编译方法,在命令提示符下,跳到目录j2me_cldcuildwin32下,输入make命令进行***次整体编译。不过,这次编译过程在编译连接KVM中的*.o文件的时候,会提示一个找到_Java_org_test_MiniTest_TestInt符号的错误提示。

这是因为在我们只是在org.test.MiniTest中定义了这个native函数TestInt,但是并没有在KVM的任何一个c文件中实现其对应的函数。

首先编译过程是用javac来编译j2me_cldc/api里面的所有的*.java文件,然后将其class文件打包成一个classes.zip,然后JCC这个工具会默认根据classes.zip生成ROMJavaWin.c和nativeFunctionTableWin.c。而在ROMJavaWin.c声明这个native函数:

externvoidJava_org_test_MiniTest_TestInt(void);

3.实现Java_org_test_MiniTest_TestInt函数

从KVM中的代码可以看到,KVM默认都是把一些native函数放到了nativeCore.c这个文件里面。你也可以自己去新增一些C程序文件,不过本例就把这个Java_org_test_MiniTest_TestInt放在了nativeCore.c文件。

下面是代码:

voidJava_org_test_MiniTest_TestInt(void)  {  pushStack(9999);  }

这里为什么把返回值使用pushStack这个宏来返回的原因就不好说了,关于JAVA运行的方式其实就是一个堆栈,Java的字节码其实就是一种栈式语言,这个在编译原理里面的中间代码生成那一章可以找到它的原型和其说明。再者,还可以看《InsideJavaVirtualMachine》这本书。

4.第二次编译

第二次编译就是可以生成真正的kvm.exe文件了。还是跟***次编译以及上一篇编译KVM的方法一样,敲入make命令即可。

5.测试MiniTest.TestInt这个API

自己写了一个Test的类,来测试这个API:

importorg.test.*;  classTest{  publicstaticvoidmain(String[]args){  System.out.println("TestResult="+MiniTest.TestInt());  }  }

用javac编译的时候,需要把前面的j2me_cldc/classes.zip拷贝过来,执行:

javac-classpathclasses.zipTest.java   kvm-classpath.Test

看完上述内容,你们对如何增加KVM中的系统调用API有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网html频道,感谢大家的支持。

--结束END--

本文标题: 如何增加KVM中的系统调用API

本文链接: https://www.lsjlt.com/news/86536.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何增加KVM中的系统调用API
    今天就跟大家聊聊有关如何增加KVM中的系统调用API,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。不同的j2me设备,也有不同的系统调用API以及它...
    99+
    2024-04-02
  • Linux系统中如何增加用户
    这篇文章主要介绍Linux系统中如何增加用户,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!useradd或adduser命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。2.格式 useradd...
    99+
    2023-06-28
  • Linux系统如何使用dd增加wap
    这篇文章主要为大家展示了“Linux系统如何使用dd增加wap”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统如何使用dd增加wap”这篇文章吧。使用DD命令 添加4Gswap空间[...
    99+
    2023-06-28
  • 如何使用SAP open connector调用第三方系统的API
    这篇文章主要讲解了“如何使用SAP open connector调用第三方系统的API”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用SAP open connector调用第三方系统...
    99+
    2023-06-04
  • 在Linux系统中如何安装KVM虚拟机
    这篇文章主要介绍“在Linux系统中如何安装KVM虚拟机”,在日常操作中,相信很多人在在Linux系统中如何安装KVM虚拟机问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在Linux系统中如何安装KVM虚拟机...
    99+
    2023-06-10
  • python中API如何调用
    本文小编为大家详细介绍“python中API如何调用”,内容详细,步骤清晰,细节处理妥当,希望这篇“python中API如何调用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。APIAPI:简单来说就是一组协议、一...
    99+
    2023-07-02
  • Python中如何调用API
    在Python中调用API的一种常见方式是使用`requests`库。以下是一个简单的示例,演示如何通过GET请求调用一个API并获...
    99+
    2023-08-28
    python
  • linux系统如何增加swap交换分区
    这篇文章主要介绍了linux系统如何增加swap交换分区,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。linux系统中想要增加swap交换分区,该怎么增加呢?首先点击dock...
    99+
    2023-06-10
  • 如何在调用Marketing Cloud contact创建API时增加对扩展字段的支持
    需求:扩展字段“微信ID”是我创建出来的extension field,我想用Marketing Cloud提供的contact creation API,在创建contact时也能支持这个扩展字段。换言之,我希望在调用contact cr...
    99+
    2023-06-04
  • CentOS如何增加系统回收站功能
    这篇文章将为大家详细讲解有关CentOS如何增加系统回收站功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。linux rm删除文件之后,恢复就比较麻烦了,即使恢复了,文件名格式都变成一串数字了。修改ro...
    99+
    2023-06-10
  • Linux系统中怎么用命令增加用户
    小编今天带大家了解Linux系统中怎么用命令增加用户,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Linux系统中怎么用命令增加用户...
    99+
    2023-06-28
  • Linux系统中的PHP编程:如何使用API?
    PHP是一种广泛使用的服务器端脚本语言,它可以用来开发网站和Web应用程序。在Linux系统中,PHP编程具有很高的灵活性和可定制性,因为它可以通过使用各种API来访问系统和网络资源。本文将介绍一些常用的Linux系统API,以及如何在P...
    99+
    2023-11-08
    编程算法 api linux
  • PHP 中如何使用 Unix 系统的日志 API?
    在 Unix 系统中,日志是一个非常重要的组成部分,可以帮助我们记录系统运行状态、错误信息等重要信息。PHP 中也提供了许多函数和 API 来帮助我们在 Unix 系统中使用日志。 在本文中,我们将介绍如何在 PHP 中使用 Unix 系...
    99+
    2023-08-06
    日志 api unix
  • linux中如何增加用户
    这篇文章主要介绍了linux中如何增加用户,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在linux中,可以使用useradd命令来增加用户,该命令的作用就是新建用户,添加新...
    99+
    2023-06-22
  • Linux系统中如何新增用户命令
    这篇文章主要为大家展示了“Linux系统中如何新增用户命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统中如何新增用户命令”这篇文章吧。1、新建用户及设置密码命令如下:userad...
    99+
    2023-06-28
  • c#如何调用API中的copymemory()函数
    在C#中调用API中的CopyMemory()函数,可以使用DllImport特性来声明API函数,并使用Marshal类中的相关方...
    99+
    2024-02-29
    c#
  • 在Linux系统上如何增加swap交换空间
    本篇文章给大家分享的是有关在Linux系统上如何增加swap交换空间,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在Linux系统中增加服务器swap交换空间大小是为了防止应用...
    99+
    2023-06-28
  • 如何在Linux操作系统中使用Python API接口来增强您的开发效率?
    在如今的软件开发领域中,Python已经成为了最受欢迎的编程语言之一。Python的简洁易懂、易于学习以及强大的库支持,使得Python成为了许多开发者的首选语言。而在Linux操作系统中,Python也是得到了广泛应用。本文将介绍如何在L...
    99+
    2023-10-29
    linux api 接口
  • 如何在Linux系统中使用PHP编写API?
    API(Application Programming Interface)是现代软件开发中不可或缺的一部分,它允许不同的软件系统之间进行通信,实现数据交换和功能调用。在本文中,我们将介绍如何在Linux系统中使用PHP编写API,以帮助...
    99+
    2023-11-08
    编程算法 api linux
  • 如何释放Ubuntu/Linux系统cache增加可用内存空间
    这篇文章主要为大家展示了“如何释放Ubuntu/Linux系统cache增加可用内存空间”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何释放Ubuntu/Linux系统cache增加可用内存空...
    99+
    2023-06-16
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作