[iOS知识简记]-汇编

arm64,4字节定长指令系统。

寄存器

x0-x30 通用寄存器,32bit使用:WO-W30
FP(x29) 保存栈帧地址(栈底指针)
LR(x30) 程序链接寄存器,保存子程序结束后需要执行的下一条指令
SP 保存栈指针,SP/WSP
PC 程序计数器,在arm64中,软件不能改写PC寄存器
CPSR 状态寄存器
V0 – V31 向量寄存器,也可以说是浮点型寄存器。每个寄存器128位的。
可以用Bn Hn Sn Dn Qn。基于一个word是32位,也就是4Byte大小:
Bn: Byte. 8位
Hn: half word. 16位
Sn: single word. 32位
Dn: double word. 64位
Qn: quad word. 128位

调用栈

栈是从高地址到低地址。
fp指向当前frame的栈底,高地址。
sp指向栈顶,低地址。

栈结构:

fp
.
.
.
lr
fp
.
.
.
lr
fp
.
.
.

backtrace原理:

从fp一直往上找,记录挨着的lr,直到fp为0。

ABI

对于arm64:

x0–x7存放前8个参数,多余的参数会存在栈上。
返回值一般都在x0。
如果返回较大的数据结构,存在x8地址上。

对于x64:

分别用rdi,rsi,rdx,rcx,r8,r9作为第1-6个参数,rax作为返回值。

总之,arm32/arm64/x86/x64的调用约定各不一样,x86用堆栈传参,x64用寄存器传参,等等。

arm32还有个Thumb指令系统,Thumb指令是缩减的16位指令,存储占用小,但在32存储器上效率没4字节的arm指令集高。Thumb子程序和arm子程序可以互相调用,处理器可在执行Thumb程序段的状态和执行arm程序段的状态间切换。

指令格式/各类指令/各类寻址方式

比如条件域、寻址移位、叹号,等。

mov{条件域}{s} 目的寄存器,源操作数

s选项决定是否影响CPSR中条件标志位的值。
ld... -> load到寄存器
st... -> store到内存

有叹号,表示移动数据后,并更新地址。

伪操作/伪指令/汇编文件格式/子程序调用/和C语言互调/汇编宏

略。

参考

  • ARM64 汇编——寄存器和指令
    https://www.jianshu.com/p/2f4a5f74ac7a

  • iOS开发同学的arm64汇编入门
    https://blog.cnbluebox.com/blog/2017/07/24/arm64-start/

  • ARMv8中branch指令分类、格式及用法
    https://blog.youkuaiyun.com/qianlong4526888/article/details/8247219

  • ARMv8-A Architecture – ARM
    https://developer.arm.com/architectures

  • iOS ABI Function Call Guide
    https://developer.apple.com/library/archive/documentation/Xcode/Conceptual/iPhoneOSABIReference/Introduction/Introduction.html

https://courses.cs.washington.edu/courses/cse469/18wi/Materials/arm64.pdf

<think>嗯,用户这次询问的是eNSP命令的简记内容。虽然用户引用了一些网络工程相关的资料,但那些看起来更像是之前搜索的残留信息,而不是当前问题的直接关联内容。 考虑到用户之前并没有询问过eNSP相关的问题,这应该是个全新的查询。用户可能是网络工程专业的学生或从业者,正在使用华为的eNSP模拟器做实验,需要快速查阅常用命令的简化形式。ta特意提到"简记",说明需要的是命令的缩写形式而非完整拼写。 我回忆了一下华为设备的常用命令缩写规则:通常取命令的前几个字母,遇到冲突时会适当增加字母。比如"display"缩写为"dis","interface"缩写为"int"。需要特别注意特权模式下的命令前缀缩写,比如"system-view"可以简写为"sys"。 用户可能正在实验室做配置,所以需要快速调取命令。我应该把最常用的基础命令缩写列在前面,比如视图切换、查看配置这些高频操作。同时也要包含接口配置、路由协议等进阶命令的缩写,这样既能满足新手需求,也不让进阶用户失望。 考虑到命令缩写可能存在歧义,最好在每个命令后面标注适用的视图模式。比如"ip route"在系统视图下可用,而"display"只能在用户视图下执行。这样能避免用户误操作。 最后准备几个典型问题作为延伸,帮助用户解决可能遇到的后续疑问。比如配置保存这种实用操作,以及查看OSPF邻居状态这种常见故障排查场景的问题。 </think>以下为eNSP常用命令的简记形式(基于华为设备命令体系): ### 基础操作 ```bash sys # system-view(进入系统视图)[^1] dis cur # display current-configuration(显示当前配置) dis ip int b # display ip interface brief(查看接口IP摘要) q # quit(退出当前视图) save # 保存配置 ``` ### 接口配置 ```bash int g0/0/0 # interface GigabitEthernet 0/0/0(进入接口视图) ip add 192.168.1.1 24 # ip address 192.168.1.1 255.255.255.0 undo shut # 开启接口(默认shutdown状态) ``` ### 路由协议 ```bash rip # 进入RIP视图 ospf 1 # 启动OSPF进程1[^1] network 192.168.1.0 0.0.0.255 # 宣告网段 ``` ### 查看诊断 ```bash dis arp # display arp(查看ARP表) dis ip rout # display ip routing-table(显示路由表) ping 192.168.1.2 # 测试连通性 tracert 8.8.8.8 # 路径追踪 ``` ### 进阶功能 ```bash vlan 10 # 创建VLAN 10 port li acc # port link-type access(设置接口为access模式) port de vlan 10 # port default vlan 10 stp root primary # 指定根桥 ``` > ⚠️ 注意:简记命令依赖上下文环境(如`sys`仅在用户视图生效),使用`Tab`键可自动补全命令。 --- ### 相关问题 1. 如何用eNSP实现VLAN间路由? 2. eNSP中OSPF邻居无法建立常见原因? 3. eNSP如何抓取特定接口的数据包? 4. 在eNSP中如何保存设备配置到本地? 5. eNSP模拟器支持哪些动态路由协议?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值