gpt4 book ai didi

Java 内联汇编传递变量

转载 作者:行者123 更新时间:2023-11-30 07:43:49 25 4
gpt4 key购买 nike

您好,我正在尝试使用内联汇编编写简单的 java 代码。在asm程序中,我想对java变量进行一些操作,这是我的代码

public class Add {
public static void main(String[] args) {
int a=5;
int b=4;
int c=0;

System.loadLibrary("native");
(new Add()).nativeCode();


}

public native void nativeCode();
}

以及Asm程序

global _Java_Add_nativeCode
section .text
_Java_Add_nativeCode:
mov eax, a
mov ebx, b
add eax,ebx
mov c,eax

我正在尝试像在 C++ 中一样对变量进行操作,但 Nasm 给我一个错误符号“a”未定义等。有没有办法在 ASM 过程中对 java 中声明的变量进行操作?

最佳答案

a 是一个虚拟变量。目前唯一的方法是通过 JNI 在 C 中实现方法调用。我建议您使用 javah 生成 C 代码并从中使用 asm 。注意:这比在 Java 中做同样的事情要慢很多倍(而且要复杂很多倍)

在 Java 9 中,您也许能够使用用户定义的内部函数。这将允许您将程序集添加到 Java 中以使用 Java 目前不使用的指令(如 XMM)。

关于Java 内联汇编传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34234583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com