OMG all these macros. It looks more like Python then Assembly. Come on, real men do not use macros.
ahh yes, real programmers twiddle bits on their hard drive with a nothing more than a tiny magnet: http://www.cs.utah.edu/~elb/folklore/mel.html
TCP HTTP Server written in Assembly
31–40 of 74 posts
Re: TCP HTTP Server written in Assembly
#32Cool! My comments as an inexperienced assembly developer, assuming this is optimising for binary size: - The pug/doN macros do an extra reg-reg copy if passed a register - and the recursive definition calls pop/pop/pop instead of just add %esp, -4*N, you could shave a few bytes - AT&T syntax will always look weird to me, but the heavy use of macros and local labels is quite elegant - A little bit of candid swearing i…
Another observation: the strlen code is incorrect, as it also counts the \0. We can fix this, and make the code 1 byte shorter (in glorious Intel syntax):
lea esi, source ; depends on source
xor ecx, ecx ; 2 bytes
salc ; 1 byte
cld ; 1 byte
_back:
scasb ; 1 byte
loopnz _back ; 2 bytes
not ecx ; 2 bytesRe: TCP HTTP Server written in Assembly
#33Cool stuff. Really, though, this is still relying on a rather large runtime library: the physical, data-link, and network-layer drivers. Now what'd be really awesome to see, would be one of those Operating System guides that shows you how to write an OS kernel, in assembler, that can speak HTTP. Even just limiting yourself to targeting the synthetic hardware of a VM program, it'd still be quite a feat. Bonus points i…
http://www.kyllikki.org/hardware/wwwpic2/src/wwwpic2.asm.htm...
Bonus: runs on 68 bytes of ram. Not a typo, it's bytes, and it's a "complete" http+tcp/ip server.
Re: TCP HTTP Server written in Assembly
#34Cool stuff. Really, though, this is still relying on a rather large runtime library: the physical, data-link, and network-layer drivers. Now what'd be really awesome to see, would be one of those Operating System guides that shows you how to write an OS kernel, in assembler, that can speak HTTP. Even just limiting yourself to targeting the synthetic hardware of a VM program, it'd still be quite a feat. Bonus points i…
Here you go: http://www.kyllikki.org/hardware/wwwpic2/src/wwwpic2.asm.htm... Bonus: runs on 68 bytes of ram. Not a typo, it's bytes, and it's a "complete" http+tcp/ip server.
Re: TCP HTTP Server written in Assembly
#35Earlier quoted context omitted.
Here you go: http://www.kyllikki.org/hardware/wwwpic2/src/wwwpic2.asm.htm... Bonus: runs on 68 bytes of ram. Not a typo, it's bytes, and it's a "complete" http+tcp/ip server.
Awesome. Can VirtualBox or VMWare run this?
There are a few open source PIC simulators -- e.g. [1] -- and I would guess you might be able to get it running, since the link layer is SLIP over a serial port. You'd just have to wire up the simulator's serial console in the right way.
Re: TCP HTTP Server written in Assembly
#36Cool stuff. Really, though, this is still relying on a rather large runtime library: the physical, data-link, and network-layer drivers. Now what'd be really awesome to see, would be one of those Operating System guides that shows you how to write an OS kernel, in assembler, that can speak HTTP. Even just limiting yourself to targeting the synthetic hardware of a VM program, it'd still be quite a feat. Bonus points i…
Here you go: http://www.kyllikki.org/hardware/wwwpic2/src/wwwpic2.asm.htm... Bonus: runs on 68 bytes of ram. Not a typo, it's bytes, and it's a "complete" http+tcp/ip server.
It should probably also be noted that a minimum TCP header, with no data attached, is 20 bytes, so to implement a 'full stack' in 68 bytes is a pretty strong indication that you're relying on off SoC memory to handle the packet buffering.
Re: TCP HTTP Server written in Assembly
#37^ That tells everything you need to know.
Re: TCP HTTP Server written in Assembly
#38Cool stuff. Really, though, this is still relying on a rather large runtime library: the physical, data-link, and network-layer drivers. Now what'd be really awesome to see, would be one of those Operating System guides that shows you how to write an OS kernel, in assembler, that can speak HTTP. Even just limiting yourself to targeting the synthetic hardware of a VM program, it'd still be quite a feat. Bonus points i…
Here you go: http://www.kyllikki.org/hardware/wwwpic2/src/wwwpic2.asm.htm... Bonus: runs on 68 bytes of ram. Not a typo, it's bytes, and it's a "complete" http+tcp/ip server.
Nice work though to whoever crammed that in a PIC.
Re: TCP HTTP Server written in Assembly
#39Earlier quoted context omitted.
Here you go: http://www.kyllikki.org/hardware/wwwpic2/src/wwwpic2.asm.htm... Bonus: runs on 68 bytes of ram. Not a typo, it's bytes, and it's a "complete" http+tcp/ip server.
That is just running the TCP/IP layer speaking RS232 and relying on an external IC for lower layers. It's not at all what the GP is looking for. It should probably also be noted that a minimum TCP header, with no data attached, is 20 bytes, so to implement a 'full stack' in 68 bytes is a pretty strong indication that you're relying on off SoC memory to handle the packet buffering.