使用 ARM Assembly 生成随机数

发布于 2024-09-14 23:50:49 字数 85 浏览 3 评论 0原文

我想通过在我的 Objective-C 代码中内联一些程序集来生成随机数以在我的 iphone 项目中使用它,这可以通过 arm-assemble 实现吗?

I want to generate random number to use it in my iphone project by Inlining in my Objective-C code some assembly, is this possible with arm-assembly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

冬天的雪花 2024-09-21 23:50:49

在google上查找lfsr,线性反馈移位寄存器。不是真正的随机数生成器,但您可以使用三行或四行汇编程序生成相当好的随机数。

Look up lfsr on google, linear feedback shift register. Not a true random number generator but you can make pretty good random numbers with maybe three or four lines of assembler.

一百个冬季 2024-09-21 23:50:49

去维基百科,找到最简单的随机数生成算法,在汇编中重新实现:)

Go to Wikipedia, find the easiest random number generation algorithm, reimplement in assembly :)

终止放荡 2024-09-21 23:50:49
; ========================= 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
; ========================= 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
夜声 2024-09-21 23:50:49

只需从未初始化的内存地址加载变量。每次访问时,增加地址以获得新的随机数。瞧,保证是随机的,但分布不均匀。

Jost load a variable from an uninitialized memory address. At every access, increment address to get new random numbers. Voila, guarenteed random, but not well distributed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文