📄 pn_gen.asm
字号:
;
; pn_gen.asm - PN pseudo number generator
; generates 16-bit wordlength zero-mean random numbers
; generator polynomial: x^-15+x^-11+x^-2+1
;
; Prototype: int pn_gen(int *)
;
; Entry: arg0 - AR0 pointer to the shift register
; Return: T0 - random number
BIT15 .equ 0x8000
BIT11 .equ 0x0800
BIT2 .equ 0x0004
BIT0 .equ 0x0001
.def _pn_gen
.sect "rand_gen"
_pn_gen
mov *AR0,AC0 ; Get register value
bfxtr #(BIT15|BIT2),AC0,T0 ; Get bit 15 and bit 2
bfxtr #(BIT11|BIT0),AC0,T1 ; Get bit 12 and bit 0
sfts AC0,#1
|| xor T0,T1 ; XOR all bits
mov T1,T0
sfts T1,#-1
xor T0,T1 ; Final XOR
and #1,T1
or T1,AC0
mov AC0,*AR0 ; Update register
sub #0x4000,AC0,T0 ; Zero mean white noise
|| ret
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -