03c语言中数组和结构体

汇编中的数据类型

  1. ascii 文本字符串
  2. asciz 以空字符结尾的字符串
  3. byte 字节值
  4. double 双精度浮点值
  5. float 单精度浮点值
  6. int 32 32位整数
  7. long 32 32位整数,和int相同
  8. octa 16字节整数
  9. quad 8字节整数
  10. short 16位整数
  11. single 单精度浮点数(与float相同)

汇编中c语言数组和结构体的表示方法与访问

数组

 主要通过变址来访问

以下为仿代码

    //一维数组访存
    int a[5] = {"3","4","56","123"}
   // 想要访问数组中第二个元素,也就是a[1];
   //使用汇编表示为 movl (%edx,%eax,4),%eax
   movl a,%ebx
   movl 1,%eax
   movl (%edx,%eax,4)

//------------二维数组--------//

    int  a[][5] = {{"adui"},{"yuis"},{"adja"},{"afdj"}};
 //访问 a[2][];
    # %ebx = 2;  %ecx =0x0000; 
    movl (,%ebx,5),%eax  //将a[2][0]值给%eax

 //访问 a[2][3];
 # %ebx = 2;  %ecx =0x0000; 
    movl (,%ebx,5),%eax  
    %ecx = 3
    movl (%eax,%ecx,4),%eax //将a[2][3]赋值给 %eax

 //访问 a[][2]; 访问四组字符串的第三个元素
    # %eax =  2;
    movl $20 ,%ebx
    movl (a,%eax,2),%eax //a[0][2]
    movl (%eax,%ebx),%eax// a[1][2]
    

结构体

数据存储位置对齐

    由于系统在内存中读取数据是根据内存块来的,所以需要对齐4,8,16Bytes,根据系统不同,就不同
x86-32或64 根据不同类型的数据长度来对齐

结构存储对齐要求

假设结构体中最大的对齐要求是k,那么结构体的大小是k*N

在这里插入图片描述

__结构体中元素顺序不同,对内存有所影响__

在这里插入图片描述

Union

union成员共享同一块大小的内存,大小由成员最大的那位,一次只能使用一个成员
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值