异架构基础知识

mips架构

java -jar Mars4_5.jar:打开mars

寄存器:

前三个参数:A0,A1,A2

返回地址:$ra

rip:pc

$zero:总是0,方便进行各种运算

rax: v0 system的系统调用是0xfab

rsp:$sp

rbp: $fp

$at:用于标记当前的汇编指令。

v0−v1:用于存储函数的返回值。

a0−a3:用于函数调用时的参数。

t0−t9:通用寄存器。

s0−s7:用于保存局部变量的寄存器。

$t8:用于保存程序计数器(PC)

汇编指令集:

跳转类

jr +寄存器:跳转到寄存器(Jump Register)

jal displayMessage ;跳转指令调用并返回,1、跳转displayMessage地址,同时把下一条指令的地址写入到 $ra寄存器

加载类

li:类lea但是是加载立即数的

la: 类似lea载入地址

sw: 将寄存器(s0)值放入$sp + 4 * 倍 数位置 sw $s0,0($sp)这里sp前的0表示0倍

lw:从栈上取回值到寄存器 lw $s0,0($sp)

计算类

addi $s0,$zero,5:将加法结果加到第一个寄存器

add $a0,$zero,$s0:将加法结果赋值给第一个寄存器

arm架构

ARM运行模式
运行模式 功能
用户模式(USR) ARM处理器正常程序执行状态
快速中断模式(FIQ) 高速数据传输或通道处理
外部中断模式(IRQ) 通用的中断处理
管理模式(SVC) 操作系统使用的保护模式
数据访问终止模式(ABT) 当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护
系统模式(SYS) 运行具有特权的操作系统任务
未定义指令终止模式(UND) 未定义的指令执行是进入该模式

寄存器:

在这里插入图片描述

前三个参数:R0,R1,R2

LR:返回地址

汇编:

image-20240521194411963

汇编指令

cmp=[]
with open(r“C:\Users\86198\Desktop\tt\attachment-7\BEIXUAN-19.exe","rb")as f:
tmp=f.read()
if tmp[0:3]==b'\x4d\x5a\x50':
start=0x0b3614+0xcc8
else:
start=0xcc8
cmp= [ tmp[start+i10] for i in range(24)]
inp1=cmp[:12]
v7=cmp[12:]
v4=[2,0,3,1,6,4,7,5,10,8,11,9]
inp2=[0]
12
for i in range(len(inp2)):
inp2[i]=v7[v4[i]]

key='ISCC'
for i in range(len(inp1)):
inp1[i]^=ord(key[i%len(key)])

for i in range(len(inp1)):
print(chr(inp1[i])+chr(inp2[i]),end='')Which_is_the_flag

数据处理指令
数据传送指令
mov
mvn
算术逻辑运算指令
add
anc
比较指令
cmp
tst
跳转指令
b
BL
程序状态寄存器(PSR)处理指令
msr
mrs
存储器访问指令
ldr
str
协处理器指令
cdp
LDC
异常产生指令
SWI
BKPT

数据处理指令

mov a b:把b给a

算数运算指令

add a ,b,c: a=b+c

比较指令

image-20240521201216887

逻辑运算指令

image-20240521201410840

image-20240521201515016

image-20240521201529793

转移指令

b:无条件跳转

image-20240521201725684

image-20240521201852288

image-20240521201906461

状态寄存器访问指令

image-20240521202317109

加载存储指令

image-20240521202504414

image-20240521202516579

image-20240521202542337

image-20240521202707608

image-20240521202720939

异常产生指令

image-20240521202949514

伪代码

image-20240521203008256

image-20240521203121055

image-20240521203201857

image-20240521203215715

image-20240521203239029

mips

register Assembly name Comment
r0 $zero Always 0
r1 $at Reserved for assembler
r2 - r3 %v0 - $v1 Stores results
r4 - r7 $a0 - $a3 Stores arguments,参数超过4个才会存放到栈上
r8 - r15 $t0 - $t7 Temporaries,not saved
r16 - r23 $s0 - $s7 Contents saved for use later
r24 - r25 $t8 - $t8 More temporaries,not saved
r26 - r27 $k0 - $k1 Reserved by operating system。 给中断使用
r28 $gp Global pointer
r29 $sp Stack pointer。栈顶
r30 $fp Frame pointer。栈底
r31 $ra Return address
$f0 - $f3 - Floating point return values
$f4 - $f10 - Temporary registers,not preserved by subprograms
$12 - $f14 - First two arguments to subprograms,not preserved by subprograms
$16 - $f18 - More temporary registers,not preserved by subprograms
$f20 - $31 - Saved registers,preserved by subprograms

posted @   蟇窳瓨  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
点击右上角即可分享
微信分享提示