結果
問題 | No.354 メルセンヌ素数 |
ユーザー |
![]() |
提出日時 | 2016-04-01 22:28:44 |
言語 | Assembler (nasm 2.16.03) |
結果 |
AC
|
実行時間 | 1 ms / 1,000 ms |
コード長 | 3,913 bytes |
コンパイル時間 | 406 ms |
コンパイル使用メモリ | 6,816 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-02 00:58:03 |
合計ジャッジ時間 | 963 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 13 |
ソースコード
section .data;;; statichellow: db "Hello World!"hellow_len: equ $ - hellowsection .bsscommon stdinbuf 1048576:16common stdinbuf_size 8:8common stdinbuf_seek 8:8common stdoutbuf 1048576:16common stdoutbuf_size 8:8section .textglobal _start_start:call readstdincall setupstdoutcall nextIntmov r10, raxmov rdi, r10call putIntcall newLinecall writestdoutmov rax, 60mov rdi, 0syscallretreadstdin:mov rax, 0mov rdi, 0mov rsi, stdinbufmov rdx, 1048576syscallmov [stdinbuf_size], raxmov rax, 0mov [stdinbuf_seek], raxretsetupstdout:mov rax, 0mov [stdoutbuf_size], raxretwritestdout:mov rax, 1mov rdi, 1mov rsi, stdoutbufmov rdx, [stdoutbuf_size]syscallret;;; ; rdi : dest;;; ; rsi : src;;; ; rdx : sizestrncpy:cmp rdx, 0jne strncpy_L1retstrncpy_L1:mov al, [rsi]mov [rdi], aladd rsi, 1add rdi, 1sub rdx, 1jne strncpy_L1ret;;; ; dil charputChar:mov rax, stdoutbufadd rax, [stdoutbuf_size]mov [rax], dilmov rax, [stdoutbuf_size]add rax, 1mov [stdoutbuf_size], raxret;;; ; rdi str;;; ; rsi sizeputStr:cmp rsi, 0jne putStr_L1retputStr_L1:mov rax, stdoutbufadd rax, [stdoutbuf_size]mov rdx, [stdoutbuf_size]add rdx, rsimov [stdoutbuf_size], rdxputStr_L2:mov dl, [rdi]mov [rax], dladd rax, 1add rdi, 1sub rsi, 1jne putStr_L2ret;;; ; rdi str;;; ; rsi sizeputStrLn:push rdipush rsicall putStrpop rsipop rdimov dil, 10call putCharret;;; ; return 8bit charnextChar:mov rdi, stdinbufadd rdi, [stdinbuf_seek]mov al, [rdi]mov rdi, [stdinbuf_seek]add rdi, 1mov [stdinbuf_seek], rdiret;;; ; return (64bit unsigned int)nextInt:mov rax, 0nextInt_L1:push raxcall nextCharmov dil, alpop raxcmp dil, 48jb nextInt_L2cmp dil, 57ja nextInt_L2mov rsi, 10mul rsimovzx rcx, dilsub rcx, 48add rax, rcxjmp nextInt_L1nextInt_L2:ret;;; ; rdi 64bit intputInt:cmp rdi, 0jne putInt_L0mov dil, 48call putCharretputInt_L0:mov rcx, 0mov rax, rdiputInt_L1:cmp rax, 0je putInt_L2mov rdx, 0mov rsi, 10div rsipush rdxadd rcx, 1jmp putInt_L1putInt_L2:cmp rcx, 0je putInt_L3sub rcx, 1pop rdiadd rdi, 48push rcxcall putCharpop rcxjmp putInt_L2putInt_L3:retnewLine:mov dil, 10call putCharret