汇编笔记整理
2016-04-01 10:48
344 查看
AT&T:
.section .data
value_ascii:
.ascii
"without null"
value_asciz:
.asciz
"with null"
value_float:
.float
0.0
value_single:
.single
0.0
value_double:
.double
0.0
value_byte:
.byte
0
value_short:
.short
0
value_int:
.int
0
value_long:
.long
0
// 8字节整数
value_quad:
.quad
0
/
4000
/ 16字节整数
value_octa:
.octa
0
.section .bss
.comm value_comm
100
.lcomm value_lcomm
100
.section .text
.globl _start
_start:
movl $0, %ebx
movl $1, %eax
int $0x80
INTEL:
.data
var1 BYTE 10h
var2 SBYTE -14
var3 WORD 2000h
var4 SWORD +2345
var5 DWORD 12345678h
var6 SDWORD -2342423
var7 FWORD 0 //48位整数
var8 QWORD 1234567812345678h
//64位整数
var9 TBYTE 1000000000123456789Ah
//80位整数
var10 REAL4 -1.25 //32位短实数
var11 REAL8 3.2E+100
//64位短实数
var12 REAL10 -6.223424E-2343
//80位短实数
.code
main PROC
exit
main ENDP
END main
浮点数编码格式:
单精度:
31位:符号位 23~30位:指数位(需要减去127=2的8次方-1)0~22位:尾数位
双精度:
63位:符号位 52~62位:指数位(需要减去1023=2的10次方-1)0~51位:尾数位
扩展精度:
79位:符号位 64~78位:指数位(需要减去32767=2的15次方-1)0~51位:尾数位
内联汇编:
asm volatile ("汇编代码")
asm:ANSI C标准下不可使用,有别的含义,替代关键字为__asm__
volatile:表明不希望编译器对内联汇编代码进行优化。asm扩展格式下输出隐含在输入中时需要,防止编译器判断此代码段为没有输出的无效的代码段而进行优化删除。
扩展asm:
约束:
a:%eax,%ax,%al
b:%ebx,%bx,%bl
c:%ecx,%cx,%cl
d:%edx,%dx,%dl
S:%esi,%si
D: %edi,%di
r:通用寄存器
q:%eax %ebx %ecx %edx
A:%edx:%eax
f:浮点寄存器
t:%st0
u:%st1
m:内存位置
o:偏移内存位置
V:直接内存位置
i:立即整数值
n:值已知的立即整数值
g:任何
0:使用第一个命名寄存器
输出修饰符:
+:可以读取和写入操作数
=:只能写入操作数
%:如果必要,操作数可以和下一个操作数切换
&:在内联函数完成之前,可以删除或者重新使用操作数
.section .data
value_ascii:
.ascii
"without null"
value_asciz:
.asciz
"with null"
value_float:
.float
0.0
value_single:
.single
0.0
value_double:
.double
0.0
value_byte:
.byte
0
value_short:
.short
0
value_int:
.int
0
value_long:
.long
0
// 8字节整数
value_quad:
.quad
0
/
4000
/ 16字节整数
value_octa:
.octa
0
.section .bss
.comm value_comm
100
.lcomm value_lcomm
100
.section .text
.globl _start
_start:
movl $0, %ebx
movl $1, %eax
int $0x80
INTEL:
.data
var1 BYTE 10h
var2 SBYTE -14
var3 WORD 2000h
var4 SWORD +2345
var5 DWORD 12345678h
var6 SDWORD -2342423
var7 FWORD 0 //48位整数
var8 QWORD 1234567812345678h
//64位整数
var9 TBYTE 1000000000123456789Ah
//80位整数
var10 REAL4 -1.25 //32位短实数
var11 REAL8 3.2E+100
//64位短实数
var12 REAL10 -6.223424E-2343
//80位短实数
.code
main PROC
exit
main ENDP
END main
浮点数编码格式:
单精度:
31位:符号位 23~30位:指数位(需要减去127=2的8次方-1)0~22位:尾数位
双精度:
63位:符号位 52~62位:指数位(需要减去1023=2的10次方-1)0~51位:尾数位
扩展精度:
79位:符号位 64~78位:指数位(需要减去32767=2的15次方-1)0~51位:尾数位
内联汇编:
asm volatile ("汇编代码")
asm:ANSI C标准下不可使用,有别的含义,替代关键字为__asm__
volatile:表明不希望编译器对内联汇编代码进行优化。asm扩展格式下输出隐含在输入中时需要,防止编译器判断此代码段为没有输出的无效的代码段而进行优化删除。
扩展asm:
约束:
a:%eax,%ax,%al
b:%ebx,%bx,%bl
c:%ecx,%cx,%cl
d:%edx,%dx,%dl
S:%esi,%si
D: %edi,%di
r:通用寄存器
q:%eax %ebx %ecx %edx
A:%edx:%eax
f:浮点寄存器
t:%st0
u:%st1
m:内存位置
o:偏移内存位置
V:直接内存位置
i:立即整数值
n:值已知的立即整数值
g:任何
0:使用第一个命名寄存器
输出修饰符:
+:可以读取和写入操作数
=:只能写入操作数
%:如果必要,操作数可以和下一个操作数切换
&:在内联函数完成之前,可以删除或者重新使用操作数
相关文章推荐
- 码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清
- 【hihocoder】机会渺茫
- cocos2dx 防御式编程模式
- CF--Dima and Salad
- 如何实现viewpager自动轮播
- 购物商城shopping连载(9)
- MATLAB Support Package for Arduino Hardware 安装当中的一些问题
- [疯狂Java]SQL:DDL语句(定义、修改表结构)
- 最简单的UDP程序
- Swift 初识
- JS判断对象是不是数组“Array”
- 还有没有道德的底线
- RValue forward sample code
- 字符串作业2
- python语言学习2——安装python
- C# 元数据描述
- Codeforces 659B Qualifying Contest 【模拟】
- Android 属性动画(Property Animation) 完全解析【附源码】
- Codeforces 659A Round House 【小数学】
- swift开发笔记28 使用系统自带地图