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

Pages: 1-

Assembly with macros

Name: Anonymous 2014-07-18 23:51

It's cheating.

Name: Anonymous 2014-07-19 2:22

How do you feel about labels?

Name: Anonymous 2014-07-19 2:35

.macro hax, anus
hax \anus
.endm

hax myanus

Name: Anonymous 2014-07-19 3:40

EXPERT ASSEMBLY PROGRAMMING in standard C

#include <stdio.h>
#include <stdint.h>

enum
{
start,
start2,
print,

sys_call,
sys_ret,

end
};

enum
{
pc,
pc_p,
pc_n,
ret_p,
usr
};

int
main (void)
{
uintptr_t reg[0x10] = {0};
uintptr_t ret[0x10] = {0};

loop:
switch (reg[pc]++)
{
case start:
reg[usr + 0] = (uintptr_t)"hi\n";
reg[usr + 1] = (uintptr_t)stdout;

reg[pc_n] = print;
reg[pc_p] = start2;
reg[pc] = sys_call;
break;

case start2:
reg[usr + 0] = (uintptr_t)"hi\n";
reg[usr + 1] = (uintptr_t)stdout;

reg[pc_n] = print;
reg[pc_p] = end;
reg[pc] = sys_call;
break;

case print:
fputs ((void *)reg[usr + 0], (void *)reg[usr + 1]);
reg[pc] = sys_ret;
break;

case sys_call:
ret[reg[ret_p]++] = reg[pc_p];
reg[pc] = reg[pc_n];
break;

case sys_ret:
reg[pc] = ret[--reg[ret_p]];
break;

default:
fprintf (stderr, "error, pc: %d\n", (int)reg[pc]);
break;
}
if (reg[pc] < end)
goto loop;

return 0;
}

Name: Anonymous 2014-07-19 19:22

Assembly with types.
http://www.cs.cornell.edu/talc/

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