a gcc 4.2.4 bug(被stos指令累加后%edi作为参数的)

*
 * Ok, now we can initialize the rest of the tty devices and can count
 * on memory allocations, interrupts etc..
 */
int tty_init(void)
{
    if (sizeof(struct tty_struct) > PAGE_SIZE)
        panic("size of tty structure > PAGE_SIZE!");

/*
     * dev_tty_driver and dev_console_driver are actually magic
     * devices which get redirected at open time.  Nevertheless,
     * we register them so that register_chrdev is called
     * appropriately.
     */
    memset(&dev_tty_driver, 0, sizeof(struct tty_driver));
    dev_tty_driver.magic = TTY_DRIVER_MAGIC;
    dev_tty_driver.name = "tty";
    dev_tty_driver.name_base = 0;
    dev_tty_driver.major = TTY_MAJOR;
    dev_tty_driver.minor_start = 0;
    dev_tty_driver.num = 1;
    
    if (tty_register_driver(&dev_tty_driver))
        panic("Couldn't register /dev/tty driver\n");
        
        
(gdb) disassemble
Dump of assembler code for function tty_init:
0x0013ff5c <tty_init+0>:    push   %edi
0x0013ff5d <tty_init+1>:    sub    $0x14,%esp
0x0013ff60 <tty_init+4>:    mov    $0x16bb40,%edi
0x0013ff65 <tty_init+9>:    xor    %eax,%eax
0x0013ff67 <tty_init+11>:    mov    $0x27,%ecx
0x0013ff6c <tty_init+16>:    cld    
0x0013ff6d <tty_init+17>:    rep stos %eax,%es:(%edi)
0x0013ff6f <tty_init+19>:    movl   $0x5402,0x16bb40
0x0013ff79 <tty_init+29>:    movl   $0x1567ed,0x16bb44
0x0013ff83 <tty_init+39>:    movl   $0x0,0x16bb48
0x0013ff8d <tty_init+49>:    movw   $0x4,0x16bb4c
0x0013ff96 <tty_init+58>:    movw   $0x0,0x16bb4e
0x0013ff9f <tty_init+67>:    movw   $0x1,0x16bb50
0x0013ffa8 <tty_init+76>:    push   %edi
0x0013ffa9 <tty_init+77>:    call   0x13fec4 <tty_register_driver>

注:%edi被stos又作为tty_register_driver参数,显然不对,这应该是gcc 4.2.4的bug

a gcc 4.2.4 bug(被stos指令累加后%edi作为参数的)的更多相关文章

  1. rep stos dword ptr es:[edi]

    本文链接:https://blog.csdn.net/ypist/article/details/8467163今天读代码时,忽然跳出如下一条指令==>>汇编代码: rep stos dw ...

  2. stos指令

    mov ecx,30mov eax,0cccccccchrep stos dword prt es:[edi]stos指令,它的功能是将eax中的数据放入的edi所指的地址中,同时,edi会增加4个字 ...

  3. rep stos ptr dword es:[edi]

    今天读代码时,忽然跳出如下一条指令==>>汇编代码: rep stos dword ptr es:[edi] 在网上查了相关资料显示:/************************** ...

  4. rep stos 指令(Intel汇编)

    今天读代码时,忽然跳出如下一条指令==>> 汇编代码: rep stos dword ptr es:[edi] 在网上查了相关资料显示: /************************ ...

  5. gcc limits.h的bug定位看include_next和默认搜索路径

    手编的交叉编译工具链经常报一堆宏未定义,例如下面是编译gtest的时候报_POSIX_PATH_MAX宏未定义,有时还会上报SSIZE_MAX等宏未定义: googletest/src/gtest-f ...

  6. [Bug FIX]安装 account_check_writing模块后采购收据打印报错的问题

    大写金额没填报错 修改:report_check.xml文件,把<span t-esc="fill_stars(o.amount_in_word)"/>一行替换为 &l ...

  7. 微信公共平台注册 bug: 验证码不应该输入后,就立即检查其有效性

    本文链接: https://www.cnblogs.com/hchengmx/p/10793037.html 刚刚想注册个微信公众号,就发现了这个问题,在这里记录一下. 已经发到testhome了,链 ...

  8. 翻页bug 在接口文档中应规范参数的取值区间

    <?php$a=array("red","green","blue","yellow","brown&q ...

  9. 翻页bug 在接口文档中应规范参数的取值区间 接口规范

    <?php$a=array("red","green","blue","yellow","brown&q ...

随机推荐

  1. topcoder srm 390 div1

    problem1 link 记录一个模$k$之后的值是否出现过,出现过则出现循环,无解:否则最多$k$ 次一定能出现0. import java.util.*; import java.math.*; ...

  2. shell编程(三)之条件判断(if语句)

    练习:写一个脚本判断当前系统上是否有用户的默认shell为bash: 如果有,就显示有多少个这类用户:否则,就显示没有这类用户: #!/bin/bash # grep '\<bash$' /et ...

  3. FJUT3574 HOME_W的附加题(带权线段树)题解

    题意: 给定n个数a1,a2,a3,……an.和m次操作. 每次操作格式如下 x y k   表示将a[x]替换为y.并求替换后,前k小的数之和 思路:我们用带权线段树维护权值,这里就是维护i的个数n ...

  4. 【做题】51NOD1753 相似子串——哈希

    题意:两个字符串相似定义为: 1.两个字符串长度相等 2.两个字符串对应位置上至多有一个位置所对应的字符不相同 给定一个字符串\(s\),\(T\)次询问两个子串在给定的规则下是否相似.给定的规则指每 ...

  5. 【第十七章】 springboot + devtools(热部署)

    技术介绍 devtools:是boot的一个热部署工具,当我们修改了classpath下的文件(包括类文件.属性文件.页面等)时,会重新启动应用(由于其采用的双类加载器机制,这个启动会非常快,如果发现 ...

  6. %lld 和 %I64d的区别

    参考一个博客的链接:https://blog.csdn.net/thunders01/article/details/38879553

  7. DownAlbum:Chrome的pinterest批量下载插件

    一.DownAlbum安装 二.DownAlbum使用 点击DownAlbum图标. 选择Normal. 会出现一个加载的弹窗,等待片刻会打开一个新的窗口. 按Ctrl+S,即可保存相册所有图片. 图 ...

  8. Shiro学习笔记(二)

    首先还是先搭建工程运行环境  依旧搭建的是Maven工程,如果不是Maven 也可以去网上找jar包然后导入 (我使用Maven主要是找依赖配置文件就行,我自己导jar包的时候就是很容易报错) 还是先 ...

  9. oogle advertiser api开发概述——速率限制

    速率限制 为了向遍布全球的 AdWords API 用户提供可靠的服务,我们使用令牌桶算法来衡量请求数并确定每秒查询数 (QPS) 速率.这样做的目的是阻止恶意的或不可控的软件大量入侵 AdWords ...

  10. ASP.NET技术总结

    ASP.NET是ASP相关技术的最新版本,它如何工作: (经典)ASP的后缀名是".asp",通常用VB编写:ASP.NET是".aspx"—— ASP.NET ...