Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

hey /prog/

Name: Anonymous 2012-02-10 19:21

improve my instruction set

1  - ALL -- Allocate
2  - FRE -- Free
3  - ADD -- Add
4  - SUB -- Subtract
5  - MUL -- Multiply
6  - DIV -- Divide
7  - WRT -- Write to memory
8  - MOV -- Move value
9  - SWP -- Swap values
10 - LAB -- Label
11 - GOT -- Goto
12 - CAL -- Call
13 - RET -- Return
14 - PUS -- Push stack
15 - POP -- Pop  stack
16 - MOD -- Modulo
17 - NOT -- Bitwise NOT
18 - AND -- Bitwise AND
19 - OR  -- Bitwise OR
20 - XOR -- Bitwise XOR
21 - LSH -- Left shift
22 - RLS -- Logical    Right Shift
23 - RAS -- Arithmetic Right Shift
24 - LCS -- Left  Circular Shift
25 - RCS -- Right Circular Shift
26 - CMP -- Compare two values (Binary)
27 - JMG -- Jump if the comparison register holds  1, or greater than
28 - JML -- Jump if the comparison register holds -1, or lesser than
29 - JME -- Jump if the comparison register holds  0, or equal to
30 - IRM -- Switch into indirect referencing mode
31 - DRM -- Switch into direct   referencing mode
32 - FAM -- Switch into floating arithmetic  mode
33 - IAM -- Switch into integral arithmetic  mode
34 - SPW -- Spawn a new thread
35 - WTF -- Wait for a  thread to finish executing
36 - DIE -- Kill the current thread of execution
37 - POS -- Size independant pop
38 - PEK -- Copy the first entry on the stack without removing it
39 - PKS -- Copy the first entry on the stack without removing it (Size sentisive)
40 - DUP -- Duplicated the first stack entry so that it occurs twice on the stack
41 - SSP -- Swaps the two first entries of the stack
42 - ROT -- Rotates the top of the stack
43 - PSB -- Push only the specified bytes onto the stack
44 - PPB -- Pop  only the specified bytes off  the stack
45 - ADF -- Add      floating point numbers
46 - SBF -- Subtract floating point numbers
47 - MLF -- Multiply floating point numbers
48 - DVF -- Divide   floating point numbers
49 - CMF -- Compare  floating point numbers
50 - INC -- Increment  the first stack entry (Integer)
51 - DEC -- Deccrement the first stack entry (Integer)
52 - ICF -- Increment  the first stack entry (Floating point)
53 - DCF -- Deccrement the first stack entry (Floating point)
54 - ITF -- Convert integer to floating point number
55 - FTI -- Convert float   to integer
56 - ITD -- Convert integer to double
57 - DTI -- Convert double  to integer
58 - FTD -- Convert float   to double
59 - DTF -- Convert double  to float

Name: Anonymous 2012-02-10 19:23

Why is memory allocation part of the instruction set and why is there no NOP?

p.s. DTF means down to fuck not double-to-float

Name: Anonymous 2012-02-10 19:24

60 - WTF -- Start running the program backwards

Name: Anonymous 2012-02-10 19:48

>>2
Explicit heap allocation; the way the VM handles memory in blocks makes it necessary, but I could see it becoming obsolete soon.

>>3
60 is now INT. For interrupts.

Name: Anonymous 2012-02-10 19:52

Also, 1 is EQ, 2 is GT and 4 is LT, so that bitwise cmp & 1 is true for true and false for false.

Name: Anonymous 2012-02-10 19:59

ANL and ORL for logical and/or respectively

Name: Anonymous 2012-02-10 20:18

>>6
For boolean operations? This is how it would be done as of now

push x
push y
cmp
jmg else
jml else
and_cmp_1:
push z
push i
cmp
jme do_stuff
else:


You mean something like this?

push x
push y
cmp
push %cmp
push z
push a
cmp
push %cmp
anl 2

Name: Anonymous 2012-02-10 20:20

LCK - (lock) atomic check and lock else loop (busy-wait) for mutual exclusion.
ULK - (unlock) atomic unlock for mutual exclusion.
SMP - atomic semaphore decrement, check, and push process into semaphore queue (make it happen on an architecture level? is this possible?).
SMV - atomic semaphore increment, check, and pop process into ready queue.

Name: Anonymous 2012-02-10 20:38

1  - ALL -- Allocate
2  - FRE -- Free
7  - WRT -- Write to memory
28 - JML -- Jump if the comparison register holds -1, or lesser than
34 - SPW -- Spawn a new thread
35 - WTF -- Wait for a  thread to finish executing
36 - DIE -- Kill the current thread of execution
39 - PKS -- Copy the first entry on the stack without removing it (Size sentisive)
40 - DUP -- Duplicated the first stack entry so that it occurs twice on the stack
41 - SSP -- Swaps the two first entries of the stack
42 - ROT -- Rotates the top of the stack
43 - PSB -- Push only the specified bytes onto the stack
44 - PPB -- Pop  only the specified bytes off  the stack
56 - ITD -- Convert integer to double

all those are stupid as hell
if you want to write a theoretical stack-based instruction set then at least do it right, not mixing everything into an inefficient piece of shit, stack size sensitive entries at machine level? nigga please

Name: Anonymous 2012-02-10 20:43

