MAP和FIELD伪操作定义的内存表结构(绝对地址与相对地址的区别)

本文介绍了三种内存表结构:基于绝对地址、相对地址和基于PC的内存表。通过MAP和FIELD伪操作定义了数据域,并解释了在指令中如何引用这些数据域。绝对地址直接引用固定地址,相对地址根据寄存器值计算,而基于PC的内存表则基于当前程序计数器的值。
摘要由CSDN通过智能技术生成

分为三种:

1.基于绝对地址的内存表

举例:
    用伪操作序列定义一个内存表,其首地址为固定的地址8192(0X2000),该内存表中包括5个数据域。   
    Consta长度为4个字节;constb长为4个字节,x长为8字节;y长为8字节;string长为16字节。这种内存表成为基于绝对地址的内存表。
MAP  8192 ; //内存表的首地址8192(0x2000)
Consta FIELD 4 ; //consta 长为4字节,相对位置为0
Constb FIELD 4; //constb长为4字节,相对位置为8196
X   FIELD  8; // X长为8字节,相对位置为8200
Y    FIELD 8; // y长为8字节,相对位置为8208
String FIELD 16 ;// String为16字节,相对位置为8216
在指令中,可以这样引用内存表中的数据域;
LDR R0,consta; //将consta地址处对应内存加载到R0上面的指令仅仅可以访问LDR指令前后4KB地址范围的数据域。

2.基于相对地址的内存表

举例:
    下面的伪操作序列定义一个内存表,其首地址为0与R9寄存器值得和,该内存表中包含5个数据域。这种表称为相对地址的内存表。
MAP 0,R9;//内存表的首地址寄存器R9的值
Consta FIELD 4 ; //consta 长为4字节,相对位置为0
Constb FIELD 4; //constb长为4字节,相对位置为4
X   FIELD  8;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值