顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


文章 - jan

頁: [1] 2 3
1
C/C++程式設計討論區 / [Question]function call
« 於: 2005-01-28 23:05 »
有亂碼;可能會看不清濋
代碼: [選擇]
#include <stdio.h>
void fn(int arg1,int arg2)
{
printf("%d %d\n",arg1,arg2);
}
main()
{
int a=10,b=20;
fn(a,b);
}
#############################################################
.file "test.c"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "%d %d\n"
.text
.globl fn  #void fn(int arg1,int arg2)
.type fn,@function:
fn:
pushl %ebp  #將ebp值保存至堆疊
movl %esp, %ebp #將堆疊頂指標(esp)保存至ebp
pushl 12(%ebp) #將20(b=20)的值推入堆疊;其是?#93;就是arg1的值;?#93;為後進先出所以先將20推入堆疊
pushl 8(%ebp) #將10(a=10)的值推入堆疊;其是?#93;就是arg2的值
pushl $.LC0 #將格式化字元推入堆疊?#93;就是"%d %d\n"
call printf #印出10,20,依序取出堆疊值
leave
ret
.Lfe1:
.size fn,.Lfe1-fn
.globl main
.type main,@function
main:
pushl %ebp #將ebp值保存至堆疊
movl %esp, %ebp #將堆疊頂指標(esp)保存至ebp
pushl $20  #將20(b=20)的值推入堆疊;?#93;為後進先出所以先將20推入堆疊
pushl $10  #將10(a=10)的值推入堆疊
call fn  #呼叫fn函數,此?#123;式進入fn函數執行,並且返回位?#125;推入堆疊
leave
ret
.Lfe2:
.size main,.Lfe2-main
.ident "GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)"

2
感謝各位慹心的回覆.

3
大專院校的網路選課系統大部份都是使用win+asp,
想做一項測試,使用php+mysql+linux來開發大專院校網路選課系統
不知是否可行?

4
印象中,perl的陣列好像沒有上限,即便是超出陣列索引,會依需求擴大,所以你的
RAM......很快就被吃光了..
參考看看!
有錯誤,請指正!

5
下載MySQL Connector/ODBC 3.51
http://dev.mysql.com/downloads/connector/odbc/3.51.html
看你是要用windows或是linux來轉

6
雜七雜八 / VIM for windows
« 於: 2004-07-07 06:37 »
vim windows版本,超好用,再也不用受記事本的折磨了
可到此下載:
http://www.vim.org/download.php

7
照這個錯誤訊息來看
兩個xtime的變數宣告型態起衝突編譯器不讓你編譯
sched.h:540行宣告一次
timer.c:35行宣告一次

參考看看!有錯誤請指正!

8
程式討論版 / [問題]使用AS組譯的煩惱
« 於: 2004-07-01 18:57 »
;Copyright (c) 1999 Konstantin Boldyshev <konst@linuxassembly.org>
;
;"hello, world" in assembly language for Linux
;
;to compile:
;
;nasm -f elf hello.asm #用nasm組譯
;ld -s -o hello hello.o

section .text
    global _start                       ;must be declared for linker (ld)

msg     db      'Hello, world!',0xa     ;our dear string
len     equ     $ - msg                 ;length of our dear string

_start:                                 ;tell linker entry point

        mov     edx,len ;message length
        mov     ecx,msg ;message to write
        mov     ebx,1   ;file descriptor (stdout)
        mov     eax,4   ;system call number (sys_write)
        int     0x80    ;call kernel

        mov     eax,1   ;system call number (sys_exit)
        int     0x80    ;call kernel
#資料來源:
http://www.linuxassembly.org/

