在Android Studio上使用ARM64-v8a的汇编语言

2023-12-11

我正在使用 Android studio 构建一个 Android 应用程序ARM64-v8a它可以要求装配功能。 在网上查了很多资料,还是无法解决这个问题。

My CMakeList.txt如下:

cmake_minimum_required(VERSION 3.4.1)

enable_language(ASM)
set(can_use_assembler TRUE)
set(CMAKE_VERBOSE_MAKEFILE on)
#add_definitions(-DANDROID -DNDEBUG -DOC_ARM_ASM)

set_source_files_properties(multiple.s PROPERTIES COMPILE_FLAGS "-x 
assembler-with-cpp")

add_library( # Sets the name of the library.
         native-lib

         # Sets the library as a shared library.
         SHARED

         # Provides a relative path to your source file(s).
         src/main/cpp/native-lib.cpp
         src/main/cpp/multiple.s
         )

的代码为multiple.s is as

.session .text
.align  2
.global armFunction
.type   armFunction, %function

armFunction:
    @ Multiply by 10. Input value and return value in r0
    stmfd   sp!, {fp,ip,lr}
    mov r3, r0, asl #3  @ r3=r0<<3=r0*8
    add r0, r3, r0, asl #1  @ r0=r3+r0<<1=r0*8+r0*2=r0*10
    ldmfd   sp!, {fp,ip,lr}
    bx  lr
    .size   armFunction, .-armFunction

代码来自native-lib.cpp如下:

extern "C"

int armFunction(int);

JNIEXPORT jstring JNICALL
Java_com_example_zyf_testarm_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Hello from C++ ";
    int x = 1;
    char info[1024] = "";
    x = x + armFunction(10);

    sprintf(info,"%d",x);
    return env->NewStringUTF(info); //hello.c_str()
}

错误消息是

错误:未知指令 .会话.文本

错误:语句开头出现意外标记 @ 乘以10。在r0中输入值和返回值

这些只是错误消息的一部分。事实上,它表明每条指令multiple.s is unknown.

Update:

有人指出问题可能是case sensitive。所以我尝试使用另一个.S文件名为main_asm.S。 的代码为main_asm.S如下:

.text
.global asm_main
 asm_main:
    mov r0, #1
    bx lr

问题依然存在:

未知指令

Update:

我提出另一个问题问题链接.

我认为这个问题是由同样的原因引起的。也许我的clang是不是工作不好?我不知道,请帮忙:)

非常感谢你帮我解决这个问题:)


bx lr和寄存器r0..r15是 32 位 ARM,而不是 AArch64 / ARM64-v8a。 ARM64 寄存器是 x0..31(它们的低半部分是 w0..31),并且返回ret(别名为br)

