- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Câu hỏi của tôi bao gồm hai phần.
Đây có phải là lỗi của Sun không, có bản vá không, hay tôi cần phải tự viết memalign.
Ngoài ra tôi có một cấu trúc (không phải mã của tôi):
cấu trúc typedef CLHLockStruct {
dễ bay hơi CLHLockNode CACHE_ALIGN *Đuôi;
CLHLockNode dễ bay hơi CACHE_ALIGN *MyNode[N_THREADS];
CLHLockNode CACHE_ALIGN dễ bay hơi *MyPred[N_THREADS];
} CLHLockStruct;
Tôi đã biên soạn theo MVSC (visual studio 2008):
CACHE_LINE_SIZE = 64
CACHE_ALIGN = __declspec(căn chỉnh(CACHE_LINE_SIZE))
N_THREADS = 8
sizeof(CLHLockStruct)=192
Mã ban đầu được viết cho kiến trúc sparc và tôi đang cố di chuyển nó sang MVSC mà không thay đổi quá nhiều mã.
Trong mã của họ, họ sử dụng memalign(CACHE_LINE_SIZE,sizeof(CLHLockStruct)), tôi đã đổi nó thành _aligned_malloc, vấn đề của tôi là sizeof(CLHLockStruct) không phải là lũy thừa của 2, tôi có thể viết một số hàm để tìm lũy thừa tiếp theo của 2.
Họ có phải là một cách tiếp cận tốt hơn?
编辑1
Làm cách nào tôi có thể đệm cấu trúc này sao cho kích thước của nó là lũy thừa của 2?
EDIT2
Có chức năng nào tương tự như _aligned_malloc và malloc: trả về một con trỏ bộ nhớ được căn chỉnh theo bội số của block_size nhưng không yêu cầu byte phải có lũy thừa bằng 2 không?
câu trả lời hay nhất
trong mã của họ, họ sử dụng memalign(CACHE_LINE_SIZE,sizeof(CLHLockStruct)) và tôi đã đổi nó thành _aligned_malloc , vấn đề của tôi là sizeof(CLHLockStruct) không phải là lũy thừa của 2,
Bạn đã thay đổi nó thành _aligned_malloc(CACHE_LINE_SIZE,sizeof(CLHLockStruct))
? Vâng, điều đó dẫn đến điều này. _aligned_malloc
Yêu cầu kích thước làm đối số đầu tiên và căn chỉnh làm đối số thứ hai, với memalign
Thay vào đó, bạn cần trao đổi thông số. Kích thước không cần phải là lũy thừa của 2.
Về c++ - căn chỉnh bộ nhớ - Trình biên dịch Sparc (Sun), trình biên dịch Intel (Linux) g++, trình biên dịch MVSC Intel (Windows), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/11858611/
Có cách nào để thiết lập Solaris chạy trên SPARC chạy ở chế độ little-endian không? Tôi đã đọc được rằng các chip kiến trúc v9 có hai đầu cuối, nhưng theo mặc định, hệ thống chạy ở dạng big endian. Làm thế nào để chuyển sang endian nhỏ? Cảm ơn bạn! Câu trả lời tốt nhất là không, chế độ endian nhỏ
Trong vài tháng qua, tôi đã tò mò muốn thử một số bản dựng dành cho bộ xử lý SPARC (V8 hoặc V9). Câu hỏi của tôi là, tôi không có quyền truy cập vào máy SPARC, có cách nào để chạy các tệp nhị phân SPARC trên máy x86 của tôi không? tôi hiểu rồi
Tôi đã cài đặt CentOS 7.6 và sau đó cài đặt tất cả QEMU trên máy của mình. Tôi có hình ảnh SPARC mà tôi cần hiển thị trong VM. Tôi đã sử dụng qemu-system-sparc.
Tôi có một số ứng dụng chuẩn phù hợp với kiến trúc SPARC V8 32-bit. Tôi sử dụng chúng để đánh giá hiệu suất của bộ xử lý SPARC 32-bit. Tuy nhiên, có rất ít ứng dụng bị giảm hiệu suất. Tôi muốn thử nghiệm kiến trúc SPARC V9 64-bit (
Tôi có một số ứng dụng chuẩn phù hợp với kiến trúc SPARC V8 32-bit. Tôi sử dụng chúng để đánh giá hiệu suất của bộ xử lý SPARC 32-bit. Tuy nhiên, có rất ít ứng dụng bị giảm hiệu suất. Tôi muốn thử nghiệm kiến trúc SPARC V9 64-bit (
Tôi đang học tập hợp SPARC và tôi phải tạo một tập lệnh trích xuất các trường từ một thanh ghi. Tập lệnh chấp nhận 3 giá trị, số ban đầu, vị trí bắt đầu trường và độ dài trường. Nó không thể sử dụng bất kỳ hàm dịch chuyển nào, nhưng nó có thể sử dụng phép nhân và chia. Hiện tại tôi đang bị nhiễm virus đường hô hấp,
Tôi hiện đang làm việc trên một số mã lắp ráp cho dòng bộ xử lý Sparc và tôi đang gặp một số vấn đề với một đoạn mã. Tôi nghĩ mã và kết quả đầu ra giải thích nhiều hơn, nhưng tóm lại đây là vấn đề của tôi: Khi tôi gọi hàm println() tôi viết %fp -
Có SPARC tương đương với chế độ một bước cho x86 không? Điều tôi muốn là dừng thực thi sau mỗi lệnh và chuyển luồng điều khiển sang trình xử lý bẫy hoặc thứ gì đó tương tự. Tôi đã cân nhắc sử dụng lệnh ta trong một khe thực thi bị trì hoãn, nhưng lệnh hiện tại đã được thiết lập
Trình biên dịch chéo gcc của tôi không hỗ trợ các chức năng tích hợp để truy cập bộ nhớ nguyên tử. Làm cách nào tôi có thể sử dụng tập hợp nội tuyến cho kiến trúc Sparc V8 để triển khai chức năng sau: long __sy
Tôi muốn chương trình của mình chừa lại một khoảng trống sau mỗi hàm trong hệ nhị phân. Bằng cách đó, nếu sau này cần thực hiện một số thay đổi nhỏ, bạn chỉ cần thay đổi chức năng và khoảng trống thừa sẽ dùng làm chỗ để giải thích những thay đổi nhỏ. -falign-function có thể được thực hiện
java -version 2>&1 |gawk 'NR==1{ gsub(/"/," "); print $3}' Điều này hoạt động trên Linux và Solaris và sẽ trả về phiên bản Java được cài đặt trên máy đó
Tôi muốn viết một quy trình tập hợp nội tuyến rất đơn giản trong chương trình C của mình mà không làm gì khác và sau đó đặt các thanh ghi cục bộ %l0 - %l7 thành các giá trị khác nhau. Tôi đã thử cách tiếp cận đơn giản sau: asm dễ bay hơi ( ".text\
Tôi muốn thực hiện một số chương trình lắp ráp "nội tuyến" trong Sparc và tôi muốn biết cách thực hiện điều đó thông qua việc đăng ký. Tốt hơn hết là giải thích vấn đề của tôi bằng một ví dụ nhỏ int main() { int a = 5;
Tôi hiện đang học ngành khoa học máy tính và một trong những lớp học bắt buộc của tôi là "Tổ chức và kiến trúc máy tính" - hay nói cách khác là giới thiệu về hợp ngữ. Lớp cụ thể này sử dụng ngôn ngữ SPARC vì các máy của phòng ban chỉ tương thích với SPARC
Tôi đang phát triển một ứng dụng đa nền tảng mà tôi muốn cung cấp hỗ trợ cho Solaris/SPARC nhưng tôi không còn quyền truy cập vào máy chủ nữa. Tôi có máy ảo OpenSolaris trên VirtualBox nhưng tôi không biết bất kỳ thứ gì tôi có thể sử dụng để biên dịch và
Tôi có máy chủ Sun đã cài đặt Solaris 10 SPARC. Tôi đã cài đặt thành công libevent và openssl bằng mã nguồn tarball. Tôi đang cố gắng biên dịch tor-0.2.5.16 bằng gnu gmake. tôi ở đây
Vì vậy; trên các CPU SPARC 64-bit tuân thủ v9, có một lệnh cas mà tôi biết. Điều này hoạt động trên một giá trị độ dài từ duy nhất. Tôi cũng đã thấy các tài liệu tham khảo về chỉ thị casx trên web - nhưng tôi không thể tìm thấy thêm thông tin nào về nó. tôi muốn biết
Tôi đang cố gắng tối ưu hóa mã này theo đúng cách. Ý tôi đúng là... Tôi muốn có một cách tổng quát để thực hiện những tối ưu hóa này và nếu những người khác nhìn vào mã, họ sẽ có thể loại bỏ những tối ưu hóa đó. Ví dụ về mã C có thể đọc được... int a = 1;
Tôi muốn hiểu lý do tại sao tôi gặp lỗi xe buýt khi sử dụng mã này. int main() { int p=34; int *pp= (int *) ((char *)&p+1); cout<<*pp<<"\n";
Tôi đang cố gắng xác định xem một số trong hàm có bằng 0 hay không. Nếu nó bằng 0, tôi cần chuyển một số chuỗi như "Is Zero" vào một biến mà tôi khai báo là B. Tôi chắc chắn hàm này nếu nó không hoạt động, nhưng khi tôi cố gắng chuyển một chuỗi vào một biến bằng mã nguồn SPARC của mình
Tôi là một lập trình viên xuất sắc, rất giỏi!