ChinaUnix.net
相关讨论

# 十二,优化你的代码 gnu编译器提供-O选项供程序优化使用: -O 提供基础级别的优化 -O2 提供更加高级的代码优化 -O3 提供最高级的代码优化 不同的优化级别使用的优化技术也可以单独的应用于代码。 可以使用-f命令行选项引用每个 单独的优化技术。 1, 编译器优化级别1 在优化的第一个级别执行基础代码的优化。 这个级别试图执行9种单独的优化功能: -fdefer-...

by denry - Linux文档专区 - 2009-05-29 15:07:09 阅读(634) 回复(0)

# 九,使用函数 gnu汇编语言定义函数的语法: .type 标签(也就是函数名), @function ret 返回到调用处 # 十,linux系统调用 linux系统调用的中断向量为0x80 1, 系统调用标识存放在%eax中 2, 系统调用输入值: EBX 第一个参数 ECX 第二个参数 EDX 第三个参数 ESI 第四个参数 EDI 第五个参数...

by denry - Linux文档专区 - 2009-05-29 15:05:56 阅读(766) 回复(0)

# 七,基本数学运算 1, 加法 ADD source, destination 把两个整数相加 其中source可以是立即数内存或者寄存器, destination可以是内存或者寄存器, 但是两者不能同时都是内存位置 ADC 和ADD相似进行加法运算, 但是它把前一个ADD指令的产生进位标志的值包含在其中, 在处理位数大于32(如64) 位的整数时, 该指令非常有用 2, 减法 SUB source...

by denry - Linux文档专区 - 2009-05-29 15:04:24 阅读(682) 回复(0)

# 五,控制流程 无条件跳转: 1, 跳转 jmp location 其中location为要跳转到的内存地址, 在汇编中为定义的标签 2,调用 调用指令分为两个部分: 1, 调用call address 跳转到指定位置 2, 返回指令ret, 它没有参数紧跟在call指令后面的位置 执行call指令时,它把EIP的值放到堆栈中, 然后修改EIP以指向被调用的函数地址, 当被调用 函数完成后,...

by denry - Linux文档专区 - 2009-05-29 15:03:18 阅读(640) 回复(0)

# 三, gnu汇编语言结构 主要包括三个常用的段: data 数据段 声明带有初始值的元素 bss 数据段 声明使用0或者null初始化的元素 text 正文段 包含的指令, 每个汇编程序都必须包含此段 使用.section 指令定义段, 如: .section .data .section .bss .section .text ...

by denry - Linux文档专区 - 2009-05-29 15:02:04 阅读(655) 回复(0)

一, IA-32 硬件特性 寄存器: 1, 通用寄存器, 用于存放正在处理的数据 EAX 用于操作数和结果数的累加器 EBX 指向数据内存断中的数据的指针 ECX 字符串和循环操作的计数器 EDX IO指针 EDI 用于字符串操作的目标的数据指针 ESI 用于字符串操作的源的数据指针 ESP 堆栈指针 EBP 堆栈数据指针 其中寄存器E...

by denry - Linux文档专区 - 2009-05-29 14:59:35 阅读(639) 回复(0)

我最近刚学gnu arm 汇编, 但是遇到了很多问题,这个很难缠,麻烦大虾们帮助: 我写了一个程序叫test.s .section .text .globl _start _start: mov r0, #1 mov r1, #2 add r2, r0, r1 exit: swi 0x11 使用 arm-linux-as -o test.o test.s arm-linux-ld -o test test.o 生成test可执行文件,但是放在目标板里运行却报告illegal instruction ,我把前面的指令都注释掉了,只留下swi 0x11,仍然报告illegal instruction ,我感...

by zxz430 - 嵌入式开发 - 2009-02-27 15:22:54 阅读(2679) 回复(11)

我最近刚学gnu arm 汇编, 但是遇到了很多问题,这个很难缠,麻烦大虾们帮助: 我写了一个程序叫test.s .section .text .globl _start _start: mov r0, #1 mov r1, #2 add r2, r0, r1 exit: swi 0x11 使用 arm-linux-as -o test.o test.s arm-linux-ld -o test test.o 生成test可执行文件,但是放在目标板里运行却报告illegal instruction ,我感觉没有指令错,况且指令也不多 ,请大虾们指教这是什么原因?谢谢

by zxz430 - CPU与编译器 - 2009-03-02 21:02:45 阅读(2367) 回复(7)

1 ARM gnu 汇编伪指令简介 (1)abort .abort 停止汇编 (2)align .align absexpr1,absexpr2 以某种对齐方式,在未使用的存储区域填充值. 第一个值表示对齐方式,4, 8,16或 32. 第二个表达式值表示填充的值 (3)if...else...endif .if .else .endif: 支持条件预编译 (4)include .include "file": 包含指定的头文件, 可以把一个汇编常量定义放在头文件中 (5)comm .comm symb...

by yuanfu - Linux文档专区 - 2008-10-29 19:12:04 阅读(1006) 回复(0)

Gun汇编的保留字不是很多书会提到的, 查找起来很不方便, 我自己整理了一下. 希望对以后有用.  .ascii “” 把string当成数据插入汇编中,和armasm的DCB类似. .ascix “” 类似 .ascii , 但在每个字符串后面跟一个零字节. .balign {, {, } } 对齐地址到字节. 汇编器通过添加字节或者默认值来对齐, 如果需要填充的字节数大于, 则对齐不会发生. .byte {, } …. 把一系列的字节当成数据插入汇编, 和a...

by cspyb - Linux文档专区 - 2007-04-24 17:54:28 阅读(648) 回复(0)