Linux 汇编代码
在linux内核的源代码中,以汇编语言编写的程序或程序段,有两种不同的形式。
第一种事完全的汇编代码,这样的代码采用.s作为文件的后缀。事实上,尽管是完全的汇编代码,现代的汇编工具也吸收了C语言的长处,也在汇编之前加上了一趟预处理,而预处理之前的文件则以.s为后缀。此类(.s)文件也和C程序一样,可以使用#include、#ifdef等等成分,而数据结构也一样可以在.h的文件中加以定义。
第二种是嵌在C程序中的汇编语言片断。虽然在ANSI的C语言标准中并没有关于汇编片段的规定,事实上各种实际使用的C编译中都作了这方面的扩充,而
GNU的C编译gcc也在这方面作了很强的扩充。
在DOS/windows领域中,386汇编语言都采用Intel定义的语句格式。可是,在Unix领域中,采用的却是由AT&T定义的格式。
AT&T的汇编与Intel的汇编主要有以下的区别:
在Intel格式中大多使用大写字母,而在AT&T格式中都使用小写字母。
在AT&T格式中,寄存器名要加上“%”作为前缀
,而在Intel格式中不带前缀。
在AT&T的386汇编语言中,指令的源操作数的顺序与在Intel的386汇编语言中正好相反。
在AT&T格式中,访问指令的操作数的宽度有操作码名称的最后一个字母(操作码的后缀决定)。用作操作码后缀的字母有b(8位)。
w(16位)和1(32位)。
而在Intel格式中,则是在表示内存单元的操作数前面加上“BYTE PTR”“WORD PTR”,“DWORD
PTR”来表示。
在AT$T格式中,直接操作数要加上“$”作为前缀
,而在Intel格式中则不带前缀。
在AT$T格式中,绝对转移和调用指令jump/call的操作数要加上“*”作为前缀
,而在intel格式则不带。
远程的转移指令和子程序调用指令的操作码名称,在AT$T格式中为“ljump”和“lcall”,
而在intel格式中,则为“JMP FAR”和“CALL
FAR”当转移和调用的目标为直接操作数时,两种不同的表示如下:
CALL FAR SECTION:OFFSET(Intel 格式)
JMP
FAR SECTION:OFFSET(Intel 格式)
lcall $section,$offset
(AT$T格式)
lcall $secton,$offset (AT$T格式). 与之相应的远程返回指令,则为:
RET
FAR STACK_ADJUST (Intel 格式)
Lret $stack_adjust (AT$T
格式)
间接寻址的一般格式,两者的区别如下:
SECTION :[BASE+INDEX*SCALE+DISP](Intel
格式)
S
相关文档:
1.Linux“线程”
进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型。Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程。
大家知道,进程是资源分配的单位,同一进程中的多个线程共享该进程的 ......
以Debian的方式系列(IN THE DEBIAN WAY):
Linux网络基础
etony C.F.AN etony@tom.com
v0.0.1, 2006-7-23
--------------------------------------------------------------------------------
本文档主要介绍讲述在 Debian系统下有关网络的一些基本信息.
------------------------------------------------------- ......
关于linux图形界面的基本知识
作者:GuCuiwen email:win2linux@163.com
很多Linux初学者分不清楚Linux和X之间, X和Xfree86之间, X和KDE, GNOME等之间是什么关系. 常常混淆概念,我想以比较易于理解的方式说明一下X,X11,XFREE,WM,KDE,GNOME等之间的关系.由于本人水平有限可能存在错误,请高手指正 ......
svn服务器部署在Linux操作系统上(IP:192.168.2.6),我将备份文件备份到本地d盘(windows)操作系统(IP:192.168.3.86)。
服务器上的工程项目存放在CYMS目录下,计划备份到本机的d:\beifen\CYMS文件夹下。
1、运行-->cmd,进入命令提示符。
2、在路径:d:\beifen下使用命令:svnadmin create C ......