關於內嵌彙編

2021-06-03 23:36:17 字數 979 閱讀 9495

最近才發現原來noi不給用內嵌彙編……那麼這篇文章除了平常做做oj以外就沒什麼意義了……

參考自:

嗯……搞oi久了應該都會碰到這麼一種問題

爆棧……

當然,手寫棧是最普遍的一種解決方法

比如noi2011 day2 t1,ms是臨時換的一道水題,只要會手寫棧就可以水過

pascal黨是很舒服的,因為可以在**中手動把棧開大

但是c/c++黨不行……因為ms棧的大小是在鏈結時決定的……

如果是自己測的話,可以設定gcc/g++的引數,加入-wl,--stack=***x

來手動修改鏈結時決定的棧大小

//***x為棧空間大小,我一般設為一般為1後面若干0……反正是自己測……

但是這種方法在oj或者考試的時候行不通

//因為這種方法要改編譯時的引數//廢話……

而又不想手寫棧的同學可以考慮下面一種方法……私以為比手寫棧要方便

雖然其實手寫棧也挺好寫的……

嗯……下面進入正題

int stack[stack_size],bak;

void call***()

這一段是核心**

嗯……就是寫這樣乙個callfuction過程出來,然後fuction函式在裡面照調

如果需要多次呼叫某個函式,而且引數都不同,可以把callfuction寫成有引數的

如果需要多次呼叫不同的函式,而且湊巧這兩個函式引數列表一樣,還可以多傳乙個函式指標,這樣call的過程就只用寫乙個

它實際上是將指向棧的指標重定向到了乙個陣列上

而且這段**是萬金油

不管是調怎樣的函式,引數有多少個,彙編的部分都是這樣寫

如果要知道內嵌彙編詳細的方式

可以參考

唯一的缺點是消耗的空間會比較大……

poi2008 sta這道題

100w個點的dfs……我硬是開了2kw的陣列才能過

要不然就會re……

關於內嵌彙編

參考自 嗯 搞oi久了應該都會碰到這麼一種問題 爆棧 當然,手寫棧是最普遍的一種解決方法 比如noi2011 day2 t1,ms是臨時換的一道水題,只要會手寫棧就可以水過 pascal黨是很舒服的,因為可以在 中手動把棧開大 但是c c 黨不行 因為ms棧的大小是在鏈結時決定的 如果是自己測的話,...

VB內嵌彙編

vb簡單易用,但功能有時候受限制。vc,delphi可以直接在程式中寫彙編 可惱的是,vb不行。我看過網上也有關於vb嵌入彙編的,不過有些方法,過於複雜,而且也沒相應 的介紹。我這裡提供一種方法,也許大家以後可能有用!基本思路 彙編 可以存在乙個byte型別的陣列中,然後,通過某種手段,把系統控制權...

GCC內嵌彙編

gcc內嵌彙編 限制字元 限制字元有很多種,有些是與特定體系結構相關,此處僅列出常用的限定字元和i386中可能用到的一些常用的限定符。它們的作用是指示編譯器如何處理其後的c語言變數與指令運算元之間的關係,例如是將變數放在暫存器中還是放在記憶體中等,下表列出了常用的限定字母。b 將輸入變數放入ebx ...