汇编与C/C++/Objective-C混用,分两种类型:外联汇编、内联汇编。
LLDB的一些常用指令可以协助我们更好的读取分析OC反编译,看懂汇编代码。

1、外联汇编

sum.h 声明:

#ifndef sum_h
#define sum_hint sum(int a, int b);#endif /* sum_h */

sum.s 实现:

.global _sum_sum:movq %rdi, %raxaddq %rsi, %raxretq

main.m 调用:

#import <Foundation/Foundation.h>
#import "sum.h"
int main(int argc, const char * argv[]) {@autoreleasepool {NSLog(@"%d", sum(1, 2));}return 0;
}

2、内联汇编

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {@autoreleasepool {int num1 = 1;int num2 = 2;int result;__asm__("addq %%rbx, %%rax": "=a"(result): "a"(num1), "b"(num2));NSLog(@"%d", result);}return 0;
}

LLDB常用指令

1.1、读取寄存器的值

register read/格式
register read/x

1.2、修改寄存器的值

register write 寄存器名称 数值
register write $rax 0

2.1、读取内存中的值

x/数量-格式-字节大小 内存地址
x/3xw 0x0000010

2.2、修改内存中的值

memory write 内存地址 数值
memory write 0x0000010 10

3.1、格式

x是16进制,f是浮点,d是十进制

3.2、字节大小

b – byte 1字节
h – half word 2字节
w – word 4字节
g – giant word 8字节

4、expression 表达式

可以简写:expr 表达式
expression $rax
expression $rax = 1

5、po 表达式
6、print 表达式

7、po/x r a x 8 、 p o ( i n t ) rax 8、po (int) rax8、po(int)rax

汇编:汇编与C派系语言混用以及对应LLDB常用指令相关推荐

  1. c语言汇编混合编程方法,C语言和汇编语言混合编程方法

    摘要: C语言是一种高级的面向过程的开发语言,汇编语言是一种低级的面向机器的编程语言.两者在程序设计开发方面各有优劣,目前两者的混合编程得到了广泛的应用.本文通过具体的实例,说明了混合编程的基本方法, ...

  2. bcs转10 c语言,小弟刚学习C语言,怎么把下段汇编代码转化为C语言程序,请高手指教!!!单片机89c52...

    已结贴√ 问题点数:20 回复次数:3 小弟刚学习C语言,怎么把下段汇编代码转化为C语言程序,请高手指教!!!单片机89c52 BIT_COUNT     DATA 07FH TIMER0       ...

  3. cortex-A7 ARM 汇编常用指令 终极总结

    1.处理器内部常用数据传输指令 MOV R0  R1    // 通用寄存器互传 MRS R0 CPSR   // 特殊寄存器 向 通用寄存器传 MSR CPSR R1   // 通用寄存器 向 特殊 ...

  4. ARM汇编:汇编中proc、endp、ret、near、far指令用法

    ARM汇编:汇编中proc.endp.ret.near.far指令用法 子程序名 PROC NEAR ( 或 FAR ) -- ret 子程序名 ENDP (1)NEAR属性(段内近调用): 调用程序 ...

  5. 80×86汇编常用指令

    80×86汇编常用指令 一.数据传送指令 1. 通用数据传送指令 简写 英文全称 执行操作 MOV move 传送 MOVSX move with sign-extend 带符号扩展传送 MOVZX ...

  6. 汇编汇编(MASM debug命令)

    汇编汇编(MASM debug命令) 最近学习汇编语言, 在调试时命令总是忘记, 下面整理一下常用的debug命令,供后续查阅. t:执行CS:IP指向的指令,t命令在执行修改寄存器SS的指令时,下一 ...

  7. R语言可视化图像中最常用的点样式(pch、plot characters)列表、ggpubr::show_point_shapes可视化最常用的点样式(pch)

    R语言可视化图像中最常用的点样式(pch.plot characters)列表.ggpubr::show_point_shapes可视化最常用的点样式(pch) 目录

  8. c语言中removeDir的相反函数,C语言编程常见问题解答之常用函数的包括文件.doc

    C语言编程常见问题解答之常用函数的包括文件 C语言编程常见问题解答之常用函数的包含文件(1) 作者:unknown 更新时间: 2005-05-10 函数 包含 类别 功能 _atold math.h ...

  9. C语言windows.h库的常用函数(三)

    SetCursorPos函数 用途 SetCursorPos函数是windows.h库中用来设置指针位置的函数,使用该函数鼠标指针将会直接跳至指定坐标位置 参数 SetCursorPos函数拥有x和y ...

最新文章

  1. JAVA 解析xml字符串
  2. mybatis基础(一)
  3. MapReduce详解和WordCount模拟
  4. java.lang.NoClassDefFoundError: org/apache/shiro/authc/AuthenticationToken
  5. 信息学奥赛一本通C++语言——1081:分苹果
  6. 蓝桥杯入门训练Fibonacci数列
  7. 妙用VM的“远程显示”功能
  8. 机器学习sklearn
  9. Shell命令学习笔记
  10. java乐视面试题_乐视面试题 · vagabond1-1983/JavaRock Wiki · GitHub
  11. 金山词霸2006常规窗口不见了!只能看到最大化的的原因
  12. 手机号归属地区编码_不懂就问丨手机号码为什么是11位呢?
  13. python-Excel操作(xlrd读,xlwt写)
  14. 计算机无法连接网络打印机,网络打印机无法连接的解决方法是什么
  15. html放大镜原理,js放大镜效果原理
  16. vue 实现点击选中div后, 右下角显示对号√
  17. java父类的称谓_《商周金文中的血缘关系称谓》
  18. 本年盈余与预算结余差异表的分析(一)
  19. Sonatype Nexus Maven仓库搭建和管理
  20. C++ RPG创建游戏角色

热门文章

  1. 微信编辑器都有什么功能?
  2. Linux命令--mkdir命令:创建目录(文件夹)
  3. python3爬取微博评论api情感分析_如何科学地蹭热点:用python爬虫获取热门微博评论并进行情感分析...
  4. 新车提车需要的注意事项,你了解吗?
  5. 理查和马文价值导向选股法则!
  6. 人工智能是真正能够理解人类语言、懂得故事含义、和人类大脑并无二致的AI
  7. oracle 视图带变量条件,oracle视图(带参数)
  8. 自己动手建网站(五)javaweb基础:登录功能
  9. Bios intelz77主板设置WakeOnLan网络唤醒
  10. Runtime.exec()执行linux shell