亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1713 | 回復(fù): 3
打印 上一主題 下一主題

[內(nèi)核入門] (&irq)[-1] 疑問? [復(fù)制鏈接]

論壇徽章:
13
15-16賽季CBA聯(lián)賽之八一
日期:2016-07-08 21:00:1415-16賽季CBA聯(lián)賽之同曦
日期:2017-02-15 14:26:1515-16賽季CBA聯(lián)賽之佛山
日期:2017-02-20 14:19:2615-16賽季CBA聯(lián)賽之青島
日期:2017-05-07 16:49:1115-16賽季CBA聯(lián)賽之廣夏
日期:2017-07-30 09:13:1215-16賽季CBA聯(lián)賽之廣東
日期:2018-07-05 22:34:3615-16賽季CBA聯(lián)賽之江蘇
日期:2018-09-03 12:10:2115-16賽季CBA聯(lián)賽之上海
日期:2018-09-25 03:49:2215-16賽季CBA聯(lián)賽之廣東
日期:2018-09-25 04:09:12
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2016-07-28 10:10 |只看該作者 |倒序?yàn)g覽
arch/i386/kernel/irq.c, line 662~705:
  1. int request_irq(unsigned int irq,
  2.                 void (*handler)(int, void *, struct pt_regs *),
  3.                 unsigned long irqflags,
  4.                 const char * devname,
  5.                 void *dev_id)
  6. {
  7.         ...

  8.         if (irqflags & SA_SHIRQ) {
  9.                 if (!dev_id)
  10.                         printk("Bad boy: %s (at 0x%x) called us without a dev_id!\n", devname, (&irq)[-1]);
  11.         }

  12.         ...
  13. }
復(fù)制代碼
hi~ 關(guān)于(&irq)[-1],我的疑問是這樣:
1. 某些優(yōu)化級(jí)別,部分參數(shù)通過寄存器傳遞
2. 函數(shù)有不同的調(diào)用約定:
http://blog.csdn.net/jia_xiaoxin/article/details/2868216

這里沒有考慮這些,直接就認(rèn)為第一個(gè)參數(shù)前面就是caller的地址了。

論壇徽章:
13
15-16賽季CBA聯(lián)賽之八一
日期:2016-07-08 21:00:1415-16賽季CBA聯(lián)賽之同曦
日期:2017-02-15 14:26:1515-16賽季CBA聯(lián)賽之佛山
日期:2017-02-20 14:19:2615-16賽季CBA聯(lián)賽之青島
日期:2017-05-07 16:49:1115-16賽季CBA聯(lián)賽之廣夏
日期:2017-07-30 09:13:1215-16賽季CBA聯(lián)賽之廣東
日期:2018-07-05 22:34:3615-16賽季CBA聯(lián)賽之江蘇
日期:2018-09-03 12:10:2115-16賽季CBA聯(lián)賽之上海
日期:2018-09-25 03:49:2215-16賽季CBA聯(lián)賽之廣東
日期:2018-09-25 04:09:12
2 [報(bào)告]
發(fā)表于 2016-07-28 10:28 |只看該作者
本帖最后由 _nosay 于 2016-07-28 13:37 編輯

回復(fù) 1# _nosay
  1. #include <stdio.h>

  2. void fun(int arg)
  3. {
  4.         printf("called by 0x%x\n", (&arg)[-1]);
  5.         printf("called by 0x%x\n", (&arg)[1]);
  6. }

  7. void caller()
  8. {
  9.         printf("caller %p\n", caller);  // objdump
  10.         fun(0);
  11. }

  12. int main()
  13. {
  14.         caller();
  15.         return 0;
  16. }
復(fù)制代碼
xx@HP-xx:~/test/12$ gcc test.c -O0 -g -Wall
xx@HP-xx:~/test/12$ ./a.out
caller 0x400570           // 看后面objdump結(jié)果
called by 0xd4962e80  // (&arg)[-1],每次執(zhí)行不一樣
called by 0xa0d1fd30   // (&arg)[1],每次執(zhí)行不一樣

xx@HP-xx:~/test/12$ objdump -j .text -S a.out
  1. void caller()
  2. {
  3.   400570:       55                      push   %rbp
  4.   400571:       48 89 e5                mov    %rsp,%rbp
  5.         fun(0);
  6.   400574:       bf 00 00 00 00          mov    $0x0,%edi
  7.   400579:       e8 af ff ff ff          callq  40052d <fun>
  8. }
  9.   40057e:       5d                      pop    %rbp
  10.   40057f:       c3                      retq
復(fù)制代碼

論壇徽章:
20
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-16 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-18 06:20:00每日論壇發(fā)貼之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16賽季CBA聯(lián)賽之江蘇
日期:2017-06-26 11:05:5615-16賽季CBA聯(lián)賽之上海
日期:2017-07-21 18:12:5015-16賽季CBA聯(lián)賽之青島
日期:2017-09-04 17:32:0515-16賽季CBA聯(lián)賽之吉林
日期:2018-03-26 10:02:16程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-07-15 06:20:0015-16賽季CBA聯(lián)賽之江蘇
日期:2016-07-07 18:37:512015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-17 12:21:08
3 [報(bào)告]
發(fā)表于 2016-07-28 18:09 |只看該作者
這是64位機(jī)器吧,在不優(yōu)化的情況下,fun會(huì)把參數(shù)臨時(shí)拷貝到棧上,&得到的是臨時(shí)變量的地址(棧地址)。

386的代碼假設(shè)第一個(gè)參數(shù)(最后一個(gè)壓棧)上面是返回地址,這個(gè)似乎是合理的?

論壇徽章:
13
15-16賽季CBA聯(lián)賽之八一
日期:2016-07-08 21:00:1415-16賽季CBA聯(lián)賽之同曦
日期:2017-02-15 14:26:1515-16賽季CBA聯(lián)賽之佛山
日期:2017-02-20 14:19:2615-16賽季CBA聯(lián)賽之青島
日期:2017-05-07 16:49:1115-16賽季CBA聯(lián)賽之廣夏
日期:2017-07-30 09:13:1215-16賽季CBA聯(lián)賽之廣東
日期:2018-07-05 22:34:3615-16賽季CBA聯(lián)賽之江蘇
日期:2018-09-03 12:10:2115-16賽季CBA聯(lián)賽之上海
日期:2018-09-25 03:49:2215-16賽季CBA聯(lián)賽之廣東
日期:2018-09-25 04:09:12
4 [報(bào)告]
發(fā)表于 2016-07-29 10:01 |只看該作者
回復(fù) 3# nswcfd

嗯,我用的是64位系統(tǒng)。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP