C指针原理(94)-汇编基础(1)
来源:互联网 发布:mac免费软件下载网站 编辑:程序博客网 时间:2024/05/21 19:30
AT&T汇编语语言中的数据段与数据类型
.data段定义的数据元素保留在内存中能够被指令读取和写入;
.rodata段定义的数据元素只读;
.data与.rodata段的数据类型:
1) .ascii 代表文本字符串类型
2) .asciz 代表以空字符结尾的文本字串,在C中以空代表串的结尾
3) .byte 代表一个字节值
4) .double 双精度浮点数
5) .float 单精度浮点数
6) .int 代表32位整数
7) .long 代表32位整数IA-32
8) .octa 代表16字节整数
9) .quad 代表8字节整数
10) .short 代表16位整数
11) .single 单精度浮点数 32位
同时可以使用.fill自动创建10000个数据元素,默认为每个字段创建一个字长,并使用零填充它。
在.data与.rodata段中定义的数据将从内存地址由低到高排列。编写一段简单的汇编代码
dp@dp:~ % cat test.s
.section .data
mybuffer:
.fill 100
.section .rodata
mytext:
.ascii "abcde"
val1:
.byte 'a'
val2:
.byte 'b'
.byte 'c'
.section .text
.globl _start
_start:
movl mytext,%eax
movl val1,%ebx
dp@dp:~ %
从对上面程序的反汇编可看出,内存地址从低到高放置了mytext(0804807f )、val1(08048084 )、val2(08048085)、mybuffer。
dp@dp:~ % objdump -D test
test: file format elf32-i386-freebsd
Disassembly of section .text:
08048074 <_start>:
8048074:a1 7f 80 04 08 mov 0x804807f,%eax
8048079:8b 1d 84 80 04 08 mov 0x8048084,%ebx
Disassembly of section .rodata:
0804807f <mytext>:
804807f:61 popa
8048080:62 63 64 bound %esp,0x64(%ebx)
8048083:65 gs
08048084 <val1>:
8048084:61 popa
08048085 <val2>:
8048085:62 .byte 0x62
8048086:63 .byte 0x63
Disassembly of section .data:
08049088 <mybuffer>:
...
麦好的AI乐园博客所有内容是原创,如果转载请注明来源
http://blog.csdn.net/myhaspl/
.bss段定义的数据元素为未初始化的变量,在运行时对其进行初始化。
可分为数据通用内存区域和本地通用内存区域
本地通用内存区域不能从本地汇编代码之外进行访问。
.text段存放代码
- C指针原理(94)-汇编基础(1)
- C指针原理(95)-汇编基础(2)
- C指针原理(1)-AT&T汇编
- C指针原理(2)-AT&T汇编
- C指针原理(3)-AT&T汇编
- C指针原理(4)-AT&T汇编
- C指针原理(5)-AT&T汇编
- C指针原理(28)-AT&T汇编
- C指针原理(29)-AT&T汇编
- C指针原理(27)-汇编分析C指针机制
- C指针原理(14)-C指针基础
- C指针原理(15)-C指针基础
- C指针原理(16)-C指针基础
- C指针原理(17)-C指针基础
- C指针原理(85)-helloworld的C程序汇编剖析(1)
- C指针原理(6)-C内嵌汇编
- C指针原理(7)-C内嵌汇编
- C指针原理(8)-C内嵌汇编
- 二十九、印度随笔(第一版)
- inux /dev/shm的用途
- 三四线城市移动互联网应用观察
- .NET多值绑定中的强类型集合和字典集合
- 二十八、在自我批判中进步(任总在GSM鉴定会后答谢词)
- C指针原理(94)-汇编基础(1)
- eCos系统的VSR支持(VSR Support)
- 二十七、不做昙花一现的英雄
- 文献标识码
- 二十五、全心全意对产品负责,全心全意为客户服务
- centos修改系统时间
- 在virtualBox中使用Centos如何自定义分辨率
- 二十四、华为的红旗到底能打多久
- 用一段哲理来鞭策自己