确保 64 位构建不会尝试构建 32 位 asm 源文件。
或者,如果您确实有 32 位 asm 源,请确保您只进行 32 位构建。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Android Studio上使用ARM64-v8a的汇编语言 的相关文章

  • 尽管使用了 NTP 偏移量,设备仍会在几秒后启动指令

    背景 我有两台物理设备 一台 Galaxy S3 手机 和一台 Asus 700T 平板电脑 我想在同一时间执行同一组指令 因此 我使用的是 Android 的平台框架 基本 SNTP 客户端代码 https github com andr
  • MS-DOS - 是否可以对 24 位图形进行编程?

    是否可以在 DOS 机器上以 24 位颜色深度进行编程 我知道 VGA 支持 8 位色深 但是有没有办法弄出 24 位色深 谷歌的研究没有发现任何结果 我正在 FreeDOS 而不是 MS DOS 上编程 如果这会影响答案的话 对的 这是可
  • 将 match_parent 转换为“0dp”

    当我使用android layout height match parent or android layout width match parent 作为约束布局中子项的高度 宽度并构建 Gradle 文件 它会自动更改为android
  • Android PDF渲染

    我想在 Android 中渲染 打开 PDF 文件 存储在 SDCard 中 而不使用内置应用程序或查看器 1 我们尝试过MuPDF开源库 但是使用该库进行渲染非常慢 2 我们可以使用iText库在Android中渲染PDF文件 即iTex
  • 在 Android Studio 中实现选项菜单

    如何在 Android 应用程序中实现选项菜单 我尝试了代码安卓开发者 http developer android com guide topics ui menus html但我收到错误 比如这些 必须声明元素菜单 这是我的代码 men
  • 由于 gradle 问题,无法在 Mac 上使用 android studio

    错误 无法使用指定的 Gradle 发行版创建 Tooling API 实现的实例 https services gradle org distributions gradle 2 4 all zip https services grad
  • 构建 FutureBuilder 时抛出 _TypeError(脏,状态:_FutureBuilderState 类型“Null”不是类型“List”的子类型

    我已经处理这个问题很长时间了 我正在尝试解析 JSON 并将其转换为列表视图 我收到响应正文 它也被转换为列表 但它向未来的构建器发送 null 我收到此错误 小部件库捕获的异常 构建 FutureBuilder dirty state F
  • Android Studio 组件不显示并且应用程序不运行

    我是 Android Studio 的新手 想知道为什么它对我不起作用 基本上 我刚刚开始学习 Android Studio 观看在线课程 所以我只是做与讲师在视频中所做的相同的事情 但结果却永远不会相同 首先我想让你知道我没有碰任何东西
  • 如何在 MOS 6502 的 asm 中创建延迟

    我是 ASM 新手 我正在尝试研究如何为以下代码创建延迟 org 1000 loop inc d021 jmp loop 我想评论已经足够清楚了 每帧更改颜色的代码示例 1 50 秒 sei enable interrupts loop1
  • 尝试理解 printf() 的 gcc 汇编输出

    我正在尝试学习如何理解汇编代码 因此我一直在研究 GCC 的汇编输出以获取一些愚蠢的程序 其中之一只不过是int i 0 我现在或多或少完全理解了其中的代码 最大的困难是理解散布的 GAS 指令 无论如何 我向前迈了一步并添加了printf
  • 是否可以从 .apk 文件获取 Android.mk 或本机源文件?

    看来从 apk文件中获取Java源文件是很容易的 但是否有可能得到Android mk or native通过工具或棘手的方法从 apk 文件中获取源文件 我正在研究 Android 应用程序本机代码安全性 因此这些文件对我来说非常重要 谢
  • 为什么此 NASM 代码会打印我的环境变量?

    本学期我刚刚完成计算机体系结构课程 除其他外 我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它 今天 出于好奇 我开始在我的 Ubuntu 机器上摆弄 NASM 基本上只是将教程中的内容拼凑起来 并感受一下 NASM 与 MIP
  • _addcarry_u64 和 _addcarryx_u64 与 MSVC 和 ICC

    MSVC 和 ICC 都支持内在函数 addcarry u64 and addcarryx u64 根据英特尔的内在指南 https software intel com sites landingpage IntrinsicsGuide
  • 内存映射图形输出

    我正在探索使用内存映射图形绘制像素和线条 我在 Windows 的 Textpad 中使用 TASM 当我单击 运行 时 整个屏幕变成蓝色 就是这样 没有绘制像素 model small stack data saveMode db xVa
  • Gradle 构建无法解析生成的类

    我刚刚将 Android Studio 从 1 5 更新到 2 2 1 Gradle 也是如此 我有一个项目 它使用注释处理器框架 由我制作 来执行类似 Dagger 的依赖注入 这在更新之前工作得很好 但现在 Gradle 无法解析生成的
  • 原因:打开 zip 文件时出错(android-studio)

    当我创建一个新项目时 我完成这些步骤并单击 完成 并等待项目打开 但我看到一个错误 我无法解决这个问题 我的安装和问题详细信息 我在使用以下命令将 github 项目导入 Android Studio 后遇到了这个问题File gt Imp
  • Android studio 找不到 Theme.AppCompat.Light.DarkActionBar [重复]

    这个问题在这里已经有答案了 我已经导入了一个Android Studio项目来自Github into Android Studio 虽然我的build gradle有dependencies dependencies compile fi
  • 查找用户输入中的第一个和最后一个大写字母

    输入将从 a z 或 A Z 中获取 并且输入以星号结束 我们需要将输入字符的第一个和最后一个大写字母作为输出 另外 我们应该显示每次输入的内容 注意 我们逐个字符地获取输入 而不是作为字符串 测试用例1 输入 aAbCcP 输出 AP 测
  • Android Studio/Gradle 测试文件夹命名约定

    我看过很多在 Android Studio Gradle 项目上进行测试的教程和帮助项目 我很好奇测试文件夹的命名约定 我见过两个类似的命名 test and androidTest 有什么真正的区别吗 IDE Gradle 框架是否以不同
  • Android studio - 如何查找哪个库正在使用危险权限?

    我正在尝试将 apk 上传到 google play 商店 但令我惊讶的是 我正在使用以下权限 Your APK is using permissions that require a privacy policy android perm

随机推荐

  • WP7 - 列表框绑定

    我有一个 ObservableCollection 我想将其绑定到我的列表框 lbRosterList ItemsSource App ViewModel rosterItemsCollection 但是 在该集合中我还有另一个集合 Dat
  • [[: 找不到命令

    我正在没有 sudo 权限的系统上安装 RVM 理论上它应该工作得很好 但是当我添加时 s HOME rvm scripts rvm source HOME rvm scripts rvm 到 bash profile 它没有做它应该做的事
  • 检查项目后会触发哪个 CheckedListBox 事件?

    我有一个 CheckedListBox 我想要一个事件after检查一个项目 以便我可以将 CheckedItems 与新状态一起使用 由于 ItemChecked 在 CheckedItems 更新之前被触发 因此它无法开箱即用 当 Ch
  • 替换功能不替换[重复]

    这个问题在这里已经有答案了 我按照一些文档使用 JavaScript 替换函数 但它没有改变任何内容 不会抛出任何错误 知道我做错了什么吗 该变量是从 XML 中检索的 也许需要将其转换为字符串或其他内容 for var i 0 iln p
  • 通过 jQuery 在 YouTube 嵌入电影中启用自动播放

    我使用以下代码嵌入 YouTube 电影 正如您在 src 属性中看到的 有一个变量 autoplay 0 我在 jQuery 中编写了两行脚本 应将 autoplay 变量设置为 1 var title iframe ytplayer a
  • 在VBA中处理大数

    如何在VBA中处理10E22这样的非常大的数字 dim a b c as double a 1234567890123456789012 c a bit b a c 1 bit 我得到 b 0 按照建议 我改变dim a as double
  • 这是 JSON.NET 或实体框架中的错误,还是我在尝试使用 JSON.NET 序列化异常列表时做错了什么?

    尝试序列化一组错误时出现此错误 ISerialized 类型 System Data Entity Infrastruct DbUpdateConcurrencyException 没有有效的构造函数 要正确实现 ISerialized 应
  • 调用 getBluetoothService() 时没有使用 BluetoothManagerCallback

    我是安卓开发新手 我正在编写一个应用程序 它从笔记本电脑的蓝牙终端接收字符串 打开连接时 执行以下行时 我收到错误 连接被拒绝 socket connect 我尝试检查 connect 方法中发生了什么 在这里我发现 Android Stu
  • 替换为 preg_replace 中的动态变量

    我陷入了这个问题 即 我有一个像这样的数组 array name gt John email gt email protected 和这样的字符串样本 string Hi name your email is email 问题很明显 将名称
  • 无法使用接口默认方法

    我已经安装了新版本的 Visual Studio 并将项目设置为 C 8 当我尝试使用如下所示的新界面功能时 它说我无法在界面中实现 这似乎不知何故我无法使用新功能 谁能解释一下为什么 它仍然没有包含在 2019 年预览中吗 interfa
  • 使用 htaccess 将所有内容重定向到 index.php

    我正在编写一个简单的基于 PHP 的 MVC 框架 我希望这个框架能够安装在任何目录中 我的 PHP 脚本获取请求 uri 并将其分成多个段 它使段 1 成为控制器 使段 2 成为动作 当我这样做时一切都很好 http www exampl
  • 使用dom java解析xml

    我有以下 xml
  • 如何从 wpf 中的方法调用返回格式化文本

    我正在开发一个插件界面 我希望有一种方法可以返回格式化文本 以便 WPF 控件可以只显示插件结果 返回该文本的最佳方式是什么 这样我只需要将插件结果分配给 WPF 文本控件 可能是 RichTextBox 或类似的东西 我想支持粗体 下划线
  • UIEdgeInsets 在 UIGraphicsBeginImageContextWithOptions 内的 CGContextDrawImage 上被忽略

    当绘制到屏幕外缓冲区时 我很难让图像插图正常工作 在 UIImage 上使用 ressizedImageWithCapInsets 直接 setImage 到按钮中对我来说效果很好 UIImage base UIImage imageNam
  • 如何启用模式验证以便 JAXB 拒绝空元素?

    我遇到了一个棘手的 JAXB 解析问题 我正在使用 JAXB RI 2 x 我已经使用 unmarshaller setSchema schema 启用了架构验证 但是 如果 XML 包含空元素 JAXB 不会抛出任何验证错误 所以客户很乐
  • 使用 pandas 的 if 语句会抛出“ValueError:系列的真值不明确”

    我想查看我的数据框中是否存在某一列的特定字符串 如果存在则触发 API 到目前为止的代码 if new df col1 str contains string True POST REQUEST elif new df col2 str c
  • 不同级别的缓存是否运行在同一频域?

    较大的高速缓存通常具有较长的位线或字线 因此很可能具有较高的访问延迟和周期时间 那么 L2 缓存是否与 L1 缓存在同一域中工作 L3 缓存 切片 怎么样 因为它们现在是非包容性的并且在所有核心之间共享 相关问题有 一个内核中的所有功能单元
  • 如何将这些坐标转换为谷歌地图可读坐标?

    我需要将坐标转换为以下形式 N42 53 9 W072 16 2 变成像下面这样的东西 90 7311 0 346944 一个 php 函数将不胜感激 或者只是一个公式也足够了 我找到了一个在线JS计算器 and a PHP解决方案
  • Oracle SQL - 根据外键查询 2 个表

    我有 2 个表 我想进行一个查询并根据它们的外键对它们进行分组 这是一个例子 部门 DEPART ID PK DEPART NAME 1 Accounting 2 IT 雇员 EMP ID PK NAME SURNAME DEPART ID
  • 在Android Studio上使用ARM64-v8a的汇编语言

    我正在使用 Android studio 构建一个 Android 应用程序ARM64 v8a它可以要求装配功能 在网上查了很多资料 还是无法解决这个问题 My CMakeList txt如下 cmake minimum required