當翻譯下面的代碼段時,有人能告訴我ptr
在那裏的目的嗎?這個陳述在裝配中意味着什麼?
cmp byte ptr [eax], 0
PTR是一個標籤,它的值是:
(++>
我與cmp
理解是,它左邊的值進行比較,與右邊的值。
涉及第三個參數(ptr
),這是什麼意思?是否將ptr
與eax
中的存儲器地址值與0
進行比較?
如果有人能爲我翻譯成英文,那會很棒。謝謝。
當翻譯下面的代碼段時,有人能告訴我ptr
在那裏的目的嗎?這個陳述在裝配中意味着什麼?
cmp byte ptr [eax], 0
PTR是一個標籤,它的值是:
(++>
我與cmp
理解是,它左邊的值進行比較,與右邊的值。
涉及第三個參數(ptr
),這是什麼意思?是否將ptr
與eax
中的存儲器地址值與0
進行比較?
如果有人能爲我翻譯成英文,那會很棒。謝謝。
在英特爾彙編語法,還有就是操作數大小沒有明確提及。當你說mov eax, 0
時,顯然需要一個32位操作數(因爲eax
是32位寬),並且mov al, 0
意味着8位。
但是,當你提領的存儲位置,也沒有辦法來推斷操作數的大小,所以你必須明確地說byte ptr
,word ptr
,dword ptr
或quad ptr
,8,16,32位和64位操作數指定它,分別。
所以你的指令在由eax
值與0
eax
包含指向某個地址的指針。該指令cmopares字節值eax
是pointint與0
類似:
char *p = addr;
if(*p == 0)
...
PTR尋址的存儲器中的一個字節(8位)比較沒有指令操作數,但第一操作數的比較的選項。
對於10字節的擴展精度浮點值,它可以是「tword」或「tbyte」;語法不同。因爲這在技術上不是十個字,而是十個字節。 –