汇编
qq_35728402
这个作者很懒,什么都没留下…
展开
-
第二章 8086/8088寻址和指令系统
文章目录2.1 8086/8088寄存器组cpu寄存器标志寄存器2.2 存储分段和地址的形成存储单元的地址和内容存储器的分段物理地址的形成段寄存器的引用8086/8088的寻址方式立即寻址方式寄存器寻址方式直接寻址方式寄存器间接寻址寄存器相对寻址基址加变址寻址相对基址加变址寻址8086/8088指令系统指令集说明数据传送指令堆栈操作指令标志操作指令加减法运算指令乘除法运算指令逻辑运算和移位指令转移指令2.1 8086/8088寄存器组cpu寄存器通用寄存器数据寄存器AXAHALB原创 2020-05-24 18:32:58 · 572 阅读 · 0 评论 -
AT&T汇编操作文件
文章目录相关的系统调用打开关闭文件向文件写入内容读取文件内存映射文件相关的系统调用系统调用系统调用值描述open5打开文件read3读取文件write4写入文件close6关闭文件打开关闭文件打开文件EAX 存储系统调用值EBX 存储文件名ECX 存储访问文件的权限c语言访问权限对应的数值O_...原创 2020-04-19 14:01:01 · 200 阅读 · 0 评论 -
编译器如何代码优化
文章目录优化编译器代码创建优化的代码优化的诀窍优化编译器代码GNU编译器的优化等级-O 基本的优化-fdefer-pop 默认方法返回时,会将输入参数出栈,这个优化可以将输入参数在栈上累计,并通过一个命令一次清空所有栈上数据-fmerge-constant 合并程序中相同的constant变量-fthread-jumps 使得编译器分析代码,可以跳过不必要的分支,直接到达最终的目...原创 2020-04-18 21:47:35 · 742 阅读 · 0 评论 -
创建可被c、c++调用的汇编库
文章目录创建汇编方法编译c和汇编程序在c程序中使用汇编方法在c++中使用汇编创建静态库使用动态库调试汇编方法创建汇编方法为了创建c语言可以使用的汇编方法,汇编方法必须遵循c语言的传值格式, 格式如下:program stackindirect addressingFunction paramter3 (16(%esp))Function paramter2...原创 2020-04-12 20:17:11 · 232 阅读 · 0 评论 -
AT&T内嵌汇编的格式
一般的内嵌汇编asm 格式asm(“assembly code”);示例asm(“movl $1, %eax\n\tmovl $0, %ebx\n\tint $0x80”);asm( “movl $1, %eax\n\t”“movl $0, %ebx\n\t”“int $0x80”);使用全局变量/* golbaltest.c - An example o...原创 2020-04-11 12:33:13 · 302 阅读 · 0 评论 -
AT&T汇编中的系统调用
linux内核内核组成内存管理/proc/meminfo 可以查看物理内存以及交换区大小ipcs -m 可以查看共享内存使用情况设备管理插入设备驱动代码将驱动代码编译进内核代码将驱动代码插入到运行的内核设备文件类型字节类型块类型网络类型文件系统管理文件类型文件系统描述affsAmiga 文件系统ext...原创 2020-04-05 13:34:08 · 377 阅读 · 0 评论 -
AT&T汇编函数的使用
汇编函数定义函数定义输入使用寄存器传值使用全局变量传值使用栈传值定义函数语法.type func1, @funcionfunc1: ... ret* 定义输出 * 将输出放在一个或几个寄存器 * 将输出放在一个全局变量* 创建函数 * 计算圆形面积的示例.type area, @functionarea: fldpi imull %...原创 2020-04-04 16:48:46 · 587 阅读 · 0 评论 -
AT&T汇编字符串
移动字符串MOVS 指令子指令MOVSB 移动一个字节MOVSW 移动两个字节MOVSL 移动4个字节说明默认源操作数在ESI,目的操作数在EDI设置EDI的地址movl $output, %edileal output, %edi示例# movstest.s - An example of the MOVS instructions.sect...原创 2020-04-01 22:40:11 · 419 阅读 · 0 评论 -
AT&T汇编中的高级数学方法
FPU环境FPU 寄存器栈8个80位的数据寄存器(R0~R7)特点不能通过名字访问寄存器是环形的16位的状态寄存器状态位状态位描述0不合法的操作1不规范化的操作2除数为0的异常3上溢出异常4下溢出异常5精度异常6栈错误7错误总体状态8状态码C09状态码C1...原创 2020-03-29 14:56:36 · 193 阅读 · 0 评论 -
AT&T汇编中的基本数学运算
整数运行加法加法指令add source, destination示例# addtest1.s - An example of the ADD instruction.section .datadata: .int 40.section .globl _start_start: nop movl $0, %eax movl $0, %ebx movl $0,...原创 2020-03-21 23:36:16 · 366 阅读 · 0 评论 -
AT&T汇编中的数字
数字类型无符号整数有符号整数二进制编码十进制压缩二进制编码十进制单精度浮点数双精度浮点数双扩展浮点数SIMD 扩展类型64位压缩整数128位压缩整数128位压缩单精度浮点数128位压缩双精度浮点数整数标准的整数大小ByteWordDoublewordQuadword无符号整数有符号整数# inttest.s - An example o...原创 2020-03-14 18:05:31 · 353 阅读 · 0 评论 -
AT&T汇编中的程序流程控制
指令指针无条件跳转Jumps格式jmp location分类short jump (offset less than 128 bytes)Near jumpFar jump (jump to another segment)示例#jumptest.s - An example of the jmp instruction.section .text.glob...原创 2020-03-12 23:42:03 · 132 阅读 · 0 评论 -
AT&T汇编移动数据
定义数据数据段.data 和 .rodata数据类型:* ascii 字符串* asciz 0结束的字符串* byte 字节值* double 双精度浮点数* float 单精度浮点数* int 32位整数* long 32位整数* octa 16位整数* quad 8位整数* short 16位整数* single 单精度浮点数示例:.section .data...原创 2020-03-08 21:37:27 · 221 阅读 · 0 评论 -
一个简单的AT&T汇编程序
程序的组成部分数据段(可选).section.data栈段(可选).section.bss文本段(必须).section.tex模板.section .data < 初始化数据>.section .bss <初始化数据>.section .text.globl _start_start: <指令代码>创建一个简单的程序CP...原创 2020-03-08 11:13:13 · 173 阅读 · 0 评论 -
汇编语言必备工具
开发工具汇编器MASMNASMGASHLA链接器调试器GNU汇编器(GAS)安装汇编器安装包(binutils)内容addr2line 将代码转换到文件名和行号ar 创建、修改和提取文件包as 将汇编代码转换成目标文件c++filter 过滤c++符号gprof 显示程序的基本信息ld 将目标文件链接成可执行文件nlmconv 将目标代码转换成网...原创 2020-03-08 00:05:18 · 1597 阅读 · 0 评论 -
IA-32平台
IA-32 平台核心部件处理器控制单元从内存中取指对指令解码从内存中取指令需要的数据存运算结果执行单元简单整数的运算复杂整数的运算浮点数运算寄存器普通寄存器(8个32位)EAX 存储算数加法的值和结果EBX 存储数据段中数据的指针ECX 字符串和循环的计算EDX I/O指针EDI 字符串操作的目的指针ESI 字符串操作的源指针ESP 栈...原创 2020-03-07 10:53:39 · 217 阅读 · 0 评论 -
汇编语言
和其他语言不一样,汇编语言没有统一的编译器,汇编语言的格式随着编译的不同而不同,因此了解什么是汇编语言是学习汇编语言的第一道门槛。首先,我们需要知道汇编语言为什么出现,为了回答这个问题,我们就不得不聊一聊处理器指令。处理器指令:在计算机内部,处理器基于芯片制造商内置于芯片内的二进制代码来处理数据,这些代码定义了处理器操作数据的行为。这些代码通常被叫做指令编码,不同的处理器,指令编码也一般...原创 2020-03-01 13:58:43 · 371 阅读 · 0 评论