当前位置: 技术问答>linux和unix
简单!!高分!!Linux0.01中的简单问题—关于switch_to(n)。
来源: 互联网 发布时间:2015-07-13
本文导语: 我在阅读Linux0.01代码时怎么也弄不懂这一段的用处: /* * switch_to(n) should switch tasks to task nr n, first * checking that n isn't the current task, in which case it does nothing. * This also clears the TS-flag if the task we switched t...
我在阅读Linux0.01代码时怎么也弄不懂这一段的用处:
/*
* switch_to(n) should switch tasks to task nr n, first
* checking that n isn't the current task, in which case it does nothing.
* This also clears the TS-flag if the task we switched to has used
* tha math co-processor latest.
*/
#define switch_to(n) {
struct {long a,b;} __tmp;
__asm__("cmpl %%ecx,_currentnt"
"je 1fnt"
"xchgl %%ecx,_currentnt"
"movw %%dx,%1nt"
"ljmp %0nt"
"cmpl %%ecx,%2nt"
"jne 1fnt"
"cltsn"
"1:"
::"m" (*&__tmp.a),"m" (*&__tmp.b),
"m" (last_task_used_math),"d" _TSS(n),"c" ((long) task[n]));
}
AT&T汇编实在太难懂了,请问各位这一段做了什么啊?
明明输入参数有5个,为什么只能在代码中找到%0、%1、%2这三个东东啊?
这个问题把我郁闷死了,求大家帮忙!不胜感激!!
|
%0:指*&__tmp.a
%1:指*&__tmp.b
%2:指last_task_used_math
具体还是要看看AT&T汇编
%1:指*&__tmp.b
%2:指last_task_used_math
具体还是要看看AT&T汇编
|
第一个冒号后的限定字符串用于描述指令中的“输出”操作数。刮号中的操作数与C语言的变量联系起来。第二个冒号后的限定字符串用于描述指令中的“输入”操作数。这个操作数可以是一个立即操作数或者是一个寄存器操作数。
搜一篇介绍AT&T汇编的语法看看。
搜一篇介绍AT&T汇编的语法看看。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。