NOP for sure,
You should consider how exceptions (or whatever error behaviour it is you'll be using) will fit in this VM, and what instructions will be needed to support it. What will the INT instruction do?
It might be good to have instructions just to save and restore the state of the VM on the stack if external triggered interrupts are possible, using IRM, DRM, FAM, IAM in interrupt code will be hard otherwise.

Name: Anonymous 2012-02-10 20:47

ORR - because OR is the only opcode here with 2 letters
HXA - hax anus
IFQ - insert ``faggot quotes''
CSI - check security of internet
FBA - fake bugs and abort
SSV - signal segmentation violation
ANL - anal
WAM - waste all memory
PSN - push narcotics
XUS - execute user
PCS - pop caps and split

Name: Anonymous 2012-02-10 20:48

PRG - shitpost /prog/

Name: Anonymous 2012-02-10 20:51

CHK - check his dubs >>11

Name: Anonymous 2012-02-10 20:52

GJS - gas Jews and shitpost
also: Gerald Jay Sussman

Name: Anonymous 2012-02-10 20:55

WAM - waste all memory
Enters into a Warren Abstract Machine with Wikipedia preloaded as predicates.

Name: Anonymous 2012-02-10 21:00

>>11
>PSN
SNY - leak internal information about running program

Name: Anonymous 2012-02-10 21:08

>>14
Great job

>>12
That shouldn't be hard to automate

Name: Anonymous 2012-02-10 21:12

>>9
stack size sensitive entries at virtual machine level? nigga. . . That's alright

Also, by `size sensitive' what I meant was that there are two ways of popping/peeking from the stack; one way where, if the given destination is not the right size, destroy it and create a new one of the right size, or it it's not the right size, copy only as many bytes as permittable without drestroying data. Also, every stack `entry' is followed by a size_t sized integer containing its size.

Name: Anonymous 2012-02-10 21:14

>>18
s/as permittable without drestroying data./as possible. Also, not overwritre memory you don't have to/


POSSIBLE MISUNDERSTANDING RESOLVED

Name: Anonymous 2012-02-10 21:17

>>19
U\ forgot\ 2\ escape\ ur\ spaces.

Name: Anonymous 2012-02-10 21:18

>>22
nice dubs bro

Name: Anonymous 2012-02-10 21:19

RMS -- Shows RMS
HLT -- Halt
HCF -- Halt and Catch Fire
AMD -- Be
shit

Name: Anonymous 2012-02-10 21:20

>>21
Thanks Bro!

Name: Anonymous 2012-02-10 21:37

>>22
How would one go about implementing HLT in a VM?

Also, HCF rings a bell. Where have I heard that joke before?

Name: Anonymous 2012-02-10 22:03

CPP -- sepples mode
FAG -- fire a gun
BBC -- parse bbcode
JEW -- execute jew
CGC -- collect garbage collector

Name: Anonymous 2012-02-10 22:08

DUB -- Get dubs
CHK -- Check the nearest dubs
BRO -- Thank the nearest checker

Name: MOST MATURE 2012-02-10 22:11

NGR -- Nigger

Name: Anonymous 2012-02-10 22:15

GNU -- Install Gentoo

Name: Anonymous 2012-02-10 22:25

>>18
allocate and free? those are implementation dependent
write to memory? you don't say?
JML you have a whole comparison register?
all thread instructions don't make any sense, heavily kernel dependent
SSP and ROT look like the same thing but meh, might be perfectly fine

Name: Anonymous 2012-02-10 22:28

also labels and gotos? and no JMP? (since I suppose GOT = JMP) just what new information does a label bring to assembly code that an offset or absolute address doesn't?

Name: Anonymous 2012-02-10 22:30

and how'd you save that label
god how terrifying
maybe the 1b 2f method? still doesn't add anything to the architecture

Name: Anonymous 2012-02-10 22:43

>>24


One apocryphal story about the HCF instruction goes back to the late 1960s, when computers used magnetic core memory. The story goes that in order to speed up the core memory on their next model the engineers increased the read/write currents in the very fine wires that were threaded through the cores. This worked fine when the computer was executing normal programs, since memory accesses were spread throughout memory. However, the HALT instruction was implemented as a "Jump to self". This meant that the same core memory location was repeatedly accessed, and the very fine wires became so hot that they started to smoke - hence the instruction was labeled "Halt and Catch Fire".[1]

Name: Anonymous 2012-02-10 22:53

>>28
Back to /g/, [sup]please!{/sup]

Name: Anonymous 2012-02-10 23:15

PDK -- Protect Data from Corruption
JOI -- Jump On Interrupt
NMW -- [b]NIGGER MATURE[/b] Wait

Name: Anonymous 2012-02-10 23:17

>>6

Anal vs. Oral, who will win?!!!?!

GO INDIA!!

Name: Anonymous 2012-02-10 23:18

The Land of Lisp

Name: Anonymous 2012-02-10 23:25

>>29
ROT allows for rotating > 1 entries

>>30
I don't know what you think I'm trying to accomplish, but it's a bytecode based virtual machine. The labels are stored in a global linked list. Also, the assembler generates the exact same code for `goto' and `jmp'.

The actual macros (for switching over the given opcode) and the keywords used in the assembler vary slightly from the 3 letter codes given here, That was more for pretty alignment; GOT is goto (Case independant) and PUS is push, and so on.

Name: Anonymous 2012-02-10 23:48

just use MIPS

Name: Anonymous 2012-02-10 23:53

What shall the /prog/ Architecture be called?

Name: Anonymous 2012-02-11 0:16

>>39
j39

jew >>39

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List