我在這裏的新功能與我在裝配中的新功能相同。我希望你能幫助我開始。 我使用32位(i686)Ubuntu在程序集中使用gcc編譯器。對32位系統中的64位字進行操作
我知道通用寄存器最大爲32位(4字節),但是當我必須對64位數進行操作時呢?英特爾的說明表示,高位存儲在%edx中,並且低於%eax 好... 那麼,如何使用這個2寄存器號碼做些什麼呢?我必須將64位十進制轉換爲十六進制,然後將其保存到內存並顯示在屏幕上。
如何在.data段的程序開始時製作64bit quadword?
編輯: 當我在C中定義的全局變量LLU(很長很長的無符號),並編譯成彙編它使:
.data
a:
.long <low bits>
.long <high bits>
這是因爲參數保存在棧中向後或更多的東西?
將十進制轉換爲二進制?不知何故,你在寄存器中有十進制數字? – 2012-03-28 23:32:47
gosh,thx ...我不得不將dec轉換爲hex,需要編輯帖子。完全去dec - >(U2 - 二進制補碼) - >十六進制,但是我想從容易開始。 – Vilo 2012-03-28 23:41:41
我相信'edx:eax'只適用於'idiv'和'imul',不適用於一般用途的64位數學。 – 2012-03-29 04:17:05