dosbox 里好像不能識別 rdrand,這個intel cpu 生成亂數的指令。而visual c++太大了,下載有困難
------------------------------------------------------------------------------
; Generate a 16 bit random number
; Return TRUE if Rand generated successfully, or FALSE if not
;
; BOOLEAN EFIAPI RdRand16Step (UINT16 *Rand); RCX
;------------------------------------------------------------------------------
RdRand16Step PROC
; rdrand ax ; generate a 16 bit RN into ax, CF=1 if RN generated ok, otherwise CF=0
db 0fh, 0c7h, 0f0h ; rdrand r16: "0f c7 /6 ModRM:r/m(w)"
jb rn16_ok ; jmp if CF=1
xor rax, rax ; reg=0 if CF=0
ret ; return with failure status
rn16_ok:
mov [rcx], ax
mov rax, 1
ret
RdRand16Step ENDP
uj5u.com熱心網友回復:
你是要編譯鏈接這個代碼還是要運行這程式,是 dos16 類的還是 win64 的程式?因為你提及的 dosbox 和代碼里出現的 rax 或 rcx 有沖突吧?若是要可以編譯鏈接簡單的 win64 的程式的 ml64.exe 及 link.exe,我倒還真剛剛從 vs2019 里扒出來個,需要的話給個郵箱,不過只有這些,不包括可能需要的 include (這個或可以使用 masm32 的)及 lib (也備份下來了,但整個比較大)。
uj5u.com熱心網友回復:
x64中運行的32位和16位程式無法使用64位指令,這和32位處理器運行在16位模式下可以使用32位指令是不一樣的rdrand、xor rax, rax在16位程式中都不支持
uj5u.com熱心網友回復:
學匯編的人都應該知道,VirtualBox和Bochs是你們的好朋友。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/247805.html
標籤:匯編語言
