,你有IF,而中,調用等,這在其他裝配像NASM或TASM:.IF和CMP之間的差異? INVOKE和PUSH&CALL? ?使用哪一個(MASM)在MASM
IF
= CMP
,INVOKE
= push
參數和call
功能,循環(如WHILE
)= CMP
和JMP
到LABELS
,等等....
所以我不明白,如果我在MASM寫IF
,它tanslated到CMP
當我編譯程序(組裝&鏈接)?環路被翻譯成CMP
和JMP
到一些LABLES
? INVOKE
被翻譯成push
參數和call
的功能?基本上我問什麼,如果即時通訊使用IF
WHILE
INVOKE
等,他們翻譯到這裏寫的是什麼:https://en.wikipedia.org/wiki/X86_instruction_listings或他們編譯像這些基本命令。
因爲例如,我寫了一個簡單的聊天,這是插座部分:
invoke socket,AF_INET,SOCK_STREAM,IPPROTO_TCP
.IF eax==INVALID_SOCKET
invoke crt_printf,offset Socketerror,offset formatMessagePRINT
WSAGetLastErrorMACRO
jmp End_Program
.else
mov [ListenSocket],eax
invoke crt_printf,offset SocketSuccess,offset formatMessagePRINT
.ENDIF
正如你所看到的,它看起來就像是寫在高級編程語言代碼。這不是我想要的。我想在可編寫的最低級別編寫彙編程序。
那麼如何在32位組裝中寫入最低級別的可寫入? 我是否需要使用16位程序集(https://en.wikipedia.org/wiki/X86_instruction_listings) 的基本命令來編寫,而不是IF WHILE INVOKE等。 這是我唯一需要停止做的事情嗎?
是的,它們是彙編程序的高級構造('invoke'是一個宏),它們將被轉換成適當的彙編代碼。 – Jester