Hello, world!
Posted feedbacks - Other
HQ9+で
1 | H
|
うろ覚えのMindで書いてみた。
1 2 3 | ※ お題:「Hello, world!」と表示するプログラムを作ってください。
メインとは
「Hello, world!」を 表示すること。
|
Rexx
1 | say "Hello, world!"
|
「『言語』欄にアセンブラないの?」 って書きたかったんですっ。 VS 2005使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | .586
.model flat
extrn _printf:near
public _main
.data
msg db "Hello, World", 0
.code
_main proc near
push ebp
mov ebp, esp
mov eax, offset msg
push eax
call _printf
pop eax
mov esp, ebp
pop ebp
ret 0
_main endp
end
|
debug < hello.txtでどーぞ(WinXP)
1 2 3 4 5 6 7 8 9 10 11 12 | a 100
MOV DX,0108
MOV AH,09
INT 21
RET
DB "Hello, world!$"
R CX
16
N HE.COM
W
Q
|
WSH(Windows Script Host)のVBScript版です。拡張子はvbsで、cscriptとwscriptどちらからでも起動可能です。
1 | WScript.Echo("Hello, World!")
|
同じくJScript版です。VBScriptとは微妙に違います…
1 | WScript.Echo("Hello, World!");
|
たいていの言語で動く。
前後にコンパイラや実行環境依存のごみが表示されるけど気にしない方が幸せ。
1 | Hello, world!
|
N88-BASIC 懐かしい。。。
1 | 10 PRINT "Hello, World!"
|
まあ、、、こんな簡単なプログラムで、ミスを。。。恥かしい。。。
1 2 3 | C234567
WRITE(*,*) 'Hello, World!'
END
|
以外と忘れられてますね。VBA。
1 2 3 | Sub HelloWorld()
MsgBox "Hello, World!"
End Sub
|
あると思ったけど無かった。 Linux, 32bitで hello world OS依存しまくりw
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | section .data
msg db 'hello, world', 0Ah
len equ $-msg
section .text
global _start
_start: mov edx, len
mov ecx, msg
mov ebx, 1
mov eax, 4
int 0x80
mov ebx, 0
mov eax, 1
int 0x80
|
!抜かしてた
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | section .data
msg db 'hello, world!', 0Ah
len equ $-msg
section .text
global _start
_start: mov edx, len
mov ecx, msg
mov ebx, 1
mov eax, 4
int 0x80
mov ebx, 0
mov eax, 1
int 0x80
|
win verです nasmコンパイラ 32bit(16bitでも動くはずだけど) x86cpu レジスタのみで処理は完結
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | mov ah, 02
mov dl, 48h
int 21h
mov dl, 65h
int 21h
mov dl, 6Ch
int 21h
mov dl, 6Ch
int 21h
mov dl, 6Fh
int 21h
mov dl, 2Ch
int 21h
mov dl, 77h
int 21h
mov dl, 6Fh
int 21h
mov dl, 72h
int 21h
mov dl, 6Ch
int 21h
mov dl, 64h
int 21h
mov dl, 21h
int 21h
mov ah, 4ch
mov al, 0
int 21h
|
OCamlはあるのにStandardMLは無い。。。
1 | print ("Hello, world!")
|
Unlambdaです
1 | `````````````.H.e.l.l.o.,. o.w.o.r.l.d.!v
|
まだ出ていないようなので。
1 2 3 4 5 | with ada.text_io;
procedure HelloWorld is
begin
ada.text_io.put_line("Hello, world!");
end HelloWorld;
|
1 | echo 'Hello, world!'
|
POV-Rayで。 どこまで省略できるか、どんどん消してみた。
1 2 | background {1}
text {ttf "crystal.ttf","Hello, world!",0,0 translate <-3.3,0,6>}
|
uwscというのはwindowsのマウス操作の記録・再生ツールと思っていたら、 マニュアルを見るとまるきり言語ですね。 ところで、"Hello, world!"って、誰が誰に向かって言ってるんでしょうか。 プログラムの発する「うぶ声」ということなんでしょうかね。
1 | msgbox("Hello, world!")
|
Mac OS X (PowerPC) 付属の as で。 適当なファイルに保存して、次のコマンドでコンパイルします。
% as -o hello.o hello.s % ld -o hello hello.o % ./hello
see: 玄箱でアセンブリ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | .machine ppc
.globl _main
_main:
lis r4, ha16(msg)
addi r4, r4, lo16(msg)
li r3, 1 ; stdout
lis r5, ha16(msg_len)
addi r5, r5, lo16(msg_len)
li r0, 4 ; sys_write
sc ; system call
li r3, 0
li r0, 1 ; sys_exit
sc
.data
.align 2
msg:
.asciz "Hello, world!\n"
msg_len = . - msg - 1
|
Lisp 1.5です。文字の扱いがいまいち不確かなのですが、 上の命令は、指定した文をプリンタに出力します。 システムには大文字しか存在しないので全部大文字になります。 PRINTの代わりにPUNCHを使うとパンチカードに出力できるようです。
1 | PRINT($$/HELLO, WORLD!/)
|
げんてー?
see: Gentee: Open Source Free Programming Language
1 2 3 4 | func hello <main>
{
print( "Hello, World!" )
}
|
Factor です。
1 | USE: io "Hello, world!" write
|
Forthでの初投稿。
1 | ." Hello, World!"
|
屁理屈のようだけれど、“Hello World!”と書いたテキスト・ファイルを用意しておいて、“test.txt”とでも名前をつけておく。 chmod +x test.txt とやって、実行すればいい。
1 2 3 | #! gawk
{ print }
|
アセンブラで、コマンドプロンプト(cmd.exe)から起動する場合はこうなりますか。 NASMとALINKで実行ファイル作って確認しました。 オブジェクトファイル名はmain.objとして、ALINKの"-subsys con"オプションでリンクします。 その他のオプションは通常のwin32アプリ作成と同じにしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | extern ExitProcess
extern GetStdHandle
extern WriteConsoleA
section .text
global main
main:
push -11d
Call GetStdHandle
push 0x0
push wtnChars
push dword [outsize]
push outstring
push eax
call WriteConsoleA
call ExitProcess
ret
section .data
outstring: db "Hello, World!"
outsize: dd $-outstring
wtnChars: dd 0x0
|
64bit Linux で NASM によるアセンブラです。 64bit ではシステムコールは int 0x80 ではなく syscall を使います。システムコール番号も違い、システムコールで使うレジスタも次の順番になります。
- rdi
- rsi
- rdx
- rcx
- r8
- r9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ;;; nasm -f elf64 hello.asm && ld -o hello hello.o && ./hello
bits 64
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, len
syscall
mov rax, 60
xor rdi, rdi
syscall
section .data
msg db 'Hello, world!'
len equ $ - msg
|
1 2 3 4 5 6 7 8 | MODULE HelloWorld;
IMPORT InOut;
BEGIN
InOut.WriteString("Hello World!");
InOut.WriteLn
END HelloWorld.
|
マニュアルに載っている例そのままですが。
see: LLVM Language Reference Manual
1 2 3 4 5 6 7 8 9 | declare i32 @puts(i8 *)
@msg = internal constant [13 x i8] c"Hello, world!"
define i32 @main() {
%cast = getelementptr [13 x i8]* @msg, i32 0, i32 0
call i32 @puts(i8 * %cast)
ret i32 0
}
|
文字列定数の最後に0をつけるべきでした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | --- a/hello.s Sat Sep 20 02:38:09 2008 +0900
+++ b/hello.s Sat Sep 20 14:05:19 2008 +0900
@@ -1,9 +1,9 @@ declare i32 @puts(i8 *)
declare i32 @puts(i8 *)
-@msg = internal constant [13 x i8] c"Hello, world!"
+@msg = internal constant [14 x i8] c"Hello, world!\00"
define i32 @main() {
- %cast = getelementptr [13 x i8]* @msg, i32 0, i32 0
+ %cast = getelementptr [14 x i8]* @msg, i32 0, i32 0
call i32 @puts(i8 * %cast)
ret i32 0
}
|
limboはじめました。 まずはエディタではまる。 コードは公式のドキュメントほぼそのまま。 d2.bとして保存、 limbo d2.b でビルド。 d2 で実行。
see: Vita Nuova
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | implement d2;
include "sys.m";
include "draw.m";
d2: module
{
init: fn(ctxt: ref Draw->Context, argv: list of string);
};
init (ctxt: ref Draw->Context, argv: list of string)
{
sys: Sys;
sys = load Sys Sys->PATH;
sys->print("Hello, World!\n");
}
|






にしお
#3358()
Rating0/0=0.00
[ reply ]