nux程式設計的108種奇淫巧計 5 rbp暫存器

2021-08-25 12:26:56 字數 817 閱讀 9695

昨天在家瀏覽了紐約大學的乙個課件,找到乙個例子,很有趣,我稍微修改了一下,支援32位和64位環境:如下。

以後該系列採用這樣的模式,首篇只貼**,續篇進行解釋和分析,期間希望讀者朋友能自己做實驗。

理解該**就算對rbp,rsp暫存器以及一些呼叫有了直接的接觸。

裡面有兩個奇怪的數字17和23,這是為什麼呢?續篇給予解答。

編譯方法:

64位環境:

g++ -g test.cpp -o test_64 //64位**

g++ -g -m32 test.cpp -o test_32 //32位**

32位環境:

g++ -g test.cpp -o test_32

#include

#include

#include

#include

int done = 0;

int thread1( void )

int thread2( void )

int thread3( void )

int thread4( void )

typedef int (*thread)(void);

thread ready = ;

const int thread_count = sizeof( ready )/sizeof( thread );

int next_thread = 0; // array-index for 'ready' list

void upon_signal( int signum )

int main( int argc, char **argv )

linux程式設計的108種奇淫巧計 12 儲存計算

有時候,我們可以將計算好的值進行儲存,需要的時候取出,這樣可以大大降低計算量,用空間代替時間。我們從乙個問題出發,農夫john和他的朋友們一同去參加cownty展會,這個展會的門票是50元,排隊購票的人 有2n個人,其中n個人拿著100元的鈔票,另外n個人拿著50元的鈔票,農夫john想知道在這種情...

關於linux程式設計的奇淫巧計系列的FAQ

自從發布linux程式設計的奇淫巧計系列以後,很多讀者給我寫來郵件,這裡我一併作答。1 你寫的內容有多少是實踐中可以用到的?還是只是花裡胡哨的東西?答 我負責的告訴你,大部分都是工程實踐中用到的,否則我哪能想到這麼些個花招,大部分都是我在工作實踐和知名開源 中看來得,如果有長期看開源 的朋友應該能體...

關於linux程式設計的奇淫巧計系列的FAQ

自從發布linux程式設計的奇淫巧計系列以後,很多讀者給我寫來郵件,這裡我一併作答。1 你寫的內容有多少是實踐中可以用到的?還是只是花裡胡哨的東西?答 我負責的告訴你,大部分都是工程實踐中用到的,否則我哪能想到這麼些個花招,大部分都是我在工作實踐和知名開源 中看來得,如果有長期看開源 的朋友應該能體...