所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

在c语言中,变量名,地址,存储单元的内容,分别怎样储存?

发布时间:2020-04-15 16:45:21

资讯分类:存储单元  c语言  变量  地址  变量  常量  偏移量
在c语言中,变量名,地址,存储单元的内容,分别怎样储存?

先加点限制:

  • 变量为局部变量,即函数内部的"auto"变量

  • 地址2001不正常,对于普通32位系统,地址应32位对齐,此处改为2004

  • 假设CPU为32位ARM


下面是稍加限制后的代码:


void test()
{
int a;
a=5;
......
}


变量a的保存

少数变量保存在寄存器中;过多的变量保存在堆栈顶部。

在汇编指令中用堆栈指针+偏移量即可访问。

下面假设a保存在寄存器R1。


常量5的保存

常量5很小,不需保存到数据段中。

a=5对应如下:

LDR R1, #5

一条指令即可装入。


我们假设常量不是5,而是0xdeadbeef这样的大数,那就应保存在数据段中,即:

data+2004 (data + 0x7d4)


地址偏移量2004如何获得

偏移量2004将被编译到代码中,由于此偏移量较大,需使用两条指令将偏移量为2004的地址装入寄存器R2,如下:

ADD R2, Rdata, #2000
LDR R1, [R2,#4]


如果偏移量较小(204),则可以这样:

LDR R1, [Rx,#204]

留言与评论(共有 0 条评论)
   
验证码:
Top