使用ARM Assembly生成随机数

时间:2010-08-18 05:11:51

标签: objective-c arm random inline-assembly

我想在我的iphone项目中通过Inlining在我的Objective-C代码中使用它生成一个随机数来进行一些装配,这是否可以通过arm-assembly进行?

4 个答案:

答案 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,保守随机,但分布不均。