9
程式討論版 / 請問什麼是反組譯
« 於: 2004-07-01 18:46 »
c原始碼:
#include <stdio.h>
main()
{
   printf("Hello World\n");
}
[root@localhost test]# ls
hello.c
[root@localhost test]# gcc hello.c
[root@localhost test]# ls
a.out  hello.c
[root@localhost test]# ./a.out
Hello Wolrd
[root@localhost test]# objdump -d a.out > hello.asm #反組譯
[root@localhost test]# ls
a.out  hello.asm  hello.c
[root@localhost test]# vi hello.asm #反組譯結果
 8048337:       68 38 95 04 08          push   $0x8049538
 804833c:       e8 bf 7c fb f7          call   0 <_init-0x8048250>
 8048341:       83 c4 10                add    $0x10,%esp
 8048344:       c9                      leave
 8048345:       c3                      ret
 8048346:       90                      nop
 8048347:       90                      nop

08048348 <main>:
 8048348:       55                      push   %ebp
 8048349:       89 e5                   mov    %esp,%ebp
 804834b:       83 ec 08                sub    $0x8,%esp
 804834e:       83 e4 f0                and    $0xfffffff0,%esp
 8048351:       b8 00 00 00 00          mov    $0x0,%eax
 8048356:       29 c4                   sub    %eax,%esp
 8048358:       83 ec 0c                sub    $0xc,%esp
 804835b:       68 40 84 04 08          push   $0x8048440
 8048360:       e8 23 ff ff ff          call   8048288 <_init+0x38>
 8048365:       83 c4 10                add    $0x10,%esp
 8048368:       c9                      leave
 8048369:       c3                      ret
 804836a:       90                      nop
 804836b:       90                      nop

0804836c <__libc_csu_init>:
 804836c:       55                      push   %ebp
 804836d:       89 e5                   mov    %esp,%ebp
 804836f:       57                      push   %edi
 8048370:       56                      push   %esi
 8048371:       53                      push   %ebx
 8048372:       83 ec 0c                sub    $0xc,%esp
 8048375:       e8 00 00 00 00          call   804837a <__libc_csu_init+0xe>
 804837a:       5b                      pop    %ebx
 804837b:       81 c3 c2 11 00 00       add    $0x11c2,%ebx
 8048381:       e8 ca fe ff ff          call   8048250 <_init>
 8048386:       8d 93 18 ff ff ff       lea    0xffffff18(%ebx),%edx
 804838c:       8d 8b 18 ff ff ff       lea    0xffffff18(%ebx),%ecx
 8048392:       29 ca                   sub    %ecx,%edx
 8048394:       c1 fa 02                sar    $0x2,%edx

a.out:     file format elf32-i386

Disassembly of section .init:

08048250 <_init>:
 8048250:       55                      push   %ebp
 8048251:       89 e5                   mov    %esp,%ebp
 8048253:       83 ec 08                sub    $0x8,%esp
 8048256:       e8 61 00 00 00          call   80482bc <call_gmon_start>
 804825b:       e8 bc 00 00 00          call   804831c <frame_dummy>
 8048260:       e8 93 01 00 00          call   80483f8 <__do_global_ctors_aux>
 8048265:       c9                      leave
 8048266:       c3                      ret
Disassembly of section .plt:

08048268 <.plt>:
 8048268:       ff 35 40 95 04 08       pushl  0x8049540
 804826e:       ff 25 44 95 04 08       jmp    *0x8049544
 8048274:       00 00                   add    %al,(%eax)
 8048276:       00 00                   add    %al,(%eax)
 8048278:       ff 25 48 95 04 08       jmp    *0x8049548
 804827e:       68 00 00 00 00          push   $0x0
 8048283:       e9 e0 ff ff ff          jmp    8048268 <_init+0x18>
 8048288:       ff 25 4c 95 04 08       jmp    *0x804954c
 804828e:       68 08 00 00 00          push   $0x8
 8048293:       e9 d0 ff ff ff          jmp    8048268 <_init+0x18>
Disassembly of section .text:

