Re: [問題] printf("%x%x", 0.1);
看板C_and_CPP (C/C++)作者x000032001 (某數..程式工匠)時間14年前 (2011/11/10 23:19)推噓0(0推 0噓 2→)留言2則, 2人參與討論串2/3 (看更多)
: 另外想知道 printf() 內部到底是怎麼做的?
: 老師說 printf() 會把後面全部的 args 吃進去放到某個空間
: 然後依照你給的 formatted string 按照每一種 data type 去切割資料
: 假如是 int 就挖出 4 byte 出來這樣
首先了解有兩個特殊用途暫存器 ebp ,esp
是專門用來處理記憶體裡stack那段的記憶體位址記錄
而詳細的就參考這段資料吧
http://unixwiz.net/techtips/win32-callconv-asm.html
基本上就看Calling a __cdecl function 這個部分
看完了以後你應該就知道funtion call的基本運作方式了
那麼formatted string裡都會有前置字元%來表示這是要去抓參數
那事情就簡單啦 我只要依照ebp+12 ebp+16去依序抓每個變數的值
再把他formatted成你想看到的表示方式 然後輸出~
就這麼簡單...原理上啦 實際說不定還藏了一些加速的東西或是怪怪的東西=..=
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.178.100
→
11/10 23:24, , 1F
11/10 23:24, 1F
→
11/10 23:27, , 2F
11/10 23:27, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章