吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1502|回复: 1
收起左侧

[其他转载] 【笔记】HCS12X 体系结构概述

[复制链接]
飘零星夜 发表于 2021-2-24 15:59
本帖最后由 飘零星夜 于 2021-7-24 09:33 编辑

第一次不在水区发帖子,如有违规,请版主删帖谅解。

//HCS12X 是 飞思卡尔架构。记录一下汇编中可能用到的知识,错误在所难免。

1,符号约定:

1.1,寄存器:这里只记录几个逆向常用的寄存器。
        2个8位的寄存器:A,B; A 和 B 联合在一起组成 16位的寄存器:D; //D = (A<<8) +B.
        2个16位的寄存器:X,Y.
        1个16位堆栈指针:SP.
        1个16位程序指针:PC.//PC总是指向正在运行的指令的下一条指令
        1个16位的状态寄存器:CCR。
        //CCR从高到低bit: U 0 0 0 0 IPL[2:0] S X H I N Z V C .通常我们只关心Z(标志) 和 C(溢出/借位标志)。
        
1.2,内存和地址:
        代码页寄存器(8bit):PPAGE.
        8bit的内存写为M,  16bit写为M:M+1,  32bit写为M~M+3 .
        用"()"括起来表示内存里面的内容。
        %开头表示2进制,$开头表示16进制,#表示立即数.//#$16 表示立即数0x16

2,寻址模式:
        所有有效地址都是16位的。//不包含地址的指令除外。
        全局地址的本质上也是16位偏移 + 段基址。
        
        INST                        纯指令,无操作数
        INST #8I                        8bit立即数
        INST #16I                16bit立即数
        INST 8a                        8bit前面加00 补全范围0x0000~0x00ff的内存地址。
        INST 16a                        16bit的内存地址。
        INST r8                        相对寻址:8bit +PC.
        INST r16                        相对寻址:16bit +PC.
        INST 5I,R                        5bit偏移加到寄存器R上。
        INST 9I,R                        9 bit偏移加到寄存器R上。
        INST 16I,R                16bit偏移加到寄存器R上。
        INST 3I,-R                寄存器R减去3bit偏移,然后用于运算.//类似于 C语言的 --i
        INST 3I,+R                寄存器R加上3bit偏移,然后用于运算.
        INST 3I,R-                先使用R, 然后寄存器R减去3bit偏移.//类似于 C语言的 i--
        INST 3I,R+                先使用R, 然后寄存器R加上3bit偏移.
        
        举例:
        纯指令:INX 表示 X++;
        立即数:LDAA #$55 表示 A = 0x55; LDX #$1234 表示 X = 0x1234;
        立即数:LDAA $55 表示 A = [0x55]; LDX $1234 表示 X = [0x1234];//[]表示从内存地址取值
        相对寻址(只有分支指令才有):BEQ #$12 表示 if (Z == 1) PC = PC + 2 + 0x12.
        
3,程序运行:所有的操作都在0x0000到0x10000范围内进行(64K)理解为电脑的内存条。
        
        3.1,程序将所有的硬件寄存器和系统寄存器映射到0x0000~0x0800的2K内存中。
        
        3.2,EEPROM是用来存放重要数据的存储器,固定大小4K,例如 账号 密码 。
        3.2.1,根据需要,每次从EEPROM中读取1k数据到0x0800~0x0c00中,
        3.2.2,将EEPROM最高1k映射到0x0c00~0x1000中。
        
        3.3.1,根据需要,每次从RAM中读取4k数据到0x1000~0x2000中,
        3.3.2,将RAM最高8k映射到0x2000~0x4000中,这8k通常是全局变量。
        
        3.4,代码FLASH: //相当于电脑的硬盘
        3.4.1,将地址0x7F4000的16K代码映射到0x4000~0x8000,
        3.4.2,将地址0x7FC000的16K代码映射到0xC000~0x10000,
        3.4.3,根据需要,每次从代码FLASH中读取4k数据到0x08000~0xc000中。
        

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
苏紫方璇 + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

不羁的风儿 发表于 2021-2-24 16:27
乖乖 虽然我看不懂 但是很厉害的样子啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 19:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表