08048298 <_start>:
 8048298:       31 ed                   xor    %ebp,%ebp
 804829a:       5e                      pop    %esi
 804829b:       89 e1                   mov    %esp,%ecx
 804829d:       83 e4 f0                and    $0xfffffff0,%esp
"hello.asm" 214L, 9749C

10
Linux 討論版 / error messages "segmentation fault"
« 於: 2004-06-28 15:05 »
segmentation fault
印像中好像是記憶區段錯誤.
參考看看.

12
引述: "netman"
我的經驗是:
當你的女朋友跟你抱怨說"你怎麼不娶電腦當老婆?"的時候...
your are in...

該不會改天問你,你底是要我還是要電腦.
頭很大,不知如何回答,電腦是我的二生命,而妳是我的最愛.

13
如果你真的對電腦這個領域真的有興趣,想在這個領域發展,首先你要有一個認知,你將會有看不完的書,學不完的東西。家中的電腦書籍堆積如山,大概算了一下太概有一百多本,每天待在電腦前的時間至少都超過8小時以上,今年已進入第五年了,到現在還是感覺自己的專業能力還是差強人意。
網管和網路工程師覺得你可以兩項都去試試看,學了程式設計再來學網管會更加的容易(基本的硬體的知識當然是必備的),精通英文,演算法及資料結構,在電腦(軟體工業)這個領域發展會更加的輕鬆.
想進入網管和網路工程師,unix是最佳的學習平台,程式設計師的樂園。
c/c++/java是必備的,學了c就等於學了c++的%50學了c++就等於學了java的%80.
精通unix,再來看windows,windows就像玩具一樣。
國內的大專院校,每年都奉上大把大把的鈔票給微軟......

個人的一些淺見,參考看看。

14
證照,學歷是職場的入場卷.
實力,際遇,人際關係是職場生存的不二法門。
人生而不平等;只有時間是公平
不是用錢去換時間,就是用錢換時間。
努力不一定成功;但不努力一定......
機會是留給有準備的人,成功是留給最堅持的人。

15
Windows 討論版 / [問題]關於多重開機
« 於: 2004-06-22 19:26 »
用記事本打開boot.ini
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect
加入你想要開機的磁區;
..............................
參考看看!

16
Windows 討論版 / Windows XP不支援USB軟碟機!?
« 於: 2004-06-22 14:18 »
..

17
Windows 討論版 / Windows XP不支援USB軟碟機!?
« 於: 2004-06-22 13:58 »
用windows update更新到sp2
如果不是正板,無法更新....
不然就是磁片未格式化
usb驅動程式沒裝好

18
程式討論版 / system call
« 於: 2004-06-21 22:36 »
引述: "ohmygod"
有什麼關聯能指導一下嗎?
比如說uname() 是一個函式,當我執行uname 指令時可透過uname()取得相關系統資訊,
而這個uname()函式與/usr/lib 或/lib 底下那些xx.so 的library 是有怎樣的關聯性呢?

/usr/lib 或/lib xx.so都是編譯好的函式,當你在原始碼宣告使用uname(),編譯時即
使用連結器找到/usr/lib 或/lib 找到相關檔案載入執行.
以下是一個簡單C程式碼實作uname
#include <stdio.h>
#include <sys/utsname.h>
main()
{
struct utsname systeminfo;
uname(&systeminfo);
printf("The OS is %s\n" systeminfo.sysname);
..........
........
}

19
如果是用csh:
vi .cshrc
加入
alias ls ls -G
用port 把vi升級成vim

20
雙cpu開機的核心,也就是linux發行套件,預設編譯好的
雙cpu核心,如果你有雙cpu就可以用那個核心開機!

21
肉腳版 / [提議]^有誰有興趣一起來搞這個^
« 於: 2004-03-04 14:32 »
程式設計方面可以嗎:
我最近想做一個網頁,包含perl/c/c++/bash/Regular Expression/語法對照表。
如果有時間的話可能會再加入一些網路設定檔的範例檔如:apache/samba/postfix/bind

