2013-07-20 64 views
-5

我在Visual Studio 2012中在C++中放置了一個斷點。我運行代碼,右鍵單擊遇到斷點的那一行,然後選擇「轉到Dissembly」。出現一個新窗口,顯示我的程序看起來像什麼樣的彙編程序。但是,當我開始向上或向下滾動彙編程序時,滾動條開始變得越來越大,就好像我的滾動正在創建額外的彙編程序指令(顯然,這對於CPU來說實際上會發生什麼 - 但確實彙編程序窗口應該只是顯示我的程序的彙編程序 - 不是我的鼠標滾動????)Visual Studio彙編器窗口永遠滾動嗎?

有人可以確認爲什麼滾動條不斷調整大小,暗示有無限量的彙編程序?

我只是想看看:

彙編

開始我的計劃 - >>滾動 - >>我的程序的

年底彙編

在彙編窗口中(如o用於輸出彙編文件)。 VS2010也會發生同樣的情況。

編輯

程序:

#include <iostream> 

using namespace std; 

int main(){ 
    cout << "test" << endl; 
    int b = 0; 
    cin >> b; 
} 

難道是因爲控制檯窗口是打開和CIN >>等待?

+4

我不使用那個特定的工具集,但是對於任何非平凡的程序,編譯器生成的程序集數量將是巨大的。顯然不是無限的,而是巨大的。 –

+0

五人決定這個問題是soooooooooo明顯.....他們不能留下一個答案.... – user997112

+0

@DavidRodríguez-dribeas嗨,該計劃是非常平凡(見編輯)。 – user997112

回答

2

反彙編窗口是一個內存查看器。 它顯示:

  • 存儲器地址
  • 的代碼字節(一旦從上下文菜單中選中)
  • 的反彙編代碼

存儲器地址範圍不限於該程序的分配內存,所以你可以滾動整個地址空間。

微軟expains滾動here的行爲:

您還會注意到,垂直滾動條的 非標準的方式進行操作。現代電腦的地址空間非常大,通過抓住滾動條 的拇指並將其拖動到隨機位置,很容易迷路。出於這個原因,拇指 是「彈簧」,並始終保持在滾動條的中心。 在原生代碼應用程序中,您可以向上或向下翻頁,但不能自由滾動。