- 3
- 0
- 约1.87万字
- 约 6页
- 2016-03-12 发布于山西
- 举报
gcc嵌入式汇编2
内核源码学习:Gcc嵌入式汇编 (二)_Aurola_百度空间 Page 1 of 6
mousehecat | | 退出
Aurola
星际之门亚特兰蒂斯
主页 博客博客 相册 | 个人档案 | 好友
博客博客
查看文章查看文章
查查看文章看文章
内核源内核源码学码学习习:: 嵌入式嵌入式汇编汇编 (二(二))
内内核源核源码码学学习习::Gcc嵌入式嵌入式汇编汇编 ((二二))
2008-08-12 01:00
3. Operation Constraint
每一个Input和Output表达式都必须指定自己的操作约束Operation Constraint,我们这里来讨论在80386平台上所可能使用的操作约束。
1、寄存器约束
当你当前的输入或输入需要借助一个寄存器时,你需要为其指定一个寄存器约束。你可以直接指定一个寄存器的名字,比如:
__asm__ __volatile__(movl %0, %%cr0::eax (cr0));
也可以指定一个缩写,比如:
__asm__ __volatile__(movl %0, %%cr0::a (cr0));
a GCC C/C++ %eax %ax %al
如果你指定一个缩写,比如字母 ,则 将会根据当前操作表达式中 表达式的宽度决定使用 ,还是 或 。比如:
unsigned short __shrt;
__asm__ (mov %0 ,%%bx : : a(__shrt));
由于变量__shrt是16-bit short类型,则编译出来的汇编代码中,则会让此变量使用%ex寄存器。编译结果为:
movw -2(%ebp), %ax # %ax = __shrt
#APP
movl %ax, %bx
#NO_APP
无论是Input,还是Output操作表达式约束,都可以使用寄存器约束。
下表中列出了常用的寄存器约束的缩写。
约束约束 意义意义
约约束束 Input/Output 意意义义
r I,O 表示使用一个通用寄存器,由GCC在%eax/%ax/%al, %ebx/%bx/%bl, %ecx/%cx/%cl, %edx/%dx/%dl中选取一个GCC认为合适的。
q I,O 表示使用一个通用寄存器,和r的意义相同。
a I,O 表示使用%eax / %ax / %al
b I,O 表示使用%ebx / %bx / %bl
c I,O 表示使用%ecx / %cx / %cl
d I,O 表示使用%edx / %dx / %dl
D I,O 表示使用%edi / %di
S I,O 表示使用%esi / %si
f I,O 表示使用浮点寄存器
t I,O 表示使用第一个浮点寄存器
u I,O 表示使用第二个浮点寄存器
2、内存约束
如果一个
您可能关注的文档
- c语言深度解剖(完美高清文字版).pdf
- dcfw-1800ges防火墙快速配置手册--for v3x版本.pdf
- ebox-2300_wifi_installation.pdf
- fortigate防火墙安全配置规范.pdf
- fbi秘籍:如何读懂肢体语言(图文原版).pdf
- gartner如何定义下一代防火墙-sinogrid.pdf
- freelink wifi hdmi 无线媒体分享器使用说明书.pdf
- gbt1.1-2009培训教材(福建标准院内部培训教材).pdf
- gcc hacks in the linux kernel.pdf
- gcc internals and porting.pdf
最近下载
- 2026年开工第一课主题.ppt
- 普通纪念币防伪课件.pptx VIP
- ASTM A388A388M-2018钢锻件超声检验标准操作方法中文版.pdf VIP
- 艺考真题|2020年中传文史哲初试真题原卷放送(附答案).doc VIP
- 毛石混凝土挡土墙施工方案.docx
- 八年级英语上册全册课课练.doc VIP
- POEMS综合征课件完整版.ppt VIP
- NB-T11409-2023水电工程费用构成及概(估)算费用标准.docx VIP
- 2026年春季学期学校德育工作计划.docx VIP
- 深度解析(2026)《TBT 3474.2-2018机车车辆螺纹连接软管 第2部分:橡胶软管》.pptx VIP
原创力文档

文档评论(0)