22
BSD 討論版 / FreeBSD的書!!
« 於: 2004-02-23 15:44 »
The Complete FreeBSD, 4/e    出版商:O'Reilly
這本寫得比較詳細。
Absolute BSD: The Ultimate Guide to FreeBSD     出版商:No Starch Press
這本不錯,作者的寫作風格很風趣。

23
程式討論版 / 請問什麼是反組譯
« 於: 2004-02-04 21:47 »
假設一段C程式碼如下:
a=b+c;
d=e-f;
經過c語言編譯器轉譯為組合語,再由組譯器轉為機器語言。有些編譯器直接就轉譯為機器語言,這要看編譯器如何設計。
(為了方便解釋,用a,b,c,d,e,f來代暫存器,實際上的寫法並不是如此)
add—起動加法電路
sub-起動減法電路(實際上還是用加法器來做減法)
add a, b,c (將暫存器b,c的值相加放回暫存器a)
sub d,e ,f(將暫存器e,f的值相減放回暫存器d)
cpu計算完後,把結果值放回記憶體。
經過組譯器轉譯後的機器碼為:
以下為假設性的排列:(實際上還是要看cpu的指令集的對應關係,及如何設計)
我用4個位元來表示;
0001 0010 0011
0100 0101 0110
反組譯的意思,就是相辦法把機器語言,用反向操作的方式還原。
必須要相當了解各種平台CPU的指令集機構,及指令集對照表來設計反組譯程式。難度很高,因為各種語的語法都不相同,資料結構也不同。
還有另一位一種方法是透過中介語言來逹成。

24
程式討論版 / 關於編譯程式(compliers)設計
« 於: 2004-02-02 22:54 »
到書店都有找到這兩本內容都不錯!
謝了。

25
程式討論版 / 關於編譯程式(compliers)設計
« 於: 2004-02-01 23:20 »
有沒有人在玩編譯程式?可否提供一些相關參考資料。
謝謝!

26
Linux 討論版 / 要如何改變檔案的初始權限
« 於: 2003-09-06 09:18 »
謝謝,因為我沒有把前置的URL對應好,所以無法測試.
誤以為是權限(需要執行權限)問題.
現在可以測試了.

27
Linux 討論版 / 要如何改變檔案的初始權限
« 於: 2003-09-05 20:33 »
要如何改變檔案的權限,當然可用chown,umask改變
但因為我要開放php給使用者使用,必須要有執行權限.
因為client端用Dreamweaver MX製作php網頁,用FTP上傳並測試網頁.
如果產生的檔案沒有執行權限,無法測試
我用的是proftpd,預設umask022,改為000但是只能產生 rw-rw-rw-(666的初始模式,對於檔案而言),沒有執行權限.
對目錄是沒問題.因為目錄的初始模式是777.
如何將檔案的初始模式也改為777.用umask 022,即可產生755的檔案權限.
提供一些意見!謝謝

28
Computer 討論版 / [習題]作業系統求救
« 於: 2003-08-17 20:12 »
東華書局,有翻譯一本--作業系統概念
這是一本教科書.
對於linux.unix,windows2000,..
process管理
記憶體管理
IO 管理
等都有介紹
太概800頁(A4)

29
Linux 討論版 / 4-way CPU & Linux
« 於: 2003-08-16 23:34 »
感謝twu2的指正.
我對於核心的認識還不是很深,所以有些觀念不是很正確

30
Linux 討論版 / 4-way CPU & Linux
« 於: 2003-08-16 21:52 »
不知道的我說的對不對!印象中一般linux發行套件,核心最多支援2個cup.
Linux的Symmetric Multi-Processor,最多可達到32個cpu同時運作.RAM最多支援64GB,可能要請廠商支援,修改原始碼,重新編譯.
   我的平台是用2個cpu,在linux下smp運作效能相較windows 2000下,windows差太多了.
   參考看看!

頁: [1] 2 3