AT&T汇编
文章平均质量分 63
_子木_
这个作者很懒,什么都没留下…
展开
-
AT&T学习笔记汇编之函数
步骤1定义需要的输入值2定义对输入值执行的操作3定义如何生成输出值以及如何把输出值传递给发出调用的程序。定义输入值 使用寄存器 使用全局变量 使用堆栈 .type func1, @function func1:返回主程序 把结果放在一个或者多个寄存器 把结果放在全局变量内存位置。原创 2015-04-03 19:04:14 · 879 阅读 · 0 评论 -
AT&T汇编学习笔记之数据类型
数据操作: movw $0xffb1 , %dx movzx source , destination source可以是8,16位 destination可以是16位或32位 movzx %cl , %ebx movsx 扩展带符号整数。 .quad可以定义一个或者多个带符号整数值。每个整数占8个字节。原创 2015-04-03 19:09:25 · 947 阅读 · 0 评论 -
AT&T学习笔记汇编之内核
内核组成: 内存管理 设备管理 文件系统管理 进程管理内存管理: 虚拟内存 交换空间 页面(块) cat /proc/meminfo ipcs -m设备管理: 硬件管理 内核模块(kernel module) unix文件:字符,块,网络 设备文件被创建为节原创 2015-04-03 19:07:53 · 472 阅读 · 0 评论 -
AT&T学习笔记汇编之内联c语言
asm("assembly code");ansi c将asm用于其它用途,用__asm__替换在asm后面加上 volatile可以禁止编译器优化asm volatile ("pusha \n\tpopa");__asm__ __volatile__ ("pushl $1\n\t");扩展asmasm ("asm code" : output locate :原创 2015-04-03 19:06:07 · 578 阅读 · 0 评论 -
AT&T学习笔记汇编之高级特性
高级特性:SIMD single instruction multiple data单指令多数据SIMD扩展 Streaming SIMD Extension (SSE)流化扩展第二实现 SSE2第三 SSE3MMX 对整数执行SIMD操作64位打包字节,字,双字整数,MMx 0-7 映射到FPU寄存器R0-7使用原创 2015-04-03 19:05:39 · 715 阅读 · 0 评论 -
AT&T学习笔记汇编之控制指令
跳转jmp labelcall addresss调用函数先将eip入栈,eip指向函数的地址esp直接使用栈中的数据push pop引用堆栈中的数据程序通常把esp复制到ebp在使用ebp获取call指令之前传递给栈的信息。function_label: pushl %ebp movl %esp , %ebp原创 2015-04-03 19:02:39 · 775 阅读 · 0 评论 -
AT&T学习笔记汇编之call
write调用:eax 系统调用值ebx 要写入的文件描述符ecx 包含字符串的开头edx 包含字符串的长度ps 默认本终端ps -f/details -e/all -l/long进程状态 S/sleep T/挂起 R/run Z/僵尸as -gstabs -o cpuid2.o cpuid2.sld -dynamic-link原创 2015-04-03 19:12:39 · 670 阅读 · 0 评论 -
AT&T学习笔记汇编之调用汇编库
调用汇编库: 程序堆栈 参数3 参数2 参数1 返回地址 旧的ebp值 esp 局部变量。。。可以安全使用mmx sse 但是必须小心使用fpu必须保留ebx edi esi ebp espeax 用于保存输出值ebx 用于指向全局偏移表ecx 在函数中可用edx原创 2015-04-03 19:10:36 · 521 阅读 · 0 评论 -
AT&T汇编学习笔记之使用文件
使用文件:系统调用打开 5 打开要访问的文件并且创建指向该文件的句柄。读取 3 使用文件句柄打开文件写入 4 使用文件句柄写入关闭 6 关闭文件并且删除文件句柄打开:int open(const char* pathname , int flags , mode_t mode);eax 5 ebx 包含以空字符结尾的文件名字符串的开始位置的内存地址。ec原创 2015-04-03 19:03:10 · 489 阅读 · 0 评论 -
AT&T学习笔记汇编之数学处理
溢出 movl $0 , %ebx movb $190 , %bl movb $100 , %al addb %al , %bl jc over movl $1 , %eax int $0x80 over: movl $1 , %eax movl $0 , %ebx int原创 2015-04-03 19:08:30 · 695 阅读 · 0 评论 -
AT&T汇编学习笔记之字符串
movsb 传送单字节movswmovsl 传送双字源操作数esi指向内存位置 edi目的操作数 movl $output , %edilea指定内存位置 源操作数必须指向一个内存位置 leal output , %edieflags df决定传送方向 正向0 cld 反向 1 stdstd向后处理字符串re原创 2015-04-03 19:09:30 · 791 阅读 · 0 评论