C指针原理(5)-ATT汇编
生活随笔
收集整理的这篇文章主要介绍了
C指针原理(5)-ATT汇编
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
.section .datamyvalue:.byte 67,68,69,70,0mygs:.asciz "%c\n".section .text
.globl mainmain:#基地址(偏移地址[必须为寄存器],数据元素变址,数据元素长度[必须为寄存器],)#基地址+偏移地址+数据元素变址*数据元素长度movl $2,%ecxmovl myvalue(,%ecx,1),%ebx #将myvalue的变址为2,长度为1的数据值移到ebx中push %ebxpush $mygs call printfpush $0call exit
这段代码将输出ASCII码为69的字符“E”
有2种方式,能以变址和基址结构的方式访问内存
1)基地址(偏移地址[必须为寄存器],数据元素变址,数据元素长度[必须为寄存器],)
2)基地址+偏移地址+数据元素变址*数据元素长度
上面代码采用了第1种方式:
movl $2,%ecx
movl myvalue(,%ecx,1),%ebx
myvalue这个变量的内容是:67,68,69,70,0
%ecx寄存器的值是数据元素变址,是2,数据元素长度是1
67所在内存地址加上变址2,就是myvalue的以1个字节为单位组成的5个元素中,第3个元素的位置
movl myvalue(,%ecx,1),%ebx 将第3个元素E的ASCII码放在ebx寄存器中,然后入栈,做为printf的参数
总结
以上是生活随笔为你收集整理的C指针原理(5)-ATT汇编的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: numpy(4)-计算数据异常值
- 下一篇: C指针原理(6)-C内嵌汇编