我想在我的iphone项目中通过Inlining在我的Objective-C代码中使用它生成一个随机数来进行一些装配,这是否可以通过arm-assembly进行?
答案 0 :(得分:2)
; ========================= RANDOM.INC =========================
; Call with, NOTHING
; Returns, AL = random number between 0-255,
; AX may be a random number too ?
; DW RNDNUM holds AX=random_number_in AL
SEED DW 3749h
RNDNUM DW 0
align 16
RANDOM:
PUSH DX
MOV AX,[SEED] ;; AX = seed
MOV DX,8405h ;; DX = 8405h
MUL DX ;; MUL (8405h * SEED) into dword DX:AX
;
CMP AX,[SEED]
JNZ GOTSEED ;; if new SEED = old SEED, alter SEED
MOV AH,DL
INC AX
GOTSEED:
MOV WORD [SEED],AX ;; We have a new seed, so store it
MOV AX,DX ;; AL = random number
MOV WORD [RNDNUM],AX
POP DX
RET
答案 1 :(得分:1)
在google,线性反馈移位寄存器上查找lfsr。不是一个真正的随机数生成器,但你可以使用三到四行汇编程序制作非常好的随机数。
答案 2 :(得分:1)
转到维基百科,找到最简单的随机数生成算法,在汇编中重新实现:)
答案 3 :(得分:-1)
Jost从未初始化的内存地址加载变量。在每次访问时,增加地址以获得新的随机数。 Voila,保守随机,但分布不均。