fix adder cout
This commit is contained in:
parent
10b25b3da8
commit
ef99073b23
Binary file not shown.
@ -205,12 +205,12 @@ GATEFUNC(Demux5) { int pa = getdata(0); if(getport(38)) { int a = getword(5, 1)
|
|||||||
GATEFUNC(Demux6) { int pa = getdata(0); if(getport(71)) { int a = getword(6, 1) + 7; if(pa != a) { if(pa) { setport(pa, 0); } setport(a, 1); setdata(0, a); } } else { if(pa) { setport(pa, 0); setdata(0, 0); } } }
|
GATEFUNC(Demux6) { int pa = getdata(0); if(getport(71)) { int a = getword(6, 1) + 7; if(pa != a) { if(pa) { setport(pa, 0); } setport(a, 1); setdata(0, a); } } else { if(pa) { setport(pa, 0); setdata(0, 0); } } }
|
||||||
GATEFUNC(Demux7) { int pa = getdata(0); if(getport(136)) { int a = getword(7, 1) + 8; if(pa != a) { if(pa) { setport(pa, 0); } setport(a, 1); setdata(0, a); } } else { if(pa) { setport(pa, 0); setdata(0, 0); } } }
|
GATEFUNC(Demux7) { int pa = getdata(0); if(getport(136)) { int a = getword(7, 1) + 8; if(pa != a) { if(pa) { setport(pa, 0); } setport(a, 1); setdata(0, a); } } else { if(pa) { setport(pa, 0); setdata(0, 0); } } }
|
||||||
GATEFUNC(Demux8) { int pa = getdata(0); if(getport(265)) { int a = getword(8, 1) + 9; if(pa != a) { if(pa) { setport(pa, 0); } setport(a, 1); setdata(0, a); } } else { if(pa) { setport(pa, 0); setdata(0, 0); } } }
|
GATEFUNC(Demux8) { int pa = getdata(0); if(getport(265)) { int a = getword(8, 1) + 9; if(pa != a) { if(pa) { setport(pa, 0); } setport(a, 1); setdata(0, a); } } else { if(pa) { setport(pa, 0); setdata(0, 0); } } }
|
||||||
GATEFUNC(Adder1) { int v = getword(1, 1) + getword(1, 2) + getport(4); setword(1, 3, v); setport(4, (v>>1) & 1); }
|
GATEFUNC(Adder1) { int v = getword(1, 1) + getword(1, 2) + getport(4); setword(1, 3, v); setport(5, (v>>1) & 1); }
|
||||||
GATEFUNC(Adder2) { int v = getword(2, 1) + getword(2, 3) + getport(7); setword(2, 5, v); setport(7, (v>>2) & 1); }
|
GATEFUNC(Adder2) { int v = getword(2, 1) + getword(2, 3) + getport(7); setword(2, 5, v); setport(8, (v>>2) & 1); }
|
||||||
GATEFUNC(Adder4) { int v = getword(4, 1) + getword(4, 5) + getport(13); setword(4, 9, v); setport(13, (v>>4) & 1); }
|
GATEFUNC(Adder4) { int v = getword(4, 1) + getword(4, 5) + getport(13); setword(4, 9, v); setport(14, (v>>4) & 1); }
|
||||||
GATEFUNC(Adder8) { int v = getword(8, 1) + getword(8, 9) + getport(25); setword(8, 17, v); setport(25, (v>>8) & 1); }
|
GATEFUNC(Adder8) { int v = getword(8, 1) + getword(8, 9) + getport(25); setword(8, 17, v); setport(26, (v>>8) & 1); }
|
||||||
GATEFUNC(Adder16) { int v = getword(16, 1) + getword(16, 17) + getport(49); setword(16, 33, v); setport(49, (v>>16) & 1); }
|
GATEFUNC(Adder16) { int v = getword(16, 1) + getword(16, 17) + getport(49); setword(16, 33, v); setport(50, (v>>16) & 1); }
|
||||||
GATEFUNC(Adder32) { unsigned long long v = getword(32, 1) + getword(32, 33) + getport(97); setword(32, 65, v); setport(97, (v>>32) & 1); }
|
GATEFUNC(Adder32) { unsigned long long v = getword(32, 1) + getword(32, 33) + getport(97); setword(32, 65, v); setport(98, (v>>32) & 1); }
|
||||||
GATEFUNC(Rom4x1) { if(getport(6)) { int a = getword(4, 1); for(int i=0; i<1; i++) { setport(5+i, getdata(a + i*16)); } } else { clearword(1, 5); } }
|
GATEFUNC(Rom4x1) { if(getport(6)) { int a = getword(4, 1); for(int i=0; i<1; i++) { setport(5+i, getdata(a + i*16)); } } else { clearword(1, 5); } }
|
||||||
GATEFUNC(Rom4x4) { if(getport(9)) { int a = getword(4, 1); for(int i=0; i<4; i++) { setport(5+i, getdata(a + i*16)); } } else { clearword(4, 5); } }
|
GATEFUNC(Rom4x4) { if(getport(9)) { int a = getword(4, 1); for(int i=0; i<4; i++) { setport(5+i, getdata(a + i*16)); } } else { clearword(4, 5); } }
|
||||||
GATEFUNC(Rom4x8) { if(getport(13)) { int a = getword(4, 1); for(int i=0; i<8; i++) { setport(5+i, getdata(a + i*16)); } } else { clearword(8, 5); } }
|
GATEFUNC(Rom4x8) { if(getport(13)) { int a = getword(4, 1); for(int i=0; i<8; i++) { setport(5+i, getdata(a + i*16)); } } else { clearword(8, 5); } }
|
||||||
|
12
sim/dump.txt
12
sim/dump.txt
@ -500,7 +500,7 @@ Disassembly of section .text:
|
|||||||
66341638: 45 89 19 mov %r11d,(%r9)
|
66341638: 45 89 19 mov %r11d,(%r9)
|
||||||
6634163b: 49 89 14 c2 mov %rdx,(%r10,%rax,8)
|
6634163b: 49 89 14 c2 mov %rdx,(%r10,%rax,8)
|
||||||
6634163f: 41 d1 f8 sar %r8d
|
6634163f: 41 d1 f8 sar %r8d
|
||||||
66341642: ba 04 00 00 00 mov $0x4,%edx
|
66341642: ba 05 00 00 00 mov $0x5,%edx
|
||||||
66341647: 41 83 e0 01 and $0x1,%r8d
|
66341647: 41 83 e0 01 and $0x1,%r8d
|
||||||
6634164b: 5b pop %rbx
|
6634164b: 5b pop %rbx
|
||||||
6634164c: e9 5f fd ff ff jmpq 663413b0 <sim_gate_set_port>
|
6634164c: e9 5f fd ff ff jmpq 663413b0 <sim_gate_set_port>
|
||||||
@ -2225,7 +2225,7 @@ Disassembly of section .text:
|
|||||||
66342d09: 48 83 f9 20 cmp $0x20,%rcx
|
66342d09: 48 83 f9 20 cmp $0x20,%rcx
|
||||||
66342d0d: 0f 85 6d ff ff ff jne 66342c80 <GateFunc_Adder32_F+0x70>
|
66342d0d: 0f 85 6d ff ff ff jne 66342c80 <GateFunc_Adder32_F+0x70>
|
||||||
66342d13: 49 c1 e8 3f shr $0x3f,%r8
|
66342d13: 49 c1 e8 3f shr $0x3f,%r8
|
||||||
66342d17: ba 61 00 00 00 mov $0x61,%edx
|
66342d17: ba 62 00 00 00 mov $0x62,%edx
|
||||||
66342d1c: 4c 89 d1 mov %r10,%rcx
|
66342d1c: 4c 89 d1 mov %r10,%rcx
|
||||||
66342d1f: 5b pop %rbx
|
66342d1f: 5b pop %rbx
|
||||||
66342d20: 5e pop %rsi
|
66342d20: 5e pop %rsi
|
||||||
@ -2321,7 +2321,7 @@ Disassembly of section .text:
|
|||||||
66342e35: 44 89 0b mov %r9d,(%rbx)
|
66342e35: 44 89 0b mov %r9d,(%rbx)
|
||||||
66342e38: 48 89 14 c6 mov %rdx,(%rsi,%rax,8)
|
66342e38: 48 89 14 c6 mov %rdx,(%rsi,%rax,8)
|
||||||
66342e3c: 41 c1 f8 02 sar $0x2,%r8d
|
66342e3c: 41 c1 f8 02 sar $0x2,%r8d
|
||||||
66342e40: ba 07 00 00 00 mov $0x7,%edx
|
66342e40: ba 08 00 00 00 mov $0x8,%edx
|
||||||
66342e45: 41 83 e0 01 and $0x1,%r8d
|
66342e45: 41 83 e0 01 and $0x1,%r8d
|
||||||
66342e49: 5b pop %rbx
|
66342e49: 5b pop %rbx
|
||||||
66342e4a: 5e pop %rsi
|
66342e4a: 5e pop %rsi
|
||||||
@ -2492,7 +2492,7 @@ Disassembly of section .text:
|
|||||||
66343061: 45 89 0a mov %r9d,(%r10)
|
66343061: 45 89 0a mov %r9d,(%r10)
|
||||||
66343064: 48 89 14 c3 mov %rdx,(%rbx,%rax,8)
|
66343064: 48 89 14 c3 mov %rdx,(%rbx,%rax,8)
|
||||||
66343068: 41 c1 f8 04 sar $0x4,%r8d
|
66343068: 41 c1 f8 04 sar $0x4,%r8d
|
||||||
6634306c: ba 0d 00 00 00 mov $0xd,%edx
|
6634306c: ba 0e 00 00 00 mov $0xe,%edx
|
||||||
66343071: 41 83 e0 01 and $0x1,%r8d
|
66343071: 41 83 e0 01 and $0x1,%r8d
|
||||||
66343075: 5b pop %rbx
|
66343075: 5b pop %rbx
|
||||||
66343076: 5e pop %rsi
|
66343076: 5e pop %rsi
|
||||||
@ -2611,7 +2611,7 @@ Disassembly of section .text:
|
|||||||
663431e8: 48 83 f9 08 cmp $0x8,%rcx
|
663431e8: 48 83 f9 08 cmp $0x8,%rcx
|
||||||
663431ec: 0f 85 6e ff ff ff jne 66343160 <GateFunc_Adder8_F+0xe0>
|
663431ec: 0f 85 6e ff ff ff jne 66343160 <GateFunc_Adder8_F+0xe0>
|
||||||
663431f2: 41 c1 f8 08 sar $0x8,%r8d
|
663431f2: 41 c1 f8 08 sar $0x8,%r8d
|
||||||
663431f6: ba 19 00 00 00 mov $0x19,%edx
|
663431f6: ba 1a 00 00 00 mov $0x1a,%edx
|
||||||
663431fb: 48 89 d9 mov %rbx,%rcx
|
663431fb: 48 89 d9 mov %rbx,%rcx
|
||||||
663431fe: 41 83 e0 01 and $0x1,%r8d
|
663431fe: 41 83 e0 01 and $0x1,%r8d
|
||||||
66343202: 5b pop %rbx
|
66343202: 5b pop %rbx
|
||||||
@ -2798,7 +2798,7 @@ Disassembly of section .text:
|
|||||||
6634346e: 48 83 f9 10 cmp $0x10,%rcx
|
6634346e: 48 83 f9 10 cmp $0x10,%rcx
|
||||||
66343472: 0f 85 68 ff ff ff jne 663433e0 <GateFunc_Adder16_F+0x1d0>
|
66343472: 0f 85 68 ff ff ff jne 663433e0 <GateFunc_Adder16_F+0x1d0>
|
||||||
66343478: 41 c1 f8 10 sar $0x10,%r8d
|
66343478: 41 c1 f8 10 sar $0x10,%r8d
|
||||||
6634347c: ba 31 00 00 00 mov $0x31,%edx
|
6634347c: ba 32 00 00 00 mov $0x32,%edx
|
||||||
66343481: 48 89 d9 mov %rbx,%rcx
|
66343481: 48 89 d9 mov %rbx,%rcx
|
||||||
66343484: 41 83 e0 01 and $0x1,%r8d
|
66343484: 41 83 e0 01 and $0x1,%r8d
|
||||||
66343488: 5b pop %rbx
|
66343488: 5b pop %rbx
|
||||||
|
@ -73,7 +73,7 @@ local function createDFF (n) return { name = "DFF" ..n, names = {"D FlipFl
|
|||||||
local function createMux(n) return { name = "Mux"..n, names = {"Mux "..n.." Bit", "Mux "..n.." Bit Vertical"}, func = "if(getport("..(n+math.pow(2,n)+1)..")) { setport("..(n+math.pow(2,n)+2)..", getport(getword("..n..", 1)+"..(n+1)..")); } else { setport("..(n+math.pow(2,n)+2)..", 0); }" } end
|
local function createMux(n) return { name = "Mux"..n, names = {"Mux "..n.." Bit", "Mux "..n.." Bit Vertical"}, func = "if(getport("..(n+math.pow(2,n)+1)..")) { setport("..(n+math.pow(2,n)+2)..", getport(getword("..n..", 1)+"..(n+1)..")); } else { setport("..(n+math.pow(2,n)+2)..", 0); }" } end
|
||||||
local function createDemux(n) return { name = "Demux"..n, names = {"Demux "..n.." Bit", "Demux "..n.." Bit Vertical"}, size = 1, func = "int pa = getdata(0); if(getport("..(n+math.pow(2,n)+1)..")) { int a = getword("..n..", 1) + "..(n+1).."; if(pa != a) { if(pa) { setport(pa, 0); } setport(a, 1); setdata(0, a); } } else { if(pa) { setport(pa, 0); setdata(0, 0); } }" } end
|
local function createDemux(n) return { name = "Demux"..n, names = {"Demux "..n.." Bit", "Demux "..n.." Bit Vertical"}, size = 1, func = "int pa = getdata(0); if(getport("..(n+math.pow(2,n)+1)..")) { int a = getword("..n..", 1) + "..(n+1).."; if(pa != a) { if(pa) { setport(pa, 0); } setport(a, 1); setdata(0, a); } } else { if(pa) { setport(pa, 0); setdata(0, 0); } }" } end
|
||||||
local function createRom(x, y, z) local w = log2(x*y); return { name = "Rom"..w.."x"..z, names = {"ROM "..x.."x"..y..(z>1 and ("x"..z) or "")}, size = x*y*z, func="if(getport("..(w+z+1)..")) { int a = getword("..w..", 1); for(int i=0; i<"..z.."; i++) { setport("..(w+1).."+i, getdata(a + i*"..(x*y)..")); } } else { clearword("..z..", "..(w+1).."); }" } end
|
local function createRom(x, y, z) local w = log2(x*y); return { name = "Rom"..w.."x"..z, names = {"ROM "..x.."x"..y..(z>1 and ("x"..z) or "")}, size = x*y*z, func="if(getport("..(w+z+1)..")) { int a = getword("..w..", 1); for(int i=0; i<"..z.."; i++) { setport("..(w+1).."+i, getdata(a + i*"..(x*y)..")); } } else { clearword("..z..", "..(w+1).."); }" } end
|
||||||
local function createAdder(n) return { name = "Adder"..n, names = {"Adder "..n.." Bit"}, func = (n>=32 and "unsigned long long" or "int").." v = getword("..n..", 1) + getword("..n..", "..(n+1)..") + getport("..(n*3+1).."); setword("..n..", "..(n*2+1)..", v); setport("..(n*3+1)..", (v>>"..n..") & 1);" } end
|
local function createAdder(n) return { name = "Adder"..n, names = {"Adder "..n.." Bit"}, func = (n>=32 and "unsigned long long" or "int").." v = getword("..n..", 1) + getword("..n..", "..(n+1)..") + getport("..(n*3+1).."); setword("..n..", "..(n*2+1)..", v); setport("..(n*3+2)..", (v>>"..n..") & 1);" } end
|
||||||
|
|
||||||
local romsizes = { -- copied from brick gen
|
local romsizes = { -- copied from brick gen
|
||||||
-- 1 bit data 4 bit data 8 bit data 16 bit data 32 bit data 48 bit data 64 bit data
|
-- 1 bit data 4 bit data 8 bit data 16 bit data 32 bit data 48 bit data 64 bit data
|
||||||
|
@ -75,7 +75,7 @@ function network_update()
|
|||||||
local logic = data[i+5]
|
local logic = data[i+5]
|
||||||
local input = data[i+6]
|
local input = data[i+6]
|
||||||
local global = data[i+7]
|
local global = data[i+7]
|
||||||
local numports = tonumber(data[i+8]) or error("no portcount for gate "..(objref))
|
local numports = tonumber(data[i+8])
|
||||||
i = i + 8
|
i = i + 8
|
||||||
|
|
||||||
local ports = {}
|
local ports = {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user