![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
汇编
文章平均质量分 64
c s d n GoToHell
这个作者很懒,什么都没留下…
展开
-
C语言调用内嵌汇编实现的函数的例子
一个C语言调用内嵌汇编实现的函数的例子。 extern inline int my_strncmp(const char * cs, const char * ct, int count) { register int __res; __asm__("cld\n" "1:\tdecl %3\n\t" "js 2f\n\t" "lodsb\n\t" "scasb\n\t" "原创 2020-06-15 12:29:50 · 606 阅读 · 0 评论 -
Linux内核完全注释(v0.11)--get_base()、get_limit()
阅读Linux内核完全注释traps.c,发现有个函数赵博士没有说明。好吧,自己动手丰衣足食。 traps.c里源码第72行是这样的: printk("base: %p, limit: %p\n", get_base(current->ldt[1]), get_limit(0x17)); 这个get_base()函数在sched.h里定义的: #define _get_base(addr) ({\ unsigned long __base; \ __asm__("movb %3,%%dh\n\t"原创 2020-06-11 18:55:13 · 374 阅读 · 0 评论 -
Linux内核学习遇到的汇编指令
Linux内核学习遇到的汇编指令 cld clear direction,控制edi指向的字符串地址变化方向是从低到高。 std set direction, repne repeat not equal,当不相等时重复。与它相对的是repe,当相等时重复。 scasb 【al】–【di】,比较查询di中是否有al中的字符,每比较一次di自动变化,指向上一个或下一个单元。 repne scasb 扫描edi指向的字符串,扫描方向从低地址向高地址,如果遇到字节等于al或者ecx计数为0,则扫描结束。 stos原创 2020-06-10 10:17:15 · 750 阅读 · 0 评论 -
嵌入汇编示例讲解
嵌入汇编介绍 底层的C语言程序经常用到嵌入汇编(也称内联汇编)语句。经常写高级语言的同学应该很少接触到,一旦碰到两眼一抹黑。这里列举一个例子简单介绍下。如果有精力推荐Linux内核完全注释系统地学习。 具有输入和输出的嵌入汇编语句基本格式如下: asm("汇编语句" :输出寄存器 :输入寄存器 :会被修改的寄存器); 除了第一行,后面带冒号的行不适用就可以忽略(“:”需要保留,否则无法区分输出寄存器、输入寄存器还是会被修改的寄存器)。 “汇编语句”是一系列汇编指令,用于实现某个功能原创 2020-06-09 21:42:10 · 581 阅读 · 0 评论